From 5440d5b685f7bce3fcd724b17ec0d7bb5d7b94fb Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Thu, 26 May 2022 09:37:57 +0100 Subject: [PATCH 01/16] fix diff in CI --- helm-push.sh | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/helm-push.sh b/helm-push.sh index 058a5b7..8b41a8b 100755 --- a/helm-push.sh +++ b/helm-push.sh @@ -25,7 +25,7 @@ CHART=oci://${HELM_REPO}/${NAME} # see https://github.com/settings/tokens echo $CR_PAT | helm registry login -u USERNAME --password-stdin $HELM_REPO -echo "Verifying deploy of ${IOC_ROOT} to helm repo as version ${TAG} ..." +echo "CHECKING deploy of ${IOC_ROOT} to helm repo as version ${TAG} ..." helm package "${IOC_ROOT}" -u --app-version ${TAG} --version ${TAG} PACKAGE=$(realpath ${NAME}-${TAG}.tgz) @@ -35,7 +35,7 @@ TMPDIR=$(mktemp -d); cd ${TMPDIR} # extract the latest version to a temporary folder helm pull ${CHART} > out.txt LATEST_VERSION=$(sed -n '/^Pulled:/s/.*://p' out.txt) -echo "latest version of ${CHART} is ${LATEST_VERSION}" +echo "LATEST VERSION of ${CHART} is ${LATEST_VERSION}" mkdir latest_ioc this_ioc tar -xf *tgz -C latest_ioc &> tar1.out @@ -45,15 +45,13 @@ helm package "${IOC_ROOT}" --app-version ${LATEST_VERSION} --version ${LATEST_VE tar -xf *tgz -C this_ioc &> tar2.out # compare the packages and push the new package if it has changed -if diff -r latest_ioc this_ioc &> diff.out ; then - echo "not pushing unchanged IOC ${CHART} version ${LATEST_VERSION}" +if diff -r --exclude Chart.lock latest_ioc this_ioc ; then + echo "NOT PUSHING unchanged IOC ${CHART} version ${LATEST_VERSION}" else - echo "pushing ${CHART} version ${TAG}" + echo "PUSHING ${CHART} version ${TAG}" helm push "${PACKAGE}" oci://${HELM_REPO} fi -cat diff.out - # clean up if [ -z ${HELM_PUSH_DEBUG} ] ; then rm "${PACKAGE}" From 61f8275e990b55a11e2595bc83b04da3006ad228 Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Fri, 27 May 2022 13:34:51 +0100 Subject: [PATCH 02/16] make start.sh work on readonly ioc folder --- edm/bl45p-launcher.sh | 2 +- helm-push.sh | 4 ++-- iocs/bl45p-ea-ioc-01/config/start.sh | 33 +--------------------------- iocs/bl45p-ea-ioc-01/values.yaml | 5 ++--- iocs/bl45p-ea-ioc-02/config/start.sh | 33 +--------------------------- iocs/bl45p-ea-ioc-02/values.yaml | 1 - iocs/bl45p-mo-ioc-01/config/start.sh | 30 +------------------------ iocs/bl45p-mo-ioc-01/values.yaml | 1 - 8 files changed, 8 insertions(+), 101 deletions(-) mode change 100644 => 120000 iocs/bl45p-ea-ioc-01/config/start.sh mode change 100644 => 120000 iocs/bl45p-ea-ioc-02/config/start.sh mode change 100644 => 120000 iocs/bl45p-mo-ioc-01/config/start.sh diff --git a/edm/bl45p-launcher.sh b/edm/bl45p-launcher.sh index 06dd667..389edbc 100755 --- a/edm/bl45p-launcher.sh +++ b/edm/bl45p-launcher.sh @@ -7,7 +7,7 @@ thisdir=$(realpath $(dirname ${BASH_SOURCE[0]})) # if there is a no cagateway running on p45-ws001 at 172.23.59.64 # use addresses for all nodes in the p45 beamline instead -export EPICS_CA_ADDR_LIST=${EPICS_CA_ADDR_LIST:-"172.23.59.101 172.23.59.1"} +export EPICS_CA_ADDR_LIST:-"172.23.59.101 172.23.59.1" # if there is a local install of edm run it (deprecated for RHEL8 !!) # diff --git a/helm-push.sh b/helm-push.sh index 8b41a8b..d0c4c90 100755 --- a/helm-push.sh +++ b/helm-push.sh @@ -7,8 +7,8 @@ set -e IOC_ROOT="$(realpath ${1})" -# determine the tag to use based on date or argument 2 -TAG=${2:-$(date +%Y.%-m.%-d-%-H%M)} +# create a tag for todays date and beta number as time of day +TAG=${2:-$(+%Y.%-m.%-d-b%-H.%M)} if [ -z "${IOC_ROOT}" ] ; then echo "usage: helm-push.sh " diff --git a/iocs/bl45p-ea-ioc-01/config/start.sh b/iocs/bl45p-ea-ioc-01/config/start.sh deleted file mode 100644 index 5d34287..0000000 --- a/iocs/bl45p-ea-ioc-01/config/start.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -# -# generic kubernetes IOC startup script -# -this_dir=$(realpath $(dirname $0)) -TOP=$(realpath ${this_dir}/..) -cd ${this_dir} - -# add module paths to environment for use in ioc startup script -source ${SUPPORT}/configure/RELEASE.shell - -# if there is a non-zero length config.tz then decompress into config_untar -if [ -s config.tz ] -then - # decompress the configuration files into config_untar - config_dir=${TOP}/config_untar - - mkdir -p ${config_dir} - tar -zxvf config.tz -C ${config_dir} -else - config_dir=${TOP}/config -fi - -boot=${config_dir}/ioc.boot - -# Update the boot script to work in the directory it resides in -# using msi MACRO substitution. -# Output to /tmp for guarenteed writability -msi -MTOP=${TOP},THIS_DIR=${config_dir},ADCORE=${adcore} ${boot} > /tmp/ioc.boot - -exec ${IOC}/bin/linux-x86_64/ioc /tmp/ioc.boot \ No newline at end of file diff --git a/iocs/bl45p-ea-ioc-01/config/start.sh b/iocs/bl45p-ea-ioc-01/config/start.sh new file mode 120000 index 0000000..1fea5d0 --- /dev/null +++ b/iocs/bl45p-ea-ioc-01/config/start.sh @@ -0,0 +1 @@ +../../start.sh \ No newline at end of file diff --git a/iocs/bl45p-ea-ioc-01/values.yaml b/iocs/bl45p-ea-ioc-01/values.yaml index d86c1b8..c6b919a 100644 --- a/iocs/bl45p-ea-ioc-01/values.yaml +++ b/iocs/bl45p-ea-ioc-01/values.yaml @@ -1,5 +1,4 @@ -name: bl45p-ea-ioc-01 -base_image: ghcr.io/epics-containers/ioc-adaravis:2.2.1r3.0.run +base_image: ghcr.io/epics-containers/ioc-adaravis:1.0.1.run # Area detector may need more than beamline default resources resources: @@ -8,4 +7,4 @@ resources: memory: 4Gi requests: cpu: 1 - memory: 500Mi \ No newline at end of file + memory: 500Mi diff --git a/iocs/bl45p-ea-ioc-02/config/start.sh b/iocs/bl45p-ea-ioc-02/config/start.sh deleted file mode 100644 index 5d34287..0000000 --- a/iocs/bl45p-ea-ioc-02/config/start.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -# -# generic kubernetes IOC startup script -# -this_dir=$(realpath $(dirname $0)) -TOP=$(realpath ${this_dir}/..) -cd ${this_dir} - -# add module paths to environment for use in ioc startup script -source ${SUPPORT}/configure/RELEASE.shell - -# if there is a non-zero length config.tz then decompress into config_untar -if [ -s config.tz ] -then - # decompress the configuration files into config_untar - config_dir=${TOP}/config_untar - - mkdir -p ${config_dir} - tar -zxvf config.tz -C ${config_dir} -else - config_dir=${TOP}/config -fi - -boot=${config_dir}/ioc.boot - -# Update the boot script to work in the directory it resides in -# using msi MACRO substitution. -# Output to /tmp for guarenteed writability -msi -MTOP=${TOP},THIS_DIR=${config_dir},ADCORE=${adcore} ${boot} > /tmp/ioc.boot - -exec ${IOC}/bin/linux-x86_64/ioc /tmp/ioc.boot \ No newline at end of file diff --git a/iocs/bl45p-ea-ioc-02/config/start.sh b/iocs/bl45p-ea-ioc-02/config/start.sh new file mode 120000 index 0000000..1fea5d0 --- /dev/null +++ b/iocs/bl45p-ea-ioc-02/config/start.sh @@ -0,0 +1 @@ +../../start.sh \ No newline at end of file diff --git a/iocs/bl45p-ea-ioc-02/values.yaml b/iocs/bl45p-ea-ioc-02/values.yaml index b27b321..d8c84f9 100644 --- a/iocs/bl45p-ea-ioc-02/values.yaml +++ b/iocs/bl45p-ea-ioc-02/values.yaml @@ -1,2 +1 @@ -name: bl45p-ea-ioc-02 base_image: ghcr.io/epics-containers/ioc-adpandablocks:4.14r1.0.run diff --git a/iocs/bl45p-mo-ioc-01/config/start.sh b/iocs/bl45p-mo-ioc-01/config/start.sh deleted file mode 100644 index db4e875..0000000 --- a/iocs/bl45p-mo-ioc-01/config/start.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -######################################## -# generic kubernetes IOC startup script -######################################## - -this_dir=$(realpath $(dirname $0)) -TOP=$(realpath ${this_dir}/..) - -cd ${this_dir} -if [ -f config.tz ] -then - # decompress the configuration files into config_untar - config_dir=${TOP}/config_untar - - mkdir -p ${config_dir} - tar -zxvf config.tz -C ${config_dir} -else - config_dir=${TOP}/config -fi - -boot=${config_dir}/ioc.boot - -# Update the boot script to work in the directory it resides in -# using msi MACRO substitution. -# Output to /tmp for guarenteed writability. -msi -MTOP=${TOP},THIS_DIR=${config_dir} ${boot} > /tmp/ioc.boot - -exec ${IOC}/bin/linux-x86_64/ioc /tmp/ioc.boot \ No newline at end of file diff --git a/iocs/bl45p-mo-ioc-01/config/start.sh b/iocs/bl45p-mo-ioc-01/config/start.sh new file mode 120000 index 0000000..1fea5d0 --- /dev/null +++ b/iocs/bl45p-mo-ioc-01/config/start.sh @@ -0,0 +1 @@ +../../start.sh \ No newline at end of file diff --git a/iocs/bl45p-mo-ioc-01/values.yaml b/iocs/bl45p-mo-ioc-01/values.yaml index e648734..95d2c3d 100644 --- a/iocs/bl45p-mo-ioc-01/values.yaml +++ b/iocs/bl45p-mo-ioc-01/values.yaml @@ -1,2 +1 @@ -name: bl45p-mo-ioc-01 base_image: ghcr.io/epics-containers/ioc-pmac:1.0.0.run From 944d5335c1d36771394d297003213df7fd880845 Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Fri, 27 May 2022 13:34:51 +0100 Subject: [PATCH 03/16] make start.sh work on readonly ioc folder --- edm/bl45p-launcher.sh | 2 +- helm-push.sh | 4 ++-- iocs/bl45p-ea-ioc-01/config/start.sh | 33 +--------------------------- iocs/bl45p-ea-ioc-01/values.yaml | 5 ++--- iocs/bl45p-ea-ioc-02/config/start.sh | 33 +--------------------------- iocs/bl45p-ea-ioc-02/values.yaml | 1 - iocs/bl45p-mo-ioc-01/config/start.sh | 30 +------------------------ iocs/bl45p-mo-ioc-01/values.yaml | 1 - iocs/start.sh | 32 +++++++++++++++++++++++++++ 9 files changed, 40 insertions(+), 101 deletions(-) mode change 100644 => 120000 iocs/bl45p-ea-ioc-01/config/start.sh mode change 100644 => 120000 iocs/bl45p-ea-ioc-02/config/start.sh mode change 100644 => 120000 iocs/bl45p-mo-ioc-01/config/start.sh create mode 100644 iocs/start.sh diff --git a/edm/bl45p-launcher.sh b/edm/bl45p-launcher.sh index 06dd667..389edbc 100755 --- a/edm/bl45p-launcher.sh +++ b/edm/bl45p-launcher.sh @@ -7,7 +7,7 @@ thisdir=$(realpath $(dirname ${BASH_SOURCE[0]})) # if there is a no cagateway running on p45-ws001 at 172.23.59.64 # use addresses for all nodes in the p45 beamline instead -export EPICS_CA_ADDR_LIST=${EPICS_CA_ADDR_LIST:-"172.23.59.101 172.23.59.1"} +export EPICS_CA_ADDR_LIST:-"172.23.59.101 172.23.59.1" # if there is a local install of edm run it (deprecated for RHEL8 !!) # diff --git a/helm-push.sh b/helm-push.sh index 8b41a8b..d0c4c90 100755 --- a/helm-push.sh +++ b/helm-push.sh @@ -7,8 +7,8 @@ set -e IOC_ROOT="$(realpath ${1})" -# determine the tag to use based on date or argument 2 -TAG=${2:-$(date +%Y.%-m.%-d-%-H%M)} +# create a tag for todays date and beta number as time of day +TAG=${2:-$(+%Y.%-m.%-d-b%-H.%M)} if [ -z "${IOC_ROOT}" ] ; then echo "usage: helm-push.sh " diff --git a/iocs/bl45p-ea-ioc-01/config/start.sh b/iocs/bl45p-ea-ioc-01/config/start.sh deleted file mode 100644 index 5d34287..0000000 --- a/iocs/bl45p-ea-ioc-01/config/start.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -# -# generic kubernetes IOC startup script -# -this_dir=$(realpath $(dirname $0)) -TOP=$(realpath ${this_dir}/..) -cd ${this_dir} - -# add module paths to environment for use in ioc startup script -source ${SUPPORT}/configure/RELEASE.shell - -# if there is a non-zero length config.tz then decompress into config_untar -if [ -s config.tz ] -then - # decompress the configuration files into config_untar - config_dir=${TOP}/config_untar - - mkdir -p ${config_dir} - tar -zxvf config.tz -C ${config_dir} -else - config_dir=${TOP}/config -fi - -boot=${config_dir}/ioc.boot - -# Update the boot script to work in the directory it resides in -# using msi MACRO substitution. -# Output to /tmp for guarenteed writability -msi -MTOP=${TOP},THIS_DIR=${config_dir},ADCORE=${adcore} ${boot} > /tmp/ioc.boot - -exec ${IOC}/bin/linux-x86_64/ioc /tmp/ioc.boot \ No newline at end of file diff --git a/iocs/bl45p-ea-ioc-01/config/start.sh b/iocs/bl45p-ea-ioc-01/config/start.sh new file mode 120000 index 0000000..1fea5d0 --- /dev/null +++ b/iocs/bl45p-ea-ioc-01/config/start.sh @@ -0,0 +1 @@ +../../start.sh \ No newline at end of file diff --git a/iocs/bl45p-ea-ioc-01/values.yaml b/iocs/bl45p-ea-ioc-01/values.yaml index d86c1b8..c6b919a 100644 --- a/iocs/bl45p-ea-ioc-01/values.yaml +++ b/iocs/bl45p-ea-ioc-01/values.yaml @@ -1,5 +1,4 @@ -name: bl45p-ea-ioc-01 -base_image: ghcr.io/epics-containers/ioc-adaravis:2.2.1r3.0.run +base_image: ghcr.io/epics-containers/ioc-adaravis:1.0.1.run # Area detector may need more than beamline default resources resources: @@ -8,4 +7,4 @@ resources: memory: 4Gi requests: cpu: 1 - memory: 500Mi \ No newline at end of file + memory: 500Mi diff --git a/iocs/bl45p-ea-ioc-02/config/start.sh b/iocs/bl45p-ea-ioc-02/config/start.sh deleted file mode 100644 index 5d34287..0000000 --- a/iocs/bl45p-ea-ioc-02/config/start.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -# -# generic kubernetes IOC startup script -# -this_dir=$(realpath $(dirname $0)) -TOP=$(realpath ${this_dir}/..) -cd ${this_dir} - -# add module paths to environment for use in ioc startup script -source ${SUPPORT}/configure/RELEASE.shell - -# if there is a non-zero length config.tz then decompress into config_untar -if [ -s config.tz ] -then - # decompress the configuration files into config_untar - config_dir=${TOP}/config_untar - - mkdir -p ${config_dir} - tar -zxvf config.tz -C ${config_dir} -else - config_dir=${TOP}/config -fi - -boot=${config_dir}/ioc.boot - -# Update the boot script to work in the directory it resides in -# using msi MACRO substitution. -# Output to /tmp for guarenteed writability -msi -MTOP=${TOP},THIS_DIR=${config_dir},ADCORE=${adcore} ${boot} > /tmp/ioc.boot - -exec ${IOC}/bin/linux-x86_64/ioc /tmp/ioc.boot \ No newline at end of file diff --git a/iocs/bl45p-ea-ioc-02/config/start.sh b/iocs/bl45p-ea-ioc-02/config/start.sh new file mode 120000 index 0000000..1fea5d0 --- /dev/null +++ b/iocs/bl45p-ea-ioc-02/config/start.sh @@ -0,0 +1 @@ +../../start.sh \ No newline at end of file diff --git a/iocs/bl45p-ea-ioc-02/values.yaml b/iocs/bl45p-ea-ioc-02/values.yaml index b27b321..d8c84f9 100644 --- a/iocs/bl45p-ea-ioc-02/values.yaml +++ b/iocs/bl45p-ea-ioc-02/values.yaml @@ -1,2 +1 @@ -name: bl45p-ea-ioc-02 base_image: ghcr.io/epics-containers/ioc-adpandablocks:4.14r1.0.run diff --git a/iocs/bl45p-mo-ioc-01/config/start.sh b/iocs/bl45p-mo-ioc-01/config/start.sh deleted file mode 100644 index db4e875..0000000 --- a/iocs/bl45p-mo-ioc-01/config/start.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -######################################## -# generic kubernetes IOC startup script -######################################## - -this_dir=$(realpath $(dirname $0)) -TOP=$(realpath ${this_dir}/..) - -cd ${this_dir} -if [ -f config.tz ] -then - # decompress the configuration files into config_untar - config_dir=${TOP}/config_untar - - mkdir -p ${config_dir} - tar -zxvf config.tz -C ${config_dir} -else - config_dir=${TOP}/config -fi - -boot=${config_dir}/ioc.boot - -# Update the boot script to work in the directory it resides in -# using msi MACRO substitution. -# Output to /tmp for guarenteed writability. -msi -MTOP=${TOP},THIS_DIR=${config_dir} ${boot} > /tmp/ioc.boot - -exec ${IOC}/bin/linux-x86_64/ioc /tmp/ioc.boot \ No newline at end of file diff --git a/iocs/bl45p-mo-ioc-01/config/start.sh b/iocs/bl45p-mo-ioc-01/config/start.sh new file mode 120000 index 0000000..1fea5d0 --- /dev/null +++ b/iocs/bl45p-mo-ioc-01/config/start.sh @@ -0,0 +1 @@ +../../start.sh \ No newline at end of file diff --git a/iocs/bl45p-mo-ioc-01/values.yaml b/iocs/bl45p-mo-ioc-01/values.yaml index e648734..95d2c3d 100644 --- a/iocs/bl45p-mo-ioc-01/values.yaml +++ b/iocs/bl45p-mo-ioc-01/values.yaml @@ -1,2 +1 @@ -name: bl45p-mo-ioc-01 base_image: ghcr.io/epics-containers/ioc-pmac:1.0.0.run diff --git a/iocs/start.sh b/iocs/start.sh new file mode 100644 index 0000000..d993bca --- /dev/null +++ b/iocs/start.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# +# generic kubernetes IOC startup script +# +this_dir=$(realpath $(dirname $0)) +TOP=$(realpath ${this_dir}/..) +cd ${this_dir} + +# add module paths to environment for use in ioc startup script +source ${SUPPORT}/configure/RELEASE.shell + +# if there is a non-zero length config.tz then decompress into config_untar +if [ -s config.tz ] +then + # decompress the configuration files into config_untar + config_dir=/tmp/config_untar + + mkdir -p ${config_dir} + tar -zxvf config.tz -C ${config_dir} +else + config_dir=${TOP}/config +fi + +boot=${config_dir}/ioc.boot + +# Update the boot script to work in the directory it resides in +# using msi MACRO substitution. +# Output to /tmp for guarenteed writability +msi -MTOP=${TOP},THIS_DIR=${config_dir},ADCORE=${adcore} ${boot} > /tmp/ioc.boot + +exec ${IOC}/bin/linux-x86_64/ioc /tmp/ioc.boot \ No newline at end of file From ca8d88a84c92f7b55b8ed0eb53d4efe665ed661d Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Tue, 31 May 2022 13:54:29 +0000 Subject: [PATCH 04/16] add mo-99 ibek test IOC --- bl45p-mo-ioc-01.yaml | 25 + bl45p-mo-ioc-99.yaml | 25 + ibek/asyn.ibek.defs.yaml | 100 ++++ .../bl45p-mo-ioc-04.ibek.entities.schema.json | 483 ++++++++++++++++++ ibek/epics.ibek.defs.yaml | 45 ++ ibek/make_schemas.sh | 4 + ibek/pmac.ibek.defs.yaml | 373 ++++++++++++++ ibek/pmac.ibek.entities.schema.json | 480 +++++++++++++++++ tests/bl45p-mo-ioc-99.sh | 16 + 9 files changed, 1551 insertions(+) create mode 100644 bl45p-mo-ioc-01.yaml create mode 100644 bl45p-mo-ioc-99.yaml create mode 100644 ibek/asyn.ibek.defs.yaml create mode 100644 ibek/bl45p-mo-ioc-04.ibek.entities.schema.json create mode 100644 ibek/epics.ibek.defs.yaml create mode 100755 ibek/make_schemas.sh create mode 100644 ibek/pmac.ibek.defs.yaml create mode 100644 ibek/pmac.ibek.entities.schema.json create mode 100755 tests/bl45p-mo-ioc-99.sh diff --git a/bl45p-mo-ioc-01.yaml b/bl45p-mo-ioc-01.yaml new file mode 100644 index 0000000..9f351d6 --- /dev/null +++ b/bl45p-mo-ioc-01.yaml @@ -0,0 +1,25 @@ +# yaml-language-server: $schema=file:///workspace/bl45p/ibek/pmac.ibek.entities.schema.json +ioc_name: bl45p-mo-ioc-01 +description: motion IOC for the test beamline p45 in G13 +generic_ioc_image: ghcr.io/epics-containers/ioc-pmac:main.run + +entities: + - type: pmac.PmacAsynIPPort + name: BRICK1port + IP: 172.23.59.21 + + - type: pmac.Geobrick + name: BL45P-MO-BRICK-01 + PORT: BRICK1port + P: "BL45P-MO-STEP-01:" + numAxes: 8 + idlePoll: 100 + movingPoll: 500 + + - type: pmac.DlsPmacAsynMotor + name: Sample Theta + PMAC: BL45P-MO-BRICK-01 + axis: 1 + P: BL45P-MO-SAMP-01 + M: ":THETA" + MRES: 0.036 diff --git a/bl45p-mo-ioc-99.yaml b/bl45p-mo-ioc-99.yaml new file mode 100644 index 0000000..9dddc98 --- /dev/null +++ b/bl45p-mo-ioc-99.yaml @@ -0,0 +1,25 @@ +# yaml-language-server: $schema=file:///workspace/bl45p/ibek/pmac.ibek.entities.schema.json +ioc_name: bl45p-mo-ioc-99 +description: motion IOC for the test beamline p45 in G13 +generic_ioc_image: ghcr.io/epics-containers/ioc-pmac:main.run + +entities: + - type: pmac.PmacAsynIPPort + name: BRICK1port + IP: 172.23.59.21 + + - type: pmac.Geobrick + name: BL45P-MO-BRICK-99 + PORT: BRICK1port + P: "BL45P-MO-STEP-99:" + numAxes: 8 + idlePoll: 100 + movingPoll: 500 + + - type: pmac.DlsPmacAsynMotor + name: Sample Theta + PMAC: BL45P-MO-BRICK-99 + axis: 1 + P: BL45P-MO-SAMP-99 + M: ":THETA" + MRES: 0.036 diff --git a/ibek/asyn.ibek.defs.yaml b/ibek/asyn.ibek.defs.yaml new file mode 100644 index 0000000..bf7d9a6 --- /dev/null +++ b/ibek/asyn.ibek.defs.yaml @@ -0,0 +1,100 @@ +# yaml-language-server: $schema=file://schemas/ibek.defs.schema.json +module: asyn +defs: + - name: AsynSerial + args: + - type: str + name: port + description: The port name for this asyn object + - type: str + name: input_eos + description: Input end of string (terminator) + default: null + - type: str + name: output_eos + description: Output end of string (terminator) + default: null + - type: int + name: priority + description: Priority + default: 100 + - type: bool + name: noAutoConnect + description: Set to stop auto connect + default: + - type: bool + name: noProcessEos + description: Set to avoid processing end of string + default: null + - type: str + name: simulation + description: IP port to connect to if in simulation mode + default: null + - type: int + name: baud + description: Baud Rate + default: null + - type: int + name: bits + # TODO we should add enums to ibek's allowed data types + # TODO this would require we define the enum values int 'type:' too + description: Bits [8,7,6,5] + default: null + - type: str + name: parity + description: Parity [null,even,odd] + default: null + - type: int + name: stop + description: Stop Bits [1,2] + default: null + # note the Asyn API uses Y, N but we will tidy anomalies like this and + # hide them in the Jinja instead + - type: bool + name: crtscts + description: Set hardware flow control on + default: null + script: + - TODO provide Jinja to generate Startup Entries + - note this is interesting because builder.py has a few if clauses + - for generating the necessary script + + # TODO potentially we could break out the common arguments into another object + # TODO like AsynPort in builder.py. This would require a change that allows + # TODO us to embed definition of one object within another + - name: AsynIP + args: + - type: str + name: port + description: Serial port tty name / IP address optionally followed by protocol + - type: str + name: name + description: Name for the Asyn Port + - type: str + name: input_eos + description: Input end of string (terminator) + default: null + - type: str + name: output_eos + description: Output end of string (terminator) + default: null + - type: int + name: priority + description: Priority + default: 100 + - type: bool + name: noAutoConnect + description: Set to stop auto connect + default: + - type: bool + name: noProcessEos + description: Set to avoid processing end of string + default: null + - type: str + name: simulation + description: IP port to connect to if in simulation mode + default: null + script: + - TODO provide Jinja to generate Startup Entries + - note this is interesting because builder.py has a few if clauses + - for generating the necessary script \ No newline at end of file diff --git a/ibek/bl45p-mo-ioc-04.ibek.entities.schema.json b/ibek/bl45p-mo-ioc-04.ibek.entities.schema.json new file mode 100644 index 0000000..be68275 --- /dev/null +++ b/ibek/bl45p-mo-ioc-04.ibek.entities.schema.json @@ -0,0 +1,483 @@ +{ + "type": "object", + "properties": { + "ioc_name": { + "type": "string", + "description": "Name of IOC instance" + }, + "description": { + "type": "string", + "description": "Description of what the IOC does" + }, + "entities": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "max_bytes": { + "type": "integer", + "description": "Max size in bytes for sending arrays over channel access", + "default": 6000000 + }, + "type": { + "type": "string", + "const": "epics.EPICS_CA_MAX_ARRAY_BYTES", + "default": "epics.EPICS_CA_MAX_ARRAY_BYTES" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "minutes_west": { + "type": "integer", + "description": "Set relative time zone minutes West relative to GMT (+/-720)", + "default": 0 + }, + "type": { + "type": "string", + "const": "epics.EPICS_TS_MIN_WEST", + "default": "epics.EPICS_TS_MIN_WEST" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "pv": { + "type": "string", + "description": "Name of PV" + }, + "value": { + "type": "string", + "description": "Value to set" + }, + "type": { + "type": "string", + "const": "epics.dbpf", + "default": "epics.dbpf" + } + }, + "required": [ + "pv", + "value" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "name": { + "type": "string", + "description": "Name of environment variable" + }, + "value": { + "type": "string", + "description": "Value of environment variable" + }, + "type": { + "type": "string", + "const": "epics.epicsEnvSet", + "default": "epics.epicsEnvSet" + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "name": { + "type": "string", + "description": "Name to use for the geobrick's asyn port" + }, + "PORT": { + "type": "string", + "description": "Asyn port name for PmacAsynIPPort to connect to", + "vscode_ibek_plugin_type": "type_object" + }, + "P": { + "type": "string", + "description": "PV Prefix for all pmac db templates" + }, + "numAxes": { + "type": "integer", + "description": "number of axes to initialize for the controller" + }, + "idlePoll": { + "type": "integer", + "description": "Idle Poll Period in ms" + }, + "movingPoll": { + "type": "integer", + "description": "Moving Poll Period in ms" + }, + "type": { + "type": "string", + "const": "pmac.Geobrick", + "default": "pmac.Geobrick" + } + }, + "required": [ + "name", + "PORT", + "P", + "numAxes", + "idlePoll", + "movingPoll" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "name": { + "type": "string", + "description": "Asyn port name", + "vscode_ibek_plugin_type": "type_id" + }, + "IP": { + "type": "string", + "description": "IP address of pmac" + }, + "type": { + "type": "string", + "const": "pmac.PmacAsynIPPort", + "default": "pmac.PmacAsynIPPort" + } + }, + "required": [ + "name", + "IP" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "PMAC": { + "type": "string", + "description": "PMAC to attach to" + }, + "axis": { + "type": "integer", + "description": "which axis number this motor drives" + }, + "P": { + "type": "string", + "description": "PV prefix name for this motor" + }, + "M": { + "type": "string", + "description": "PV motor name for this motor" + }, + "PORT": { + "type": "string", + "description": "Delta tau motor controller" + }, + "name": { + "type": "string", + "description": "Object name and gui association name" + }, + "DESC": { + "type": "string", + "description": "Description, displayed on EDM screen", + "default": "" + }, + "MRES": { + "type": "number", + "description": "Motor Step Size (EGU)", + "default": 0.0001 + }, + "VELO": { + "type": "number", + "description": "axis Velocity (EGU/s)", + "default": 1.0 + }, + "PREC": { + "type": "number", + "description": "Display Precision", + "default": 3.0 + }, + "EGU": { + "type": "string", + "description": "Engineering Units", + "default": "mm" + }, + "TWV": { + "type": "integer", + "description": "Tweak Step Size (EGU)", + "default": 1 + }, + "DTYP": { + "type": "string", + "description": "Datatype of record", + "default": "asynMotor" + }, + "DIR": { + "type": "integer", + "description": "User direction", + "default": 0 + }, + "VBAS": { + "type": "number", + "description": "Base Velocity (EGU/s)", + "default": 1.0 + }, + "VMAX": { + "type": "string", + "description": "Max Velocity (EGU/s)", + "default": "$(VELO)" + }, + "ACCL": { + "type": "number", + "description": "Seconds to Velocity", + "default": 0.5 + }, + "BDST": { + "type": "number", + "description": "BL Distance (EGU)", + "default": 0.0 + }, + "BVEL": { + "type": "number", + "description": "BL Velocity(EGU/s)", + "default": 0.0 + }, + "BACC": { + "type": "number", + "description": "BL Seconds to Veloc", + "default": 0.0 + }, + "DHLM": { + "type": "number", + "description": "Dial High Limit", + "default": 10000.0 + }, + "DLMM": { + "type": "number", + "description": "Dial low limit", + "default": -10000.0 + }, + "HLM": { + "type": "number", + "description": "User High Limit", + "default": 0.0 + }, + "LLM": { + "type": "number", + "description": "User Low Limit", + "default": 0.0 + }, + "HLSV": { + "type": "string", + "description": "HW Lim, Violation Svr", + "default": "MAJOR" + }, + "INIT": { + "type": "string", + "description": "Startup commands", + "default": "" + }, + "SREV": { + "type": "number", + "description": "Steps per Revolution", + "default": 1000.0 + }, + "RRES": { + "type": "number", + "description": "Readback Step Size (EGU", + "default": 0.0 + }, + "ERES": { + "type": "number", + "description": "Encoder Step Size (EGU)", + "default": 0.0 + }, + "JAR": { + "type": "number", + "description": "Jog Acceleration (EGU/s^2)", + "default": 0.0 + }, + "UEIP": { + "type": "integer", + "description": "Use Encoder If Present", + "default": 0 + }, + "URIP": { + "type": "integer", + "description": "Use RDBL If Present", + "default": 0 + }, + "RDBL": { + "type": "string", + "description": "Readback Location, set URIP =1 if you specify this", + "default": "0" + }, + "RLNK": { + "type": "string", + "description": "Readback output link", + "default": "" + }, + "RTRY": { + "type": "integer", + "description": "Max retry count", + "default": 0 + }, + "DLY": { + "type": "number", + "description": "Readback settle time (s)", + "default": 0.0 + }, + "OFF": { + "type": "number", + "description": "User Offset (EGU)", + "default": 0.0 + }, + "RDBD": { + "type": "number", + "description": "Retry Deadband (EGU)", + "default": 0.0 + }, + "FOFF": { + "type": "integer", + "description": "Freeze Offset, 0=variable, 1=frozen", + "default": 0 + }, + "ADEL": { + "type": "number", + "description": "Alarm monitor deadband (EGU)", + "default": 0.0 + }, + "NTM": { + "type": "integer", + "description": "New Target Monitor, only set to 0 for soft motors", + "default": 1 + }, + "FEHEIGH": { + "type": "number", + "description": "HIGH limit for following error", + "default": 0.0 + }, + "FEHIHI": { + "type": "number", + "description": "HIHI limit for following error", + "default": 0.0 + }, + "FEHHSV": { + "type": "string", + "description": "HIHI alarm severity for following error", + "default": "NO_ALARM" + }, + "FEHSV": { + "type": "string", + "description": "HIGH alarm severity for following error", + "default": "NO_ALARM" + }, + "SCALE": { + "type": "integer", + "default": 1 + }, + "HOMEVIS": { + "type": "integer", + "description": "If 1 then home is visible on the gui", + "default": 1 + }, + "HOMEVISST": { + "type": "string", + "default": "Use motor summary screen" + }, + "alh": { + "type": "string", + "description": "Set this to alh to add the motor to the alarm handler and send emails", + "default": "" + }, + "gda_name": { + "type": "string", + "description": "Name to export this as to GDA", + "default": "none" + }, + "gda_desc": { + "type": "string", + "description": "Description to export as to GDA", + "default": "$(DESC)" + }, + "HOME": { + "type": "string", + "description": "Prefix for autohome instance. Defaults to $(P) If unspecified", + "default": "$(P)" + }, + "ALLOW_HOMED_SET": { + "type": "string", + "description": "Set to a blank to allow this axis to have its homed", + "default": "#" + }, + "type": { + "type": "string", + "const": "pmac.DlsPmacAsynMotor", + "default": "pmac.DlsPmacAsynMotor" + } + }, + "required": [ + "PMAC", + "axis", + "P", + "M", + "PORT", + "name" + ], + "additionalProperties": false + } + ] + }, + "description": "List of entities this IOC instantiates" + }, + "generic_ioc_image": { + "type": "string", + "description": "The generic IOC container image registry URL" + } + }, + "required": [ + "ioc_name", + "description", + "entities", + "generic_ioc_image" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/ibek/epics.ibek.defs.yaml b/ibek/epics.ibek.defs.yaml new file mode 100644 index 0000000..35e136f --- /dev/null +++ b/ibek/epics.ibek.defs.yaml @@ -0,0 +1,45 @@ +# yaml-language-server: $schema=file://schemas/ibek.defs.schema.json +module: epics +defs: + - name: EPICS_CA_MAX_ARRAY_BYTES + args: + - type: int + name: max_bytes + description: Max size in bytes for sending arrays over channel access + default: 6000000 + env_vars: + - name: EPICS_CA_MAX_ARRAY_BYTES + value: "{{ max_bytes }}" + + - name: EPICS_TS_MIN_WEST + args: + - type: int + name: minutes_west + description: Set relative time zone minutes West relative to GMT (+/-720) + default: 0 + env_vars: + - name: EPICS_TS_MIN_WEST + value: "{{ minutes_west }}" + + - name: dbpf + args: + - type: str + name: pv + description: Name of PV + - type: str + name: value + description: Value to set + post_ioc_init: + - dbpf "{{ pv }}", "{{ value }}" + + - name: epicsEnvSet + args: + - type: str + name: name + description: Name of environment variable + - type: str + name: value + description: Value of environment variable + env_vars: + - name: "{{ name }}" + value: "{{ value }}" diff --git a/ibek/make_schemas.sh b/ibek/make_schemas.sh new file mode 100755 index 0000000..9bc77dd --- /dev/null +++ b/ibek/make_schemas.sh @@ -0,0 +1,4 @@ +#!/bin/bash +this_dir=$(realpath $(dirname $0)) + +ibek ioc-schema ${this_dir}/{epics,pmac}.ibek.defs.yaml ${this_dir}/pmac.ibek.entities.schema.json "${@}" \ No newline at end of file diff --git a/ibek/pmac.ibek.defs.yaml b/ibek/pmac.ibek.defs.yaml new file mode 100644 index 0000000..98cd622 --- /dev/null +++ b/ibek/pmac.ibek.defs.yaml @@ -0,0 +1,373 @@ +# yaml-language-server: $schema=../schemas/ibek.defs.schema.json +module: pmac +defs: + # TODO - this is basic Geobrick support only. Does not do CS groups or + # status screen PVs + - name: Geobrick + args: + - type: id + name: name + description: Name to use for the geobrick's asyn port + + - type: object + name: PORT + description: Asyn port name for PmacAsynIPPort to connect to + + - type: str + name: P + description: PV Prefix for all pmac db templates + + - type: int + name: numAxes + description: number of axes to initialize for the controller + + - type: int + name: idlePoll + description: Idle Poll Period in ms + + - type: int + name: movingPoll + description: Moving Poll Period in ms + + # axes hard coded to 8 for geobrick (builder.py counted the axes created) + # TODO is num_axes is an example of something hard to do in this new approach? + script: + - pmacCreateController({{name}}, {{PORT.name}}, 0, {{numAxes}}, {{movingPoll}}, {{idlePoll}}) + - pmacCreateAxes({{name}}, {{numAxes}}) + + databases: + - file: pmacController.template + define_args: PMAC={{ P }} + - file: pmacStatus.template + define_args: PMAC={{ P }} + + - name: PmacAsynIPPort + args: + - type: id + name: name + description: Asyn port name + + - type: str + name: IP + description: IP address of pmac + + script: + - pmacAsynIPConfigure({{name}}, {{IP if ":" in IP else IP + ":1025"}}) + + - name: DlsPmacAsynMotor + args: + # IMPORTANT: all non-defaulted args must come first + + - type: str + name: name + description: Object name and gui association name + + - type: object + name: PMAC + description: PMAC to attach to + + - type: int + name: axis + description: which axis number this motor drives + + - type: str + name: P + description: PV prefix name for this motor + + - type: str + name: M + description: PV motor name for this motor + + - type: str + name: DESC + description: Description, displayed on EDM screen + default: "" + + - type: float + name: MRES + description: Motor Step Size (EGU) + default: 0.0001 + + - type: float + name: VELO + description: axis Velocity (EGU/s) + default: 1.0 + + - type: float + name: PREC + description: Display Precision + default: 3 + + - type: str + name: EGU + description: Engineering Units + default: mm + + - type: int + name: TWV + description: Tweak Step Size (EGU) + default: 1 + + - type: str + name: DTYP + description: Datatype of record + default: asynMotor + + - type: int + name: DIR + description: User direction + default: 0 + + - type: float + name: VBAS + description: Base Velocity (EGU/s) + default: 1.0 + + - type: str + name: VMAX + description: Max Velocity (EGU/s) + default: $(VELO) + + - type: float + name: ACCL + description: Seconds to Velocity + default: 0.5 + + - type: float + name: BDST + description: BL Distance (EGU) + default: 0 + + - type: float + name: BVEL + description: BL Velocity(EGU/s) + default: 0 + + - type: float + name: BACC + description: BL Seconds to Veloc + default: 0 + + - type: float + name: DHLM + description: Dial High Limit + default: 10000 + + - type: float + name: DLMM + description: Dial low limit + default: -10000 + + - type: float + name: HLM + description: User High Limit + default: 0 + + - type: float + name: LLM + description: User Low Limit + default: 0 + + - type: str + name: HLSV + description: HW Lim, Violation Svr + default: MAJOR + + - type: str + name: INIT + description: Startup commands + default: "" + + - type: float + name: SREV + description: Steps per Revolution + default: 1000 + + - type: float + name: RRES + description: Readback Step Size (EGU + default: 0 + + - type: float + name: ERES + description: Encoder Step Size (EGU) + default: 0 + + - type: float + name: JAR + description: Jog Acceleration (EGU/s^2) + default: 0 + + - type: int + name: UEIP + description: Use Encoder If Present + default: 0 + + - type: int + name: URIP + description: Use RDBL If Present + default: 0 + + - type: str + name: RDBL + description: Readback Location, set URIP =1 if you specify this + default: "0" + + - type: str + name: RLNK + description: Readback output link + default: "" + + - type: int + name: RTRY + description: Max retry count + default: 0 + + - type: float + name: DLY + description: Readback settle time (s) + default: 0 + + - type: float + name: "OFF" + description: User Offset (EGU) + default: 0 + + - type: float + name: RDBD + description: Retry Deadband (EGU) + default: 0 + + - type: int + name: FOFF + description: Freeze Offset, 0=variable, 1=frozen + default: 0 + + - type: float + name: ADEL + description: Alarm monitor deadband (EGU) + default: 0 + + - type: int + name: NTM + description: New Target Monitor, only set to 0 for soft motors + default: 1 + + - type: float + name: FEHEIGH + description: HIGH limit for following error + default: 0 + + - type: float + name: FEHIHI + description: HIHI limit for following error + default: 0 + + - type: str + name: FEHHSV + description: HIHI alarm severity for following error + default: NO_ALARM + + - type: str + name: FEHSV + description: HIGH alarm severity for following error + default: NO_ALARM + + - type: int + name: SCALE + description: "" + default: 1 + + - type: int + name: HOMEVIS + description: If 1 then home is visible on the gui + default: 1 + + - type: str + name: HOMEVISST + description: "" + default: Use motor summary screen + + - type: str + name: alh + description: Set this to alh to add the motor to the alarm handler and send emails + default: "" + + - type: str + name: gda_name + description: Name to export this as to GDA + default: none + + - type: str + name: gda_desc + description: Description to export as to GDA + default: $(DESC) + + - type: str + name: HOME + description: Prefix for autohome instance. Defaults to $(P) If unspecified + default: $(P) + + - type: str + name: ALLOW_HOMED_SET + description: Set to a blank to allow this axis to have its homed + default: "#" + + databases: + - file: $(PMAC)/db/dls_pmac_asyn_motor.template + define_args: > + ADDR={{ axis }} + PORT={{ PMAC.name }} + SPORT={{ PMAC.PORT.name }} + include_args: + - P + - M + - DESC + - MRES + - VELO + - PREC + - EGU + - TWV + - DTYP + - DIR + - VBAS + - VMAX + - ACCL + - BDST + - BVEL + - BACC + - DHLM + - DLLM + - HLM + - LLM + - HLSV + - INIT + - SREV + - RRES + - ERES + - JAR + - UEIP + - RDBL + - RLINK + - RTRY + - DLY + - "OFF" + - RDBD + - FOFF + - ADEL + - NTM + - FEHIGH + - FEHIHI + - FEHHSV + - FEHSV + - SCALE + - HOMEVIS + - HOMEVISSTR + - name + - alh + - gda_name + - gda_desc + - SPORT + - HOME + - PMAC + - ALLOW_HOMED_SET diff --git a/ibek/pmac.ibek.entities.schema.json b/ibek/pmac.ibek.entities.schema.json new file mode 100644 index 0000000..b6d6e7a --- /dev/null +++ b/ibek/pmac.ibek.entities.schema.json @@ -0,0 +1,480 @@ +{ + "type": "object", + "properties": { + "ioc_name": { + "type": "string", + "description": "Name of IOC instance" + }, + "description": { + "type": "string", + "description": "Description of what the IOC does" + }, + "entities": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "max_bytes": { + "type": "integer", + "description": "Max size in bytes for sending arrays over channel access", + "default": 6000000 + }, + "type": { + "type": "string", + "const": "epics.EPICS_CA_MAX_ARRAY_BYTES", + "default": "epics.EPICS_CA_MAX_ARRAY_BYTES" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "minutes_west": { + "type": "integer", + "description": "Set relative time zone minutes West relative to GMT (+/-720)", + "default": 0 + }, + "type": { + "type": "string", + "const": "epics.EPICS_TS_MIN_WEST", + "default": "epics.EPICS_TS_MIN_WEST" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "pv": { + "type": "string", + "description": "Name of PV" + }, + "value": { + "type": "string", + "description": "Value to set" + }, + "type": { + "type": "string", + "const": "epics.dbpf", + "default": "epics.dbpf" + } + }, + "required": [ + "pv", + "value" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "name": { + "type": "string", + "description": "Name of environment variable" + }, + "value": { + "type": "string", + "description": "Value of environment variable" + }, + "type": { + "type": "string", + "const": "epics.epicsEnvSet", + "default": "epics.epicsEnvSet" + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "name": { + "type": "string", + "description": "Name to use for the geobrick's asyn port", + "vscode_ibek_plugin_type": "type_id" + }, + "PORT": { + "type": "string", + "description": "Asyn port name for PmacAsynIPPort to connect to", + "vscode_ibek_plugin_type": "type_object" + }, + "P": { + "type": "string", + "description": "PV Prefix for all pmac db templates" + }, + "numAxes": { + "type": "integer", + "description": "number of axes to initialize for the controller" + }, + "idlePoll": { + "type": "integer", + "description": "Idle Poll Period in ms" + }, + "movingPoll": { + "type": "integer", + "description": "Moving Poll Period in ms" + }, + "type": { + "type": "string", + "const": "pmac.Geobrick", + "default": "pmac.Geobrick" + } + }, + "required": [ + "name", + "PORT", + "P", + "numAxes", + "idlePoll", + "movingPoll" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "name": { + "type": "string", + "description": "Asyn port name", + "vscode_ibek_plugin_type": "type_id" + }, + "IP": { + "type": "string", + "description": "IP address of pmac" + }, + "type": { + "type": "string", + "const": "pmac.PmacAsynIPPort", + "default": "pmac.PmacAsynIPPort" + } + }, + "required": [ + "name", + "IP" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "name": { + "type": "string", + "description": "Object name and gui association name" + }, + "PMAC": { + "type": "string", + "description": "PMAC to attach to", + "vscode_ibek_plugin_type": "type_object" + }, + "axis": { + "type": "integer", + "description": "which axis number this motor drives" + }, + "P": { + "type": "string", + "description": "PV prefix name for this motor" + }, + "M": { + "type": "string", + "description": "PV motor name for this motor" + }, + "DESC": { + "type": "string", + "description": "Description, displayed on EDM screen", + "default": "" + }, + "MRES": { + "type": "number", + "description": "Motor Step Size (EGU)", + "default": 0.0001 + }, + "VELO": { + "type": "number", + "description": "axis Velocity (EGU/s)", + "default": 1.0 + }, + "PREC": { + "type": "number", + "description": "Display Precision", + "default": 3.0 + }, + "EGU": { + "type": "string", + "description": "Engineering Units", + "default": "mm" + }, + "TWV": { + "type": "integer", + "description": "Tweak Step Size (EGU)", + "default": 1 + }, + "DTYP": { + "type": "string", + "description": "Datatype of record", + "default": "asynMotor" + }, + "DIR": { + "type": "integer", + "description": "User direction", + "default": 0 + }, + "VBAS": { + "type": "number", + "description": "Base Velocity (EGU/s)", + "default": 1.0 + }, + "VMAX": { + "type": "string", + "description": "Max Velocity (EGU/s)", + "default": "$(VELO)" + }, + "ACCL": { + "type": "number", + "description": "Seconds to Velocity", + "default": 0.5 + }, + "BDST": { + "type": "number", + "description": "BL Distance (EGU)", + "default": 0.0 + }, + "BVEL": { + "type": "number", + "description": "BL Velocity(EGU/s)", + "default": 0.0 + }, + "BACC": { + "type": "number", + "description": "BL Seconds to Veloc", + "default": 0.0 + }, + "DHLM": { + "type": "number", + "description": "Dial High Limit", + "default": 10000.0 + }, + "DLMM": { + "type": "number", + "description": "Dial low limit", + "default": -10000.0 + }, + "HLM": { + "type": "number", + "description": "User High Limit", + "default": 0.0 + }, + "LLM": { + "type": "number", + "description": "User Low Limit", + "default": 0.0 + }, + "HLSV": { + "type": "string", + "description": "HW Lim, Violation Svr", + "default": "MAJOR" + }, + "INIT": { + "type": "string", + "description": "Startup commands", + "default": "" + }, + "SREV": { + "type": "number", + "description": "Steps per Revolution", + "default": 1000.0 + }, + "RRES": { + "type": "number", + "description": "Readback Step Size (EGU", + "default": 0.0 + }, + "ERES": { + "type": "number", + "description": "Encoder Step Size (EGU)", + "default": 0.0 + }, + "JAR": { + "type": "number", + "description": "Jog Acceleration (EGU/s^2)", + "default": 0.0 + }, + "UEIP": { + "type": "integer", + "description": "Use Encoder If Present", + "default": 0 + }, + "URIP": { + "type": "integer", + "description": "Use RDBL If Present", + "default": 0 + }, + "RDBL": { + "type": "string", + "description": "Readback Location, set URIP =1 if you specify this", + "default": "0" + }, + "RLNK": { + "type": "string", + "description": "Readback output link", + "default": "" + }, + "RTRY": { + "type": "integer", + "description": "Max retry count", + "default": 0 + }, + "DLY": { + "type": "number", + "description": "Readback settle time (s)", + "default": 0.0 + }, + "OFF": { + "type": "number", + "description": "User Offset (EGU)", + "default": 0.0 + }, + "RDBD": { + "type": "number", + "description": "Retry Deadband (EGU)", + "default": 0.0 + }, + "FOFF": { + "type": "integer", + "description": "Freeze Offset, 0=variable, 1=frozen", + "default": 0 + }, + "ADEL": { + "type": "number", + "description": "Alarm monitor deadband (EGU)", + "default": 0.0 + }, + "NTM": { + "type": "integer", + "description": "New Target Monitor, only set to 0 for soft motors", + "default": 1 + }, + "FEHEIGH": { + "type": "number", + "description": "HIGH limit for following error", + "default": 0.0 + }, + "FEHIHI": { + "type": "number", + "description": "HIHI limit for following error", + "default": 0.0 + }, + "FEHHSV": { + "type": "string", + "description": "HIHI alarm severity for following error", + "default": "NO_ALARM" + }, + "FEHSV": { + "type": "string", + "description": "HIGH alarm severity for following error", + "default": "NO_ALARM" + }, + "SCALE": { + "type": "integer", + "default": 1 + }, + "HOMEVIS": { + "type": "integer", + "description": "If 1 then home is visible on the gui", + "default": 1 + }, + "HOMEVISST": { + "type": "string", + "default": "Use motor summary screen" + }, + "alh": { + "type": "string", + "description": "Set this to alh to add the motor to the alarm handler and send emails", + "default": "" + }, + "gda_name": { + "type": "string", + "description": "Name to export this as to GDA", + "default": "none" + }, + "gda_desc": { + "type": "string", + "description": "Description to export as to GDA", + "default": "$(DESC)" + }, + "HOME": { + "type": "string", + "description": "Prefix for autohome instance. Defaults to $(P) If unspecified", + "default": "$(P)" + }, + "ALLOW_HOMED_SET": { + "type": "string", + "description": "Set to a blank to allow this axis to have its homed", + "default": "#" + }, + "type": { + "type": "string", + "const": "pmac.DlsPmacAsynMotor", + "default": "pmac.DlsPmacAsynMotor" + } + }, + "required": [ + "name", + "PMAC", + "axis", + "P", + "M" + ], + "additionalProperties": false + } + ] + }, + "description": "List of entities this IOC instantiates" + }, + "generic_ioc_image": { + "type": "string", + "description": "The generic IOC container image registry URL" + } + }, + "required": [ + "ioc_name", + "description", + "entities", + "generic_ioc_image" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/tests/bl45p-mo-ioc-99.sh b/tests/bl45p-mo-ioc-99.sh new file mode 100755 index 0000000..37230bb --- /dev/null +++ b/tests/bl45p-mo-ioc-99.sh @@ -0,0 +1,16 @@ +#!/bin/bash +root=$(realpath $(dirname $0)/..) +ibek=$root/ibek + +set -e + +echo "make schema" +ibek ioc-schema ${ibek}/{epics,pmac}.ibek.defs.yaml ${ibek}/pmac.ibek.entities.schema.json "${@}" + +echo "make helm Chart" +cd $root +ibek build-helm bl45p-mo-ioc-99.yaml + +echo "make ioc startup files" +cd $root/iocs/bl45p-mo-ioc-99 +ibek build-startup config/ioc.boot.yaml $ibek/*.ibek.defs.yaml config/ioc.boot From c292f86b359805a6f74b5699e86f872c2ba14e30 Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Tue, 31 May 2022 14:01:19 +0000 Subject: [PATCH 05/16] add dummy test ioc to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index b8b1efe..e33950e 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ **/charts **/*.bob edm/bobs +bl45p-mo-ioc-99/ From 06f3202218479033459d65b309669aaa40a922a1 Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Mon, 6 Jun 2022 07:19:57 +0000 Subject: [PATCH 06/16] created tests/bl45p-mo-ioc-99.sh To help build the ibek entities yaml files for pmac and dependencies --- bl45p-mo-ioc-99.yaml | 22 ++- ibek/ibek.defs.schema.json | 291 ++++++++++++++++++++++++++++ ibek/pmac.ibek.defs.yaml | 46 +++-- ibek/pmac.ibek.entities.schema.json | 84 +++++--- tests/bl45p-mo-ioc-99.sh | 2 +- 5 files changed, 398 insertions(+), 47 deletions(-) create mode 100644 ibek/ibek.defs.schema.json diff --git a/bl45p-mo-ioc-99.yaml b/bl45p-mo-ioc-99.yaml index 9dddc98..a26be71 100644 --- a/bl45p-mo-ioc-99.yaml +++ b/bl45p-mo-ioc-99.yaml @@ -9,17 +9,33 @@ entities: IP: 172.23.59.21 - type: pmac.Geobrick - name: BL45P-MO-BRICK-99 + name: BRICK1 PORT: BRICK1port - P: "BL45P-MO-STEP-99:" + P: BL45P-MO-STEP-01 numAxes: 8 idlePoll: 100 movingPoll: 500 - type: pmac.DlsPmacAsynMotor name: Sample Theta - PMAC: BL45P-MO-BRICK-99 + PMAC: BRICK1 axis: 1 P: BL45P-MO-SAMP-99 M: ":THETA" MRES: 0.036 + + - type: pmac.pmacDisableLimitsCheck + Controller: BRICK1 + Axis: 2 + + - type: pmac.pmacDisableLimitsCheck + Controller: BRICK1 + Axis: 3 + + - type: pmac.pmacDisableLimitsCheck + Controller: BRICK1 + Axis: 4 + + - type: pmac.pmacDisableLimitsCheck + Controller: BRICK1 + Axis: 5 diff --git a/ibek/ibek.defs.schema.json b/ibek/ibek.defs.schema.json new file mode 100644 index 0000000..d8e89e1 --- /dev/null +++ b/ibek/ibek.defs.schema.json @@ -0,0 +1,291 @@ +{ + "type": "object", + "properties": { + "module": { + "type": "string", + "description": "Support module name, normally the repo name" + }, + "defs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Publish Definition as type . for IOC instances" + }, + "args": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the argument that the IOC instance should pass" + }, + "description": { + "type": "string", + "description": "Description of what the argument will be used for" + }, + "type": { + "type": "string", + "const": "float", + "default": "float" + }, + "default": { + "type": [ + "number", + "null" + ], + "description": "If given, and instance doesn't supply argument, what value should be used" + } + }, + "required": [ + "name", + "description" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the argument that the IOC instance should pass" + }, + "description": { + "type": "string", + "description": "Description of what the argument will be used for" + }, + "type": { + "type": "string", + "const": "str", + "default": "str" + }, + "default": { + "type": [ + "string", + "null" + ], + "description": "If given, and instance doesn't supply argument, what value should be used" + } + }, + "required": [ + "name", + "description" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the argument that the IOC instance should pass" + }, + "description": { + "type": "string", + "description": "Description of what the argument will be used for" + }, + "type": { + "type": "string", + "const": "int", + "default": "int" + }, + "default": { + "type": [ + "integer", + "null" + ], + "description": "If given, and instance doesn't supply argument, what value should be used" + } + }, + "required": [ + "name", + "description" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the argument that the IOC instance should pass" + }, + "description": { + "type": "string", + "description": "Description of what the argument will be used for" + }, + "type": { + "type": "string", + "const": "bool", + "default": "bool" + }, + "default": { + "type": [ + "boolean", + "null" + ], + "description": "If given, and instance doesn't supply argument, what value should be used" + } + }, + "required": [ + "name", + "description" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the argument that the IOC instance should pass" + }, + "description": { + "type": "string", + "description": "Description of what the argument will be used for" + }, + "type": { + "type": "string", + "const": "object", + "default": "object" + }, + "default": { + "type": [ + "string", + "null" + ], + "description": "If given, and instance doesn't supply argument, what value should be used" + } + }, + "required": [ + "name", + "description" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the argument that the IOC instance should pass" + }, + "description": { + "type": "string", + "description": "Description of what the argument will be used for" + }, + "type": { + "type": "string", + "const": "id", + "default": "id" + }, + "default": { + "type": [ + "string", + "null" + ], + "description": "If given, and instance doesn't supply argument, what value should be used" + } + }, + "required": [ + "name", + "description" + ], + "additionalProperties": false + } + ] + }, + "description": "The arguments IOC instance should supply", + "default": [] + }, + "databases": { + "type": "array", + "items": { + "type": "object", + "properties": { + "file": { + "type": "string", + "description": "Filename of the database template in /db" + }, + "include_args": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of args to pass through to database", + "default": [] + }, + "define_args": { + "type": "string", + "description": "Arg string list to be generated as Jinja template", + "default": "" + } + }, + "required": [ + "file" + ], + "additionalProperties": false + }, + "description": "Databases to instantiate", + "default": [] + }, + "script": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Startup script snippet defined as Jinja template", + "default": [] + }, + "env_vars": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of environment variable" + }, + "value": { + "type": "string", + "description": "Value to set" + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false + }, + "description": "Environment variables to set in the boot script", + "default": [] + }, + "post_ioc_init": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Entries to add post iocInit(), such as dbpf", + "default": [] + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "description": "The definitions an IOC can create using this module" + } + }, + "required": [ + "module", + "defs" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/ibek/pmac.ibek.defs.yaml b/ibek/pmac.ibek.defs.yaml index 98cd622..94a424b 100644 --- a/ibek/pmac.ibek.defs.yaml +++ b/ibek/pmac.ibek.defs.yaml @@ -1,8 +1,24 @@ -# yaml-language-server: $schema=../schemas/ibek.defs.schema.json +# yaml-language-server: $schema=ibek.defs.schema.json + module: pmac + defs: # TODO - this is basic Geobrick support only. Does not do CS groups or # status screen PVs + + - name: PmacAsynIPPort + args: + - type: id + name: name + description: Asyn port name + + - type: str + name: IP + description: IP address of pmac + + script: + - pmacAsynIPConfigure({{ name }}, {{ IP if ":" in IP else IP + ":1025" }}) + - name: Geobrick args: - type: id @@ -41,19 +57,6 @@ defs: - file: pmacStatus.template define_args: PMAC={{ P }} - - name: PmacAsynIPPort - args: - - type: id - name: name - description: Asyn port name - - - type: str - name: IP - description: IP address of pmac - - script: - - pmacAsynIPConfigure({{name}}, {{IP if ":" in IP else IP + ":1025"}}) - - name: DlsPmacAsynMotor args: # IMPORTANT: all non-defaulted args must come first @@ -314,7 +317,7 @@ defs: default: "#" databases: - - file: $(PMAC)/db/dls_pmac_asyn_motor.template + - file: dls_pmac_asyn_motor.template define_args: > ADDR={{ axis }} PORT={{ PMAC.name }} @@ -371,3 +374,16 @@ defs: - HOME - PMAC - ALLOW_HOMED_SET + + - name: pmacDisableLimitsCheck + args: + - type: object + name: Controller + description: Geobrick on which to disable limits + + - type: int + name: Axis + description: Axis to have limits disabled + + script: + - pmacDisableLimitsCheck({{ Controller.name }}, {{ Axis }}, 0) diff --git a/ibek/pmac.ibek.entities.schema.json b/ibek/pmac.ibek.entities.schema.json index b6d6e7a..17eea57 100644 --- a/ibek/pmac.ibek.entities.schema.json +++ b/ibek/pmac.ibek.entities.schema.json @@ -107,6 +107,34 @@ ], "additionalProperties": false }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "name": { + "type": "string", + "description": "Asyn port name", + "vscode_ibek_plugin_type": "type_id" + }, + "IP": { + "type": "string", + "description": "IP address of pmac" + }, + "type": { + "type": "string", + "const": "pmac.PmacAsynIPPort", + "default": "pmac.PmacAsynIPPort" + } + }, + "required": [ + "name", + "IP" + ], + "additionalProperties": false + }, { "type": "object", "properties": { @@ -156,34 +184,6 @@ ], "additionalProperties": false }, - { - "type": "object", - "properties": { - "entity_enabled": { - "type": "boolean", - "default": true - }, - "name": { - "type": "string", - "description": "Asyn port name", - "vscode_ibek_plugin_type": "type_id" - }, - "IP": { - "type": "string", - "description": "IP address of pmac" - }, - "type": { - "type": "string", - "const": "pmac.PmacAsynIPPort", - "default": "pmac.PmacAsynIPPort" - } - }, - "required": [ - "name", - "IP" - ], - "additionalProperties": false - }, { "type": "object", "properties": { @@ -459,6 +459,34 @@ "M" ], "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "Controller": { + "type": "string", + "description": "Geobrick on which to disable limits", + "vscode_ibek_plugin_type": "type_object" + }, + "Axis": { + "type": "integer", + "description": "Axis to have limits disabled" + }, + "type": { + "type": "string", + "const": "pmac.pmacDisableLimitsCheck", + "default": "pmac.pmacDisableLimitsCheck" + } + }, + "required": [ + "Controller", + "Axis" + ], + "additionalProperties": false } ] }, diff --git a/tests/bl45p-mo-ioc-99.sh b/tests/bl45p-mo-ioc-99.sh index 37230bb..a44de10 100755 --- a/tests/bl45p-mo-ioc-99.sh +++ b/tests/bl45p-mo-ioc-99.sh @@ -13,4 +13,4 @@ ibek build-helm bl45p-mo-ioc-99.yaml echo "make ioc startup files" cd $root/iocs/bl45p-mo-ioc-99 -ibek build-startup config/ioc.boot.yaml $ibek/*.ibek.defs.yaml config/ioc.boot +ibek build-startup config/ioc.boot.yaml $ibek/*.ibek.defs.yaml --out config/ioc.boot From dfc42d11e4c7e6e551259927486626187e1d1ebb Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Tue, 7 Jun 2022 08:19:27 +0000 Subject: [PATCH 07/16] developing pmac.ibek.defs.yaml and bl45p-mo-ioc-01.yaml --- .vscode/settings.json | 15 + bl45p-mo-ioc-01.yaml | 99 ++- bl45p-mo-ioc-99.yaml | 41 -- edm/bl45p-launcher.sh | 19 +- ibek/deviocstats.ibek.defs.yaml | 15 + ibek/pmac.ibek.defs.yaml | 581 +++++++++++++++-- ibek/pmac.ibek.entities.schema.json | 598 +++++++++++++++++- .../Chart.yaml | 0 .../config/BL45P-MO-IOC-01_expanded.db | 0 .../config/ioc.boot | 0 .../config/start.sh | 0 .../templates/config.yaml | 0 .../values.yaml | 0 ...{bl45p-mo-ioc-99.sh => bl45p-mo-ioc-01.sh} | 6 +- 14 files changed, 1235 insertions(+), 139 deletions(-) create mode 100644 .vscode/settings.json delete mode 100644 bl45p-mo-ioc-99.yaml create mode 100644 ibek/deviocstats.ibek.defs.yaml rename iocs/{bl45p-mo-ioc-01 => bl45p-mo-ioc-01.hand}/Chart.yaml (100%) rename iocs/{bl45p-mo-ioc-01 => bl45p-mo-ioc-01.hand}/config/BL45P-MO-IOC-01_expanded.db (100%) rename iocs/{bl45p-mo-ioc-01 => bl45p-mo-ioc-01.hand}/config/ioc.boot (100%) rename iocs/{bl45p-mo-ioc-01 => bl45p-mo-ioc-01.hand}/config/start.sh (100%) rename iocs/{bl45p-mo-ioc-01 => bl45p-mo-ioc-01.hand}/templates/config.yaml (100%) rename iocs/{bl45p-mo-ioc-01 => bl45p-mo-ioc-01.hand}/values.yaml (100%) rename tests/{bl45p-mo-ioc-99.sh => bl45p-mo-ioc-01.sh} (59%) diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..f63fa52 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,15 @@ +{ + "cSpell.words": [ + "ACCL", + "autohome", + "deviocstats", + "DHLM", + "DLLM", + "FEEDRATE", + "HOMEVISSTR", + "NAXES", + "PARENTPORT", + "VELO", + "VMAX" + ] +} \ No newline at end of file diff --git a/bl45p-mo-ioc-01.yaml b/bl45p-mo-ioc-01.yaml index 9f351d6..d304b01 100644 --- a/bl45p-mo-ioc-01.yaml +++ b/bl45p-mo-ioc-01.yaml @@ -3,23 +3,106 @@ ioc_name: bl45p-mo-ioc-01 description: motion IOC for the test beamline p45 in G13 generic_ioc_image: ghcr.io/epics-containers/ioc-pmac:main.run +# TODO need to make use of lists / strings consistent +# currently include_args is a list, define_args is a string, script is a list +# script should be a string, not sure about include_args but it could be a , and CR +# separate string? + +# TODO would be good to have 'databases: include_all' for auto-substitution modules. + entities: + - type: epics.EPICS_CA_MAX_ARRAY_BYTES + max_bytes: 6000000 + - type: pmac.PmacAsynIPPort name: BRICK1port IP: 172.23.59.21 + - type: deviocstats.iocAdminSoft + IOC: BL45P-MO-IOC-01 + - type: pmac.Geobrick - name: BL45P-MO-BRICK-01 + name: BRICK1 + # NOTE: validation cannot check the object type PORT: BRICK1port - P: "BL45P-MO-STEP-01:" + P: BL45P-MO-STEP-01 + # NOTE: There is no honouring defaults in Database files + # in fact we repeat the defaults in the definitions YAML numAxes: 8 idlePoll: 100 movingPoll: 500 - type: pmac.DlsPmacAsynMotor - name: Sample Theta - PMAC: BL45P-MO-BRICK-01 - axis: 1 - P: BL45P-MO-SAMP-01 - M: ":THETA" - MRES: 0.036 + name: STAGE1.THETA_TOP + Controller: BRICK1 + axis: 2 + P: BL45P-MO-STAGE-01 + M: :THETA:TOP + ACCL: 0.1 + MRES: 0.087890625 + VELO: 90 + # NOTE: VMAX is a string because we usually use $(VELO) + # ? Would a Union be better - what about other number args + VMAX: "1080" + HOMEVISSTR: Absolute Encoder + EGU: deg + + - type: pmac.CS + name: BRICK1.CS1 + CS: 1 + Controller: BRICK1 + + # NOTE: objects must be defined before references to them. + # Vscode schema checks do NOT pick this up and the apischema error is v bad. + - type: pmac.CS + name: BRICK1.CS2 + CS: 2 + Controller: BRICK1 + + - type: pmac.CS + name: BRICK1.CS3 + CS: 3 + Controller: BRICK1 + + - type: pmac.DlsCsPmacAsynMotor + name: STAGE1.CS.THETA + CsController: BRICK1.CS2 + axis: 7 + P: BL45P-MO-STAGE-01 + M: :THETA:POS + ACCL: 0.1 + MRES: 0.0001 + VELO: 30 + DESC: Theta position + DHLM: 10000 + DLLM: -10000 + EGU: deg + PREC: 3 + TWV: 5 + + - type: pmac.pmacDisableLimitsCheck + Controller: BRICK1 + Axis: 2 + + - type: pmac.pmacDisableLimitsCheck + Controller: BRICK1 + Axis: 3 + + - type: pmac.pmacDisableLimitsCheck + Controller: BRICK1 + Axis: 4 + + - type: pmac.pmacDisableLimitsCheck + Controller: BRICK1 + Axis: 5 + + - type: pmac.autohome + Controller: BRICK1 + P: BL45P-MO-STAGE-01 + PLC: 10 + GRP2: Theta + GRP3: X + GRP4: Y top + GRP5: Y bottom + + diff --git a/bl45p-mo-ioc-99.yaml b/bl45p-mo-ioc-99.yaml deleted file mode 100644 index a26be71..0000000 --- a/bl45p-mo-ioc-99.yaml +++ /dev/null @@ -1,41 +0,0 @@ -# yaml-language-server: $schema=file:///workspace/bl45p/ibek/pmac.ibek.entities.schema.json -ioc_name: bl45p-mo-ioc-99 -description: motion IOC for the test beamline p45 in G13 -generic_ioc_image: ghcr.io/epics-containers/ioc-pmac:main.run - -entities: - - type: pmac.PmacAsynIPPort - name: BRICK1port - IP: 172.23.59.21 - - - type: pmac.Geobrick - name: BRICK1 - PORT: BRICK1port - P: BL45P-MO-STEP-01 - numAxes: 8 - idlePoll: 100 - movingPoll: 500 - - - type: pmac.DlsPmacAsynMotor - name: Sample Theta - PMAC: BRICK1 - axis: 1 - P: BL45P-MO-SAMP-99 - M: ":THETA" - MRES: 0.036 - - - type: pmac.pmacDisableLimitsCheck - Controller: BRICK1 - Axis: 2 - - - type: pmac.pmacDisableLimitsCheck - Controller: BRICK1 - Axis: 3 - - - type: pmac.pmacDisableLimitsCheck - Controller: BRICK1 - Axis: 4 - - - type: pmac.pmacDisableLimitsCheck - Controller: BRICK1 - Axis: 5 diff --git a/edm/bl45p-launcher.sh b/edm/bl45p-launcher.sh index 389edbc..52810ba 100755 --- a/edm/bl45p-launcher.sh +++ b/edm/bl45p-launcher.sh @@ -7,17 +7,16 @@ thisdir=$(realpath $(dirname ${BASH_SOURCE[0]})) # if there is a no cagateway running on p45-ws001 at 172.23.59.64 # use addresses for all nodes in the p45 beamline instead -export EPICS_CA_ADDR_LIST:-"172.23.59.101 172.23.59.1" +export EPICS_CA_ADDR_LIST="172.23.59.101 172.23.59.1" -# if there is a local install of edm run it (deprecated for RHEL8 !!) -# -# if [ ! -z $(which edm 2> /dev/null) ] -# then -# export EDMDATAFILES=$(echo $EDMDATAFILES | sed s+/screens+${thisdir}+g) -# echo launching native edm with paths: $EDMDATAFILES -# edm -noedit -x ${start} -# exit 0 -# fi +# if there is a local install of edm run it +if [ ! -z $(which edm 2> /dev/null) ] +then + export EDMDATAFILES=$(echo $EDMDATAFILES | sed s+/screens+${thisdir}+g) + echo launching native edm with paths: $EDMDATAFILES + edm -noedit -x ${start} + exit 0 +fi if [ -z $(which podman 2> /dev/null) ] then diff --git a/ibek/deviocstats.ibek.defs.yaml b/ibek/deviocstats.ibek.defs.yaml new file mode 100644 index 0000000..7fc2d82 --- /dev/null +++ b/ibek/deviocstats.ibek.defs.yaml @@ -0,0 +1,15 @@ +# yaml-language-server: $schema=ibek.defs.schema.json + +module: deviocstats + +defs: + - name: iocAdminSoft + args: + - type: str + name: IOC + description: Device Prefix for this IOC + + databases: + - file: iocAdminSoft.db + include_args: + - IOC diff --git a/ibek/pmac.ibek.defs.yaml b/ibek/pmac.ibek.defs.yaml index 94a424b..5d2a93c 100644 --- a/ibek/pmac.ibek.defs.yaml +++ b/ibek/pmac.ibek.defs.yaml @@ -3,9 +3,6 @@ module: pmac defs: - # TODO - this is basic Geobrick support only. Does not do CS groups or - # status screen PVs - - name: PmacAsynIPPort args: - type: id @@ -36,26 +33,70 @@ defs: - type: int name: numAxes description: number of axes to initialize for the controller + default: 8 - type: int name: idlePoll description: Idle Poll Period in ms + default: 500 - type: int name: movingPoll description: Moving Poll Period in ms + default: 100 + + - type: int + name: TIMEOUT + description: timeout in seconds for asyn + default: 4 + + - type: int + name: FEEDRATE + description: feedrate below which we go into error + default: 100 + + - type: str + name: CSG0 + description: Name for Coordinate System Group 0 + default: "" + + - type: str + name: CSG1 + description: Name for Coordinate System Group 1 + default: "" - # axes hard coded to 8 for geobrick (builder.py counted the axes created) - # TODO is num_axes is an example of something hard to do in this new approach? + - type: str + name: CSG2 + description: Name for Coordinate System Group 2 + default: "" + + - type: str + name: CSG3 + description: Name for Coordinate System Group 3 + default: "" + + - type: str + name: CSG4 + description: Name for Coordinate System Group 3 + default: "" + + # numAxes must be supplied for geobrick (but builder.py counted the axes created) + # TODO is counting num_axes is an example of something hard to do in this new approach? script: - pmacCreateController({{name}}, {{PORT.name}}, 0, {{numAxes}}, {{movingPoll}}, {{idlePoll}}) - pmacCreateAxes({{name}}, {{numAxes}}) databases: - file: pmacController.template - define_args: PMAC={{ P }} + define_args: | + NAXES={{numAxes}} + PORT={{name}} + include_args: + [P, idlePoll, movingPoll, TIMEOUT, CSG0, CSG1, CSG2, CSG3, CSG4] - file: pmacStatus.template - define_args: PMAC={{ P }} + define_args: PORT={{name}} + include_args: + - P - name: DlsPmacAsynMotor args: @@ -66,8 +107,8 @@ defs: description: Object name and gui association name - type: object - name: PMAC - description: PMAC to attach to + name: Controller + description: PMAC Controller to attach to - type: int name: axis @@ -157,7 +198,7 @@ defs: default: 10000 - type: float - name: DLMM + name: DLLM description: Dial low limit default: -10000 @@ -287,7 +328,7 @@ defs: default: 1 - type: str - name: HOMEVISST + name: HOMEVISSTR description: "" default: Use motor summary screen @@ -318,62 +359,377 @@ defs: databases: - file: dls_pmac_asyn_motor.template - define_args: > + define_args: | ADDR={{ axis }} - PORT={{ PMAC.name }} - SPORT={{ PMAC.PORT.name }} + PORT={{ Controller.name }} + SPORT={{ Controller.PORT.name }} include_args: - - P - - M - - DESC - - MRES - - VELO - - PREC - - EGU - - TWV - - DTYP - - DIR - - VBAS - - VMAX - - ACCL - - BDST - - BVEL - - BACC - - DHLM - - DLLM - - HLM - - LLM - - HLSV - - INIT - - SREV - - RRES - - ERES - - JAR - - UEIP - - RDBL - - RLINK - - RTRY - - DLY - - "OFF" - - RDBD - - FOFF - - ADEL - - NTM - - FEHIGH - - FEHIHI - - FEHHSV - - FEHSV - - SCALE - - HOMEVIS - - HOMEVISSTR - - name - - alh - - gda_name - - gda_desc - - SPORT - - HOME - - PMAC - - ALLOW_HOMED_SET + [ + P, + M, + DESC, + MRES, + VELO, + PREC, + EGU, + TWV, + DTYP, + DIR, + VBAS, + VMAX, + ACCL, + BDST, + BVEL, + BACC, + DHLM, + DLLM, + HLM, + LLM, + HLSV, + INIT, + SREV, + RRES, + ERES, + JAR, + UEIP, + RDBL, + RLINK, + RTRY, + DLY, + "OFF", + RDBD, + FOFF, + ADEL, + NTM, + FEHIGH, + FEHIHI, + FEHHSV, + FEHSV, + SCALE, + HOMEVIS, + HOMEVISSTR, + name, + alh, + gda_name, + gda_desc, + HOME, + ALLOW_HOMED_SET, + ] + + - name: DlsCsPmacAsynMotor + args: + - type: str + name: name + description: Object name and gui association name + + - type: object + name: CsController + description: Coordinate system controller to attach to + + - type: int + name: axis + description: which axis number this motor drives + + - type: str + name: P + description: PV prefix name for this motor + + - type: str + name: M + description: PV motor name for this motor + + - type: str + name: DESC + description: Description, displayed on EDM screen + default: "" + + - type: float + name: MRES + description: Motor Step Size (EGU) + default: 0.0001 + + - type: float + name: VELO + description: axis Velocity (EGU/s) + default: 1.0 + + - type: float + name: PREC + description: Display Precision + default: 3 + + - type: str + name: EGU + description: Engineering Units + default: mm + + - type: int + name: TWV + description: Tweak Step Size (EGU) + default: 1 + + - type: str + name: DTYP + description: Datatype of record + default: asynMotor + + - type: int + name: DIR + description: User direction + default: 0 + + - type: float + name: VBAS + description: Base Velocity (EGU/s) + default: 1.0 + + - type: str + name: VMAX + description: Max Velocity (EGU/s) + default: $(VELO) + + - type: float + name: ACCL + description: Seconds to Velocity + default: 0.5 + + - type: float + name: BDST + description: BL Distance (EGU) + default: 0 + + - type: float + name: BVEL + description: BL Velocity(EGU/s) + default: 0 + + - type: float + name: BACC + description: BL Seconds to Veloc + default: 0 + + - type: float + name: DHLM + description: Dial High Limit + default: 10000 + + - type: float + name: DLLM + description: Dial low limit + default: -10000 + + - type: float + name: HLM + description: User High Limit + default: 0 + + - type: float + name: LLM + description: User Low Limit + default: 0 + + - type: str + name: HLSV + description: HW Lim, Violation Svr + default: MAJOR + + - type: str + name: INIT + description: Startup commands + default: "" + + - type: float + name: SREV + description: Steps per Revolution + default: 1000 + + - type: float + name: RRES + description: Readback Step Size (EGU + default: 0 + + - type: float + name: ERES + description: Encoder Step Size (EGU) + default: 0 + + - type: float + name: JAR + description: Jog Acceleration (EGU/s^2) + default: 0 + + - type: int + name: UEIP + description: Use Encoder If Present + default: 0 + + - type: int + name: URIP + description: Use RDBL If Present + default: 0 + + - type: str + name: RDBL + description: Readback Location, set URIP =1 if you specify this + default: "0" + + - type: str + name: RLNK + description: Readback output link + default: "" + + - type: int + name: RTRY + description: Max retry count + default: 0 + + - type: float + name: DLY + description: Readback settle time (s) + default: 0 + + - type: float + name: "OFF" + description: User Offset (EGU) + default: 0 + + - type: float + name: RDBD + description: Retry Deadband (EGU) + default: 0 + + - type: int + name: FOFF + description: Freeze Offset, 0=variable, 1=frozen + default: 0 + + - type: float + name: ADEL + description: Alarm monitor deadband (EGU) + default: 0 + + - type: int + name: NTM + description: New Target Monitor, only set to 0 for soft motors + default: 1 + + - type: float + name: FEHEIGH + description: HIGH limit for following error + default: 0 + + - type: float + name: FEHIHI + description: HIHI limit for following error + default: 0 + + - type: str + name: FEHHSV + description: HIHI alarm severity for following error + default: NO_ALARM + + - type: str + name: FEHSV + description: HIGH alarm severity for following error + default: NO_ALARM + + - type: int + name: SCALE + description: "" + default: 1 + + - type: int + name: HOMEVIS + description: If 1 then home is visible on the gui + default: 1 + + - type: str + name: HOMEVISSTR + description: "" + default: Use motor summary screen + + - type: str + name: alh + description: Set this to alh to add the motor to the alarm handler and send emails + default: "" + + - type: str + name: gda_name + description: Name to export this as to GDA + default: none + + - type: str + name: gda_desc + description: Description to export as to GDA + default: $(DESC) + + - type: str + name: HOME + description: Prefix for autohome instance. Defaults to $(P) If unspecified + default: $(P) + + - type: str + name: ALLOW_HOMED_SET + description: Set to a blank to allow this axis to have its homed + default: "#" + + databases: + - file: dls_pmac_cs_asyn_motor.template + define_args: | + ADDR={{ axis }} + PORT={{ CsController.name }} + include_args: + [ + P, + M, + DESC, + MRES, + VELO, + PREC, + EGU, + TWV, + DTYP, + DIR, + VBAS, + VMAX, + ACCL, + BDST, + BVEL, + BACC, + DHLM, + DLLM, + HLM, + LLM, + HLSV, + INIT, + SREV, + RRES, + ERES, + JAR, + UEIP, + RDBL, + RLINK, + RTRY, + DLY, + "OFF", + RDBD, + FOFF, + ADEL, + NTM, + FEHIGH, + FEHIHI, + FEHHSV, + FEHSV, + SCALE, + HOMEVIS, + HOMEVISSTR, + name, + alh, + gda_name, + gda_desc, + HOME, + ALLOW_HOMED_SET, + ] - name: pmacDisableLimitsCheck args: @@ -387,3 +743,98 @@ defs: script: - pmacDisableLimitsCheck({{ Controller.name }}, {{ Axis }}, 0) + + - name: autohome + args: + - type: object + name: Controller + description: the PMAC Controller + + - type: int + name: PLC + description: PLC number of the auto home PLC + + - type: str + name: P + description: Prefix for auto home PVs + + - type: str + name: GRP1 + description: name of the 'ALL' group of auto home axes + default: All + - type: str + name: GRP2 + description: name of the second group of auto home axes + default: "" + - type: str + name: GRP3 + description: name of the third group of auto home axes + default: "" + - type: str + name: GRP4 + description: name of the fourth group of auto home axes + default: "" + - type: str + name: GRP5 + description: name of the fourth group of auto home axes + default: "" + - type: str + name: GRP6 + description: name of the fourth group of auto home axes + default: "" + - type: str + name: GRP7 + description: name of the fourth group of auto home axes + default: "" + - type: str + name: GRP8 + description: name of the fourth group of auto home axes + default: "" + - type: str + name: GRP9 + description: name of the fourth group of auto home axes + default: "" + + databases: + - file: autohome.template + define_args: | + PORT={{Controller.name}} + CTRL={{Controller.P}} + include_args: + [P, PLC, GRP1, GRP2, GRP3, GRP4, GRP5, GRP6, GRP7, GRP8, GRP9] + + - name: CS + args: + - type: id + name: name + description: Asyn port name for this object + + - type: object + name: Controller + description: the PMAC Controller + + - type: int + name: CS + description: Coordinate system number + + - type: int + name: NAxes + description: number of CS axes + default: 9 + + - type: int + name: Program + description: PROG number for CS motion + default: 10 + + script: + - pmacCreateCS("{{name}}", "{{Controller.name}}", {{CS}}, {{Program}}) + - pmacCreateCSAxes("{{name}}", {{NAxes}}) + databases: + - file: pmacCsController.template + define_args: | + PORT={{name}} + TIMEOUT={{Controller.TIMEOUT}} + PARENTPORT={{Controller.name}} + PMAC={{Controller.P}} + include_args: [CS] diff --git a/ibek/pmac.ibek.entities.schema.json b/ibek/pmac.ibek.entities.schema.json index 17eea57..6d70ffd 100644 --- a/ibek/pmac.ibek.entities.schema.json +++ b/ibek/pmac.ibek.entities.schema.json @@ -13,6 +13,147 @@ "type": "array", "items": { "anyOf": [ + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "port": { + "type": "string", + "description": "The port name for this asyn object" + }, + "input_eos": { + "type": "string", + "description": "Input end of string (terminator)" + }, + "output_eos": { + "type": "string", + "description": "Output end of string (terminator)" + }, + "priority": { + "type": "integer", + "description": "Priority", + "default": 100 + }, + "noAutoConnect": { + "type": "boolean", + "description": "Set to stop auto connect" + }, + "noProcessEos": { + "type": "boolean", + "description": "Set to avoid processing end of string" + }, + "simulation": { + "type": "string", + "description": "IP port to connect to if in simulation mode" + }, + "baud": { + "type": "integer", + "description": "Baud Rate" + }, + "bits": { + "type": "integer", + "description": "Bits [8,7,6,5]" + }, + "parity": { + "type": "string", + "description": "Parity [null,even,odd]" + }, + "stop": { + "type": "integer", + "description": "Stop Bits [1,2]" + }, + "crtscts": { + "type": "boolean", + "description": "Set hardware flow control on" + }, + "type": { + "type": "string", + "const": "asyn.AsynSerial", + "default": "asyn.AsynSerial" + } + }, + "required": [ + "port" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "port": { + "type": "string", + "description": "Serial port tty name / IP address optionally followed by protocol" + }, + "name": { + "type": "string", + "description": "Name for the Asyn Port" + }, + "input_eos": { + "type": "string", + "description": "Input end of string (terminator)" + }, + "output_eos": { + "type": "string", + "description": "Output end of string (terminator)" + }, + "priority": { + "type": "integer", + "description": "Priority", + "default": 100 + }, + "noAutoConnect": { + "type": "boolean", + "description": "Set to stop auto connect" + }, + "noProcessEos": { + "type": "boolean", + "description": "Set to avoid processing end of string" + }, + "simulation": { + "type": "string", + "description": "IP port to connect to if in simulation mode" + }, + "type": { + "type": "string", + "const": "asyn.AsynIP", + "default": "asyn.AsynIP" + } + }, + "required": [ + "port", + "name" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "IOC": { + "type": "string", + "description": "Device Prefix for this IOC" + }, + "type": { + "type": "string", + "const": "deviocstats.iocAdminSoft", + "default": "deviocstats.iocAdminSoft" + } + }, + "required": [ + "IOC" + ], + "additionalProperties": false + }, { "type": "object", "properties": { @@ -158,15 +299,53 @@ }, "numAxes": { "type": "integer", - "description": "number of axes to initialize for the controller" + "description": "number of axes to initialize for the controller", + "default": 8 }, "idlePoll": { "type": "integer", - "description": "Idle Poll Period in ms" + "description": "Idle Poll Period in ms", + "default": 500 }, "movingPoll": { "type": "integer", - "description": "Moving Poll Period in ms" + "description": "Moving Poll Period in ms", + "default": 100 + }, + "TIMEOUT": { + "type": "integer", + "description": "timeout in seconds for asyn", + "default": 4 + }, + "FEEDRATE": { + "type": "integer", + "description": "feedrate below which we go into error", + "default": 100 + }, + "CSG0": { + "type": "string", + "description": "Name for Coordinate System Group 0", + "default": "" + }, + "CSG1": { + "type": "string", + "description": "Name for Coordinate System Group 1", + "default": "" + }, + "CSG2": { + "type": "string", + "description": "Name for Coordinate System Group 2", + "default": "" + }, + "CSG3": { + "type": "string", + "description": "Name for Coordinate System Group 3", + "default": "" + }, + "CSG4": { + "type": "string", + "description": "Name for Coordinate System Group 3", + "default": "" }, "type": { "type": "string", @@ -177,10 +356,7 @@ "required": [ "name", "PORT", - "P", - "numAxes", - "idlePoll", - "movingPoll" + "P" ], "additionalProperties": false }, @@ -195,9 +371,9 @@ "type": "string", "description": "Object name and gui association name" }, - "PMAC": { + "Controller": { "type": "string", - "description": "PMAC to attach to", + "description": "PMAC Controller to attach to", "vscode_ibek_plugin_type": "type_object" }, "axis": { @@ -287,7 +463,7 @@ "description": "Dial High Limit", "default": 10000.0 }, - "DLMM": { + "DLLM": { "type": "number", "description": "Dial low limit", "default": -10000.0 @@ -416,7 +592,7 @@ "description": "If 1 then home is visible on the gui", "default": 1 }, - "HOMEVISST": { + "HOMEVISSTR": { "type": "string", "default": "Use motor summary screen" }, @@ -453,7 +629,283 @@ }, "required": [ "name", - "PMAC", + "Controller", + "axis", + "P", + "M" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "name": { + "type": "string", + "description": "Object name and gui association name" + }, + "CsController": { + "type": "string", + "description": "Coordinate system controller to attach to", + "vscode_ibek_plugin_type": "type_object" + }, + "axis": { + "type": "integer", + "description": "which axis number this motor drives" + }, + "P": { + "type": "string", + "description": "PV prefix name for this motor" + }, + "M": { + "type": "string", + "description": "PV motor name for this motor" + }, + "DESC": { + "type": "string", + "description": "Description, displayed on EDM screen", + "default": "" + }, + "MRES": { + "type": "number", + "description": "Motor Step Size (EGU)", + "default": 0.0001 + }, + "VELO": { + "type": "number", + "description": "axis Velocity (EGU/s)", + "default": 1.0 + }, + "PREC": { + "type": "number", + "description": "Display Precision", + "default": 3.0 + }, + "EGU": { + "type": "string", + "description": "Engineering Units", + "default": "mm" + }, + "TWV": { + "type": "integer", + "description": "Tweak Step Size (EGU)", + "default": 1 + }, + "DTYP": { + "type": "string", + "description": "Datatype of record", + "default": "asynMotor" + }, + "DIR": { + "type": "integer", + "description": "User direction", + "default": 0 + }, + "VBAS": { + "type": "number", + "description": "Base Velocity (EGU/s)", + "default": 1.0 + }, + "VMAX": { + "type": "string", + "description": "Max Velocity (EGU/s)", + "default": "$(VELO)" + }, + "ACCL": { + "type": "number", + "description": "Seconds to Velocity", + "default": 0.5 + }, + "BDST": { + "type": "number", + "description": "BL Distance (EGU)", + "default": 0.0 + }, + "BVEL": { + "type": "number", + "description": "BL Velocity(EGU/s)", + "default": 0.0 + }, + "BACC": { + "type": "number", + "description": "BL Seconds to Veloc", + "default": 0.0 + }, + "DHLM": { + "type": "number", + "description": "Dial High Limit", + "default": 10000.0 + }, + "DLLM": { + "type": "number", + "description": "Dial low limit", + "default": -10000.0 + }, + "HLM": { + "type": "number", + "description": "User High Limit", + "default": 0.0 + }, + "LLM": { + "type": "number", + "description": "User Low Limit", + "default": 0.0 + }, + "HLSV": { + "type": "string", + "description": "HW Lim, Violation Svr", + "default": "MAJOR" + }, + "INIT": { + "type": "string", + "description": "Startup commands", + "default": "" + }, + "SREV": { + "type": "number", + "description": "Steps per Revolution", + "default": 1000.0 + }, + "RRES": { + "type": "number", + "description": "Readback Step Size (EGU", + "default": 0.0 + }, + "ERES": { + "type": "number", + "description": "Encoder Step Size (EGU)", + "default": 0.0 + }, + "JAR": { + "type": "number", + "description": "Jog Acceleration (EGU/s^2)", + "default": 0.0 + }, + "UEIP": { + "type": "integer", + "description": "Use Encoder If Present", + "default": 0 + }, + "URIP": { + "type": "integer", + "description": "Use RDBL If Present", + "default": 0 + }, + "RDBL": { + "type": "string", + "description": "Readback Location, set URIP =1 if you specify this", + "default": "0" + }, + "RLNK": { + "type": "string", + "description": "Readback output link", + "default": "" + }, + "RTRY": { + "type": "integer", + "description": "Max retry count", + "default": 0 + }, + "DLY": { + "type": "number", + "description": "Readback settle time (s)", + "default": 0.0 + }, + "OFF": { + "type": "number", + "description": "User Offset (EGU)", + "default": 0.0 + }, + "RDBD": { + "type": "number", + "description": "Retry Deadband (EGU)", + "default": 0.0 + }, + "FOFF": { + "type": "integer", + "description": "Freeze Offset, 0=variable, 1=frozen", + "default": 0 + }, + "ADEL": { + "type": "number", + "description": "Alarm monitor deadband (EGU)", + "default": 0.0 + }, + "NTM": { + "type": "integer", + "description": "New Target Monitor, only set to 0 for soft motors", + "default": 1 + }, + "FEHEIGH": { + "type": "number", + "description": "HIGH limit for following error", + "default": 0.0 + }, + "FEHIHI": { + "type": "number", + "description": "HIHI limit for following error", + "default": 0.0 + }, + "FEHHSV": { + "type": "string", + "description": "HIHI alarm severity for following error", + "default": "NO_ALARM" + }, + "FEHSV": { + "type": "string", + "description": "HIGH alarm severity for following error", + "default": "NO_ALARM" + }, + "SCALE": { + "type": "integer", + "default": 1 + }, + "HOMEVIS": { + "type": "integer", + "description": "If 1 then home is visible on the gui", + "default": 1 + }, + "HOMEVISSTR": { + "type": "string", + "default": "Use motor summary screen" + }, + "alh": { + "type": "string", + "description": "Set this to alh to add the motor to the alarm handler and send emails", + "default": "" + }, + "gda_name": { + "type": "string", + "description": "Name to export this as to GDA", + "default": "none" + }, + "gda_desc": { + "type": "string", + "description": "Description to export as to GDA", + "default": "$(DESC)" + }, + "HOME": { + "type": "string", + "description": "Prefix for autohome instance. Defaults to $(P) If unspecified", + "default": "$(P)" + }, + "ALLOW_HOMED_SET": { + "type": "string", + "description": "Set to a blank to allow this axis to have its homed", + "default": "#" + }, + "type": { + "type": "string", + "const": "pmac.DlsCsPmacAsynMotor", + "default": "pmac.DlsCsPmacAsynMotor" + } + }, + "required": [ + "name", + "CsController", "axis", "P", "M" @@ -487,6 +939,128 @@ "Axis" ], "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "Controller": { + "type": "string", + "description": "the PMAC Controller", + "vscode_ibek_plugin_type": "type_object" + }, + "PLC": { + "type": "integer", + "description": "PLC number of the auto home PLC" + }, + "P": { + "type": "string", + "description": "Prefix for auto home PVs" + }, + "GRP1": { + "type": "string", + "description": "name of the 'ALL' group of auto home axes", + "default": "All" + }, + "GRP2": { + "type": "string", + "description": "name of the second group of auto home axes", + "default": "" + }, + "GRP3": { + "type": "string", + "description": "name of the third group of auto home axes", + "default": "" + }, + "GRP4": { + "type": "string", + "description": "name of the fourth group of auto home axes", + "default": "" + }, + "GRP5": { + "type": "string", + "description": "name of the fourth group of auto home axes", + "default": "" + }, + "GRP6": { + "type": "string", + "description": "name of the fourth group of auto home axes", + "default": "" + }, + "GRP7": { + "type": "string", + "description": "name of the fourth group of auto home axes", + "default": "" + }, + "GRP8": { + "type": "string", + "description": "name of the fourth group of auto home axes", + "default": "" + }, + "GRP9": { + "type": "string", + "description": "name of the fourth group of auto home axes", + "default": "" + }, + "type": { + "type": "string", + "const": "pmac.autohome", + "default": "pmac.autohome" + } + }, + "required": [ + "Controller", + "PLC", + "P" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "entity_enabled": { + "type": "boolean", + "default": true + }, + "name": { + "type": "string", + "description": "Asyn port name for this object", + "vscode_ibek_plugin_type": "type_id" + }, + "Controller": { + "type": "string", + "description": "the PMAC Controller", + "vscode_ibek_plugin_type": "type_object" + }, + "CS": { + "type": "integer", + "description": "Coordinate system number" + }, + "NAxes": { + "type": "integer", + "description": "number of CS axes", + "default": 9 + }, + "Program": { + "type": "integer", + "description": "PROG number for CS motion", + "default": 10 + }, + "type": { + "type": "string", + "const": "pmac.CS", + "default": "pmac.CS" + } + }, + "required": [ + "name", + "Controller", + "CS" + ], + "additionalProperties": false } ] }, diff --git a/iocs/bl45p-mo-ioc-01/Chart.yaml b/iocs/bl45p-mo-ioc-01.hand/Chart.yaml similarity index 100% rename from iocs/bl45p-mo-ioc-01/Chart.yaml rename to iocs/bl45p-mo-ioc-01.hand/Chart.yaml diff --git a/iocs/bl45p-mo-ioc-01/config/BL45P-MO-IOC-01_expanded.db b/iocs/bl45p-mo-ioc-01.hand/config/BL45P-MO-IOC-01_expanded.db similarity index 100% rename from iocs/bl45p-mo-ioc-01/config/BL45P-MO-IOC-01_expanded.db rename to iocs/bl45p-mo-ioc-01.hand/config/BL45P-MO-IOC-01_expanded.db diff --git a/iocs/bl45p-mo-ioc-01/config/ioc.boot b/iocs/bl45p-mo-ioc-01.hand/config/ioc.boot similarity index 100% rename from iocs/bl45p-mo-ioc-01/config/ioc.boot rename to iocs/bl45p-mo-ioc-01.hand/config/ioc.boot diff --git a/iocs/bl45p-mo-ioc-01/config/start.sh b/iocs/bl45p-mo-ioc-01.hand/config/start.sh similarity index 100% rename from iocs/bl45p-mo-ioc-01/config/start.sh rename to iocs/bl45p-mo-ioc-01.hand/config/start.sh diff --git a/iocs/bl45p-mo-ioc-01/templates/config.yaml b/iocs/bl45p-mo-ioc-01.hand/templates/config.yaml similarity index 100% rename from iocs/bl45p-mo-ioc-01/templates/config.yaml rename to iocs/bl45p-mo-ioc-01.hand/templates/config.yaml diff --git a/iocs/bl45p-mo-ioc-01/values.yaml b/iocs/bl45p-mo-ioc-01.hand/values.yaml similarity index 100% rename from iocs/bl45p-mo-ioc-01/values.yaml rename to iocs/bl45p-mo-ioc-01.hand/values.yaml diff --git a/tests/bl45p-mo-ioc-99.sh b/tests/bl45p-mo-ioc-01.sh similarity index 59% rename from tests/bl45p-mo-ioc-99.sh rename to tests/bl45p-mo-ioc-01.sh index a44de10..84a872b 100755 --- a/tests/bl45p-mo-ioc-99.sh +++ b/tests/bl45p-mo-ioc-01.sh @@ -5,12 +5,12 @@ ibek=$root/ibek set -e echo "make schema" -ibek ioc-schema ${ibek}/{epics,pmac}.ibek.defs.yaml ${ibek}/pmac.ibek.entities.schema.json "${@}" +ibek ioc-schema ${ibek}/*.ibek.defs.yaml ${ibek}/pmac.ibek.entities.schema.json "${@}" echo "make helm Chart" cd $root -ibek build-helm bl45p-mo-ioc-99.yaml +ibek build-helm bl45p-mo-ioc-01.yaml echo "make ioc startup files" -cd $root/iocs/bl45p-mo-ioc-99 +cd $root/iocs/bl45p-mo-ioc-01 ibek build-startup config/ioc.boot.yaml $ibek/*.ibek.defs.yaml --out config/ioc.boot From e313d6bc882b13bd196a01723dd45251a8f508fa Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Tue, 7 Jun 2022 13:39:55 +0000 Subject: [PATCH 08/16] pmac.ibek.defs.yaml and bl45p-mo-ioc-01.yaml working except "substitute" --- .gitignore | 2 +- .../bl45p-mo-ioc-04.ibek.entities.schema.json | 483 ------------------ ibek/pmac.ibek.defs.yaml | 37 +- ibek/pmac.ibek.entities.schema.json | 36 +- launch.sh | 5 +- 5 files changed, 19 insertions(+), 544 deletions(-) delete mode 100644 ibek/bl45p-mo-ioc-04.ibek.entities.schema.json diff --git a/.gitignore b/.gitignore index e33950e..b39ad33 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,4 @@ **/charts **/*.bob edm/bobs -bl45p-mo-ioc-99/ +bl45p-mo-ioc-01/ diff --git a/ibek/bl45p-mo-ioc-04.ibek.entities.schema.json b/ibek/bl45p-mo-ioc-04.ibek.entities.schema.json deleted file mode 100644 index be68275..0000000 --- a/ibek/bl45p-mo-ioc-04.ibek.entities.schema.json +++ /dev/null @@ -1,483 +0,0 @@ -{ - "type": "object", - "properties": { - "ioc_name": { - "type": "string", - "description": "Name of IOC instance" - }, - "description": { - "type": "string", - "description": "Description of what the IOC does" - }, - "entities": { - "type": "array", - "items": { - "anyOf": [ - { - "type": "object", - "properties": { - "entity_enabled": { - "type": "boolean", - "default": true - }, - "max_bytes": { - "type": "integer", - "description": "Max size in bytes for sending arrays over channel access", - "default": 6000000 - }, - "type": { - "type": "string", - "const": "epics.EPICS_CA_MAX_ARRAY_BYTES", - "default": "epics.EPICS_CA_MAX_ARRAY_BYTES" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "entity_enabled": { - "type": "boolean", - "default": true - }, - "minutes_west": { - "type": "integer", - "description": "Set relative time zone minutes West relative to GMT (+/-720)", - "default": 0 - }, - "type": { - "type": "string", - "const": "epics.EPICS_TS_MIN_WEST", - "default": "epics.EPICS_TS_MIN_WEST" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "entity_enabled": { - "type": "boolean", - "default": true - }, - "pv": { - "type": "string", - "description": "Name of PV" - }, - "value": { - "type": "string", - "description": "Value to set" - }, - "type": { - "type": "string", - "const": "epics.dbpf", - "default": "epics.dbpf" - } - }, - "required": [ - "pv", - "value" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "entity_enabled": { - "type": "boolean", - "default": true - }, - "name": { - "type": "string", - "description": "Name of environment variable" - }, - "value": { - "type": "string", - "description": "Value of environment variable" - }, - "type": { - "type": "string", - "const": "epics.epicsEnvSet", - "default": "epics.epicsEnvSet" - } - }, - "required": [ - "name", - "value" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "entity_enabled": { - "type": "boolean", - "default": true - }, - "name": { - "type": "string", - "description": "Name to use for the geobrick's asyn port" - }, - "PORT": { - "type": "string", - "description": "Asyn port name for PmacAsynIPPort to connect to", - "vscode_ibek_plugin_type": "type_object" - }, - "P": { - "type": "string", - "description": "PV Prefix for all pmac db templates" - }, - "numAxes": { - "type": "integer", - "description": "number of axes to initialize for the controller" - }, - "idlePoll": { - "type": "integer", - "description": "Idle Poll Period in ms" - }, - "movingPoll": { - "type": "integer", - "description": "Moving Poll Period in ms" - }, - "type": { - "type": "string", - "const": "pmac.Geobrick", - "default": "pmac.Geobrick" - } - }, - "required": [ - "name", - "PORT", - "P", - "numAxes", - "idlePoll", - "movingPoll" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "entity_enabled": { - "type": "boolean", - "default": true - }, - "name": { - "type": "string", - "description": "Asyn port name", - "vscode_ibek_plugin_type": "type_id" - }, - "IP": { - "type": "string", - "description": "IP address of pmac" - }, - "type": { - "type": "string", - "const": "pmac.PmacAsynIPPort", - "default": "pmac.PmacAsynIPPort" - } - }, - "required": [ - "name", - "IP" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "entity_enabled": { - "type": "boolean", - "default": true - }, - "PMAC": { - "type": "string", - "description": "PMAC to attach to" - }, - "axis": { - "type": "integer", - "description": "which axis number this motor drives" - }, - "P": { - "type": "string", - "description": "PV prefix name for this motor" - }, - "M": { - "type": "string", - "description": "PV motor name for this motor" - }, - "PORT": { - "type": "string", - "description": "Delta tau motor controller" - }, - "name": { - "type": "string", - "description": "Object name and gui association name" - }, - "DESC": { - "type": "string", - "description": "Description, displayed on EDM screen", - "default": "" - }, - "MRES": { - "type": "number", - "description": "Motor Step Size (EGU)", - "default": 0.0001 - }, - "VELO": { - "type": "number", - "description": "axis Velocity (EGU/s)", - "default": 1.0 - }, - "PREC": { - "type": "number", - "description": "Display Precision", - "default": 3.0 - }, - "EGU": { - "type": "string", - "description": "Engineering Units", - "default": "mm" - }, - "TWV": { - "type": "integer", - "description": "Tweak Step Size (EGU)", - "default": 1 - }, - "DTYP": { - "type": "string", - "description": "Datatype of record", - "default": "asynMotor" - }, - "DIR": { - "type": "integer", - "description": "User direction", - "default": 0 - }, - "VBAS": { - "type": "number", - "description": "Base Velocity (EGU/s)", - "default": 1.0 - }, - "VMAX": { - "type": "string", - "description": "Max Velocity (EGU/s)", - "default": "$(VELO)" - }, - "ACCL": { - "type": "number", - "description": "Seconds to Velocity", - "default": 0.5 - }, - "BDST": { - "type": "number", - "description": "BL Distance (EGU)", - "default": 0.0 - }, - "BVEL": { - "type": "number", - "description": "BL Velocity(EGU/s)", - "default": 0.0 - }, - "BACC": { - "type": "number", - "description": "BL Seconds to Veloc", - "default": 0.0 - }, - "DHLM": { - "type": "number", - "description": "Dial High Limit", - "default": 10000.0 - }, - "DLMM": { - "type": "number", - "description": "Dial low limit", - "default": -10000.0 - }, - "HLM": { - "type": "number", - "description": "User High Limit", - "default": 0.0 - }, - "LLM": { - "type": "number", - "description": "User Low Limit", - "default": 0.0 - }, - "HLSV": { - "type": "string", - "description": "HW Lim, Violation Svr", - "default": "MAJOR" - }, - "INIT": { - "type": "string", - "description": "Startup commands", - "default": "" - }, - "SREV": { - "type": "number", - "description": "Steps per Revolution", - "default": 1000.0 - }, - "RRES": { - "type": "number", - "description": "Readback Step Size (EGU", - "default": 0.0 - }, - "ERES": { - "type": "number", - "description": "Encoder Step Size (EGU)", - "default": 0.0 - }, - "JAR": { - "type": "number", - "description": "Jog Acceleration (EGU/s^2)", - "default": 0.0 - }, - "UEIP": { - "type": "integer", - "description": "Use Encoder If Present", - "default": 0 - }, - "URIP": { - "type": "integer", - "description": "Use RDBL If Present", - "default": 0 - }, - "RDBL": { - "type": "string", - "description": "Readback Location, set URIP =1 if you specify this", - "default": "0" - }, - "RLNK": { - "type": "string", - "description": "Readback output link", - "default": "" - }, - "RTRY": { - "type": "integer", - "description": "Max retry count", - "default": 0 - }, - "DLY": { - "type": "number", - "description": "Readback settle time (s)", - "default": 0.0 - }, - "OFF": { - "type": "number", - "description": "User Offset (EGU)", - "default": 0.0 - }, - "RDBD": { - "type": "number", - "description": "Retry Deadband (EGU)", - "default": 0.0 - }, - "FOFF": { - "type": "integer", - "description": "Freeze Offset, 0=variable, 1=frozen", - "default": 0 - }, - "ADEL": { - "type": "number", - "description": "Alarm monitor deadband (EGU)", - "default": 0.0 - }, - "NTM": { - "type": "integer", - "description": "New Target Monitor, only set to 0 for soft motors", - "default": 1 - }, - "FEHEIGH": { - "type": "number", - "description": "HIGH limit for following error", - "default": 0.0 - }, - "FEHIHI": { - "type": "number", - "description": "HIHI limit for following error", - "default": 0.0 - }, - "FEHHSV": { - "type": "string", - "description": "HIHI alarm severity for following error", - "default": "NO_ALARM" - }, - "FEHSV": { - "type": "string", - "description": "HIGH alarm severity for following error", - "default": "NO_ALARM" - }, - "SCALE": { - "type": "integer", - "default": 1 - }, - "HOMEVIS": { - "type": "integer", - "description": "If 1 then home is visible on the gui", - "default": 1 - }, - "HOMEVISST": { - "type": "string", - "default": "Use motor summary screen" - }, - "alh": { - "type": "string", - "description": "Set this to alh to add the motor to the alarm handler and send emails", - "default": "" - }, - "gda_name": { - "type": "string", - "description": "Name to export this as to GDA", - "default": "none" - }, - "gda_desc": { - "type": "string", - "description": "Description to export as to GDA", - "default": "$(DESC)" - }, - "HOME": { - "type": "string", - "description": "Prefix for autohome instance. Defaults to $(P) If unspecified", - "default": "$(P)" - }, - "ALLOW_HOMED_SET": { - "type": "string", - "description": "Set to a blank to allow this axis to have its homed", - "default": "#" - }, - "type": { - "type": "string", - "const": "pmac.DlsPmacAsynMotor", - "default": "pmac.DlsPmacAsynMotor" - } - }, - "required": [ - "PMAC", - "axis", - "P", - "M", - "PORT", - "name" - ], - "additionalProperties": false - } - ] - }, - "description": "List of entities this IOC instantiates" - }, - "generic_ioc_image": { - "type": "string", - "description": "The generic IOC container image registry URL" - } - }, - "required": [ - "ioc_name", - "description", - "entities", - "generic_ioc_image" - ], - "additionalProperties": false, - "$schema": "http://json-schema.org/draft-07/schema#" -} \ No newline at end of file diff --git a/ibek/pmac.ibek.defs.yaml b/ibek/pmac.ibek.defs.yaml index 5d2a93c..66a1325 100644 --- a/ibek/pmac.ibek.defs.yaml +++ b/ibek/pmac.ibek.defs.yaml @@ -137,7 +137,7 @@ defs: description: axis Velocity (EGU/s) default: 1.0 - - type: float + - type: int name: PREC description: Display Precision default: 3 @@ -170,7 +170,7 @@ defs: - type: str name: VMAX description: Max Velocity (EGU/s) - default: $(VELO) + default: "{{VELO}}" - type: float name: ACCL @@ -222,7 +222,7 @@ defs: description: Startup commands default: "" - - type: float + - type: int name: SREV description: Steps per Revolution default: 1000 @@ -337,20 +337,10 @@ defs: description: Set this to alh to add the motor to the alarm handler and send emails default: "" - - type: str - name: gda_name - description: Name to export this as to GDA - default: none - - - type: str - name: gda_desc - description: Description to export as to GDA - default: $(DESC) - - type: str name: HOME description: Prefix for autohome instance. Defaults to $(P) If unspecified - default: $(P) + default: "{{P}}" - type: str name: ALLOW_HOMED_SET @@ -361,6 +351,7 @@ defs: - file: dls_pmac_asyn_motor.template define_args: | ADDR={{ axis }} + PMAC={{ Controller.P }} PORT={{ Controller.name }} SPORT={{ Controller.PORT.name }} include_args: @@ -410,8 +401,6 @@ defs: HOMEVISSTR, name, alh, - gda_name, - gda_desc, HOME, ALLOW_HOMED_SET, ] @@ -486,7 +475,7 @@ defs: - type: str name: VMAX description: Max Velocity (EGU/s) - default: $(VELO) + default: "{{VELO}}" - type: float name: ACCL @@ -653,20 +642,10 @@ defs: description: Set this to alh to add the motor to the alarm handler and send emails default: "" - - type: str - name: gda_name - description: Name to export this as to GDA - default: none - - - type: str - name: gda_desc - description: Description to export as to GDA - default: $(DESC) - - type: str name: HOME description: Prefix for autohome instance. Defaults to $(P) If unspecified - default: $(P) + default: "{{P}}" - type: str name: ALLOW_HOMED_SET @@ -725,8 +704,6 @@ defs: HOMEVISSTR, name, alh, - gda_name, - gda_desc, HOME, ALLOW_HOMED_SET, ] diff --git a/ibek/pmac.ibek.entities.schema.json b/ibek/pmac.ibek.entities.schema.json index 6d70ffd..e45ce66 100644 --- a/ibek/pmac.ibek.entities.schema.json +++ b/ibek/pmac.ibek.entities.schema.json @@ -404,9 +404,9 @@ "default": 1.0 }, "PREC": { - "type": "number", + "type": "integer", "description": "Display Precision", - "default": 3.0 + "default": 3 }, "EGU": { "type": "string", @@ -436,7 +436,7 @@ "VMAX": { "type": "string", "description": "Max Velocity (EGU/s)", - "default": "$(VELO)" + "default": "{{VELO}}" }, "ACCL": { "type": "number", @@ -489,9 +489,9 @@ "default": "" }, "SREV": { - "type": "number", + "type": "integer", "description": "Steps per Revolution", - "default": 1000.0 + "default": 1000 }, "RRES": { "type": "number", @@ -601,20 +601,10 @@ "description": "Set this to alh to add the motor to the alarm handler and send emails", "default": "" }, - "gda_name": { - "type": "string", - "description": "Name to export this as to GDA", - "default": "none" - }, - "gda_desc": { - "type": "string", - "description": "Description to export as to GDA", - "default": "$(DESC)" - }, "HOME": { "type": "string", "description": "Prefix for autohome instance. Defaults to $(P) If unspecified", - "default": "$(P)" + "default": "{{P}}" }, "ALLOW_HOMED_SET": { "type": "string", @@ -712,7 +702,7 @@ "VMAX": { "type": "string", "description": "Max Velocity (EGU/s)", - "default": "$(VELO)" + "default": "{{VELO}}" }, "ACCL": { "type": "number", @@ -877,20 +867,10 @@ "description": "Set this to alh to add the motor to the alarm handler and send emails", "default": "" }, - "gda_name": { - "type": "string", - "description": "Name to export this as to GDA", - "default": "none" - }, - "gda_desc": { - "type": "string", - "description": "Description to export as to GDA", - "default": "$(DESC)" - }, "HOME": { "type": "string", "description": "Prefix for autohome instance. Defaults to $(P) If unspecified", - "default": "$(P)" + "default": "{{P}}" }, "ALLOW_HOMED_SET": { "type": "string", diff --git a/launch.sh b/launch.sh index c7a3b09..de632d4 100755 --- a/launch.sh +++ b/launch.sh @@ -21,7 +21,7 @@ fi ioc=$(realpath ${1}) shift -command=${1:-"bash /epics/ioc/config/start.sh"} +command=${1:-"bash /repos/epics/ioc/config/start.sh"} shift if [ -z $(which docker 2> /dev/null) ] @@ -32,7 +32,8 @@ then fi image=$(awk '/base_image/{print $NF}' ${ioc}/values.yaml) +volumes="-v=${ioc}/config:/repos/epics/ioc/config:rw -vautosave:/autosave:rw" set -x -docker run -it --rm --network host $@ -v=${ioc}/config:/epics/ioc/config:rw -vautosave:/autosave:rw ${image} ${command} +docker run -it --rm --network host $@ ${volumes} ${image} ${command} From b1fd056bd50d3193f99f952e444757345df3e438 Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Thu, 9 Jun 2022 14:31:45 +0000 Subject: [PATCH 09/16] switch to new mo-ioc-01 edm screens --- bl45p-mo-ioc-01.yaml | 37 +- edm/bl45p-launcher.sh | 17 +- edm/bl45p-mo-ioc-01/BL45P-MO-IOC-01Top.edl | 12 +- edm/bl45p-mo-ioc-01/CHOP01.edl | 1207 ------- edm/bl45p-mo-ioc-01/SAMP01.edl | 3622 -------------------- ibek/pmac.ibek.defs.yaml | 15 +- ibek/pmac.ibek.entities.schema.json | 13 +- launch.sh | 9 + 8 files changed, 64 insertions(+), 4868 deletions(-) delete mode 100755 edm/bl45p-mo-ioc-01/CHOP01.edl delete mode 100755 edm/bl45p-mo-ioc-01/SAMP01.edl diff --git a/bl45p-mo-ioc-01.yaml b/bl45p-mo-ioc-01.yaml index d304b01..3c70a89 100644 --- a/bl45p-mo-ioc-01.yaml +++ b/bl45p-mo-ioc-01.yaml @@ -4,11 +4,13 @@ description: motion IOC for the test beamline p45 in G13 generic_ioc_image: ghcr.io/epics-containers/ioc-pmac:main.run # TODO need to make use of lists / strings consistent +# ANSWERS - script \n separated string, include,define are lists # currently include_args is a list, define_args is a string, script is a list # script should be a string, not sure about include_args but it could be a , and CR # separate string? # TODO would be good to have 'databases: include_all' for auto-substitution modules. +# ANSWERS - use wildcards in include args entities: - type: epics.EPICS_CA_MAX_ARRAY_BYTES @@ -23,11 +25,12 @@ entities: - type: pmac.Geobrick name: BRICK1 - # NOTE: validation cannot check the object type + # NOTE: validation cannot check the object type (NEVER FIX) PORT: BRICK1port P: BL45P-MO-STEP-01 # NOTE: There is no honouring defaults in Database files # in fact we repeat the defaults in the definitions YAML + # ANSWER OK! numAxes: 8 idlePoll: 100 movingPoll: 500 @@ -42,7 +45,7 @@ entities: MRES: 0.087890625 VELO: 90 # NOTE: VMAX is a string because we usually use $(VELO) - # ? Would a Union be better - what about other number args + # ? Would a Union be better - what about other number args VMAX: "1080" HOMEVISSTR: Absolute Encoder EGU: deg @@ -64,22 +67,22 @@ entities: CS: 3 Controller: BRICK1 - - type: pmac.DlsCsPmacAsynMotor + - type: pmac.DlsCsPmacAsynMotor name: STAGE1.CS.THETA CsController: BRICK1.CS2 - axis: 7 - P: BL45P-MO-STAGE-01 - M: :THETA:POS - ACCL: 0.1 - MRES: 0.0001 - VELO: 30 - DESC: Theta position - DHLM: 10000 - DLLM: -10000 - EGU: deg - PREC: 3 - TWV: 5 - + axis: 7 + P: BL45P-MO-STAGE-01 + M: :THETA:POS + ACCL: 0.1 + MRES: 0.0001 + VELO: 30 + DESC: Theta position + DHLM: 10000 + DLLM: -10000 + EGU: deg + PREC: 3 + TWV: 5 + - type: pmac.pmacDisableLimitsCheck Controller: BRICK1 Axis: 2 @@ -104,5 +107,3 @@ entities: GRP3: X GRP4: Y top GRP5: Y bottom - - diff --git a/edm/bl45p-launcher.sh b/edm/bl45p-launcher.sh index 52810ba..33e4bb0 100755 --- a/edm/bl45p-launcher.sh +++ b/edm/bl45p-launcher.sh @@ -9,14 +9,15 @@ thisdir=$(realpath $(dirname ${BASH_SOURCE[0]})) # use addresses for all nodes in the p45 beamline instead export EPICS_CA_ADDR_LIST="172.23.59.101 172.23.59.1" -# if there is a local install of edm run it -if [ ! -z $(which edm 2> /dev/null) ] -then - export EDMDATAFILES=$(echo $EDMDATAFILES | sed s+/screens+${thisdir}+g) - echo launching native edm with paths: $EDMDATAFILES - edm -noedit -x ${start} - exit 0 -fi +# if there is a local install of edm run it +# TODO fix this to detect RHEL 8 and not use edm +# if [ ! -z $(which edm 2> /dev/null) ] +# then +# export EDMDATAFILES=$(echo $EDMDATAFILES | sed s+/screens+${thisdir}+g) +# echo launching native edm with paths: $EDMDATAFILES +# edm -noedit -x ${start} +# exit 0 +# fi if [ -z $(which podman 2> /dev/null) ] then diff --git a/edm/bl45p-mo-ioc-01/BL45P-MO-IOC-01Top.edl b/edm/bl45p-mo-ioc-01/BL45P-MO-IOC-01Top.edl index 6b7301c..3a3dce6 100755 --- a/edm/bl45p-mo-ioc-01/BL45P-MO-IOC-01Top.edl +++ b/edm/bl45p-mo-ioc-01/BL45P-MO-IOC-01Top.edl @@ -323,7 +323,7 @@ bgColor index 3 botShadowColor index 11 buttonLabel "" displayFileName { - 0 "SAMP01.edl" + 0 "STAGE1.edl" } fgColor index 43 font "arial-bold-r-14.0" @@ -349,7 +349,7 @@ fgColor index 43 font "arial-bold-r-14.0" fontAlign "center" value { - "SAMP01" + "STAGE1" } visInvert visMax "2" @@ -374,7 +374,7 @@ fgColor index 43 font "arial-bold-r-14.0" fontAlign "center" value { - "SAMP01" + "STAGE1" } visMax "2" visMin "1" @@ -414,7 +414,7 @@ bgColor index 3 botShadowColor index 11 buttonLabel "" displayFileName { - 0 "CHOP01.edl" + 0 "CHOP1.edl" } fgColor index 43 font "arial-bold-r-14.0" @@ -440,7 +440,7 @@ fgColor index 43 font "arial-bold-r-14.0" fontAlign "center" value { - "CHOP01" + "CHOP1" } visInvert visMax "2" @@ -465,7 +465,7 @@ fgColor index 43 font "arial-bold-r-14.0" fontAlign "center" value { - "CHOP01" + "CHOP1" } visMax "2" visMin "1" diff --git a/edm/bl45p-mo-ioc-01/CHOP01.edl b/edm/bl45p-mo-ioc-01/CHOP01.edl deleted file mode 100755 index e624cea..0000000 --- a/edm/bl45p-mo-ioc-01/CHOP01.edl +++ /dev/null @@ -1,1207 +0,0 @@ -4 0 1 -beginScreenProperties -h 190 -major 4 -minor 0 -release 1 -w 415 -x 0 -y 0 -bgColor index 3 -botShadowColor index 11 -btnFont "arial-bold-r-14.0" -ctlBgColor1 index 3 -ctlBgColor2 index 14 -ctlFgColor1 index 25 -ctlFgColor2 index 0 -ctlFont "arial-bold-r-14.0" -fgColor index 14 -font "arial-medium-r-14.0" -showGrid -snapToGrid -textColor index 14 -title "Device - CHOP01" -topShadowColor index 1 -endScreenProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 30 -major 4 -minor 0 -release 0 -w 415 -x 0 -y 0 - - -beginGroup - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -h 25 -major 4 -minor 0 -release 0 -w 413 -x 0 -y 2 -fillColor index 0 -lineColor index 1 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -h 25 -major 4 -minor 0 -release 0 -w 413 -x 1 -y 3 -fillColor index 0 -lineColor index 11 -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 24 -major 4 -minor 2 -release 0 -w 413 -x 1 -y 3 -bgColor index 3 -botShadowColor index 0 -button3Popup -buttonLabel "tooltip" -displayFileName { - 0 "generic-tooltip" -} -fgColor index 14 -font "arial-bold-r-14.0" -invisible -numDsps 1 -numPvs 4 -setPosition { - 0 "button" -} -topShadowColor index 0 -xPosOffset 5 -yPosOffset 5 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 25 -major 4 -minor 1 -release 0 -w 455 -x 1 -y 3 -bgColor index 48 -fgColor index 14 -font "arial-bold-r-16.0" -fontAlign "center" -value { - "CHOP01 Top" -} -endObjectProperties - -endGroup - - -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 109 -major 4 -minor 4 -release 0 -w 189 -x 10 -y 40 -bgColor index 0 -botShadowColor index 0 -button3Popup -buttonLabel "HELP" -displayFileName { - 0 "motor-embed-small-tooltip" -} -fgColor index 0 -font "helvetica-medium-r-14.0" -invisible -numDsps 1 -numPvs 4 -setPosition { - 0 "button" -} -symbols { - 0 "box-label=X Chopper,motor=BL45P-MO-CHOP-01:HOR" -} -topShadowColor index 0 -xPosOffset -100 -yPosOffset -100 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -h 104 -major 4 -minor 0 -release 0 -w 189 -x 10 -y 45 -fill -fillColor index 5 -lineColor index 14 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 22 -major 4 -minor 1 -release 0 -w 52 -x 143 -y 123 -3d -botShadowColor index 11 -controlPv "BL45P-MO-CHOP-01:HOR.STOP" -fgColor index 21 -font "arial-bold-r-14.0" -offColor index 3 -offLabel "STOP" -onColor index 4 -onLabel "STOP" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 18 -y 96 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-CHOP-01:HOR.SEVR" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 0 4 - 2 2 - 3 3 - 4 1 -} -minValues { - 0 3 - 2 1 - 3 2 -} -numPvs 1 -numStates 5 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 172 -y 96 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-CHOP-01:HOR.DMOV" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 4 2 - 5 1 -} -minValues { - 4 1 -} -numPvs 1 -numStates 6 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 22 -major 4 -minor 4 -release 0 -w 52 -x 15 -y 123 -bgColor index 3 -botShadowColor index 11 -buttonLabel "More" -displayFileName { - 0 "motor.edl" -} -fgColor index 43 -font "arial-bold-r-14.0" -numDsps 1 -numPvs 4 -symbols { - 0 "motor=BL45P-MO-CHOP-01:HOR" -} -topShadowColor index 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 1 -w 79 -x 10 -y 40 -autoSize -bgColor index 8 -border -fgColor index 14 -font "arial-medium-r-12.0" -value { - " X Chopper " -} -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -h 16 -major 4 -minor 6 -release 0 -w 60 -x 75 -y 125 -autoHeight -bgColor index 3 -controlPv "BL45P-MO-CHOP-01:HOR.TWV" -editable -fgColor index 14 -font "arial-bold-r-14.0" -fontAlign "center" -limitsFromDb -newPos -noExecuteClipMask -nullColor index 30 -objType "controls" -useHexPrefix -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 15 -y 61 -3d -botShadowColor index 11 -controlPv "BL45P-MO-CHOP-01:HOR.TWR" -fgColor index 25 -font "arial-bold-r-24.0" -offColor index 3 -offLabel "-" -onColor index 4 -onLabel "-" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -h 33 -major 10 -minor 0 -release 0 -w 83 -x 63 -y 59 -bgColor index 3 -controlPv "BL45P-MO-CHOP-01:HOR" -displayMode "decimal" -fgColor index 25 -font "arial-bold-r-14.0" -fontAlign "center" -lineWidth -2 -precision 4 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 151 -y 61 -3d -botShadowColor index 11 -controlPv "BL45P-MO-CHOP-01:HOR.TWF" -fgColor index 25 -font "arial-bold-r-16.0" -offColor index 3 -offLabel "+" -onColor index 4 -onLabel "+" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Menu Button) -object activeMenuButtonClass -beginObjectProperties -h 13 -major 4 -minor 0 -release 0 -w 43 -x 151 -y 46 -bgColor index 3 -botShadowColor index 11 -controlPv "BL45P-MO-CHOP-01:HOR.SPMG" -fgColor index 25 -font "helvetica-medium-r-8.0" -inconsistentColor index 14 -indicatorPv "BL45P-MO-CHOP-01:HOR.SPMG" -topShadowColor index 1 -endObjectProperties - -# (Textupdate) -object TextupdateClass -beginObjectProperties -h 20 -major 10 -minor 0 -release 0 -w 115 -x 48 -y 97 -bgColor index 10 -controlPv "BL45P-MO-CHOP-01:HOR.RBV" -fgAlarm -fgColor index 15 -fill -font "arial-bold-r-14.0" -fontAlign "center" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 11 -major 4 -minor 0 -release 0 -w 18 -x 131 -y 46 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 0 -w 18 -x 131 -y 46 -3d -botShadowColor index 11 -controlPv "BL45P-MO-CHOP-01:HOR:KILL.PROC" -fgColor index 22 -font "helvetica-medium-r-8.0" -offColor index 3 -offLabel "Kill" -onColor index 4 -onLabel "Kill" -pressValue "1" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "1" -visMin "0" -visPv "BL45P-MO-CHOP-01:HOR:KILL" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 168 -y 96 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 168 -y 96 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "ALoss" -} -endObjectProperties - -endGroup - -visMax "3" -visMin "2" -visPv "CALC\\\{A&2\}(BL45P-MO-CHOP-01:HOR:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 168 -y 96 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 168 -y 96 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "SFail" -} -endObjectProperties - -endGroup - -visMax "5" -visMin "4" -visPv "CALC\\\{A&4\}(BL45P-MO-CHOP-01:HOR:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 168 -y 96 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 0 -w 28 -x 168 -y 96 -3d -botShadowColor index 11 -controlPv "BL45P-MO-CHOP-01:HOR:ELOSSRC.A" -fgColor index 14 -font "helvetica-medium-r-8.0" -offColor index 20 -offLabel "Eloss" -onColor index 21 -onLabel "ELoss" -pressValue "0" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "2" -visMin "1" -visPv "CALC\\\{A&1\}(BL45P-MO-CHOP-01:HOR:ELOSS)" -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 109 -major 4 -minor 4 -release 0 -w 189 -x 215 -y 40 -bgColor index 0 -botShadowColor index 0 -button3Popup -buttonLabel "HELP" -displayFileName { - 0 "motor-embed-small-tooltip" -} -fgColor index 0 -font "helvetica-medium-r-14.0" -invisible -numDsps 1 -numPvs 4 -setPosition { - 0 "button" -} -symbols { - 0 "box-label=Y Chopper,motor=BL45P-MO-CHOP-01:VER" -} -topShadowColor index 0 -xPosOffset -100 -yPosOffset -100 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -h 104 -major 4 -minor 0 -release 0 -w 189 -x 215 -y 45 -fill -fillColor index 5 -lineColor index 14 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 22 -major 4 -minor 1 -release 0 -w 52 -x 348 -y 123 -3d -botShadowColor index 11 -controlPv "BL45P-MO-CHOP-01:VER.STOP" -fgColor index 21 -font "arial-bold-r-14.0" -offColor index 3 -offLabel "STOP" -onColor index 4 -onLabel "STOP" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 223 -y 96 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-CHOP-01:VER.SEVR" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 0 4 - 2 2 - 3 3 - 4 1 -} -minValues { - 0 3 - 2 1 - 3 2 -} -numPvs 1 -numStates 5 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 377 -y 96 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-CHOP-01:VER.DMOV" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 4 2 - 5 1 -} -minValues { - 4 1 -} -numPvs 1 -numStates 6 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 22 -major 4 -minor 4 -release 0 -w 52 -x 220 -y 123 -bgColor index 3 -botShadowColor index 11 -buttonLabel "More" -displayFileName { - 0 "motor.edl" -} -fgColor index 43 -font "arial-bold-r-14.0" -numDsps 1 -numPvs 4 -symbols { - 0 "motor=BL45P-MO-CHOP-01:VER" -} -topShadowColor index 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 1 -w 79 -x 215 -y 40 -autoSize -bgColor index 8 -border -fgColor index 14 -font "arial-medium-r-12.0" -value { - " Y Chopper " -} -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -h 16 -major 4 -minor 6 -release 0 -w 60 -x 280 -y 125 -autoHeight -bgColor index 3 -controlPv "BL45P-MO-CHOP-01:VER.TWV" -editable -fgColor index 14 -font "arial-bold-r-14.0" -fontAlign "center" -limitsFromDb -newPos -noExecuteClipMask -nullColor index 30 -objType "controls" -useHexPrefix -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 220 -y 61 -3d -botShadowColor index 11 -controlPv "BL45P-MO-CHOP-01:VER.TWR" -fgColor index 25 -font "arial-bold-r-24.0" -offColor index 3 -offLabel "-" -onColor index 4 -onLabel "-" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -h 33 -major 10 -minor 0 -release 0 -w 83 -x 268 -y 59 -bgColor index 3 -controlPv "BL45P-MO-CHOP-01:VER" -displayMode "decimal" -fgColor index 25 -font "arial-bold-r-14.0" -fontAlign "center" -lineWidth -2 -precision 4 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 356 -y 61 -3d -botShadowColor index 11 -controlPv "BL45P-MO-CHOP-01:VER.TWF" -fgColor index 25 -font "arial-bold-r-16.0" -offColor index 3 -offLabel "+" -onColor index 4 -onLabel "+" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Menu Button) -object activeMenuButtonClass -beginObjectProperties -h 13 -major 4 -minor 0 -release 0 -w 43 -x 356 -y 46 -bgColor index 3 -botShadowColor index 11 -controlPv "BL45P-MO-CHOP-01:VER.SPMG" -fgColor index 25 -font "helvetica-medium-r-8.0" -inconsistentColor index 14 -indicatorPv "BL45P-MO-CHOP-01:VER.SPMG" -topShadowColor index 1 -endObjectProperties - -# (Textupdate) -object TextupdateClass -beginObjectProperties -h 20 -major 10 -minor 0 -release 0 -w 115 -x 253 -y 97 -bgColor index 10 -controlPv "BL45P-MO-CHOP-01:VER.RBV" -fgAlarm -fgColor index 15 -fill -font "arial-bold-r-14.0" -fontAlign "center" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 11 -major 4 -minor 0 -release 0 -w 18 -x 336 -y 46 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 0 -w 18 -x 336 -y 46 -3d -botShadowColor index 11 -controlPv "BL45P-MO-CHOP-01:VER:KILL.PROC" -fgColor index 22 -font "helvetica-medium-r-8.0" -offColor index 3 -offLabel "Kill" -onColor index 4 -onLabel "Kill" -pressValue "1" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "1" -visMin "0" -visPv "BL45P-MO-CHOP-01:VER:KILL" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 373 -y 96 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 373 -y 96 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "ALoss" -} -endObjectProperties - -endGroup - -visMax "3" -visMin "2" -visPv "CALC\\\{A&2\}(BL45P-MO-CHOP-01:VER:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 373 -y 96 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 373 -y 96 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "SFail" -} -endObjectProperties - -endGroup - -visMax "5" -visMin "4" -visPv "CALC\\\{A&4\}(BL45P-MO-CHOP-01:VER:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 373 -y 96 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 0 -w 28 -x 373 -y 96 -3d -botShadowColor index 11 -controlPv "BL45P-MO-CHOP-01:VER:ELOSSRC.A" -fgColor index 14 -font "helvetica-medium-r-8.0" -offColor index 20 -offLabel "Eloss" -onColor index 21 -onLabel "ELoss" -pressValue "0" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "2" -visMin "1" -visPv "CALC\\\{A&1\}(BL45P-MO-CHOP-01:VER:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 30 -major 4 -minor 0 -release 0 -w 50 -x 0 -y 0 - - -beginGroup - -# (Circle) -object activeCircleClass -beginObjectProperties -h 29 -major 4 -minor 0 -release 0 -w 48 -x 0 -y 0 -fillColor index 0 -lineColor index 1 -lineWidth 2 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -h 29 -major 4 -minor 0 -release 0 -w 48 -x 2 -y 2 -fillColor index 0 -lineColor index 11 -lineWidth 2 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -h 27 -major 4 -minor 0 -release 0 -w 47 -x 2 -y 2 -fill -fillColor index 48 -lineColor index 49 -lineWidth 3 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -h 3 -major 4 -minor 0 -release 0 -w 4 -x 12 -y 6 -fill -fillColor index 0 -lineColor index 1 -lineWidth 2 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 30 -major 4 -minor 1 -release 0 -w 50 -x 0 -y 0 -bgColor index 3 -fgColor index 14 -font "arial-bold-r-14.0" -fontAlign "center" -useDisplayBg -value { - "CHOP01" -} -endObjectProperties - -endGroup - - -endObjectProperties - -# (Exit Button) -object activeExitButtonClass -beginObjectProperties -h 20 -major 4 -minor 1 -release 0 -w 90 -x 315 -y 160 -3d -bgColor index 3 -botShadowColor index 11 -fgColor index 46 -font "arial-medium-r-16.0" -label "EXIT" -topShadowColor index 1 -endObjectProperties diff --git a/edm/bl45p-mo-ioc-01/SAMP01.edl b/edm/bl45p-mo-ioc-01/SAMP01.edl deleted file mode 100755 index 7a13043..0000000 --- a/edm/bl45p-mo-ioc-01/SAMP01.edl +++ /dev/null @@ -1,3622 +0,0 @@ -4 0 1 -beginScreenProperties -h 400 -major 4 -minor 0 -release 1 -w 620 -x 0 -y 0 -bgColor index 3 -botShadowColor index 11 -btnFont "arial-bold-r-14.0" -ctlBgColor1 index 3 -ctlBgColor2 index 14 -ctlFgColor1 index 25 -ctlFgColor2 index 0 -ctlFont "arial-bold-r-14.0" -fgColor index 14 -font "arial-medium-r-14.0" -showGrid -snapToGrid -textColor index 14 -title "Device - SAMP01" -topShadowColor index 1 -endScreenProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 30 -major 4 -minor 0 -release 0 -w 620 -x 0 -y 0 - - -beginGroup - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -h 25 -major 4 -minor 0 -release 0 -w 618 -x 0 -y 2 -fillColor index 0 -lineColor index 1 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -h 25 -major 4 -minor 0 -release 0 -w 618 -x 1 -y 3 -fillColor index 0 -lineColor index 11 -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 24 -major 4 -minor 2 -release 0 -w 618 -x 1 -y 3 -bgColor index 3 -botShadowColor index 0 -button3Popup -buttonLabel "tooltip" -displayFileName { - 0 "generic-tooltip" -} -fgColor index 14 -font "arial-bold-r-14.0" -invisible -numDsps 1 -numPvs 4 -setPosition { - 0 "button" -} -topShadowColor index 0 -xPosOffset 5 -yPosOffset 5 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 25 -major 4 -minor 1 -release 0 -w 660 -x 1 -y 3 -bgColor index 48 -fgColor index 14 -font "arial-bold-r-16.0" -fontAlign "center" -value { - "SAMP01 Top" -} -endObjectProperties - -endGroup - - -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 109 -major 4 -minor 4 -release 0 -w 189 -x 10 -y 40 -bgColor index 0 -botShadowColor index 0 -button3Popup -buttonLabel "HELP" -displayFileName { - 0 "motor-embed-small-tooltip" -} -fgColor index 0 -font "helvetica-medium-r-14.0" -invisible -numDsps 1 -numPvs 4 -setPosition { - 0 "button" -} -symbols { - 0 "box-label=Sample Theta,motor=BL45P-MO-SAMP-01:THETA" -} -topShadowColor index 0 -xPosOffset -100 -yPosOffset -100 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -h 104 -major 4 -minor 0 -release 0 -w 189 -x 10 -y 45 -fill -fillColor index 5 -lineColor index 14 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 22 -major 4 -minor 1 -release 0 -w 52 -x 143 -y 123 -3d -botShadowColor index 11 -controlPv "BL45P-MO-SAMP-01:THETA.STOP" -fgColor index 21 -font "arial-bold-r-14.0" -offColor index 3 -offLabel "STOP" -onColor index 4 -onLabel "STOP" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 18 -y 96 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-SAMP-01:THETA.SEVR" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 0 4 - 2 2 - 3 3 - 4 1 -} -minValues { - 0 3 - 2 1 - 3 2 -} -numPvs 1 -numStates 5 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 172 -y 96 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-SAMP-01:THETA.DMOV" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 4 2 - 5 1 -} -minValues { - 4 1 -} -numPvs 1 -numStates 6 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 22 -major 4 -minor 4 -release 0 -w 52 -x 15 -y 123 -bgColor index 3 -botShadowColor index 11 -buttonLabel "More" -displayFileName { - 0 "motor.edl" -} -fgColor index 43 -font "arial-bold-r-14.0" -numDsps 1 -numPvs 4 -symbols { - 0 "motor=BL45P-MO-SAMP-01:THETA" -} -topShadowColor index 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 1 -w 79 -x 10 -y 40 -autoSize -bgColor index 8 -border -fgColor index 14 -font "arial-medium-r-12.0" -value { - " Sample Theta " -} -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -h 16 -major 4 -minor 6 -release 0 -w 60 -x 75 -y 125 -autoHeight -bgColor index 3 -controlPv "BL45P-MO-SAMP-01:THETA.TWV" -editable -fgColor index 14 -font "arial-bold-r-14.0" -fontAlign "center" -limitsFromDb -newPos -noExecuteClipMask -nullColor index 30 -objType "controls" -useHexPrefix -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 15 -y 61 -3d -botShadowColor index 11 -controlPv "BL45P-MO-SAMP-01:THETA.TWR" -fgColor index 25 -font "arial-bold-r-24.0" -offColor index 3 -offLabel "-" -onColor index 4 -onLabel "-" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -h 33 -major 10 -minor 0 -release 0 -w 83 -x 63 -y 59 -bgColor index 3 -controlPv "BL45P-MO-SAMP-01:THETA" -displayMode "decimal" -fgColor index 25 -font "arial-bold-r-14.0" -fontAlign "center" -lineWidth -2 -precision 4 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 151 -y 61 -3d -botShadowColor index 11 -controlPv "BL45P-MO-SAMP-01:THETA.TWF" -fgColor index 25 -font "arial-bold-r-16.0" -offColor index 3 -offLabel "+" -onColor index 4 -onLabel "+" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Menu Button) -object activeMenuButtonClass -beginObjectProperties -h 13 -major 4 -minor 0 -release 0 -w 43 -x 151 -y 46 -bgColor index 3 -botShadowColor index 11 -controlPv "BL45P-MO-SAMP-01:THETA.SPMG" -fgColor index 25 -font "helvetica-medium-r-8.0" -inconsistentColor index 14 -indicatorPv "BL45P-MO-SAMP-01:THETA.SPMG" -topShadowColor index 1 -endObjectProperties - -# (Textupdate) -object TextupdateClass -beginObjectProperties -h 20 -major 10 -minor 0 -release 0 -w 115 -x 48 -y 97 -bgColor index 10 -controlPv "BL45P-MO-SAMP-01:THETA.RBV" -fgAlarm -fgColor index 15 -fill -font "arial-bold-r-14.0" -fontAlign "center" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 11 -major 4 -minor 0 -release 0 -w 18 -x 131 -y 46 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 0 -w 18 -x 131 -y 46 -3d -botShadowColor index 11 -controlPv "BL45P-MO-SAMP-01:THETA:KILL.PROC" -fgColor index 22 -font "helvetica-medium-r-8.0" -offColor index 3 -offLabel "Kill" -onColor index 4 -onLabel "Kill" -pressValue "1" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "1" -visMin "0" -visPv "BL45P-MO-SAMP-01:THETA:KILL" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 168 -y 96 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 168 -y 96 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "ALoss" -} -endObjectProperties - -endGroup - -visMax "3" -visMin "2" -visPv "CALC\\\{A&2\}(BL45P-MO-SAMP-01:THETA:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 168 -y 96 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 168 -y 96 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "SFail" -} -endObjectProperties - -endGroup - -visMax "5" -visMin "4" -visPv "CALC\\\{A&4\}(BL45P-MO-SAMP-01:THETA:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 168 -y 96 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 0 -w 28 -x 168 -y 96 -3d -botShadowColor index 11 -controlPv "BL45P-MO-SAMP-01:THETA:ELOSSRC.A" -fgColor index 14 -font "helvetica-medium-r-8.0" -offColor index 20 -offLabel "Eloss" -onColor index 21 -onLabel "ELoss" -pressValue "0" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "2" -visMin "1" -visPv "CALC\\\{A&1\}(BL45P-MO-SAMP-01:THETA:ELOSS)" -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 109 -major 4 -minor 4 -release 0 -w 189 -x 10 -y 160 -bgColor index 0 -botShadowColor index 0 -button3Popup -buttonLabel "HELP" -displayFileName { - 0 "motor-embed-small-tooltip" -} -fgColor index 0 -font "helvetica-medium-r-14.0" -invisible -numDsps 1 -numPvs 4 -setPosition { - 0 "button" -} -symbols { - 0 "box-label=X Stage,motor=BL45P-MO-STAGE-01:X" -} -topShadowColor index 0 -xPosOffset -100 -yPosOffset -100 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -h 104 -major 4 -minor 0 -release 0 -w 189 -x 10 -y 165 -fill -fillColor index 5 -lineColor index 14 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 22 -major 4 -minor 1 -release 0 -w 52 -x 143 -y 243 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:X.STOP" -fgColor index 21 -font "arial-bold-r-14.0" -offColor index 3 -offLabel "STOP" -onColor index 4 -onLabel "STOP" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 18 -y 216 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-STAGE-01:X.SEVR" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 0 4 - 2 2 - 3 3 - 4 1 -} -minValues { - 0 3 - 2 1 - 3 2 -} -numPvs 1 -numStates 5 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 172 -y 216 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-STAGE-01:X.DMOV" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 4 2 - 5 1 -} -minValues { - 4 1 -} -numPvs 1 -numStates 6 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 22 -major 4 -minor 4 -release 0 -w 52 -x 15 -y 243 -bgColor index 3 -botShadowColor index 11 -buttonLabel "More" -displayFileName { - 0 "motor.edl" -} -fgColor index 43 -font "arial-bold-r-14.0" -numDsps 1 -numPvs 4 -symbols { - 0 "motor=BL45P-MO-STAGE-01:X" -} -topShadowColor index 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 1 -w 79 -x 10 -y 160 -autoSize -bgColor index 8 -border -fgColor index 14 -font "arial-medium-r-12.0" -value { - " X Stage " -} -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -h 16 -major 4 -minor 6 -release 0 -w 60 -x 75 -y 245 -autoHeight -bgColor index 3 -controlPv "BL45P-MO-STAGE-01:X.TWV" -editable -fgColor index 14 -font "arial-bold-r-14.0" -fontAlign "center" -limitsFromDb -newPos -noExecuteClipMask -nullColor index 30 -objType "controls" -useHexPrefix -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 15 -y 181 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:X.TWR" -fgColor index 25 -font "arial-bold-r-24.0" -offColor index 3 -offLabel "-" -onColor index 4 -onLabel "-" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -h 33 -major 10 -minor 0 -release 0 -w 83 -x 63 -y 179 -bgColor index 3 -controlPv "BL45P-MO-STAGE-01:X" -displayMode "decimal" -fgColor index 25 -font "arial-bold-r-14.0" -fontAlign "center" -lineWidth -2 -precision 4 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 151 -y 181 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:X.TWF" -fgColor index 25 -font "arial-bold-r-16.0" -offColor index 3 -offLabel "+" -onColor index 4 -onLabel "+" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Menu Button) -object activeMenuButtonClass -beginObjectProperties -h 13 -major 4 -minor 0 -release 0 -w 43 -x 151 -y 166 -bgColor index 3 -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:X.SPMG" -fgColor index 25 -font "helvetica-medium-r-8.0" -inconsistentColor index 14 -indicatorPv "BL45P-MO-STAGE-01:X.SPMG" -topShadowColor index 1 -endObjectProperties - -# (Textupdate) -object TextupdateClass -beginObjectProperties -h 20 -major 10 -minor 0 -release 0 -w 115 -x 48 -y 217 -bgColor index 10 -controlPv "BL45P-MO-STAGE-01:X.RBV" -fgAlarm -fgColor index 15 -fill -font "arial-bold-r-14.0" -fontAlign "center" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 11 -major 4 -minor 0 -release 0 -w 18 -x 131 -y 166 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 0 -w 18 -x 131 -y 166 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:X:KILL.PROC" -fgColor index 22 -font "helvetica-medium-r-8.0" -offColor index 3 -offLabel "Kill" -onColor index 4 -onLabel "Kill" -pressValue "1" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "1" -visMin "0" -visPv "BL45P-MO-STAGE-01:X:KILL" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 168 -y 216 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 168 -y 216 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "ALoss" -} -endObjectProperties - -endGroup - -visMax "3" -visMin "2" -visPv "CALC\\\{A&2\}(BL45P-MO-STAGE-01:X:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 168 -y 216 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 168 -y 216 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "SFail" -} -endObjectProperties - -endGroup - -visMax "5" -visMin "4" -visPv "CALC\\\{A&4\}(BL45P-MO-STAGE-01:X:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 168 -y 216 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 0 -w 28 -x 168 -y 216 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:X:ELOSSRC.A" -fgColor index 14 -font "helvetica-medium-r-8.0" -offColor index 20 -offLabel "Eloss" -onColor index 21 -onLabel "ELoss" -pressValue "0" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "2" -visMin "1" -visPv "CALC\\\{A&1\}(BL45P-MO-STAGE-01:X:ELOSS)" -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 109 -major 4 -minor 4 -release 0 -w 189 -x 10 -y 280 -bgColor index 0 -botShadowColor index 0 -button3Popup -buttonLabel "HELP" -displayFileName { - 0 "motor-embed-small-tooltip" -} -fgColor index 0 -font "helvetica-medium-r-14.0" -invisible -numDsps 1 -numPvs 4 -setPosition { - 0 "button" -} -symbols { - 0 "box-label=Y Stage,motor=BL45P-MO-STAGE-01:Y" -} -topShadowColor index 0 -xPosOffset -100 -yPosOffset -100 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -h 104 -major 4 -minor 0 -release 0 -w 189 -x 10 -y 285 -fill -fillColor index 5 -lineColor index 14 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 22 -major 4 -minor 1 -release 0 -w 52 -x 143 -y 363 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:Y.STOP" -fgColor index 21 -font "arial-bold-r-14.0" -offColor index 3 -offLabel "STOP" -onColor index 4 -onLabel "STOP" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 18 -y 336 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-STAGE-01:Y.SEVR" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 0 4 - 2 2 - 3 3 - 4 1 -} -minValues { - 0 3 - 2 1 - 3 2 -} -numPvs 1 -numStates 5 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 172 -y 336 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-STAGE-01:Y.DMOV" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 4 2 - 5 1 -} -minValues { - 4 1 -} -numPvs 1 -numStates 6 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 22 -major 4 -minor 4 -release 0 -w 52 -x 15 -y 363 -bgColor index 3 -botShadowColor index 11 -buttonLabel "More" -displayFileName { - 0 "motor.edl" -} -fgColor index 43 -font "arial-bold-r-14.0" -numDsps 1 -numPvs 4 -symbols { - 0 "motor=BL45P-MO-STAGE-01:Y" -} -topShadowColor index 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 1 -w 79 -x 10 -y 280 -autoSize -bgColor index 8 -border -fgColor index 14 -font "arial-medium-r-12.0" -value { - " Y Stage " -} -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -h 16 -major 4 -minor 6 -release 0 -w 60 -x 75 -y 365 -autoHeight -bgColor index 3 -controlPv "BL45P-MO-STAGE-01:Y.TWV" -editable -fgColor index 14 -font "arial-bold-r-14.0" -fontAlign "center" -limitsFromDb -newPos -noExecuteClipMask -nullColor index 30 -objType "controls" -useHexPrefix -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 15 -y 301 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:Y.TWR" -fgColor index 25 -font "arial-bold-r-24.0" -offColor index 3 -offLabel "-" -onColor index 4 -onLabel "-" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -h 33 -major 10 -minor 0 -release 0 -w 83 -x 63 -y 299 -bgColor index 3 -controlPv "BL45P-MO-STAGE-01:Y" -displayMode "decimal" -fgColor index 25 -font "arial-bold-r-14.0" -fontAlign "center" -lineWidth -2 -precision 4 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 151 -y 301 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:Y.TWF" -fgColor index 25 -font "arial-bold-r-16.0" -offColor index 3 -offLabel "+" -onColor index 4 -onLabel "+" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Menu Button) -object activeMenuButtonClass -beginObjectProperties -h 13 -major 4 -minor 0 -release 0 -w 43 -x 151 -y 286 -bgColor index 3 -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:Y.SPMG" -fgColor index 25 -font "helvetica-medium-r-8.0" -inconsistentColor index 14 -indicatorPv "BL45P-MO-STAGE-01:Y.SPMG" -topShadowColor index 1 -endObjectProperties - -# (Textupdate) -object TextupdateClass -beginObjectProperties -h 20 -major 10 -minor 0 -release 0 -w 115 -x 48 -y 337 -bgColor index 10 -controlPv "BL45P-MO-STAGE-01:Y.RBV" -fgAlarm -fgColor index 15 -fill -font "arial-bold-r-14.0" -fontAlign "center" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 11 -major 4 -minor 0 -release 0 -w 18 -x 131 -y 286 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 0 -w 18 -x 131 -y 286 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:Y:KILL.PROC" -fgColor index 22 -font "helvetica-medium-r-8.0" -offColor index 3 -offLabel "Kill" -onColor index 4 -onLabel "Kill" -pressValue "1" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "1" -visMin "0" -visPv "BL45P-MO-STAGE-01:Y:KILL" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 168 -y 336 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 168 -y 336 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "ALoss" -} -endObjectProperties - -endGroup - -visMax "3" -visMin "2" -visPv "CALC\\\{A&2\}(BL45P-MO-STAGE-01:Y:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 168 -y 336 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 168 -y 336 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "SFail" -} -endObjectProperties - -endGroup - -visMax "5" -visMin "4" -visPv "CALC\\\{A&4\}(BL45P-MO-STAGE-01:Y:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 168 -y 336 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 0 -w 28 -x 168 -y 336 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:Y:ELOSSRC.A" -fgColor index 14 -font "helvetica-medium-r-8.0" -offColor index 20 -offLabel "Eloss" -onColor index 21 -onLabel "ELoss" -pressValue "0" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "2" -visMin "1" -visPv "CALC\\\{A&1\}(BL45P-MO-STAGE-01:Y:ELOSS)" -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 109 -major 4 -minor 4 -release 0 -w 189 -x 215 -y 40 -bgColor index 0 -botShadowColor index 0 -button3Popup -buttonLabel "HELP" -displayFileName { - 0 "motor-embed-small-tooltip" -} -fgColor index 0 -font "helvetica-medium-r-14.0" -invisible -numDsps 1 -numPvs 4 -setPosition { - 0 "button" -} -symbols { - 0 "box-label=Z Stage,motor=BL45P-MO-STAGE-01:Z" -} -topShadowColor index 0 -xPosOffset -100 -yPosOffset -100 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -h 104 -major 4 -minor 0 -release 0 -w 189 -x 215 -y 45 -fill -fillColor index 5 -lineColor index 14 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 22 -major 4 -minor 1 -release 0 -w 52 -x 348 -y 123 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:Z.STOP" -fgColor index 21 -font "arial-bold-r-14.0" -offColor index 3 -offLabel "STOP" -onColor index 4 -onLabel "STOP" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 223 -y 96 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-STAGE-01:Z.SEVR" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 0 4 - 2 2 - 3 3 - 4 1 -} -minValues { - 0 3 - 2 1 - 3 2 -} -numPvs 1 -numStates 5 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 377 -y 96 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-STAGE-01:Z.DMOV" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 4 2 - 5 1 -} -minValues { - 4 1 -} -numPvs 1 -numStates 6 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 22 -major 4 -minor 4 -release 0 -w 52 -x 220 -y 123 -bgColor index 3 -botShadowColor index 11 -buttonLabel "More" -displayFileName { - 0 "motor.edl" -} -fgColor index 43 -font "arial-bold-r-14.0" -numDsps 1 -numPvs 4 -symbols { - 0 "motor=BL45P-MO-STAGE-01:Z" -} -topShadowColor index 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 1 -w 79 -x 215 -y 40 -autoSize -bgColor index 8 -border -fgColor index 14 -font "arial-medium-r-12.0" -value { - " Z Stage " -} -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -h 16 -major 4 -minor 6 -release 0 -w 60 -x 280 -y 125 -autoHeight -bgColor index 3 -controlPv "BL45P-MO-STAGE-01:Z.TWV" -editable -fgColor index 14 -font "arial-bold-r-14.0" -fontAlign "center" -limitsFromDb -newPos -noExecuteClipMask -nullColor index 30 -objType "controls" -useHexPrefix -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 220 -y 61 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:Z.TWR" -fgColor index 25 -font "arial-bold-r-24.0" -offColor index 3 -offLabel "-" -onColor index 4 -onLabel "-" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -h 33 -major 10 -minor 0 -release 0 -w 83 -x 268 -y 59 -bgColor index 3 -controlPv "BL45P-MO-STAGE-01:Z" -displayMode "decimal" -fgColor index 25 -font "arial-bold-r-14.0" -fontAlign "center" -lineWidth -2 -precision 4 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 356 -y 61 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:Z.TWF" -fgColor index 25 -font "arial-bold-r-16.0" -offColor index 3 -offLabel "+" -onColor index 4 -onLabel "+" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Menu Button) -object activeMenuButtonClass -beginObjectProperties -h 13 -major 4 -minor 0 -release 0 -w 43 -x 356 -y 46 -bgColor index 3 -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:Z.SPMG" -fgColor index 25 -font "helvetica-medium-r-8.0" -inconsistentColor index 14 -indicatorPv "BL45P-MO-STAGE-01:Z.SPMG" -topShadowColor index 1 -endObjectProperties - -# (Textupdate) -object TextupdateClass -beginObjectProperties -h 20 -major 10 -minor 0 -release 0 -w 115 -x 253 -y 97 -bgColor index 10 -controlPv "BL45P-MO-STAGE-01:Z.RBV" -fgAlarm -fgColor index 15 -fill -font "arial-bold-r-14.0" -fontAlign "center" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 11 -major 4 -minor 0 -release 0 -w 18 -x 336 -y 46 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 0 -w 18 -x 336 -y 46 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:Z:KILL.PROC" -fgColor index 22 -font "helvetica-medium-r-8.0" -offColor index 3 -offLabel "Kill" -onColor index 4 -onLabel "Kill" -pressValue "1" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "1" -visMin "0" -visPv "BL45P-MO-STAGE-01:Z:KILL" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 373 -y 96 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 373 -y 96 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "ALoss" -} -endObjectProperties - -endGroup - -visMax "3" -visMin "2" -visPv "CALC\\\{A&2\}(BL45P-MO-STAGE-01:Z:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 373 -y 96 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 373 -y 96 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "SFail" -} -endObjectProperties - -endGroup - -visMax "5" -visMin "4" -visPv "CALC\\\{A&4\}(BL45P-MO-STAGE-01:Z:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 373 -y 96 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 0 -w 28 -x 373 -y 96 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:Z:ELOSSRC.A" -fgColor index 14 -font "helvetica-medium-r-8.0" -offColor index 20 -offLabel "Eloss" -onColor index 21 -onLabel "ELoss" -pressValue "0" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "2" -visMin "1" -visPv "CALC\\\{A&1\}(BL45P-MO-STAGE-01:Z:ELOSS)" -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 109 -major 4 -minor 4 -release 0 -w 189 -x 215 -y 160 -bgColor index 0 -botShadowColor index 0 -button3Popup -buttonLabel "HELP" -displayFileName { - 0 "motor-embed-small-tooltip" -} -fgColor index 0 -font "helvetica-medium-r-14.0" -invisible -numDsps 1 -numPvs 4 -setPosition { - 0 "button" -} -symbols { - 0 "box-label=Virtual X,motor=BL45P-MO-STAGE-01:VX" -} -topShadowColor index 0 -xPosOffset -100 -yPosOffset -100 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -h 104 -major 4 -minor 0 -release 0 -w 189 -x 215 -y 165 -fill -fillColor index 5 -lineColor index 14 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 22 -major 4 -minor 1 -release 0 -w 52 -x 348 -y 243 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VX.STOP" -fgColor index 21 -font "arial-bold-r-14.0" -offColor index 3 -offLabel "STOP" -onColor index 4 -onLabel "STOP" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 223 -y 216 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-STAGE-01:VX.SEVR" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 0 4 - 2 2 - 3 3 - 4 1 -} -minValues { - 0 3 - 2 1 - 3 2 -} -numPvs 1 -numStates 5 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 377 -y 216 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-STAGE-01:VX.DMOV" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 4 2 - 5 1 -} -minValues { - 4 1 -} -numPvs 1 -numStates 6 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 22 -major 4 -minor 4 -release 0 -w 52 -x 220 -y 243 -bgColor index 3 -botShadowColor index 11 -buttonLabel "More" -displayFileName { - 0 "motor.edl" -} -fgColor index 43 -font "arial-bold-r-14.0" -numDsps 1 -numPvs 4 -symbols { - 0 "motor=BL45P-MO-STAGE-01:VX" -} -topShadowColor index 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 1 -w 79 -x 215 -y 160 -autoSize -bgColor index 8 -border -fgColor index 14 -font "arial-medium-r-12.0" -value { - " Virtual X " -} -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -h 16 -major 4 -minor 6 -release 0 -w 60 -x 280 -y 245 -autoHeight -bgColor index 3 -controlPv "BL45P-MO-STAGE-01:VX.TWV" -editable -fgColor index 14 -font "arial-bold-r-14.0" -fontAlign "center" -limitsFromDb -newPos -noExecuteClipMask -nullColor index 30 -objType "controls" -useHexPrefix -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 220 -y 181 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VX.TWR" -fgColor index 25 -font "arial-bold-r-24.0" -offColor index 3 -offLabel "-" -onColor index 4 -onLabel "-" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -h 33 -major 10 -minor 0 -release 0 -w 83 -x 268 -y 179 -bgColor index 3 -controlPv "BL45P-MO-STAGE-01:VX" -displayMode "decimal" -fgColor index 25 -font "arial-bold-r-14.0" -fontAlign "center" -lineWidth -2 -precision 4 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 356 -y 181 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VX.TWF" -fgColor index 25 -font "arial-bold-r-16.0" -offColor index 3 -offLabel "+" -onColor index 4 -onLabel "+" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Menu Button) -object activeMenuButtonClass -beginObjectProperties -h 13 -major 4 -minor 0 -release 0 -w 43 -x 356 -y 166 -bgColor index 3 -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VX.SPMG" -fgColor index 25 -font "helvetica-medium-r-8.0" -inconsistentColor index 14 -indicatorPv "BL45P-MO-STAGE-01:VX.SPMG" -topShadowColor index 1 -endObjectProperties - -# (Textupdate) -object TextupdateClass -beginObjectProperties -h 20 -major 10 -minor 0 -release 0 -w 115 -x 253 -y 217 -bgColor index 10 -controlPv "BL45P-MO-STAGE-01:VX.RBV" -fgAlarm -fgColor index 15 -fill -font "arial-bold-r-14.0" -fontAlign "center" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 11 -major 4 -minor 0 -release 0 -w 18 -x 336 -y 166 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 0 -w 18 -x 336 -y 166 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VX:KILL.PROC" -fgColor index 22 -font "helvetica-medium-r-8.0" -offColor index 3 -offLabel "Kill" -onColor index 4 -onLabel "Kill" -pressValue "1" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "1" -visMin "0" -visPv "BL45P-MO-STAGE-01:VX:KILL" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 373 -y 216 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 373 -y 216 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "ALoss" -} -endObjectProperties - -endGroup - -visMax "3" -visMin "2" -visPv "CALC\\\{A&2\}(BL45P-MO-STAGE-01:VX:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 373 -y 216 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 373 -y 216 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "SFail" -} -endObjectProperties - -endGroup - -visMax "5" -visMin "4" -visPv "CALC\\\{A&4\}(BL45P-MO-STAGE-01:VX:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 373 -y 216 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 0 -w 28 -x 373 -y 216 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VX:ELOSSRC.A" -fgColor index 14 -font "helvetica-medium-r-8.0" -offColor index 20 -offLabel "Eloss" -onColor index 21 -onLabel "ELoss" -pressValue "0" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "2" -visMin "1" -visPv "CALC\\\{A&1\}(BL45P-MO-STAGE-01:VX:ELOSS)" -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 109 -major 4 -minor 4 -release 0 -w 189 -x 215 -y 280 -bgColor index 0 -botShadowColor index 0 -button3Popup -buttonLabel "HELP" -displayFileName { - 0 "motor-embed-small-tooltip" -} -fgColor index 0 -font "helvetica-medium-r-14.0" -invisible -numDsps 1 -numPvs 4 -setPosition { - 0 "button" -} -symbols { - 0 "box-label=Virtual Y,motor=BL45P-MO-STAGE-01:VY" -} -topShadowColor index 0 -xPosOffset -100 -yPosOffset -100 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -h 104 -major 4 -minor 0 -release 0 -w 189 -x 215 -y 285 -fill -fillColor index 5 -lineColor index 14 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 22 -major 4 -minor 1 -release 0 -w 52 -x 348 -y 363 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VY.STOP" -fgColor index 21 -font "arial-bold-r-14.0" -offColor index 3 -offLabel "STOP" -onColor index 4 -onLabel "STOP" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 223 -y 336 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-STAGE-01:VY.SEVR" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 0 4 - 2 2 - 3 3 - 4 1 -} -minValues { - 0 3 - 2 1 - 3 2 -} -numPvs 1 -numStates 5 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 377 -y 336 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-STAGE-01:VY.DMOV" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 4 2 - 5 1 -} -minValues { - 4 1 -} -numPvs 1 -numStates 6 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 22 -major 4 -minor 4 -release 0 -w 52 -x 220 -y 363 -bgColor index 3 -botShadowColor index 11 -buttonLabel "More" -displayFileName { - 0 "motor.edl" -} -fgColor index 43 -font "arial-bold-r-14.0" -numDsps 1 -numPvs 4 -symbols { - 0 "motor=BL45P-MO-STAGE-01:VY" -} -topShadowColor index 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 1 -w 79 -x 215 -y 280 -autoSize -bgColor index 8 -border -fgColor index 14 -font "arial-medium-r-12.0" -value { - " Virtual Y " -} -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -h 16 -major 4 -minor 6 -release 0 -w 60 -x 280 -y 365 -autoHeight -bgColor index 3 -controlPv "BL45P-MO-STAGE-01:VY.TWV" -editable -fgColor index 14 -font "arial-bold-r-14.0" -fontAlign "center" -limitsFromDb -newPos -noExecuteClipMask -nullColor index 30 -objType "controls" -useHexPrefix -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 220 -y 301 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VY.TWR" -fgColor index 25 -font "arial-bold-r-24.0" -offColor index 3 -offLabel "-" -onColor index 4 -onLabel "-" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -h 33 -major 10 -minor 0 -release 0 -w 83 -x 268 -y 299 -bgColor index 3 -controlPv "BL45P-MO-STAGE-01:VY" -displayMode "decimal" -fgColor index 25 -font "arial-bold-r-14.0" -fontAlign "center" -lineWidth -2 -precision 4 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 356 -y 301 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VY.TWF" -fgColor index 25 -font "arial-bold-r-16.0" -offColor index 3 -offLabel "+" -onColor index 4 -onLabel "+" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Menu Button) -object activeMenuButtonClass -beginObjectProperties -h 13 -major 4 -minor 0 -release 0 -w 43 -x 356 -y 286 -bgColor index 3 -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VY.SPMG" -fgColor index 25 -font "helvetica-medium-r-8.0" -inconsistentColor index 14 -indicatorPv "BL45P-MO-STAGE-01:VY.SPMG" -topShadowColor index 1 -endObjectProperties - -# (Textupdate) -object TextupdateClass -beginObjectProperties -h 20 -major 10 -minor 0 -release 0 -w 115 -x 253 -y 337 -bgColor index 10 -controlPv "BL45P-MO-STAGE-01:VY.RBV" -fgAlarm -fgColor index 15 -fill -font "arial-bold-r-14.0" -fontAlign "center" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 11 -major 4 -minor 0 -release 0 -w 18 -x 336 -y 286 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 0 -w 18 -x 336 -y 286 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VY:KILL.PROC" -fgColor index 22 -font "helvetica-medium-r-8.0" -offColor index 3 -offLabel "Kill" -onColor index 4 -onLabel "Kill" -pressValue "1" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "1" -visMin "0" -visPv "BL45P-MO-STAGE-01:VY:KILL" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 373 -y 336 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 373 -y 336 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "ALoss" -} -endObjectProperties - -endGroup - -visMax "3" -visMin "2" -visPv "CALC\\\{A&2\}(BL45P-MO-STAGE-01:VY:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 373 -y 336 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 373 -y 336 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "SFail" -} -endObjectProperties - -endGroup - -visMax "5" -visMin "4" -visPv "CALC\\\{A&4\}(BL45P-MO-STAGE-01:VY:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 373 -y 336 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 0 -w 28 -x 373 -y 336 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VY:ELOSSRC.A" -fgColor index 14 -font "helvetica-medium-r-8.0" -offColor index 20 -offLabel "Eloss" -onColor index 21 -onLabel "ELoss" -pressValue "0" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "2" -visMin "1" -visPv "CALC\\\{A&1\}(BL45P-MO-STAGE-01:VY:ELOSS)" -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 109 -major 4 -minor 4 -release 0 -w 189 -x 420 -y 40 -bgColor index 0 -botShadowColor index 0 -button3Popup -buttonLabel "HELP" -displayFileName { - 0 "motor-embed-small-tooltip" -} -fgColor index 0 -font "helvetica-medium-r-14.0" -invisible -numDsps 1 -numPvs 4 -setPosition { - 0 "button" -} -symbols { - 0 "box-label=Virtual Z,motor=BL45P-MO-STAGE-01:VZ" -} -topShadowColor index 0 -xPosOffset -100 -yPosOffset -100 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -h 104 -major 4 -minor 0 -release 0 -w 189 -x 420 -y 45 -fill -fillColor index 5 -lineColor index 14 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 22 -major 4 -minor 1 -release 0 -w 52 -x 553 -y 123 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VZ.STOP" -fgColor index 21 -font "arial-bold-r-14.0" -offColor index 3 -offLabel "STOP" -onColor index 4 -onLabel "STOP" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 428 -y 96 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-STAGE-01:VZ.SEVR" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 0 4 - 2 2 - 3 3 - 4 1 -} -minValues { - 0 3 - 2 1 - 3 2 -} -numPvs 1 -numStates 5 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Symbol) -object activeSymbolClass -beginObjectProperties -h 20 -major 4 -minor 0 -release 0 -w 20 -x 582 -y 96 -bgColor index 3 -controlPvs { - 0 "BL45P-MO-STAGE-01:VZ.DMOV" -} -fgColor index 14 -file "symbols-traffic-light-symbol.edl" -maxValues { - 4 2 - 5 1 -} -minValues { - 4 1 -} -numPvs 1 -numStates 6 -useOriginalColors -useOriginalSize -endObjectProperties - -# (Related Display) -object relatedDisplayClass -beginObjectProperties -h 22 -major 4 -minor 4 -release 0 -w 52 -x 425 -y 123 -bgColor index 3 -botShadowColor index 11 -buttonLabel "More" -displayFileName { - 0 "motor.edl" -} -fgColor index 43 -font "arial-bold-r-14.0" -numDsps 1 -numPvs 4 -symbols { - 0 "motor=BL45P-MO-STAGE-01:VZ" -} -topShadowColor index 1 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 1 -w 79 -x 420 -y 40 -autoSize -bgColor index 8 -border -fgColor index 14 -font "arial-medium-r-12.0" -value { - " Virtual Z " -} -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -h 16 -major 4 -minor 6 -release 0 -w 60 -x 485 -y 125 -autoHeight -bgColor index 3 -controlPv "BL45P-MO-STAGE-01:VZ.TWV" -editable -fgColor index 14 -font "arial-bold-r-14.0" -fontAlign "center" -limitsFromDb -newPos -noExecuteClipMask -nullColor index 30 -objType "controls" -useHexPrefix -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 425 -y 61 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VZ.TWR" -fgColor index 25 -font "arial-bold-r-24.0" -offColor index 3 -offLabel "-" -onColor index 4 -onLabel "-" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Textentry) -object TextentryClass -beginObjectProperties -h 33 -major 10 -minor 0 -release 0 -w 83 -x 473 -y 59 -bgColor index 3 -controlPv "BL45P-MO-STAGE-01:VZ" -displayMode "decimal" -fgColor index 25 -font "arial-bold-r-14.0" -fontAlign "center" -lineWidth -2 -precision 4 -endObjectProperties - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 29 -major 4 -minor 1 -release 0 -w 43 -x 561 -y 61 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VZ.TWF" -fgColor index 25 -font "arial-bold-r-16.0" -offColor index 3 -offLabel "+" -onColor index 4 -onLabel "+" -pressValue "1" -topShadowColor index 1 -visMax "1" -visMin "0" -endObjectProperties - -# (Menu Button) -object activeMenuButtonClass -beginObjectProperties -h 13 -major 4 -minor 0 -release 0 -w 43 -x 561 -y 46 -bgColor index 3 -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VZ.SPMG" -fgColor index 25 -font "helvetica-medium-r-8.0" -inconsistentColor index 14 -indicatorPv "BL45P-MO-STAGE-01:VZ.SPMG" -topShadowColor index 1 -endObjectProperties - -# (Textupdate) -object TextupdateClass -beginObjectProperties -h 20 -major 10 -minor 0 -release 0 -w 115 -x 458 -y 97 -bgColor index 10 -controlPv "BL45P-MO-STAGE-01:VZ.RBV" -fgAlarm -fgColor index 15 -fill -font "arial-bold-r-14.0" -fontAlign "center" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 11 -major 4 -minor 0 -release 0 -w 18 -x 541 -y 46 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 13 -major 4 -minor 1 -release 0 -w 18 -x 541 -y 46 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VZ:KILL.PROC" -fgColor index 22 -font "helvetica-medium-r-8.0" -offColor index 3 -offLabel "Kill" -onColor index 4 -onLabel "Kill" -pressValue "1" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "1" -visMin "0" -visPv "BL45P-MO-STAGE-01:VZ:KILL" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 578 -y 96 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 578 -y 96 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "ALoss" -} -endObjectProperties - -endGroup - -visMax "3" -visMin "2" -visPv "CALC\\\{A&2\}(BL45P-MO-STAGE-01:VZ:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 578 -y 96 - - -beginGroup - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 1 -w 28 -x 578 -y 96 -bgColor index 21 -fgColor index 14 -font "helvetica-medium-r-10.0" -fontAlign "center" -value { - "SFail" -} -endObjectProperties - -endGroup - -visMax "5" -visMin "4" -visPv "CALC\\\{A&4\}(BL45P-MO-STAGE-01:VZ:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 21 -major 4 -minor 0 -release 0 -w 28 -x 578 -y 96 - - -beginGroup - -# (Message Button) -object activeMessageButtonClass -beginObjectProperties -h 21 -major 4 -minor 1 -release 0 -w 28 -x 578 -y 96 -3d -botShadowColor index 11 -controlPv "BL45P-MO-STAGE-01:VZ:ELOSSRC.A" -fgColor index 14 -font "helvetica-medium-r-8.0" -offColor index 20 -offLabel "Eloss" -onColor index 21 -onLabel "ELoss" -pressValue "0" -topShadowColor index 1 -endObjectProperties - -endGroup - -visMax "2" -visMin "1" -visPv "CALC\\\{A&1\}(BL45P-MO-STAGE-01:VZ:ELOSS)" -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -h 30 -major 4 -minor 0 -release 0 -w 50 -x 0 -y 0 - - -beginGroup - -# (Circle) -object activeCircleClass -beginObjectProperties -h 29 -major 4 -minor 0 -release 0 -w 48 -x 0 -y 0 -fillColor index 0 -lineColor index 1 -lineWidth 2 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -h 29 -major 4 -minor 0 -release 0 -w 48 -x 2 -y 2 -fillColor index 0 -lineColor index 11 -lineWidth 2 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -h 27 -major 4 -minor 0 -release 0 -w 47 -x 2 -y 2 -fill -fillColor index 48 -lineColor index 49 -lineWidth 3 -endObjectProperties - -# (Circle) -object activeCircleClass -beginObjectProperties -h 3 -major 4 -minor 0 -release 0 -w 4 -x 12 -y 6 -fill -fillColor index 0 -lineColor index 1 -lineWidth 2 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -h 30 -major 4 -minor 1 -release 0 -w 50 -x 0 -y 0 -bgColor index 3 -fgColor index 14 -font "arial-bold-r-14.0" -fontAlign "center" -useDisplayBg -value { - "SAMP01" -} -endObjectProperties - -endGroup - - -endObjectProperties - -# (Exit Button) -object activeExitButtonClass -beginObjectProperties -h 20 -major 4 -minor 1 -release 0 -w 90 -x 520 -y 370 -3d -bgColor index 3 -botShadowColor index 11 -fgColor index 46 -font "arial-medium-r-16.0" -label "EXIT" -topShadowColor index 1 -endObjectProperties diff --git a/ibek/pmac.ibek.defs.yaml b/ibek/pmac.ibek.defs.yaml index 66a1325..397b78f 100644 --- a/ibek/pmac.ibek.defs.yaml +++ b/ibek/pmac.ibek.defs.yaml @@ -13,8 +13,13 @@ defs: name: IP description: IP address of pmac + - type: int + name: PORT + description: TCP port for connection + default: 1025 + script: - - pmacAsynIPConfigure({{ name }}, {{ IP if ":" in IP else IP + ":1025" }}) + - pmacAsynIPConfigure({{ name }}, {{ IP }}:{{ PORT }}) - name: Geobrick args: @@ -167,9 +172,11 @@ defs: description: Base Velocity (EGU/s) default: 1.0 + # TODO type float - type: str name: VMAX description: Max Velocity (EGU/s) + # TODO make default a UNION of type and str (for jinja) default: "{{VELO}}" - type: float @@ -442,7 +449,7 @@ defs: description: axis Velocity (EGU/s) default: 1.0 - - type: float + - type: int name: PREC description: Display Precision default: 3 @@ -527,7 +534,7 @@ defs: description: Startup commands default: "" - - type: float + - type: int name: SREV description: Steps per Revolution default: 1000 @@ -657,6 +664,8 @@ defs: define_args: | ADDR={{ axis }} PORT={{ CsController.name }} + CS=CS{{ CsController.CS }} + PMAC={{ CsController.Controller.name }} include_args: [ P, diff --git a/ibek/pmac.ibek.entities.schema.json b/ibek/pmac.ibek.entities.schema.json index e45ce66..bf71311 100644 --- a/ibek/pmac.ibek.entities.schema.json +++ b/ibek/pmac.ibek.entities.schema.json @@ -264,6 +264,11 @@ "type": "string", "description": "IP address of pmac" }, + "PORT": { + "type": "integer", + "description": "TCP port for connection", + "default": 1025 + }, "type": { "type": "string", "const": "pmac.PmacAsynIPPort", @@ -670,9 +675,9 @@ "default": 1.0 }, "PREC": { - "type": "number", + "type": "integer", "description": "Display Precision", - "default": 3.0 + "default": 3 }, "EGU": { "type": "string", @@ -755,9 +760,9 @@ "default": "" }, "SREV": { - "type": "number", + "type": "integer", "description": "Steps per Revolution", - "default": 1000.0 + "default": 1000 }, "RRES": { "type": "number", diff --git a/launch.sh b/launch.sh index de632d4..795d6c8 100755 --- a/launch.sh +++ b/launch.sh @@ -9,6 +9,8 @@ # this mounts the ioc instance's bin volume using -v=source:target # wheras on the k8s cluster this will be done with a config map +echo DEPRECATED: use cdev-ioc-launch from k8s-epics-utils/dev-functions.sh + if [ -z "${1}" ] then echo 'usage ioc-launch [command] [additional parameters] @@ -34,6 +36,13 @@ fi image=$(awk '/base_image/{print $NF}' ${ioc}/values.yaml) volumes="-v=${ioc}/config:/repos/epics/ioc/config:rw -vautosave:/autosave:rw" +if [ "${ioc_developer}" ] ; then + echo yy + image=${image%.run} +fi + +echo "launching container ${image} with ${command}" + set -x docker run -it --rm --network host $@ ${volumes} ${image} ${command} From dbbef9e3d9ed8626839ebc9ca0b1ad9b3b3b7a28 Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Thu, 9 Jun 2022 16:54:35 +0000 Subject: [PATCH 10/16] add all real motors to mo01 --- .gitignore | 2 +- bl45p-mo-ioc-01.yaml | 92 +++++++++++++++++++++++++++++++++++++++++++ edm/bl45p-launcher.sh | 2 +- 3 files changed, 94 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index b39ad33..80c22b4 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,4 @@ **/charts **/*.bob edm/bobs -bl45p-mo-ioc-01/ +iocs/bl45p-mo-ioc-01/ diff --git a/bl45p-mo-ioc-01.yaml b/bl45p-mo-ioc-01.yaml index 3c70a89..28b588f 100644 --- a/bl45p-mo-ioc-01.yaml +++ b/bl45p-mo-ioc-01.yaml @@ -50,6 +50,92 @@ entities: HOMEVISSTR: Absolute Encoder EGU: deg + - type: pmac.DlsPmacAsynMotor + name: STAGE1.THETA_BOT + Controller: BRICK1 + ACCL: 0.1 + axis: 3 + P: BL45P-MO-STAGE-01 + M: :THETA:BOT + DESC: Theta bottom + EGU: deg + HOMEVISSTR: Absolute Encoder + MRES: 0.087890625 + PREC: 3 + VELO: 90 + VMAX: "1080" + + - type: pmac.DlsPmacAsynMotor + name: CHOP1.HOR + Controller: BRICK1 + axis: 4 + P: BL45P-MO-CHOP-01 + M: :ENDAT + DESC: Hor EnDat chopper + EGU: deg + HOMEVIS: 0 + HOMEVISSTR: Absolute Encoder + MRES: 0.000043 + PREC: 5 + VELO: 43 + + - type: pmac.DlsPmacAsynMotor + name: CHOP1.VER + Controller: BRICK1 + ACCL: 0.01 + axis: 5 + P: BL45P-MO-CHOP-01 + M: :BISS + DESC: Ver Biss chopper + EGU: deg + HOMEVIS: 0 + HOMEVISSTR: Absolute Encoder + MRES: 0.000687 + PREC: 5 + VELO: 720 + + - type: pmac.DlsPmacAsynMotor + name: STAGE1.X + Controller: BRICK1 + axis: 6 + P: BL45P-MO-STAGE-01 + M: :X + DESC: Sample X + DHLM: 19 + DLLM: 0.0 + EGU: mm + MRES: 0.0001 + PREC: 3 + VELO: 5 + + - type: pmac.DlsPmacAsynMotor + name: STAGE1.Y_TOP + Controller: BRICK1 + axis: 7 + P: BL45P-MO-STAGE-01 + M: :Y:TOP + DESC: Sample Y top + DHLM: 4 + DLLM: -1 + EGU: mm + MRES: 0.0005 + PREC: 3 + VELO: 5 + + - type: pmac.DlsPmacAsynMotor + name: STAGE1.Y_BOT + Controller: BRICK1 + P: BL45P-MO-STAGE-01 + M: :Y:BOT + axis: 8 + DESC: Sample Y bottom + DHLM: 4 + DLLM: -1 + EGU: mm + MRES: 0.0005 + PREC: 3 + VELO: 5 + - type: pmac.CS name: BRICK1.CS1 CS: 1 @@ -83,6 +169,12 @@ entities: PREC: 3 TWV: 5 + # - type: pmac.DlsCsPmacAsynMotor + + # - type: pmac.DlsCsPmacAsynMotor + + # - type: pmac.DlsCsPmacAsynMotor + - type: pmac.pmacDisableLimitsCheck Controller: BRICK1 Axis: 2 diff --git a/edm/bl45p-launcher.sh b/edm/bl45p-launcher.sh index 33e4bb0..f81ff31 100755 --- a/edm/bl45p-launcher.sh +++ b/edm/bl45p-launcher.sh @@ -7,7 +7,7 @@ thisdir=$(realpath $(dirname ${BASH_SOURCE[0]})) # if there is a no cagateway running on p45-ws001 at 172.23.59.64 # use addresses for all nodes in the p45 beamline instead -export EPICS_CA_ADDR_LIST="172.23.59.101 172.23.59.1" +export EPICS_CA_ADDR_LIST="172.23.59.101 172.23.59.1 172.23.245.116" # if there is a local install of edm run it # TODO fix this to detect RHEL 8 and not use edm From 9f28cdd9622b9df607bdb49d205baaa80476af7a Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Thu, 9 Jun 2022 17:01:00 +0000 Subject: [PATCH 11/16] add new scheme mo01 screens --- edm/bl45p-mo-ioc-01/CHOP1.edl | 1207 ++++++++++++ edm/bl45p-mo-ioc-01/STAGE1.CS.edl | 2173 ++++++++++++++++++++++ edm/bl45p-mo-ioc-01/STAGE1.edl | 2841 +++++++++++++++++++++++++++++ 3 files changed, 6221 insertions(+) create mode 100755 edm/bl45p-mo-ioc-01/CHOP1.edl create mode 100755 edm/bl45p-mo-ioc-01/STAGE1.CS.edl create mode 100755 edm/bl45p-mo-ioc-01/STAGE1.edl diff --git a/edm/bl45p-mo-ioc-01/CHOP1.edl b/edm/bl45p-mo-ioc-01/CHOP1.edl new file mode 100755 index 0000000..8b8c0a6 --- /dev/null +++ b/edm/bl45p-mo-ioc-01/CHOP1.edl @@ -0,0 +1,1207 @@ +4 0 1 +beginScreenProperties +h 190 +major 4 +minor 0 +release 1 +w 415 +x 0 +y 0 +bgColor index 3 +botShadowColor index 11 +btnFont "arial-bold-r-14.0" +ctlBgColor1 index 3 +ctlBgColor2 index 14 +ctlFgColor1 index 25 +ctlFgColor2 index 0 +ctlFont "arial-bold-r-14.0" +fgColor index 14 +font "arial-medium-r-14.0" +showGrid +snapToGrid +textColor index 14 +title "Device - CHOP1" +topShadowColor index 1 +endScreenProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 30 +major 4 +minor 0 +release 0 +w 415 +x 0 +y 0 + + +beginGroup + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 25 +major 4 +minor 0 +release 0 +w 413 +x 0 +y 2 +fillColor index 0 +lineColor index 1 +endObjectProperties + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 25 +major 4 +minor 0 +release 0 +w 413 +x 1 +y 3 +fillColor index 0 +lineColor index 11 +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 24 +major 4 +minor 2 +release 0 +w 413 +x 1 +y 3 +bgColor index 3 +botShadowColor index 0 +button3Popup +buttonLabel "tooltip" +displayFileName { + 0 "generic-tooltip" +} +fgColor index 14 +font "arial-bold-r-14.0" +invisible +numDsps 1 +numPvs 4 +setPosition { + 0 "button" +} +topShadowColor index 0 +xPosOffset 5 +yPosOffset 5 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 25 +major 4 +minor 1 +release 0 +w 455 +x 1 +y 3 +bgColor index 48 +fgColor index 14 +font "arial-bold-r-16.0" +fontAlign "center" +value { + "CHOP1 Top" +} +endObjectProperties + +endGroup + + +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 109 +major 4 +minor 4 +release 0 +w 189 +x 10 +y 40 +bgColor index 0 +botShadowColor index 0 +button3Popup +buttonLabel "HELP" +displayFileName { + 0 "motor-embed-small-tooltip" +} +fgColor index 0 +font "helvetica-medium-r-14.0" +invisible +numDsps 1 +numPvs 4 +setPosition { + 0 "button" +} +symbols { + 0 "box-label=Hor EnDat chopper,motor=BL45P-MO-CHOP-01:ENDAT" +} +topShadowColor index 0 +xPosOffset -100 +yPosOffset -100 +endObjectProperties + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 104 +major 4 +minor 0 +release 0 +w 189 +x 10 +y 45 +fill +fillColor index 5 +lineColor index 14 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 22 +major 4 +minor 1 +release 0 +w 52 +x 143 +y 123 +3d +botShadowColor index 11 +controlPv "BL45P-MO-CHOP-01:ENDAT.STOP" +fgColor index 21 +font "arial-bold-r-14.0" +offColor index 3 +offLabel "STOP" +onColor index 4 +onLabel "STOP" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 18 +y 96 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-CHOP-01:ENDAT.SEVR" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 0 4 + 2 2 + 3 3 + 4 1 +} +minValues { + 0 3 + 2 1 + 3 2 +} +numPvs 1 +numStates 5 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 172 +y 96 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-CHOP-01:ENDAT.DMOV" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 4 2 + 5 1 +} +minValues { + 4 1 +} +numPvs 1 +numStates 6 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 22 +major 4 +minor 4 +release 0 +w 52 +x 15 +y 123 +bgColor index 3 +botShadowColor index 11 +buttonLabel "More" +displayFileName { + 0 "motor.edl" +} +fgColor index 43 +font "arial-bold-r-14.0" +numDsps 1 +numPvs 4 +symbols { + 0 "motor=BL45P-MO-CHOP-01:ENDAT" +} +topShadowColor index 1 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 1 +w 79 +x 10 +y 40 +autoSize +bgColor index 8 +border +fgColor index 14 +font "arial-medium-r-12.0" +value { + " Hor EnDat chopper " +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +h 16 +major 4 +minor 6 +release 0 +w 60 +x 75 +y 125 +autoHeight +bgColor index 3 +controlPv "BL45P-MO-CHOP-01:ENDAT.TWV" +editable +fgColor index 14 +font "arial-bold-r-14.0" +fontAlign "center" +limitsFromDb +newPos +noExecuteClipMask +nullColor index 30 +objType "controls" +useHexPrefix +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 15 +y 61 +3d +botShadowColor index 11 +controlPv "BL45P-MO-CHOP-01:ENDAT.TWR" +fgColor index 25 +font "arial-bold-r-24.0" +offColor index 3 +offLabel "-" +onColor index 4 +onLabel "-" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Textentry) +object TextentryClass +beginObjectProperties +h 33 +major 10 +minor 0 +release 0 +w 83 +x 63 +y 59 +bgColor index 3 +controlPv "BL45P-MO-CHOP-01:ENDAT" +displayMode "decimal" +fgColor index 25 +font "arial-bold-r-14.0" +fontAlign "center" +lineWidth -2 +precision 4 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 151 +y 61 +3d +botShadowColor index 11 +controlPv "BL45P-MO-CHOP-01:ENDAT.TWF" +fgColor index 25 +font "arial-bold-r-16.0" +offColor index 3 +offLabel "+" +onColor index 4 +onLabel "+" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +h 13 +major 4 +minor 0 +release 0 +w 43 +x 151 +y 46 +bgColor index 3 +botShadowColor index 11 +controlPv "BL45P-MO-CHOP-01:ENDAT.SPMG" +fgColor index 25 +font "helvetica-medium-r-8.0" +inconsistentColor index 14 +indicatorPv "BL45P-MO-CHOP-01:ENDAT.SPMG" +topShadowColor index 1 +endObjectProperties + +# (Textupdate) +object TextupdateClass +beginObjectProperties +h 20 +major 10 +minor 0 +release 0 +w 115 +x 48 +y 97 +bgColor index 10 +controlPv "BL45P-MO-CHOP-01:ENDAT.RBV" +fgAlarm +fgColor index 15 +fill +font "arial-bold-r-14.0" +fontAlign "center" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 11 +major 4 +minor 0 +release 0 +w 18 +x 131 +y 46 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 0 +w 18 +x 131 +y 46 +3d +botShadowColor index 11 +controlPv "BL45P-MO-CHOP-01:ENDAT:KILL.PROC" +fgColor index 22 +font "helvetica-medium-r-8.0" +offColor index 3 +offLabel "Kill" +onColor index 4 +onLabel "Kill" +pressValue "1" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "1" +visMin "0" +visPv "BL45P-MO-CHOP-01:ENDAT:KILL" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 96 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 168 +y 96 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "ALoss" +} +endObjectProperties + +endGroup + +visMax "3" +visMin "2" +visPv "CALC\\\{A&2\}(BL45P-MO-CHOP-01:ENDAT:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 96 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 168 +y 96 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "SFail" +} +endObjectProperties + +endGroup + +visMax "5" +visMin "4" +visPv "CALC\\\{A&4\}(BL45P-MO-CHOP-01:ENDAT:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 96 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 0 +w 28 +x 168 +y 96 +3d +botShadowColor index 11 +controlPv "BL45P-MO-CHOP-01:ENDAT:ELOSSRC.A" +fgColor index 14 +font "helvetica-medium-r-8.0" +offColor index 20 +offLabel "Eloss" +onColor index 21 +onLabel "ELoss" +pressValue "0" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "2" +visMin "1" +visPv "CALC\\\{A&1\}(BL45P-MO-CHOP-01:ENDAT:ELOSS)" +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 109 +major 4 +minor 4 +release 0 +w 189 +x 215 +y 40 +bgColor index 0 +botShadowColor index 0 +button3Popup +buttonLabel "HELP" +displayFileName { + 0 "motor-embed-small-tooltip" +} +fgColor index 0 +font "helvetica-medium-r-14.0" +invisible +numDsps 1 +numPvs 4 +setPosition { + 0 "button" +} +symbols { + 0 "box-label=Ver Biss chopper,motor=BL45P-MO-CHOP-01:BISS" +} +topShadowColor index 0 +xPosOffset -100 +yPosOffset -100 +endObjectProperties + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 104 +major 4 +minor 0 +release 0 +w 189 +x 215 +y 45 +fill +fillColor index 5 +lineColor index 14 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 22 +major 4 +minor 1 +release 0 +w 52 +x 348 +y 123 +3d +botShadowColor index 11 +controlPv "BL45P-MO-CHOP-01:BISS.STOP" +fgColor index 21 +font "arial-bold-r-14.0" +offColor index 3 +offLabel "STOP" +onColor index 4 +onLabel "STOP" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 223 +y 96 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-CHOP-01:BISS.SEVR" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 0 4 + 2 2 + 3 3 + 4 1 +} +minValues { + 0 3 + 2 1 + 3 2 +} +numPvs 1 +numStates 5 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 377 +y 96 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-CHOP-01:BISS.DMOV" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 4 2 + 5 1 +} +minValues { + 4 1 +} +numPvs 1 +numStates 6 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 22 +major 4 +minor 4 +release 0 +w 52 +x 220 +y 123 +bgColor index 3 +botShadowColor index 11 +buttonLabel "More" +displayFileName { + 0 "motor.edl" +} +fgColor index 43 +font "arial-bold-r-14.0" +numDsps 1 +numPvs 4 +symbols { + 0 "motor=BL45P-MO-CHOP-01:BISS" +} +topShadowColor index 1 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 1 +w 79 +x 215 +y 40 +autoSize +bgColor index 8 +border +fgColor index 14 +font "arial-medium-r-12.0" +value { + " Ver Biss chopper " +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +h 16 +major 4 +minor 6 +release 0 +w 60 +x 280 +y 125 +autoHeight +bgColor index 3 +controlPv "BL45P-MO-CHOP-01:BISS.TWV" +editable +fgColor index 14 +font "arial-bold-r-14.0" +fontAlign "center" +limitsFromDb +newPos +noExecuteClipMask +nullColor index 30 +objType "controls" +useHexPrefix +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 220 +y 61 +3d +botShadowColor index 11 +controlPv "BL45P-MO-CHOP-01:BISS.TWR" +fgColor index 25 +font "arial-bold-r-24.0" +offColor index 3 +offLabel "-" +onColor index 4 +onLabel "-" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Textentry) +object TextentryClass +beginObjectProperties +h 33 +major 10 +minor 0 +release 0 +w 83 +x 268 +y 59 +bgColor index 3 +controlPv "BL45P-MO-CHOP-01:BISS" +displayMode "decimal" +fgColor index 25 +font "arial-bold-r-14.0" +fontAlign "center" +lineWidth -2 +precision 4 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 356 +y 61 +3d +botShadowColor index 11 +controlPv "BL45P-MO-CHOP-01:BISS.TWF" +fgColor index 25 +font "arial-bold-r-16.0" +offColor index 3 +offLabel "+" +onColor index 4 +onLabel "+" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +h 13 +major 4 +minor 0 +release 0 +w 43 +x 356 +y 46 +bgColor index 3 +botShadowColor index 11 +controlPv "BL45P-MO-CHOP-01:BISS.SPMG" +fgColor index 25 +font "helvetica-medium-r-8.0" +inconsistentColor index 14 +indicatorPv "BL45P-MO-CHOP-01:BISS.SPMG" +topShadowColor index 1 +endObjectProperties + +# (Textupdate) +object TextupdateClass +beginObjectProperties +h 20 +major 10 +minor 0 +release 0 +w 115 +x 253 +y 97 +bgColor index 10 +controlPv "BL45P-MO-CHOP-01:BISS.RBV" +fgAlarm +fgColor index 15 +fill +font "arial-bold-r-14.0" +fontAlign "center" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 11 +major 4 +minor 0 +release 0 +w 18 +x 336 +y 46 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 0 +w 18 +x 336 +y 46 +3d +botShadowColor index 11 +controlPv "BL45P-MO-CHOP-01:BISS:KILL.PROC" +fgColor index 22 +font "helvetica-medium-r-8.0" +offColor index 3 +offLabel "Kill" +onColor index 4 +onLabel "Kill" +pressValue "1" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "1" +visMin "0" +visPv "BL45P-MO-CHOP-01:BISS:KILL" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 373 +y 96 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 373 +y 96 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "ALoss" +} +endObjectProperties + +endGroup + +visMax "3" +visMin "2" +visPv "CALC\\\{A&2\}(BL45P-MO-CHOP-01:BISS:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 373 +y 96 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 373 +y 96 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "SFail" +} +endObjectProperties + +endGroup + +visMax "5" +visMin "4" +visPv "CALC\\\{A&4\}(BL45P-MO-CHOP-01:BISS:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 373 +y 96 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 0 +w 28 +x 373 +y 96 +3d +botShadowColor index 11 +controlPv "BL45P-MO-CHOP-01:BISS:ELOSSRC.A" +fgColor index 14 +font "helvetica-medium-r-8.0" +offColor index 20 +offLabel "Eloss" +onColor index 21 +onLabel "ELoss" +pressValue "0" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "2" +visMin "1" +visPv "CALC\\\{A&1\}(BL45P-MO-CHOP-01:BISS:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 30 +major 4 +minor 0 +release 0 +w 50 +x 0 +y 0 + + +beginGroup + +# (Circle) +object activeCircleClass +beginObjectProperties +h 29 +major 4 +minor 0 +release 0 +w 48 +x 0 +y 0 +fillColor index 0 +lineColor index 1 +lineWidth 2 +endObjectProperties + +# (Circle) +object activeCircleClass +beginObjectProperties +h 29 +major 4 +minor 0 +release 0 +w 48 +x 2 +y 2 +fillColor index 0 +lineColor index 11 +lineWidth 2 +endObjectProperties + +# (Circle) +object activeCircleClass +beginObjectProperties +h 27 +major 4 +minor 0 +release 0 +w 47 +x 2 +y 2 +fill +fillColor index 48 +lineColor index 49 +lineWidth 3 +endObjectProperties + +# (Circle) +object activeCircleClass +beginObjectProperties +h 3 +major 4 +minor 0 +release 0 +w 4 +x 12 +y 6 +fill +fillColor index 0 +lineColor index 1 +lineWidth 2 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 30 +major 4 +minor 1 +release 0 +w 50 +x 0 +y 0 +bgColor index 3 +fgColor index 14 +font "arial-bold-r-14.0" +fontAlign "center" +useDisplayBg +value { + "CHOP1" +} +endObjectProperties + +endGroup + + +endObjectProperties + +# (Exit Button) +object activeExitButtonClass +beginObjectProperties +h 20 +major 4 +minor 1 +release 0 +w 90 +x 315 +y 160 +3d +bgColor index 3 +botShadowColor index 11 +fgColor index 46 +font "arial-medium-r-16.0" +label "EXIT" +topShadowColor index 1 +endObjectProperties diff --git a/edm/bl45p-mo-ioc-01/STAGE1.CS.edl b/edm/bl45p-mo-ioc-01/STAGE1.CS.edl new file mode 100755 index 0000000..174bb79 --- /dev/null +++ b/edm/bl45p-mo-ioc-01/STAGE1.CS.edl @@ -0,0 +1,2173 @@ +4 0 1 +beginScreenProperties +h 310 +major 4 +minor 0 +release 1 +w 415 +x 0 +y 0 +bgColor index 3 +botShadowColor index 11 +btnFont "arial-bold-r-14.0" +ctlBgColor1 index 3 +ctlBgColor2 index 14 +ctlFgColor1 index 25 +ctlFgColor2 index 0 +ctlFont "arial-bold-r-14.0" +fgColor index 14 +font "arial-medium-r-14.0" +showGrid +snapToGrid +textColor index 14 +title "Device - STAGE1.CS" +topShadowColor index 1 +endScreenProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 30 +major 4 +minor 0 +release 0 +w 415 +x 0 +y 0 + + +beginGroup + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 25 +major 4 +minor 0 +release 0 +w 413 +x 0 +y 2 +fillColor index 0 +lineColor index 1 +endObjectProperties + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 25 +major 4 +minor 0 +release 0 +w 413 +x 1 +y 3 +fillColor index 0 +lineColor index 11 +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 24 +major 4 +minor 2 +release 0 +w 413 +x 1 +y 3 +bgColor index 3 +botShadowColor index 0 +button3Popup +buttonLabel "tooltip" +displayFileName { + 0 "generic-tooltip" +} +fgColor index 14 +font "arial-bold-r-14.0" +invisible +numDsps 1 +numPvs 4 +setPosition { + 0 "button" +} +topShadowColor index 0 +xPosOffset 5 +yPosOffset 5 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 25 +major 4 +minor 1 +release 0 +w 455 +x 1 +y 3 +bgColor index 48 +fgColor index 14 +font "arial-bold-r-16.0" +fontAlign "center" +value { + "STAGE1.CS Top" +} +endObjectProperties + +endGroup + + +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 109 +major 4 +minor 4 +release 0 +w 189 +x 10 +y 40 +bgColor index 0 +botShadowColor index 0 +button3Popup +buttonLabel "HELP" +displayFileName { + 0 "motor-embed-small-tooltip" +} +fgColor index 0 +font "helvetica-medium-r-14.0" +invisible +numDsps 1 +numPvs 4 +setPosition { + 0 "button" +} +symbols { + 0 "box-label=Theta position,motor=BL45P-MO-STAGE-01:THETA:POS" +} +topShadowColor index 0 +xPosOffset -100 +yPosOffset -100 +endObjectProperties + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 104 +major 4 +minor 0 +release 0 +w 189 +x 10 +y 45 +fill +fillColor index 5 +lineColor index 14 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 22 +major 4 +minor 1 +release 0 +w 52 +x 143 +y 123 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:POS.STOP" +fgColor index 21 +font "arial-bold-r-14.0" +offColor index 3 +offLabel "STOP" +onColor index 4 +onLabel "STOP" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 18 +y 96 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:THETA:POS.SEVR" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 0 4 + 2 2 + 3 3 + 4 1 +} +minValues { + 0 3 + 2 1 + 3 2 +} +numPvs 1 +numStates 5 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 172 +y 96 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:THETA:POS.DMOV" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 4 2 + 5 1 +} +minValues { + 4 1 +} +numPvs 1 +numStates 6 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 22 +major 4 +minor 4 +release 0 +w 52 +x 15 +y 123 +bgColor index 3 +botShadowColor index 11 +buttonLabel "More" +displayFileName { + 0 "motor.edl" +} +fgColor index 43 +font "arial-bold-r-14.0" +numDsps 1 +numPvs 4 +symbols { + 0 "motor=BL45P-MO-STAGE-01:THETA:POS" +} +topShadowColor index 1 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 1 +w 79 +x 10 +y 40 +autoSize +bgColor index 8 +border +fgColor index 14 +font "arial-medium-r-12.0" +value { + " Theta position " +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +h 16 +major 4 +minor 6 +release 0 +w 60 +x 75 +y 125 +autoHeight +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:THETA:POS.TWV" +editable +fgColor index 14 +font "arial-bold-r-14.0" +fontAlign "center" +limitsFromDb +newPos +noExecuteClipMask +nullColor index 30 +objType "controls" +useHexPrefix +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 15 +y 61 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:POS.TWR" +fgColor index 25 +font "arial-bold-r-24.0" +offColor index 3 +offLabel "-" +onColor index 4 +onLabel "-" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Textentry) +object TextentryClass +beginObjectProperties +h 33 +major 10 +minor 0 +release 0 +w 83 +x 63 +y 59 +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:THETA:POS" +displayMode "decimal" +fgColor index 25 +font "arial-bold-r-14.0" +fontAlign "center" +lineWidth -2 +precision 4 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 151 +y 61 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:POS.TWF" +fgColor index 25 +font "arial-bold-r-16.0" +offColor index 3 +offLabel "+" +onColor index 4 +onLabel "+" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +h 13 +major 4 +minor 0 +release 0 +w 43 +x 151 +y 46 +bgColor index 3 +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:POS.SPMG" +fgColor index 25 +font "helvetica-medium-r-8.0" +inconsistentColor index 14 +indicatorPv "BL45P-MO-STAGE-01:THETA:POS.SPMG" +topShadowColor index 1 +endObjectProperties + +# (Textupdate) +object TextupdateClass +beginObjectProperties +h 20 +major 10 +minor 0 +release 0 +w 115 +x 48 +y 97 +bgColor index 10 +controlPv "BL45P-MO-STAGE-01:THETA:POS.RBV" +fgAlarm +fgColor index 15 +fill +font "arial-bold-r-14.0" +fontAlign "center" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 11 +major 4 +minor 0 +release 0 +w 18 +x 131 +y 46 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 0 +w 18 +x 131 +y 46 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:POS:KILL.PROC" +fgColor index 22 +font "helvetica-medium-r-8.0" +offColor index 3 +offLabel "Kill" +onColor index 4 +onLabel "Kill" +pressValue "1" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "1" +visMin "0" +visPv "BL45P-MO-STAGE-01:THETA:POS:KILL" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 96 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 168 +y 96 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "ALoss" +} +endObjectProperties + +endGroup + +visMax "3" +visMin "2" +visPv "CALC\\\{A&2\}(BL45P-MO-STAGE-01:THETA:POS:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 96 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 168 +y 96 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "SFail" +} +endObjectProperties + +endGroup + +visMax "5" +visMin "4" +visPv "CALC\\\{A&4\}(BL45P-MO-STAGE-01:THETA:POS:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 96 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 0 +w 28 +x 168 +y 96 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:POS:ELOSSRC.A" +fgColor index 14 +font "helvetica-medium-r-8.0" +offColor index 20 +offLabel "Eloss" +onColor index 21 +onLabel "ELoss" +pressValue "0" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "2" +visMin "1" +visPv "CALC\\\{A&1\}(BL45P-MO-STAGE-01:THETA:POS:ELOSS)" +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 109 +major 4 +minor 4 +release 0 +w 189 +x 10 +y 160 +bgColor index 0 +botShadowColor index 0 +button3Popup +buttonLabel "HELP" +displayFileName { + 0 "motor-embed-small-tooltip" +} +fgColor index 0 +font "helvetica-medium-r-14.0" +invisible +numDsps 1 +numPvs 4 +setPosition { + 0 "button" +} +symbols { + 0 "box-label=Theta skew,motor=BL45P-MO-STAGE-01:THETA:SKEW" +} +topShadowColor index 0 +xPosOffset -100 +yPosOffset -100 +endObjectProperties + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 104 +major 4 +minor 0 +release 0 +w 189 +x 10 +y 165 +fill +fillColor index 5 +lineColor index 14 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 22 +major 4 +minor 1 +release 0 +w 52 +x 143 +y 243 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:SKEW.STOP" +fgColor index 21 +font "arial-bold-r-14.0" +offColor index 3 +offLabel "STOP" +onColor index 4 +onLabel "STOP" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 18 +y 216 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:THETA:SKEW.SEVR" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 0 4 + 2 2 + 3 3 + 4 1 +} +minValues { + 0 3 + 2 1 + 3 2 +} +numPvs 1 +numStates 5 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 172 +y 216 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:THETA:SKEW.DMOV" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 4 2 + 5 1 +} +minValues { + 4 1 +} +numPvs 1 +numStates 6 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 22 +major 4 +minor 4 +release 0 +w 52 +x 15 +y 243 +bgColor index 3 +botShadowColor index 11 +buttonLabel "More" +displayFileName { + 0 "motor.edl" +} +fgColor index 43 +font "arial-bold-r-14.0" +numDsps 1 +numPvs 4 +symbols { + 0 "motor=BL45P-MO-STAGE-01:THETA:SKEW" +} +topShadowColor index 1 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 1 +w 79 +x 10 +y 160 +autoSize +bgColor index 8 +border +fgColor index 14 +font "arial-medium-r-12.0" +value { + " Theta skew " +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +h 16 +major 4 +minor 6 +release 0 +w 60 +x 75 +y 245 +autoHeight +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:THETA:SKEW.TWV" +editable +fgColor index 14 +font "arial-bold-r-14.0" +fontAlign "center" +limitsFromDb +newPos +noExecuteClipMask +nullColor index 30 +objType "controls" +useHexPrefix +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 15 +y 181 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:SKEW.TWR" +fgColor index 25 +font "arial-bold-r-24.0" +offColor index 3 +offLabel "-" +onColor index 4 +onLabel "-" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Textentry) +object TextentryClass +beginObjectProperties +h 33 +major 10 +minor 0 +release 0 +w 83 +x 63 +y 179 +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:THETA:SKEW" +displayMode "decimal" +fgColor index 25 +font "arial-bold-r-14.0" +fontAlign "center" +lineWidth -2 +precision 4 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 151 +y 181 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:SKEW.TWF" +fgColor index 25 +font "arial-bold-r-16.0" +offColor index 3 +offLabel "+" +onColor index 4 +onLabel "+" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +h 13 +major 4 +minor 0 +release 0 +w 43 +x 151 +y 166 +bgColor index 3 +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:SKEW.SPMG" +fgColor index 25 +font "helvetica-medium-r-8.0" +inconsistentColor index 14 +indicatorPv "BL45P-MO-STAGE-01:THETA:SKEW.SPMG" +topShadowColor index 1 +endObjectProperties + +# (Textupdate) +object TextupdateClass +beginObjectProperties +h 20 +major 10 +minor 0 +release 0 +w 115 +x 48 +y 217 +bgColor index 10 +controlPv "BL45P-MO-STAGE-01:THETA:SKEW.RBV" +fgAlarm +fgColor index 15 +fill +font "arial-bold-r-14.0" +fontAlign "center" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 11 +major 4 +minor 0 +release 0 +w 18 +x 131 +y 166 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 0 +w 18 +x 131 +y 166 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:SKEW:KILL.PROC" +fgColor index 22 +font "helvetica-medium-r-8.0" +offColor index 3 +offLabel "Kill" +onColor index 4 +onLabel "Kill" +pressValue "1" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "1" +visMin "0" +visPv "BL45P-MO-STAGE-01:THETA:SKEW:KILL" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 216 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 168 +y 216 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "ALoss" +} +endObjectProperties + +endGroup + +visMax "3" +visMin "2" +visPv "CALC\\\{A&2\}(BL45P-MO-STAGE-01:THETA:SKEW:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 216 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 168 +y 216 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "SFail" +} +endObjectProperties + +endGroup + +visMax "5" +visMin "4" +visPv "CALC\\\{A&4\}(BL45P-MO-STAGE-01:THETA:SKEW:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 216 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 0 +w 28 +x 168 +y 216 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:SKEW:ELOSSRC.A" +fgColor index 14 +font "helvetica-medium-r-8.0" +offColor index 20 +offLabel "Eloss" +onColor index 21 +onLabel "ELoss" +pressValue "0" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "2" +visMin "1" +visPv "CALC\\\{A&1\}(BL45P-MO-STAGE-01:THETA:SKEW:ELOSS)" +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 109 +major 4 +minor 4 +release 0 +w 189 +x 215 +y 40 +bgColor index 0 +botShadowColor index 0 +button3Popup +buttonLabel "HELP" +displayFileName { + 0 "motor-embed-small-tooltip" +} +fgColor index 0 +font "helvetica-medium-r-14.0" +invisible +numDsps 1 +numPvs 4 +setPosition { + 0 "button" +} +symbols { + 0 "box-label=CS Y,motor=BL45P-MO-STAGE-01:CS:Y" +} +topShadowColor index 0 +xPosOffset -100 +yPosOffset -100 +endObjectProperties + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 104 +major 4 +minor 0 +release 0 +w 189 +x 215 +y 45 +fill +fillColor index 5 +lineColor index 14 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 22 +major 4 +minor 1 +release 0 +w 52 +x 348 +y 123 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:CS:Y.STOP" +fgColor index 21 +font "arial-bold-r-14.0" +offColor index 3 +offLabel "STOP" +onColor index 4 +onLabel "STOP" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 223 +y 96 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:CS:Y.SEVR" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 0 4 + 2 2 + 3 3 + 4 1 +} +minValues { + 0 3 + 2 1 + 3 2 +} +numPvs 1 +numStates 5 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 377 +y 96 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:CS:Y.DMOV" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 4 2 + 5 1 +} +minValues { + 4 1 +} +numPvs 1 +numStates 6 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 22 +major 4 +minor 4 +release 0 +w 52 +x 220 +y 123 +bgColor index 3 +botShadowColor index 11 +buttonLabel "More" +displayFileName { + 0 "motor.edl" +} +fgColor index 43 +font "arial-bold-r-14.0" +numDsps 1 +numPvs 4 +symbols { + 0 "motor=BL45P-MO-STAGE-01:CS:Y" +} +topShadowColor index 1 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 1 +w 79 +x 215 +y 40 +autoSize +bgColor index 8 +border +fgColor index 14 +font "arial-medium-r-12.0" +value { + " CS Y " +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +h 16 +major 4 +minor 6 +release 0 +w 60 +x 280 +y 125 +autoHeight +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:CS:Y.TWV" +editable +fgColor index 14 +font "arial-bold-r-14.0" +fontAlign "center" +limitsFromDb +newPos +noExecuteClipMask +nullColor index 30 +objType "controls" +useHexPrefix +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 220 +y 61 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:CS:Y.TWR" +fgColor index 25 +font "arial-bold-r-24.0" +offColor index 3 +offLabel "-" +onColor index 4 +onLabel "-" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Textentry) +object TextentryClass +beginObjectProperties +h 33 +major 10 +minor 0 +release 0 +w 83 +x 268 +y 59 +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:CS:Y" +displayMode "decimal" +fgColor index 25 +font "arial-bold-r-14.0" +fontAlign "center" +lineWidth -2 +precision 4 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 356 +y 61 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:CS:Y.TWF" +fgColor index 25 +font "arial-bold-r-16.0" +offColor index 3 +offLabel "+" +onColor index 4 +onLabel "+" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +h 13 +major 4 +minor 0 +release 0 +w 43 +x 356 +y 46 +bgColor index 3 +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:CS:Y.SPMG" +fgColor index 25 +font "helvetica-medium-r-8.0" +inconsistentColor index 14 +indicatorPv "BL45P-MO-STAGE-01:CS:Y.SPMG" +topShadowColor index 1 +endObjectProperties + +# (Textupdate) +object TextupdateClass +beginObjectProperties +h 20 +major 10 +minor 0 +release 0 +w 115 +x 253 +y 97 +bgColor index 10 +controlPv "BL45P-MO-STAGE-01:CS:Y.RBV" +fgAlarm +fgColor index 15 +fill +font "arial-bold-r-14.0" +fontAlign "center" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 11 +major 4 +minor 0 +release 0 +w 18 +x 336 +y 46 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 0 +w 18 +x 336 +y 46 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:CS:Y:KILL.PROC" +fgColor index 22 +font "helvetica-medium-r-8.0" +offColor index 3 +offLabel "Kill" +onColor index 4 +onLabel "Kill" +pressValue "1" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "1" +visMin "0" +visPv "BL45P-MO-STAGE-01:CS:Y:KILL" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 373 +y 96 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 373 +y 96 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "ALoss" +} +endObjectProperties + +endGroup + +visMax "3" +visMin "2" +visPv "CALC\\\{A&2\}(BL45P-MO-STAGE-01:CS:Y:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 373 +y 96 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 373 +y 96 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "SFail" +} +endObjectProperties + +endGroup + +visMax "5" +visMin "4" +visPv "CALC\\\{A&4\}(BL45P-MO-STAGE-01:CS:Y:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 373 +y 96 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 0 +w 28 +x 373 +y 96 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:CS:Y:ELOSSRC.A" +fgColor index 14 +font "helvetica-medium-r-8.0" +offColor index 20 +offLabel "Eloss" +onColor index 21 +onLabel "ELoss" +pressValue "0" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "2" +visMin "1" +visPv "CALC\\\{A&1\}(BL45P-MO-STAGE-01:CS:Y:ELOSS)" +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 109 +major 4 +minor 4 +release 0 +w 189 +x 215 +y 160 +bgColor index 0 +botShadowColor index 0 +button3Popup +buttonLabel "HELP" +displayFileName { + 0 "motor-embed-small-tooltip" +} +fgColor index 0 +font "helvetica-medium-r-14.0" +invisible +numDsps 1 +numPvs 4 +setPosition { + 0 "button" +} +symbols { + 0 "box-label=CS Y stretch,motor=BL45P-MO-STAGE-01:CS:Y:STRETCH" +} +topShadowColor index 0 +xPosOffset -100 +yPosOffset -100 +endObjectProperties + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 104 +major 4 +minor 0 +release 0 +w 189 +x 215 +y 165 +fill +fillColor index 5 +lineColor index 14 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 22 +major 4 +minor 1 +release 0 +w 52 +x 348 +y 243 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:CS:Y:STRETCH.STOP" +fgColor index 21 +font "arial-bold-r-14.0" +offColor index 3 +offLabel "STOP" +onColor index 4 +onLabel "STOP" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 223 +y 216 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:CS:Y:STRETCH.SEVR" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 0 4 + 2 2 + 3 3 + 4 1 +} +minValues { + 0 3 + 2 1 + 3 2 +} +numPvs 1 +numStates 5 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 377 +y 216 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:CS:Y:STRETCH.DMOV" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 4 2 + 5 1 +} +minValues { + 4 1 +} +numPvs 1 +numStates 6 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 22 +major 4 +minor 4 +release 0 +w 52 +x 220 +y 243 +bgColor index 3 +botShadowColor index 11 +buttonLabel "More" +displayFileName { + 0 "motor.edl" +} +fgColor index 43 +font "arial-bold-r-14.0" +numDsps 1 +numPvs 4 +symbols { + 0 "motor=BL45P-MO-STAGE-01:CS:Y:STRETCH" +} +topShadowColor index 1 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 1 +w 79 +x 215 +y 160 +autoSize +bgColor index 8 +border +fgColor index 14 +font "arial-medium-r-12.0" +value { + " CS Y stretch " +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +h 16 +major 4 +minor 6 +release 0 +w 60 +x 280 +y 245 +autoHeight +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:CS:Y:STRETCH.TWV" +editable +fgColor index 14 +font "arial-bold-r-14.0" +fontAlign "center" +limitsFromDb +newPos +noExecuteClipMask +nullColor index 30 +objType "controls" +useHexPrefix +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 220 +y 181 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:CS:Y:STRETCH.TWR" +fgColor index 25 +font "arial-bold-r-24.0" +offColor index 3 +offLabel "-" +onColor index 4 +onLabel "-" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Textentry) +object TextentryClass +beginObjectProperties +h 33 +major 10 +minor 0 +release 0 +w 83 +x 268 +y 179 +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:CS:Y:STRETCH" +displayMode "decimal" +fgColor index 25 +font "arial-bold-r-14.0" +fontAlign "center" +lineWidth -2 +precision 4 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 356 +y 181 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:CS:Y:STRETCH.TWF" +fgColor index 25 +font "arial-bold-r-16.0" +offColor index 3 +offLabel "+" +onColor index 4 +onLabel "+" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +h 13 +major 4 +minor 0 +release 0 +w 43 +x 356 +y 166 +bgColor index 3 +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:CS:Y:STRETCH.SPMG" +fgColor index 25 +font "helvetica-medium-r-8.0" +inconsistentColor index 14 +indicatorPv "BL45P-MO-STAGE-01:CS:Y:STRETCH.SPMG" +topShadowColor index 1 +endObjectProperties + +# (Textupdate) +object TextupdateClass +beginObjectProperties +h 20 +major 10 +minor 0 +release 0 +w 115 +x 253 +y 217 +bgColor index 10 +controlPv "BL45P-MO-STAGE-01:CS:Y:STRETCH.RBV" +fgAlarm +fgColor index 15 +fill +font "arial-bold-r-14.0" +fontAlign "center" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 11 +major 4 +minor 0 +release 0 +w 18 +x 336 +y 166 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 0 +w 18 +x 336 +y 166 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:CS:Y:STRETCH:KILL.PROC" +fgColor index 22 +font "helvetica-medium-r-8.0" +offColor index 3 +offLabel "Kill" +onColor index 4 +onLabel "Kill" +pressValue "1" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "1" +visMin "0" +visPv "BL45P-MO-STAGE-01:CS:Y:STRETCH:KILL" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 373 +y 216 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 373 +y 216 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "ALoss" +} +endObjectProperties + +endGroup + +visMax "3" +visMin "2" +visPv "CALC\\\{A&2\}(BL45P-MO-STAGE-01:CS:Y:STRETCH:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 373 +y 216 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 373 +y 216 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "SFail" +} +endObjectProperties + +endGroup + +visMax "5" +visMin "4" +visPv "CALC\\\{A&4\}(BL45P-MO-STAGE-01:CS:Y:STRETCH:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 373 +y 216 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 0 +w 28 +x 373 +y 216 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:CS:Y:STRETCH:ELOSSRC.A" +fgColor index 14 +font "helvetica-medium-r-8.0" +offColor index 20 +offLabel "Eloss" +onColor index 21 +onLabel "ELoss" +pressValue "0" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "2" +visMin "1" +visPv "CALC\\\{A&1\}(BL45P-MO-STAGE-01:CS:Y:STRETCH:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 30 +major 4 +minor 0 +release 0 +w 50 +x 0 +y 0 + + +beginGroup + +# (Circle) +object activeCircleClass +beginObjectProperties +h 29 +major 4 +minor 0 +release 0 +w 48 +x 0 +y 0 +fillColor index 0 +lineColor index 1 +lineWidth 2 +endObjectProperties + +# (Circle) +object activeCircleClass +beginObjectProperties +h 29 +major 4 +minor 0 +release 0 +w 48 +x 2 +y 2 +fillColor index 0 +lineColor index 11 +lineWidth 2 +endObjectProperties + +# (Circle) +object activeCircleClass +beginObjectProperties +h 27 +major 4 +minor 0 +release 0 +w 47 +x 2 +y 2 +fill +fillColor index 48 +lineColor index 49 +lineWidth 3 +endObjectProperties + +# (Circle) +object activeCircleClass +beginObjectProperties +h 3 +major 4 +minor 0 +release 0 +w 4 +x 12 +y 6 +fill +fillColor index 0 +lineColor index 1 +lineWidth 2 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 30 +major 4 +minor 1 +release 0 +w 50 +x 0 +y 0 +bgColor index 3 +fgColor index 14 +font "arial-bold-r-14.0" +fontAlign "center" +useDisplayBg +value { + "STAGE1.CS" +} +endObjectProperties + +endGroup + + +endObjectProperties + +# (Exit Button) +object activeExitButtonClass +beginObjectProperties +h 20 +major 4 +minor 1 +release 0 +w 90 +x 315 +y 280 +3d +bgColor index 3 +botShadowColor index 11 +fgColor index 46 +font "arial-medium-r-16.0" +label "EXIT" +topShadowColor index 1 +endObjectProperties diff --git a/edm/bl45p-mo-ioc-01/STAGE1.edl b/edm/bl45p-mo-ioc-01/STAGE1.edl new file mode 100755 index 0000000..9de56ff --- /dev/null +++ b/edm/bl45p-mo-ioc-01/STAGE1.edl @@ -0,0 +1,2841 @@ +4 0 1 +beginScreenProperties +h 400 +major 4 +minor 0 +release 1 +w 415 +x 0 +y 0 +bgColor index 3 +botShadowColor index 11 +btnFont "arial-bold-r-14.0" +ctlBgColor1 index 3 +ctlBgColor2 index 14 +ctlFgColor1 index 25 +ctlFgColor2 index 0 +ctlFont "arial-bold-r-14.0" +fgColor index 14 +font "arial-medium-r-14.0" +showGrid +snapToGrid +textColor index 14 +title "Device - STAGE1" +topShadowColor index 1 +endScreenProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 30 +major 4 +minor 0 +release 0 +w 415 +x 0 +y 0 + + +beginGroup + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 25 +major 4 +minor 0 +release 0 +w 413 +x 0 +y 2 +fillColor index 0 +lineColor index 1 +endObjectProperties + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 25 +major 4 +minor 0 +release 0 +w 413 +x 1 +y 3 +fillColor index 0 +lineColor index 11 +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 24 +major 4 +minor 2 +release 0 +w 413 +x 1 +y 3 +bgColor index 3 +botShadowColor index 0 +button3Popup +buttonLabel "tooltip" +displayFileName { + 0 "generic-tooltip" +} +fgColor index 14 +font "arial-bold-r-14.0" +invisible +numDsps 1 +numPvs 4 +setPosition { + 0 "button" +} +topShadowColor index 0 +xPosOffset 5 +yPosOffset 5 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 25 +major 4 +minor 1 +release 0 +w 455 +x 1 +y 3 +bgColor index 48 +fgColor index 14 +font "arial-bold-r-16.0" +fontAlign "center" +value { + "STAGE1 Top" +} +endObjectProperties + +endGroup + + +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 109 +major 4 +minor 4 +release 0 +w 189 +x 10 +y 40 +bgColor index 0 +botShadowColor index 0 +button3Popup +buttonLabel "HELP" +displayFileName { + 0 "motor-embed-small-tooltip" +} +fgColor index 0 +font "helvetica-medium-r-14.0" +invisible +numDsps 1 +numPvs 4 +setPosition { + 0 "button" +} +symbols { + 0 "box-label=Theta top,motor=BL45P-MO-STAGE-01:THETA:TOP" +} +topShadowColor index 0 +xPosOffset -100 +yPosOffset -100 +endObjectProperties + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 104 +major 4 +minor 0 +release 0 +w 189 +x 10 +y 45 +fill +fillColor index 5 +lineColor index 14 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 22 +major 4 +minor 1 +release 0 +w 52 +x 143 +y 123 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:TOP.STOP" +fgColor index 21 +font "arial-bold-r-14.0" +offColor index 3 +offLabel "STOP" +onColor index 4 +onLabel "STOP" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 18 +y 96 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:THETA:TOP.SEVR" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 0 4 + 2 2 + 3 3 + 4 1 +} +minValues { + 0 3 + 2 1 + 3 2 +} +numPvs 1 +numStates 5 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 172 +y 96 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:THETA:TOP.DMOV" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 4 2 + 5 1 +} +minValues { + 4 1 +} +numPvs 1 +numStates 6 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 22 +major 4 +minor 4 +release 0 +w 52 +x 15 +y 123 +bgColor index 3 +botShadowColor index 11 +buttonLabel "More" +displayFileName { + 0 "motor.edl" +} +fgColor index 43 +font "arial-bold-r-14.0" +numDsps 1 +numPvs 4 +symbols { + 0 "motor=BL45P-MO-STAGE-01:THETA:TOP" +} +topShadowColor index 1 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 1 +w 79 +x 10 +y 40 +autoSize +bgColor index 8 +border +fgColor index 14 +font "arial-medium-r-12.0" +value { + " Theta top " +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +h 16 +major 4 +minor 6 +release 0 +w 60 +x 75 +y 125 +autoHeight +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:THETA:TOP.TWV" +editable +fgColor index 14 +font "arial-bold-r-14.0" +fontAlign "center" +limitsFromDb +newPos +noExecuteClipMask +nullColor index 30 +objType "controls" +useHexPrefix +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 15 +y 61 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:TOP.TWR" +fgColor index 25 +font "arial-bold-r-24.0" +offColor index 3 +offLabel "-" +onColor index 4 +onLabel "-" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Textentry) +object TextentryClass +beginObjectProperties +h 33 +major 10 +minor 0 +release 0 +w 83 +x 63 +y 59 +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:THETA:TOP" +displayMode "decimal" +fgColor index 25 +font "arial-bold-r-14.0" +fontAlign "center" +lineWidth -2 +precision 4 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 151 +y 61 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:TOP.TWF" +fgColor index 25 +font "arial-bold-r-16.0" +offColor index 3 +offLabel "+" +onColor index 4 +onLabel "+" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +h 13 +major 4 +minor 0 +release 0 +w 43 +x 151 +y 46 +bgColor index 3 +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:TOP.SPMG" +fgColor index 25 +font "helvetica-medium-r-8.0" +inconsistentColor index 14 +indicatorPv "BL45P-MO-STAGE-01:THETA:TOP.SPMG" +topShadowColor index 1 +endObjectProperties + +# (Textupdate) +object TextupdateClass +beginObjectProperties +h 20 +major 10 +minor 0 +release 0 +w 115 +x 48 +y 97 +bgColor index 10 +controlPv "BL45P-MO-STAGE-01:THETA:TOP.RBV" +fgAlarm +fgColor index 15 +fill +font "arial-bold-r-14.0" +fontAlign "center" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 11 +major 4 +minor 0 +release 0 +w 18 +x 131 +y 46 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 0 +w 18 +x 131 +y 46 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:TOP:KILL.PROC" +fgColor index 22 +font "helvetica-medium-r-8.0" +offColor index 3 +offLabel "Kill" +onColor index 4 +onLabel "Kill" +pressValue "1" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "1" +visMin "0" +visPv "BL45P-MO-STAGE-01:THETA:TOP:KILL" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 96 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 168 +y 96 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "ALoss" +} +endObjectProperties + +endGroup + +visMax "3" +visMin "2" +visPv "CALC\\\{A&2\}(BL45P-MO-STAGE-01:THETA:TOP:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 96 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 168 +y 96 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "SFail" +} +endObjectProperties + +endGroup + +visMax "5" +visMin "4" +visPv "CALC\\\{A&4\}(BL45P-MO-STAGE-01:THETA:TOP:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 96 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 0 +w 28 +x 168 +y 96 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:TOP:ELOSSRC.A" +fgColor index 14 +font "helvetica-medium-r-8.0" +offColor index 20 +offLabel "Eloss" +onColor index 21 +onLabel "ELoss" +pressValue "0" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "2" +visMin "1" +visPv "CALC\\\{A&1\}(BL45P-MO-STAGE-01:THETA:TOP:ELOSS)" +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 109 +major 4 +minor 4 +release 0 +w 189 +x 10 +y 160 +bgColor index 0 +botShadowColor index 0 +button3Popup +buttonLabel "HELP" +displayFileName { + 0 "motor-embed-small-tooltip" +} +fgColor index 0 +font "helvetica-medium-r-14.0" +invisible +numDsps 1 +numPvs 4 +setPosition { + 0 "button" +} +symbols { + 0 "box-label=Theta bottom,motor=BL45P-MO-STAGE-01:THETA:BOT" +} +topShadowColor index 0 +xPosOffset -100 +yPosOffset -100 +endObjectProperties + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 104 +major 4 +minor 0 +release 0 +w 189 +x 10 +y 165 +fill +fillColor index 5 +lineColor index 14 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 22 +major 4 +minor 1 +release 0 +w 52 +x 143 +y 243 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:BOT.STOP" +fgColor index 21 +font "arial-bold-r-14.0" +offColor index 3 +offLabel "STOP" +onColor index 4 +onLabel "STOP" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 18 +y 216 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:THETA:BOT.SEVR" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 0 4 + 2 2 + 3 3 + 4 1 +} +minValues { + 0 3 + 2 1 + 3 2 +} +numPvs 1 +numStates 5 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 172 +y 216 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:THETA:BOT.DMOV" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 4 2 + 5 1 +} +minValues { + 4 1 +} +numPvs 1 +numStates 6 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 22 +major 4 +minor 4 +release 0 +w 52 +x 15 +y 243 +bgColor index 3 +botShadowColor index 11 +buttonLabel "More" +displayFileName { + 0 "motor.edl" +} +fgColor index 43 +font "arial-bold-r-14.0" +numDsps 1 +numPvs 4 +symbols { + 0 "motor=BL45P-MO-STAGE-01:THETA:BOT" +} +topShadowColor index 1 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 1 +w 79 +x 10 +y 160 +autoSize +bgColor index 8 +border +fgColor index 14 +font "arial-medium-r-12.0" +value { + " Theta bottom " +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +h 16 +major 4 +minor 6 +release 0 +w 60 +x 75 +y 245 +autoHeight +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:THETA:BOT.TWV" +editable +fgColor index 14 +font "arial-bold-r-14.0" +fontAlign "center" +limitsFromDb +newPos +noExecuteClipMask +nullColor index 30 +objType "controls" +useHexPrefix +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 15 +y 181 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:BOT.TWR" +fgColor index 25 +font "arial-bold-r-24.0" +offColor index 3 +offLabel "-" +onColor index 4 +onLabel "-" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Textentry) +object TextentryClass +beginObjectProperties +h 33 +major 10 +minor 0 +release 0 +w 83 +x 63 +y 179 +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:THETA:BOT" +displayMode "decimal" +fgColor index 25 +font "arial-bold-r-14.0" +fontAlign "center" +lineWidth -2 +precision 4 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 151 +y 181 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:BOT.TWF" +fgColor index 25 +font "arial-bold-r-16.0" +offColor index 3 +offLabel "+" +onColor index 4 +onLabel "+" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +h 13 +major 4 +minor 0 +release 0 +w 43 +x 151 +y 166 +bgColor index 3 +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:BOT.SPMG" +fgColor index 25 +font "helvetica-medium-r-8.0" +inconsistentColor index 14 +indicatorPv "BL45P-MO-STAGE-01:THETA:BOT.SPMG" +topShadowColor index 1 +endObjectProperties + +# (Textupdate) +object TextupdateClass +beginObjectProperties +h 20 +major 10 +minor 0 +release 0 +w 115 +x 48 +y 217 +bgColor index 10 +controlPv "BL45P-MO-STAGE-01:THETA:BOT.RBV" +fgAlarm +fgColor index 15 +fill +font "arial-bold-r-14.0" +fontAlign "center" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 11 +major 4 +minor 0 +release 0 +w 18 +x 131 +y 166 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 0 +w 18 +x 131 +y 166 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:BOT:KILL.PROC" +fgColor index 22 +font "helvetica-medium-r-8.0" +offColor index 3 +offLabel "Kill" +onColor index 4 +onLabel "Kill" +pressValue "1" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "1" +visMin "0" +visPv "BL45P-MO-STAGE-01:THETA:BOT:KILL" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 216 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 168 +y 216 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "ALoss" +} +endObjectProperties + +endGroup + +visMax "3" +visMin "2" +visPv "CALC\\\{A&2\}(BL45P-MO-STAGE-01:THETA:BOT:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 216 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 168 +y 216 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "SFail" +} +endObjectProperties + +endGroup + +visMax "5" +visMin "4" +visPv "CALC\\\{A&4\}(BL45P-MO-STAGE-01:THETA:BOT:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 216 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 0 +w 28 +x 168 +y 216 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:THETA:BOT:ELOSSRC.A" +fgColor index 14 +font "helvetica-medium-r-8.0" +offColor index 20 +offLabel "Eloss" +onColor index 21 +onLabel "ELoss" +pressValue "0" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "2" +visMin "1" +visPv "CALC\\\{A&1\}(BL45P-MO-STAGE-01:THETA:BOT:ELOSS)" +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 109 +major 4 +minor 4 +release 0 +w 189 +x 10 +y 280 +bgColor index 0 +botShadowColor index 0 +button3Popup +buttonLabel "HELP" +displayFileName { + 0 "motor-embed-small-tooltip" +} +fgColor index 0 +font "helvetica-medium-r-14.0" +invisible +numDsps 1 +numPvs 4 +setPosition { + 0 "button" +} +symbols { + 0 "box-label=Sample X,motor=BL45P-MO-STAGE-01:X" +} +topShadowColor index 0 +xPosOffset -100 +yPosOffset -100 +endObjectProperties + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 104 +major 4 +minor 0 +release 0 +w 189 +x 10 +y 285 +fill +fillColor index 5 +lineColor index 14 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 22 +major 4 +minor 1 +release 0 +w 52 +x 143 +y 363 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:X.STOP" +fgColor index 21 +font "arial-bold-r-14.0" +offColor index 3 +offLabel "STOP" +onColor index 4 +onLabel "STOP" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 18 +y 336 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:X.SEVR" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 0 4 + 2 2 + 3 3 + 4 1 +} +minValues { + 0 3 + 2 1 + 3 2 +} +numPvs 1 +numStates 5 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 172 +y 336 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:X.DMOV" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 4 2 + 5 1 +} +minValues { + 4 1 +} +numPvs 1 +numStates 6 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 22 +major 4 +minor 4 +release 0 +w 52 +x 15 +y 363 +bgColor index 3 +botShadowColor index 11 +buttonLabel "More" +displayFileName { + 0 "motor.edl" +} +fgColor index 43 +font "arial-bold-r-14.0" +numDsps 1 +numPvs 4 +symbols { + 0 "motor=BL45P-MO-STAGE-01:X" +} +topShadowColor index 1 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 1 +w 79 +x 10 +y 280 +autoSize +bgColor index 8 +border +fgColor index 14 +font "arial-medium-r-12.0" +value { + " Sample X " +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +h 16 +major 4 +minor 6 +release 0 +w 60 +x 75 +y 365 +autoHeight +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:X.TWV" +editable +fgColor index 14 +font "arial-bold-r-14.0" +fontAlign "center" +limitsFromDb +newPos +noExecuteClipMask +nullColor index 30 +objType "controls" +useHexPrefix +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 15 +y 301 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:X.TWR" +fgColor index 25 +font "arial-bold-r-24.0" +offColor index 3 +offLabel "-" +onColor index 4 +onLabel "-" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Textentry) +object TextentryClass +beginObjectProperties +h 33 +major 10 +minor 0 +release 0 +w 83 +x 63 +y 299 +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:X" +displayMode "decimal" +fgColor index 25 +font "arial-bold-r-14.0" +fontAlign "center" +lineWidth -2 +precision 4 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 151 +y 301 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:X.TWF" +fgColor index 25 +font "arial-bold-r-16.0" +offColor index 3 +offLabel "+" +onColor index 4 +onLabel "+" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +h 13 +major 4 +minor 0 +release 0 +w 43 +x 151 +y 286 +bgColor index 3 +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:X.SPMG" +fgColor index 25 +font "helvetica-medium-r-8.0" +inconsistentColor index 14 +indicatorPv "BL45P-MO-STAGE-01:X.SPMG" +topShadowColor index 1 +endObjectProperties + +# (Textupdate) +object TextupdateClass +beginObjectProperties +h 20 +major 10 +minor 0 +release 0 +w 115 +x 48 +y 337 +bgColor index 10 +controlPv "BL45P-MO-STAGE-01:X.RBV" +fgAlarm +fgColor index 15 +fill +font "arial-bold-r-14.0" +fontAlign "center" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 11 +major 4 +minor 0 +release 0 +w 18 +x 131 +y 286 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 0 +w 18 +x 131 +y 286 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:X:KILL.PROC" +fgColor index 22 +font "helvetica-medium-r-8.0" +offColor index 3 +offLabel "Kill" +onColor index 4 +onLabel "Kill" +pressValue "1" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "1" +visMin "0" +visPv "BL45P-MO-STAGE-01:X:KILL" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 336 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 168 +y 336 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "ALoss" +} +endObjectProperties + +endGroup + +visMax "3" +visMin "2" +visPv "CALC\\\{A&2\}(BL45P-MO-STAGE-01:X:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 336 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 168 +y 336 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "SFail" +} +endObjectProperties + +endGroup + +visMax "5" +visMin "4" +visPv "CALC\\\{A&4\}(BL45P-MO-STAGE-01:X:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 168 +y 336 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 0 +w 28 +x 168 +y 336 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:X:ELOSSRC.A" +fgColor index 14 +font "helvetica-medium-r-8.0" +offColor index 20 +offLabel "Eloss" +onColor index 21 +onLabel "ELoss" +pressValue "0" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "2" +visMin "1" +visPv "CALC\\\{A&1\}(BL45P-MO-STAGE-01:X:ELOSS)" +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 109 +major 4 +minor 4 +release 0 +w 189 +x 215 +y 40 +bgColor index 0 +botShadowColor index 0 +button3Popup +buttonLabel "HELP" +displayFileName { + 0 "motor-embed-small-tooltip" +} +fgColor index 0 +font "helvetica-medium-r-14.0" +invisible +numDsps 1 +numPvs 4 +setPosition { + 0 "button" +} +symbols { + 0 "box-label=Sample Y top,motor=BL45P-MO-STAGE-01:Y:TOP" +} +topShadowColor index 0 +xPosOffset -100 +yPosOffset -100 +endObjectProperties + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 104 +major 4 +minor 0 +release 0 +w 189 +x 215 +y 45 +fill +fillColor index 5 +lineColor index 14 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 22 +major 4 +minor 1 +release 0 +w 52 +x 348 +y 123 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:Y:TOP.STOP" +fgColor index 21 +font "arial-bold-r-14.0" +offColor index 3 +offLabel "STOP" +onColor index 4 +onLabel "STOP" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 223 +y 96 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:Y:TOP.SEVR" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 0 4 + 2 2 + 3 3 + 4 1 +} +minValues { + 0 3 + 2 1 + 3 2 +} +numPvs 1 +numStates 5 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 377 +y 96 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:Y:TOP.DMOV" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 4 2 + 5 1 +} +minValues { + 4 1 +} +numPvs 1 +numStates 6 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 22 +major 4 +minor 4 +release 0 +w 52 +x 220 +y 123 +bgColor index 3 +botShadowColor index 11 +buttonLabel "More" +displayFileName { + 0 "motor.edl" +} +fgColor index 43 +font "arial-bold-r-14.0" +numDsps 1 +numPvs 4 +symbols { + 0 "motor=BL45P-MO-STAGE-01:Y:TOP" +} +topShadowColor index 1 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 1 +w 79 +x 215 +y 40 +autoSize +bgColor index 8 +border +fgColor index 14 +font "arial-medium-r-12.0" +value { + " Sample Y top " +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +h 16 +major 4 +minor 6 +release 0 +w 60 +x 280 +y 125 +autoHeight +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:Y:TOP.TWV" +editable +fgColor index 14 +font "arial-bold-r-14.0" +fontAlign "center" +limitsFromDb +newPos +noExecuteClipMask +nullColor index 30 +objType "controls" +useHexPrefix +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 220 +y 61 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:Y:TOP.TWR" +fgColor index 25 +font "arial-bold-r-24.0" +offColor index 3 +offLabel "-" +onColor index 4 +onLabel "-" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Textentry) +object TextentryClass +beginObjectProperties +h 33 +major 10 +minor 0 +release 0 +w 83 +x 268 +y 59 +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:Y:TOP" +displayMode "decimal" +fgColor index 25 +font "arial-bold-r-14.0" +fontAlign "center" +lineWidth -2 +precision 4 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 356 +y 61 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:Y:TOP.TWF" +fgColor index 25 +font "arial-bold-r-16.0" +offColor index 3 +offLabel "+" +onColor index 4 +onLabel "+" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +h 13 +major 4 +minor 0 +release 0 +w 43 +x 356 +y 46 +bgColor index 3 +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:Y:TOP.SPMG" +fgColor index 25 +font "helvetica-medium-r-8.0" +inconsistentColor index 14 +indicatorPv "BL45P-MO-STAGE-01:Y:TOP.SPMG" +topShadowColor index 1 +endObjectProperties + +# (Textupdate) +object TextupdateClass +beginObjectProperties +h 20 +major 10 +minor 0 +release 0 +w 115 +x 253 +y 97 +bgColor index 10 +controlPv "BL45P-MO-STAGE-01:Y:TOP.RBV" +fgAlarm +fgColor index 15 +fill +font "arial-bold-r-14.0" +fontAlign "center" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 11 +major 4 +minor 0 +release 0 +w 18 +x 336 +y 46 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 0 +w 18 +x 336 +y 46 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:Y:TOP:KILL.PROC" +fgColor index 22 +font "helvetica-medium-r-8.0" +offColor index 3 +offLabel "Kill" +onColor index 4 +onLabel "Kill" +pressValue "1" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "1" +visMin "0" +visPv "BL45P-MO-STAGE-01:Y:TOP:KILL" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 373 +y 96 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 373 +y 96 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "ALoss" +} +endObjectProperties + +endGroup + +visMax "3" +visMin "2" +visPv "CALC\\\{A&2\}(BL45P-MO-STAGE-01:Y:TOP:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 373 +y 96 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 373 +y 96 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "SFail" +} +endObjectProperties + +endGroup + +visMax "5" +visMin "4" +visPv "CALC\\\{A&4\}(BL45P-MO-STAGE-01:Y:TOP:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 373 +y 96 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 0 +w 28 +x 373 +y 96 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:Y:TOP:ELOSSRC.A" +fgColor index 14 +font "helvetica-medium-r-8.0" +offColor index 20 +offLabel "Eloss" +onColor index 21 +onLabel "ELoss" +pressValue "0" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "2" +visMin "1" +visPv "CALC\\\{A&1\}(BL45P-MO-STAGE-01:Y:TOP:ELOSS)" +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 109 +major 4 +minor 4 +release 0 +w 189 +x 215 +y 160 +bgColor index 0 +botShadowColor index 0 +button3Popup +buttonLabel "HELP" +displayFileName { + 0 "motor-embed-small-tooltip" +} +fgColor index 0 +font "helvetica-medium-r-14.0" +invisible +numDsps 1 +numPvs 4 +setPosition { + 0 "button" +} +symbols { + 0 "box-label=Sample Y bottom,motor=BL45P-MO-STAGE-01:Y:BOT" +} +topShadowColor index 0 +xPosOffset -100 +yPosOffset -100 +endObjectProperties + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +h 104 +major 4 +minor 0 +release 0 +w 189 +x 215 +y 165 +fill +fillColor index 5 +lineColor index 14 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 22 +major 4 +minor 1 +release 0 +w 52 +x 348 +y 243 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:Y:BOT.STOP" +fgColor index 21 +font "arial-bold-r-14.0" +offColor index 3 +offLabel "STOP" +onColor index 4 +onLabel "STOP" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 223 +y 216 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:Y:BOT.SEVR" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 0 4 + 2 2 + 3 3 + 4 1 +} +minValues { + 0 3 + 2 1 + 3 2 +} +numPvs 1 +numStates 5 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Symbol) +object activeSymbolClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 20 +x 377 +y 216 +bgColor index 3 +controlPvs { + 0 "BL45P-MO-STAGE-01:Y:BOT.DMOV" +} +fgColor index 14 +file "symbols-traffic-light-symbol.edl" +maxValues { + 4 2 + 5 1 +} +minValues { + 4 1 +} +numPvs 1 +numStates 6 +useOriginalColors +useOriginalSize +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 22 +major 4 +minor 4 +release 0 +w 52 +x 220 +y 243 +bgColor index 3 +botShadowColor index 11 +buttonLabel "More" +displayFileName { + 0 "motor.edl" +} +fgColor index 43 +font "arial-bold-r-14.0" +numDsps 1 +numPvs 4 +symbols { + 0 "motor=BL45P-MO-STAGE-01:Y:BOT" +} +topShadowColor index 1 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 1 +w 79 +x 215 +y 160 +autoSize +bgColor index 8 +border +fgColor index 14 +font "arial-medium-r-12.0" +value { + " Sample Y bottom " +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +h 16 +major 4 +minor 6 +release 0 +w 60 +x 280 +y 245 +autoHeight +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:Y:BOT.TWV" +editable +fgColor index 14 +font "arial-bold-r-14.0" +fontAlign "center" +limitsFromDb +newPos +noExecuteClipMask +nullColor index 30 +objType "controls" +useHexPrefix +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 220 +y 181 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:Y:BOT.TWR" +fgColor index 25 +font "arial-bold-r-24.0" +offColor index 3 +offLabel "-" +onColor index 4 +onLabel "-" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Textentry) +object TextentryClass +beginObjectProperties +h 33 +major 10 +minor 0 +release 0 +w 83 +x 268 +y 179 +bgColor index 3 +controlPv "BL45P-MO-STAGE-01:Y:BOT" +displayMode "decimal" +fgColor index 25 +font "arial-bold-r-14.0" +fontAlign "center" +lineWidth -2 +precision 4 +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 29 +major 4 +minor 1 +release 0 +w 43 +x 356 +y 181 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:Y:BOT.TWF" +fgColor index 25 +font "arial-bold-r-16.0" +offColor index 3 +offLabel "+" +onColor index 4 +onLabel "+" +pressValue "1" +topShadowColor index 1 +visMax "1" +visMin "0" +endObjectProperties + +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +h 13 +major 4 +minor 0 +release 0 +w 43 +x 356 +y 166 +bgColor index 3 +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:Y:BOT.SPMG" +fgColor index 25 +font "helvetica-medium-r-8.0" +inconsistentColor index 14 +indicatorPv "BL45P-MO-STAGE-01:Y:BOT.SPMG" +topShadowColor index 1 +endObjectProperties + +# (Textupdate) +object TextupdateClass +beginObjectProperties +h 20 +major 10 +minor 0 +release 0 +w 115 +x 253 +y 217 +bgColor index 10 +controlPv "BL45P-MO-STAGE-01:Y:BOT.RBV" +fgAlarm +fgColor index 15 +fill +font "arial-bold-r-14.0" +fontAlign "center" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 11 +major 4 +minor 0 +release 0 +w 18 +x 336 +y 166 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 13 +major 4 +minor 1 +release 0 +w 18 +x 336 +y 166 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:Y:BOT:KILL.PROC" +fgColor index 22 +font "helvetica-medium-r-8.0" +offColor index 3 +offLabel "Kill" +onColor index 4 +onLabel "Kill" +pressValue "1" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "1" +visMin "0" +visPv "BL45P-MO-STAGE-01:Y:BOT:KILL" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 373 +y 216 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 373 +y 216 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "ALoss" +} +endObjectProperties + +endGroup + +visMax "3" +visMin "2" +visPv "CALC\\\{A&2\}(BL45P-MO-STAGE-01:Y:BOT:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 373 +y 216 + + +beginGroup + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 1 +w 28 +x 373 +y 216 +bgColor index 21 +fgColor index 14 +font "helvetica-medium-r-10.0" +fontAlign "center" +value { + "SFail" +} +endObjectProperties + +endGroup + +visMax "5" +visMin "4" +visPv "CALC\\\{A&4\}(BL45P-MO-STAGE-01:Y:BOT:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 21 +major 4 +minor 0 +release 0 +w 28 +x 373 +y 216 + + +beginGroup + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +h 21 +major 4 +minor 1 +release 0 +w 28 +x 373 +y 216 +3d +botShadowColor index 11 +controlPv "BL45P-MO-STAGE-01:Y:BOT:ELOSSRC.A" +fgColor index 14 +font "helvetica-medium-r-8.0" +offColor index 20 +offLabel "Eloss" +onColor index 21 +onLabel "ELoss" +pressValue "0" +topShadowColor index 1 +endObjectProperties + +endGroup + +visMax "2" +visMin "1" +visPv "CALC\\\{A&1\}(BL45P-MO-STAGE-01:Y:BOT:ELOSS)" +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 90 +x 215 +y 280 + + +beginGroup + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 20 +major 4 +minor 2 +release 0 +w 90 +x 215 +y 280 +bgColor index 3 +botShadowColor index 11 +buttonLabel "" +displayFileName { + 0 "autohome.edl" +} +fgColor index 43 +font "arial-bold-r-14.0" +numDsps 1 +numPvs 4 +symbols { + 0 "P=BL45P-MO-STAGE-01" +} +topShadowColor index 1 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 16 +major 4 +minor 1 +release 0 +w 86 +x 217 +y 282 +alarmPv "LOC\\dummy0=i:0" +bgAlarm +bgColor index 3 +fgColor index 43 +font "arial-bold-r-14.0" +fontAlign "center" +value { + "HOME" +} +visInvert +visMax "2" +visMin "1" +visPv "LOC\\dummy0=i:0" +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 16 +major 4 +minor 1 +release 0 +w 86 +x 217 +y 282 +alarmPv "LOC\\dummy0=i:0" +bgAlarm +bgColor index 16 +fgColor index 43 +font "arial-bold-r-14.0" +fontAlign "center" +value { + "HOME" +} +visMax "2" +visMin "1" +visPv "LOC\\dummy0=i:0" +endObjectProperties + +endGroup + + +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 20 +major 4 +minor 0 +release 0 +w 90 +x 215 +y 310 + + +beginGroup + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +h 20 +major 4 +minor 2 +release 0 +w 90 +x 215 +y 310 +bgColor index 3 +botShadowColor index 11 +buttonLabel "" +displayFileName { + 0 "STAGE1.CS.edl" +} +fgColor index 43 +font "arial-bold-r-14.0" +numDsps 1 +numPvs 4 +topShadowColor index 1 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 16 +major 4 +minor 1 +release 0 +w 86 +x 217 +y 312 +alarmPv "LOC\\dummy0=i:0" +bgAlarm +bgColor index 3 +fgColor index 43 +font "arial-bold-r-14.0" +fontAlign "center" +value { + "CS" +} +visInvert +visMax "2" +visMin "1" +visPv "LOC\\dummy0=i:0" +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 16 +major 4 +minor 1 +release 0 +w 86 +x 217 +y 312 +alarmPv "LOC\\dummy0=i:0" +bgAlarm +bgColor index 16 +fgColor index 43 +font "arial-bold-r-14.0" +fontAlign "center" +value { + "CS" +} +visMax "2" +visMin "1" +visPv "LOC\\dummy0=i:0" +endObjectProperties + +endGroup + + +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +h 30 +major 4 +minor 0 +release 0 +w 50 +x 0 +y 0 + + +beginGroup + +# (Circle) +object activeCircleClass +beginObjectProperties +h 29 +major 4 +minor 0 +release 0 +w 48 +x 0 +y 0 +fillColor index 0 +lineColor index 1 +lineWidth 2 +endObjectProperties + +# (Circle) +object activeCircleClass +beginObjectProperties +h 29 +major 4 +minor 0 +release 0 +w 48 +x 2 +y 2 +fillColor index 0 +lineColor index 11 +lineWidth 2 +endObjectProperties + +# (Circle) +object activeCircleClass +beginObjectProperties +h 27 +major 4 +minor 0 +release 0 +w 47 +x 2 +y 2 +fill +fillColor index 48 +lineColor index 49 +lineWidth 3 +endObjectProperties + +# (Circle) +object activeCircleClass +beginObjectProperties +h 3 +major 4 +minor 0 +release 0 +w 4 +x 12 +y 6 +fill +fillColor index 0 +lineColor index 1 +lineWidth 2 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +h 30 +major 4 +minor 1 +release 0 +w 50 +x 0 +y 0 +bgColor index 3 +fgColor index 14 +font "arial-bold-r-14.0" +fontAlign "center" +useDisplayBg +value { + "STAGE1" +} +endObjectProperties + +endGroup + + +endObjectProperties + +# (Exit Button) +object activeExitButtonClass +beginObjectProperties +h 20 +major 4 +minor 1 +release 0 +w 90 +x 315 +y 370 +3d +bgColor index 3 +botShadowColor index 11 +fgColor index 46 +font "arial-medium-r-16.0" +label "EXIT" +topShadowColor index 1 +endObjectProperties From 330a069be492ee4bb54c39a5d3d63b0977512deb Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Thu, 9 Jun 2022 17:13:23 +0000 Subject: [PATCH 12/16] add CS axes to mo01 --- bl45p-mo-ioc-01.yaml | 47 +++++++++++++++++++++++++++-- ibek/pmac.ibek.defs.yaml | 4 +-- ibek/pmac.ibek.entities.schema.json | 8 ++--- 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/bl45p-mo-ioc-01.yaml b/bl45p-mo-ioc-01.yaml index 28b588f..fbfd2bc 100644 --- a/bl45p-mo-ioc-01.yaml +++ b/bl45p-mo-ioc-01.yaml @@ -169,11 +169,52 @@ entities: PREC: 3 TWV: 5 - # - type: pmac.DlsCsPmacAsynMotor + - type: pmac.DlsCsPmacAsynMotor + name: STAGE1.CS.THETA_SKEW + CsController: BRICK1.CS2 + axis: 8 + P: BL45P-MO-STAGE-01 + M: :THETA:SKEW + ACCL: 0.1 + DESC: Theta skew + DHLM: 360 + DLLM: -360 + EGU: deg + MRES: 0.0001 + PREC: 3 + TWV: 5 + VELO: 10 + - # - type: pmac.DlsCsPmacAsynMotor + - type: pmac.DlsCsPmacAsynMotor + name: STAGE1.CS.Y + CsController: BRICK1.CS3 + axis: 7 + P: BL45P-MO-STAGE-01 + M: :CS:Y + DESC: CS Y + DHLM: 4 + DLLM: -1 + EGU: mm + MRES: 0.0001 + PREC: 3 + TWV: 0.5 + VELO: 5 - # - type: pmac.DlsCsPmacAsynMotor + - type: pmac.DlsCsPmacAsynMotor + name: STAGE1.CS.Y_STRETCH + CsController: BRICK1.CS3 + axis: 8 + P: BL45P-MO-STAGE-01 + M: :CS:Y:STRETCH + DESC: CS Y stretch + DHLM: 2 + DLLM: -2 + EGU: mm + MRES: 0.0001 + PREC: 3 + TWV: 0.5 + VELO: 5 - type: pmac.pmacDisableLimitsCheck Controller: BRICK1 diff --git a/ibek/pmac.ibek.defs.yaml b/ibek/pmac.ibek.defs.yaml index 397b78f..00574da 100644 --- a/ibek/pmac.ibek.defs.yaml +++ b/ibek/pmac.ibek.defs.yaml @@ -152,7 +152,7 @@ defs: description: Engineering Units default: mm - - type: int + - type: float name: TWV description: Tweak Step Size (EGU) default: 1 @@ -459,7 +459,7 @@ defs: description: Engineering Units default: mm - - type: int + - type: float name: TWV description: Tweak Step Size (EGU) default: 1 diff --git a/ibek/pmac.ibek.entities.schema.json b/ibek/pmac.ibek.entities.schema.json index bf71311..3a1d5f4 100644 --- a/ibek/pmac.ibek.entities.schema.json +++ b/ibek/pmac.ibek.entities.schema.json @@ -419,9 +419,9 @@ "default": "mm" }, "TWV": { - "type": "integer", + "type": "number", "description": "Tweak Step Size (EGU)", - "default": 1 + "default": 1.0 }, "DTYP": { "type": "string", @@ -685,9 +685,9 @@ "default": "mm" }, "TWV": { - "type": "integer", + "type": "number", "description": "Tweak Step Size (EGU)", - "default": 1 + "default": 1.0 }, "DTYP": { "type": "string", From d90ae06af67dd2df07060fa23605e2fcde5bbb0b Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Thu, 9 Jun 2022 17:25:00 +0000 Subject: [PATCH 13/16] make edm launcher work on RHEL8 --- edm/bl45p-launcher.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/edm/bl45p-launcher.sh b/edm/bl45p-launcher.sh index f81ff31..6b0b99f 100755 --- a/edm/bl45p-launcher.sh +++ b/edm/bl45p-launcher.sh @@ -9,15 +9,15 @@ thisdir=$(realpath $(dirname ${BASH_SOURCE[0]})) # use addresses for all nodes in the p45 beamline instead export EPICS_CA_ADDR_LIST="172.23.59.101 172.23.59.1 172.23.245.116" -# if there is a local install of edm run it +# if there is a local install of edm (that does not throw an error!) # TODO fix this to detect RHEL 8 and not use edm -# if [ ! -z $(which edm 2> /dev/null) ] -# then -# export EDMDATAFILES=$(echo $EDMDATAFILES | sed s+/screens+${thisdir}+g) -# echo launching native edm with paths: $EDMDATAFILES -# edm -noedit -x ${start} -# exit 0 -# fi +if [ edm -h 2> /dev/null ] +then + export EDMDATAFILES=$(echo $EDMDATAFILES | sed s+/screens+${thisdir}+g) + echo launching native edm with paths: $EDMDATAFILES + edm -noedit -x ${start} + exit 0 +fi if [ -z $(which podman 2> /dev/null) ] then From 2af3a5d854be2cf1ed19a8af63feaf175fdbc9ca Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Fri, 10 Jun 2022 15:40:21 +0100 Subject: [PATCH 14/16] mo-ioc-01 fully working with ioc-pmac 1.1.1 --- bl45p-mo-ioc-01.yaml | 77 ++++++++++++++++++++-------------------- ibek/pmac.ibek.defs.yaml | 2 +- launch.sh | 4 ++- tests/bl45p-mo-ioc-01.sh | 9 ++--- 4 files changed, 47 insertions(+), 45 deletions(-) diff --git a/bl45p-mo-ioc-01.yaml b/bl45p-mo-ioc-01.yaml index fbfd2bc..8a77357 100644 --- a/bl45p-mo-ioc-01.yaml +++ b/bl45p-mo-ioc-01.yaml @@ -1,7 +1,7 @@ # yaml-language-server: $schema=file:///workspace/bl45p/ibek/pmac.ibek.entities.schema.json ioc_name: bl45p-mo-ioc-01 description: motion IOC for the test beamline p45 in G13 -generic_ioc_image: ghcr.io/epics-containers/ioc-pmac:main.run +generic_ioc_image: ghcr.io/epics-containers/ioc-pmac:1.1.1.run # TODO need to make use of lists / strings consistent # ANSWERS - script \n separated string, include,define are lists @@ -171,50 +171,49 @@ entities: - type: pmac.DlsCsPmacAsynMotor name: STAGE1.CS.THETA_SKEW - CsController: BRICK1.CS2 - axis: 8 - P: BL45P-MO-STAGE-01 - M: :THETA:SKEW - ACCL: 0.1 - DESC: Theta skew - DHLM: 360 - DLLM: -360 - EGU: deg - MRES: 0.0001 - PREC: 3 - TWV: 5 - VELO: 10 - + CsController: BRICK1.CS2 + axis: 8 + P: BL45P-MO-STAGE-01 + M: :THETA:SKEW + ACCL: 0.1 + DESC: Theta skew + DHLM: 360 + DLLM: -360 + EGU: deg + MRES: 0.0001 + PREC: 3 + TWV: 5 + VELO: 10 - type: pmac.DlsCsPmacAsynMotor name: STAGE1.CS.Y - CsController: BRICK1.CS3 - axis: 7 - P: BL45P-MO-STAGE-01 - M: :CS:Y - DESC: CS Y - DHLM: 4 - DLLM: -1 - EGU: mm - MRES: 0.0001 - PREC: 3 - TWV: 0.5 - VELO: 5 + CsController: BRICK1.CS3 + axis: 7 + P: BL45P-MO-STAGE-01 + M: :CS:Y + DESC: CS Y + DHLM: 4 + DLLM: -1 + EGU: mm + MRES: 0.0001 + PREC: 3 + TWV: 0.5 + VELO: 5 - type: pmac.DlsCsPmacAsynMotor name: STAGE1.CS.Y_STRETCH - CsController: BRICK1.CS3 - axis: 8 - P: BL45P-MO-STAGE-01 - M: :CS:Y:STRETCH - DESC: CS Y stretch - DHLM: 2 - DLLM: -2 - EGU: mm - MRES: 0.0001 - PREC: 3 - TWV: 0.5 - VELO: 5 + CsController: BRICK1.CS3 + axis: 8 + P: BL45P-MO-STAGE-01 + M: :CS:Y:STRETCH + DESC: CS Y stretch + DHLM: 2 + DLLM: -2 + EGU: mm + MRES: 0.0001 + PREC: 3 + TWV: 0.5 + VELO: 5 - type: pmac.pmacDisableLimitsCheck Controller: BRICK1 diff --git a/ibek/pmac.ibek.defs.yaml b/ibek/pmac.ibek.defs.yaml index 00574da..30d5f6f 100644 --- a/ibek/pmac.ibek.defs.yaml +++ b/ibek/pmac.ibek.defs.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=ibek.defs.schema.json +# yaml-language-server: $schema=http://github.com/epics-containers/ibek/releases/download/0.9/ibek.defs.schema.json module: pmac diff --git a/launch.sh b/launch.sh index 795d6c8..b0bfcc0 100755 --- a/launch.sh +++ b/launch.sh @@ -35,6 +35,8 @@ fi image=$(awk '/base_image/{print $NF}' ${ioc}/values.yaml) volumes="-v=${ioc}/config:/repos/epics/ioc/config:rw -vautosave:/autosave:rw" +# mount this repo and peers for debugging assistance +volumes="${volumes} -v$(pwd)/..:/code" if [ "${ioc_developer}" ] ; then echo yy @@ -44,5 +46,5 @@ fi echo "launching container ${image} with ${command}" set -x -docker run -it --rm --network host $@ ${volumes} ${image} ${command} +docker run -it --network host $@ ${volumes} ${image} ${command} diff --git a/tests/bl45p-mo-ioc-01.sh b/tests/bl45p-mo-ioc-01.sh index 84a872b..58ab8b6 100755 --- a/tests/bl45p-mo-ioc-01.sh +++ b/tests/bl45p-mo-ioc-01.sh @@ -2,7 +2,7 @@ root=$(realpath $(dirname $0)/..) ibek=$root/ibek -set -e +set -e -x echo "make schema" ibek ioc-schema ${ibek}/*.ibek.defs.yaml ${ibek}/pmac.ibek.entities.schema.json "${@}" @@ -11,6 +11,7 @@ echo "make helm Chart" cd $root ibek build-helm bl45p-mo-ioc-01.yaml -echo "make ioc startup files" -cd $root/iocs/bl45p-mo-ioc-01 -ibek build-startup config/ioc.boot.yaml $ibek/*.ibek.defs.yaml --out config/ioc.boot +# REMOVED: below deferred to ioc startup time +# echo "make ioc startup files" +# cd $root/iocs/bl45p-mo-ioc-01 +# ibek build-startup config/ioc.boot.yaml $ibek/*.ibek.defs.yaml --out config/ioc.boot From 7ee94609249f3906ad344e39cb555ccf980d9040 Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Mon, 13 Jun 2022 12:01:09 +0000 Subject: [PATCH 15/16] switch to generated helm charts only --- .github/workflows/bl_buiild.yml | 11 +- {bl45p-chart => beamline-chart}/Chart.yaml | 4 +- {bl45p-chart => beamline-chart}/values.yaml | 0 bl45p-ea-ioc-01.yaml | 5 - bl45p-ea-ioc-02.yaml | 5 - bl45p-mo-ioc-01.yaml | 4 +- ibek/asyn.ibek.defs.yaml | 4 +- ibek/deviocstats.ibek.defs.yaml | 2 +- ibek/epics.ibek.defs.yaml | 2 +- ibek/readme.txt | 5 + iocs/bl45p-ea-ioc-01/.helmignore | 2 - iocs/bl45p-ea-ioc-01/Chart.yaml | 23 - iocs/bl45p-ea-ioc-01/config/start.sh | 1 - .../config_src/BL45P-EA-IOC-01.db | 203 - .../config_src/BL45P-EA-IOC-01_expanded.db | 113104 --------------- iocs/bl45p-ea-ioc-01/config_src/ioc.boot | 526 - iocs/bl45p-ea-ioc-01/templates/ioc.yaml | 17 - iocs/bl45p-ea-ioc-01/values.yaml | 10 - iocs/bl45p-ea-ioc-02/Chart.yaml | 22 - .../config/BL45P-EA-IOC-02_expanded.db | 21709 --- iocs/bl45p-ea-ioc-02/config/ioc.boot | 65 - iocs/bl45p-ea-ioc-02/config/start.sh | 1 - iocs/bl45p-ea-ioc-02/templates/ioc.yaml | 10 - iocs/bl45p-ea-ioc-02/values.yaml | 1 - iocs/bl45p-mo-ioc-01.hand/Chart.yaml | 22 - .../config/BL45P-MO-IOC-01_expanded.db | 13679 -- iocs/bl45p-mo-ioc-01.hand/config/ioc.boot | 95 - iocs/bl45p-mo-ioc-01.hand/config/start.sh | 1 - .../templates/config.yaml | 13 - iocs/bl45p-mo-ioc-01.hand/values.yaml | 1 - iocs/readme.txt | 4 - iocs/start.sh | 32 - 32 files changed, 22 insertions(+), 149561 deletions(-) rename {bl45p-chart => beamline-chart}/Chart.yaml (69%) rename {bl45p-chart => beamline-chart}/values.yaml (100%) delete mode 100644 bl45p-ea-ioc-01.yaml delete mode 100644 bl45p-ea-ioc-02.yaml create mode 100644 ibek/readme.txt delete mode 100644 iocs/bl45p-ea-ioc-01/.helmignore delete mode 100644 iocs/bl45p-ea-ioc-01/Chart.yaml delete mode 120000 iocs/bl45p-ea-ioc-01/config/start.sh delete mode 100644 iocs/bl45p-ea-ioc-01/config_src/BL45P-EA-IOC-01.db delete mode 100644 iocs/bl45p-ea-ioc-01/config_src/BL45P-EA-IOC-01_expanded.db delete mode 100755 iocs/bl45p-ea-ioc-01/config_src/ioc.boot delete mode 100644 iocs/bl45p-ea-ioc-01/templates/ioc.yaml delete mode 100644 iocs/bl45p-ea-ioc-01/values.yaml delete mode 100644 iocs/bl45p-ea-ioc-02/Chart.yaml delete mode 100644 iocs/bl45p-ea-ioc-02/config/BL45P-EA-IOC-02_expanded.db delete mode 100755 iocs/bl45p-ea-ioc-02/config/ioc.boot delete mode 120000 iocs/bl45p-ea-ioc-02/config/start.sh delete mode 100644 iocs/bl45p-ea-ioc-02/templates/ioc.yaml delete mode 100644 iocs/bl45p-ea-ioc-02/values.yaml delete mode 100644 iocs/bl45p-mo-ioc-01.hand/Chart.yaml delete mode 100644 iocs/bl45p-mo-ioc-01.hand/config/BL45P-MO-IOC-01_expanded.db delete mode 100755 iocs/bl45p-mo-ioc-01.hand/config/ioc.boot delete mode 120000 iocs/bl45p-mo-ioc-01.hand/config/start.sh delete mode 100644 iocs/bl45p-mo-ioc-01.hand/templates/config.yaml delete mode 100644 iocs/bl45p-mo-ioc-01.hand/values.yaml delete mode 100644 iocs/readme.txt delete mode 100644 iocs/start.sh diff --git a/.github/workflows/bl_buiild.yml b/.github/workflows/bl_buiild.yml index 8fdf04d..66977a2 100644 --- a/.github/workflows/bl_buiild.yml +++ b/.github/workflows/bl_buiild.yml @@ -28,16 +28,23 @@ jobs: - name: push each ioc helm chart run: | + pip install ibek >=0.9 + # tar up any config folders that require it ./tar_config_src.sh - # helm tags must be SemVar. Use 0.0.0-b0 for testing the latest non-tagged build + # helm tags must be SemVar. Use 0.0.1-b0 for testing the latest non-tagged build if [ "${GITHUB_REF_TYPE}" == "tag" ] ; then TAG=${GITHUB_REF_NAME} else - TAG="0.0.0-b0" + TAG="0.0.1-b0" fi + # make helm charts from ibek entity yaml files + for ioc in $(ls *.yaml) ; do + ibek build-helm "${ioc}" + done + # All IOCS that have changes since last pushed to the helm registry # will have version ${TAG} pushed for ioc_root in $(ls -d iocs/*/) ; do diff --git a/bl45p-chart/Chart.yaml b/beamline-chart/Chart.yaml similarity index 69% rename from bl45p-chart/Chart.yaml rename to beamline-chart/Chart.yaml index 4959417..c777f88 100644 --- a/bl45p-chart/Chart.yaml +++ b/beamline-chart/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v2 -name: bl45p-chart +name: beamline-chart description: | - main motion IOC for the bl45p test beamline + IOC for the bl45p test beamline type: application diff --git a/bl45p-chart/values.yaml b/beamline-chart/values.yaml similarity index 100% rename from bl45p-chart/values.yaml rename to beamline-chart/values.yaml diff --git a/bl45p-ea-ioc-01.yaml b/bl45p-ea-ioc-01.yaml deleted file mode 100644 index c7c1035..0000000 --- a/bl45p-ea-ioc-01.yaml +++ /dev/null @@ -1,5 +0,0 @@ -# DUMMY YAML definition of experimental apparatus IOC 01 -# -# In future this will contain a YAML definition of this IOC -# and ibek (IOC Builder for EPICS in Kubernetes) will generate -# the helm charts in iocs folder from this definition. diff --git a/bl45p-ea-ioc-02.yaml b/bl45p-ea-ioc-02.yaml deleted file mode 100644 index 17c883d..0000000 --- a/bl45p-ea-ioc-02.yaml +++ /dev/null @@ -1,5 +0,0 @@ -# DUMMY YAML definition of experimental apparatus IOC 02 -# -# In future this will contain a YAML definition of this IOC -# and ibek (IOC Builder for EPICS in Kubernetes) will generate -# the helm charts in iocs folder from this definition. diff --git a/bl45p-mo-ioc-01.yaml b/bl45p-mo-ioc-01.yaml index 8a77357..6730ba2 100644 --- a/bl45p-mo-ioc-01.yaml +++ b/bl45p-mo-ioc-01.yaml @@ -1,7 +1,7 @@ -# yaml-language-server: $schema=file:///workspace/bl45p/ibek/pmac.ibek.entities.schema.json +# yaml-language-server: $schema=file://ibek/pmac.ibek.entities.schema.json ioc_name: bl45p-mo-ioc-01 description: motion IOC for the test beamline p45 in G13 -generic_ioc_image: ghcr.io/epics-containers/ioc-pmac:1.1.1.run +generic_ioc_image: ghcr.io/epics-containers/ioc-pmac:1.1.2.run # TODO need to make use of lists / strings consistent # ANSWERS - script \n separated string, include,define are lists diff --git a/ibek/asyn.ibek.defs.yaml b/ibek/asyn.ibek.defs.yaml index bf7d9a6..127b682 100644 --- a/ibek/asyn.ibek.defs.yaml +++ b/ibek/asyn.ibek.defs.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=file://schemas/ibek.defs.schema.json +# yaml-language-server: $schema=http://github.com/epics-containers/ibek/releases/download/0.9/ibek.defs.schema.json module: asyn defs: - name: AsynSerial @@ -97,4 +97,4 @@ defs: script: - TODO provide Jinja to generate Startup Entries - note this is interesting because builder.py has a few if clauses - - for generating the necessary script \ No newline at end of file + - for generating the necessary script diff --git a/ibek/deviocstats.ibek.defs.yaml b/ibek/deviocstats.ibek.defs.yaml index 7fc2d82..cffb11c 100644 --- a/ibek/deviocstats.ibek.defs.yaml +++ b/ibek/deviocstats.ibek.defs.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=ibek.defs.schema.json +# yaml-language-server: $schema=http://github.com/epics-containers/ibek/releases/download/0.9/ibek.defs.schema.json module: deviocstats diff --git a/ibek/epics.ibek.defs.yaml b/ibek/epics.ibek.defs.yaml index 35e136f..8278f32 100644 --- a/ibek/epics.ibek.defs.yaml +++ b/ibek/epics.ibek.defs.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=file://schemas/ibek.defs.schema.json +# yaml-language-server: $schema=http://github.com/epics-containers/ibek/releases/download/0.9/ibek.defs.schema.json module: epics defs: - name: EPICS_CA_MAX_ARRAY_BYTES diff --git a/ibek/readme.txt b/ibek/readme.txt new file mode 100644 index 0000000..a5e1c40 --- /dev/null +++ b/ibek/readme.txt @@ -0,0 +1,5 @@ +These files should be coming from release assets in +epics-modules, ioc-pmac and ibek. + +However for early prototyping it is easier to keep them in the beamline repo +as there may be frequent changes up the chain. \ No newline at end of file diff --git a/iocs/bl45p-ea-ioc-01/.helmignore b/iocs/bl45p-ea-ioc-01/.helmignore deleted file mode 100644 index 27ae500..0000000 --- a/iocs/bl45p-ea-ioc-01/.helmignore +++ /dev/null @@ -1,2 +0,0 @@ -# these are the files we tar into config/config.tz so dont include originals -config_src/ diff --git a/iocs/bl45p-ea-ioc-01/Chart.yaml b/iocs/bl45p-ea-ioc-01/Chart.yaml deleted file mode 100644 index 87b83de..0000000 --- a/iocs/bl45p-ea-ioc-01/Chart.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v2 -name: bl45p-ea-ioc-01 -description: | - Gige camera IOC for the bl45p test beamline - -type: application - -# chart and app version - these are updated automatically by CI -version: 2021.2.0 -appVersion: 2021.2.0 - - -dependencies: - - name: bl45p-chart - version: "1.0.0" - repository: file://../../bl45p-chart - import-values: - - beamline_defaults - - name: helm-ioc-lib - version: "1.6.1" - repository: oci://ghcr.io/epics-containers - import-values: - - defaults diff --git a/iocs/bl45p-ea-ioc-01/config/start.sh b/iocs/bl45p-ea-ioc-01/config/start.sh deleted file mode 120000 index 1fea5d0..0000000 --- a/iocs/bl45p-ea-ioc-01/config/start.sh +++ /dev/null @@ -1 +0,0 @@ -../../start.sh \ No newline at end of file diff --git a/iocs/bl45p-ea-ioc-01/config_src/BL45P-EA-IOC-01.db b/iocs/bl45p-ea-ioc-01/config_src/BL45P-EA-IOC-01.db deleted file mode 100644 index 45005da..0000000 --- a/iocs/bl45p-ea-ioc-01/config_src/BL45P-EA-IOC-01.db +++ /dev/null @@ -1,203 +0,0 @@ -# This file was automatically generated on Mon 12 Apr 2021 10:33:57 BST from -# source: /scratch/work/bl45p-builder/etc/makeIocs/BL45P-EA-IOC-01.xml -# -# *** Please do not edit this file: edit the source file instead. *** -# - -record(bo, "BL45P-EA-DIFF-01:Hdf:AutoSave") -{ - field(VAL, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:Hdf:FileWriteMode") -{ - field(VAL, "2") -} - -record(longout, "BL45P-EA-DIFF-01:Mjpg:GX") -{ - field(OUT, "BL45P-EA-DIFF-01:STAT:CursorX PP") -} - -record(longout, "BL45P-EA-DIFF-01:Mjpg:GY") -{ - field(OUT, "BL45P-EA-DIFF-01:STAT:CursorY PP") -} - -record(longout, "BL45P-EA-DIFF-01:Over:1:Green") -{ - field(VAL, "255") -} - -record(longout, "BL45P-EA-DIFF-01:Over:1:PositionXLink") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT:CentroidX_RBV CP") -} - -record(longout, "BL45P-EA-DIFF-01:Over:1:PositionYLink") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT:CentroidY_RBV CP") -} - -record(mbbo, "BL45P-EA-DIFF-01:Over:1:Shape") -{ - field(VAL, "0") -} - -record(longout, "BL45P-EA-DIFF-01:Over:1:SizeXLink") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT:SigmaX_RBV CP") -} - -record(longout, "BL45P-EA-DIFF-01:Over:1:SizeYLink") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT:SigmaY_RBV CP") -} - -record(bo, "BL45P-EA-DIFF-01:Over:1:Use") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT:ComputeCentroid_RBV CP") - field(OMSL, "closed_loop") -} - -record(longout, "BL45P-EA-DIFF-01:Proc:NumFilter") -{ - field(VAL, "5") -} - -record(longout, "BL45P-EA-DIFF-01:Roi:SizeX") -{ - field(DRVL, "4") - field(VAL, "100000") -} - -record(longout, "BL45P-EA-DIFF-01:Roi:SizeY") -{ - field(DRVL, "4") - field(VAL, "100000") -} - -record(longout, "BL45P-EA-DIFF-01:Roi:SizeZ") -{ - field(DRVL, "0") - field(VAL, "100000") -} - -record(ao, "BL45P-EA-DIFF-01:Stat:CentroidThreshold") -{ - field(VAL, "50") -} - -record(bo, "BL45P-EA-DIFF-01:Stat:ComputeCentroid") -{ - field(VAL, "0") -} - -record(bo, "BL45P-EA-DIFF-01:Stat:ComputeProfiles") -{ - field(VAL, "1") -} - -record(bo, "BL45P-EA-DIFF-01:Stat:ComputeStatistics") -{ - field(VAL, "0") -} - -record(bo, "BL45P-EA-MAP-01:Hdf:AutoSave") -{ - field(VAL, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:Hdf:FileWriteMode") -{ - field(VAL, "2") -} - -record(longout, "BL45P-EA-MAP-01:Mjpg:GX") -{ - field(OUT, "BL45P-EA-MAP-01:STAT:CursorX PP") -} - -record(longout, "BL45P-EA-MAP-01:Mjpg:GY") -{ - field(OUT, "BL45P-EA-MAP-01:STAT:CursorY PP") -} - -record(longout, "BL45P-EA-MAP-01:Over:1:Green") -{ - field(VAL, "255") -} - -record(longout, "BL45P-EA-MAP-01:Over:1:PositionXLink") -{ - field(DOL, "BL45P-EA-MAP-01:STAT:CentroidX_RBV CP") -} - -record(longout, "BL45P-EA-MAP-01:Over:1:PositionYLink") -{ - field(DOL, "BL45P-EA-MAP-01:STAT:CentroidY_RBV CP") -} - -record(mbbo, "BL45P-EA-MAP-01:Over:1:Shape") -{ - field(VAL, "0") -} - -record(longout, "BL45P-EA-MAP-01:Over:1:SizeXLink") -{ - field(DOL, "BL45P-EA-MAP-01:STAT:SigmaX_RBV CP") -} - -record(longout, "BL45P-EA-MAP-01:Over:1:SizeYLink") -{ - field(DOL, "BL45P-EA-MAP-01:STAT:SigmaY_RBV CP") -} - -record(bo, "BL45P-EA-MAP-01:Over:1:Use") -{ - field(DOL, "BL45P-EA-MAP-01:STAT:ComputeCentroid_RBV CP") - field(OMSL, "closed_loop") -} - -record(longout, "BL45P-EA-MAP-01:Proc:NumFilter") -{ - field(VAL, "5") -} - -record(longout, "BL45P-EA-MAP-01:Roi:SizeX") -{ - field(DRVL, "4") - field(VAL, "100000") -} - -record(longout, "BL45P-EA-MAP-01:Roi:SizeY") -{ - field(DRVL, "4") - field(VAL, "100000") -} - -record(longout, "BL45P-EA-MAP-01:Roi:SizeZ") -{ - field(DRVL, "0") - field(VAL, "100000") -} - -record(ao, "BL45P-EA-MAP-01:Stat:CentroidThreshold") -{ - field(VAL, "50") -} - -record(bo, "BL45P-EA-MAP-01:Stat:ComputeCentroid") -{ - field(VAL, "0") -} - -record(bo, "BL45P-EA-MAP-01:Stat:ComputeProfiles") -{ - field(VAL, "1") -} - -record(bo, "BL45P-EA-MAP-01:Stat:ComputeStatistics") -{ - field(VAL, "0") -} diff --git a/iocs/bl45p-ea-ioc-01/config_src/BL45P-EA-IOC-01_expanded.db b/iocs/bl45p-ea-ioc-01/config_src/BL45P-EA-IOC-01_expanded.db deleted file mode 100644 index a28f12b..0000000 --- a/iocs/bl45p-ea-ioc-01/config_src/BL45P-EA-IOC-01_expanded.db +++ /dev/null @@ -1,113104 +0,0 @@ -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(ao, "BL45P-EA-IOC-01:GC_GevSCPHostPort") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_GevSCPHostPort") - field(DISA, "0") -} - -# Used by Channel Access Security to determine access to this IOC. -record(mbbo, "BL45P-EA-IOC-01:ACCESS") -{ - field(DESC, "BL45P-EA-IOC-01 Acc Mode") - field(PINI, "YES") - field(ZRST, "Running") - field(ZRSV, "NO_ALARM") - field(ONST, "Maintenance") - field(ONSV, "MINOR") - field(TWST, "Test") - field(TWSV, "MINOR") - field(THST, "OFFLINE") - field(THSV, "MAJOR") - info(autosaveFields, "VAL") -} -record(stringin, "BL45P-EA-IOC-01:STARTTOD") -{ - field(DESC, "Time and date of startup") - field(DTYP, "Soft Timestamp") - field(PINI, "YES") - field(INP, "@%Y-%m-%d %H:%M:%S") -} -record(stringin, "BL45P-EA-IOC-01:TOD") -{ - field(DESC, "Current time and date") - field(DTYP, "Soft Timestamp") - field(SCAN, "1 second") - field(INP, "@%Y-%m-%d %H:%M:%S") -} -record(calcout, "BL45P-EA-IOC-01:HEARTBEAT") -{ - field(DESC, "1 Hz counter since startup") - field(CALC, "(A<2147483647)?A+1:1") - field(SCAN, "1 second") - field(INPA, "BL45P-EA-IOC-01:HEARTBEAT") -} -# if autosave is working, START_CNT creates a running count of -# number of times the IOC was started. -record(calcout, "BL45P-EA-IOC-01:START_CNT") -{ - field(DESC, "Increments at startup") - field(CALC, "A+1") - field(PINI, "YES") - field(INPA, "BL45P-EA-IOC-01:START_CNT") - info(autosaveFields_pass0, "VAL") -} -# -# Using an existing internal set of subroutines, this -# PV updates the Access Security mechanism dynamically. -# The .acf file is re-read. -# -record( sub, "BL45P-EA-IOC-01:READACF") -{ - field( DESC, "BL45P-EA-IOC-01 ACF Update") - field( INAM, "asSubInit") - field( SNAM, "asSubProcess") - field( BRSV, "INVALID") -} -record(sub, "BL45P-EA-IOC-01:SYSRESET") -{ - alias("BL45P-EA-IOC-01:SysReset") - field(DESC, "IOC Restart" ) - field(SNAM, "rebootProc") - field(BRSV,"INVALID") - field(L,"1") -} - -#% archiver 1 Monitor -#% alh -record(ai, "BL45P-EA-IOC-01:CA_CLNT_CNT") { - field(DESC, "Number of CA Clients") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@ca_clients") - field(HOPR, "200") - field(HIHI, "175") - field(HIGH, "100") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") -} - -#% archiver 1 Monitor -#% alh -record(ai, "BL45P-EA-IOC-01:CA_CONN_CNT") { - field(DESC, "Number of CA Connections") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@ca_connections") - field(HOPR, "5000") - field(HIHI, "4500") - field(HIGH, "4000") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") -} - -record(ai, "BL45P-EA-IOC-01:RECORD_CNT") { - field(DESC, "Number of Records") - field(PINI, "YES") - field(DTYP, "IOC stats") - field(INP, "@records") -} - -record(ai, "BL45P-EA-IOC-01:FD_MAX") { - field(DESC, "Max File Descriptors") - field(PINI, "YES") - field(DTYP, "IOC stats") - field(INP, "@maxfd") -} - -record(ai, "BL45P-EA-IOC-01:FD_CNT") { - field(DESC, "Allocated File Descriptors") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(FLNK, "BL45P-EA-IOC-01:FD_FREE PP MS") - field(INP, "@fd") -} - -#% archiver 1 Monitor -#% alh -record(calc, "BL45P-EA-IOC-01:FD_FREE") { - field(DESC, "Available FDs") - field(CALC, "B>0?B-A:C") - field(INPA, "BL45P-EA-IOC-01:FD_CNT NPP MS") - field(INPB, "BL45P-EA-IOC-01:FD_MAX NPP MS") - field(INPC, "1000") - field(HOPR, "150") - field(LOLO, "5") - field(LOW, "20") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR LOW LOLO LSV LLSV") -} - -#% archiver 1 Monitor -record(ai, "BL45P-EA-IOC-01:SYS_CPU_LOAD") { - field(DESC, "System CPU Load") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@sys_cpuload") - field(EGU, "%") - field(PREC, "1") - field(HOPR, "100") - field(HIHI, "80") - field(HIGH, "70") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") -} - -#% archiver 1 Monitor -#% alh -record(ai, "BL45P-EA-IOC-01:IOC_CPU_LOAD") { - alias("BL45P-EA-IOC-01:LOAD") - field(DESC, "IOC CPU Load") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@ioc_cpuload") - field(EGU, "%") - field(PREC, "1") - field(HOPR, "100") - field(HIHI, "80") - field(HIGH, "70") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") -} - -record(ai, "BL45P-EA-IOC-01:CPU_CNT") { - field(DESC, "Number of CPUs") - field(DTYP, "IOC stats") - field(INP, "@no_of_cpus") - field(PINI, "YES") -} - -#% archiver 1 Monitor -#% alh -record(ai, "BL45P-EA-IOC-01:SUSP_TASK_CNT") { - field(DESC, "Number Suspended Tasks") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@suspended_tasks") - field(HIHI, "1") - field(HHSV, "MAJOR") - info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") -} - -#% archiver 1 Monitor -record(ai, "BL45P-EA-IOC-01:MEM_USED") { - field(DESC, "Allocated Memory") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@allocated_bytes") - field(EGU, "byte") -} - -#% archiver 1 Monitor -record(ai, "BL45P-EA-IOC-01:MEM_FREE") { - field(DESC, "Free Memory") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@free_bytes") - field(EGU, "byte") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR LOW LOLO LSV LLSV") -} - -record(ai, "BL45P-EA-IOC-01:MEM_MAX") { - field(DESC, "Maximum Memory") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@total_bytes") - field(EGU, "byte") -} - -record(ao, "BL45P-EA-IOC-01:CA_UPD_TIME") { - field(DESC, "CA Check Update Period") - field(DTYP, "IOC stats") - field(OUT, "@ca_scan_rate") - field(EGU, "sec") - field(DRVH, "60") - field(DRVL, "1") - field(HOPR, "60") - field(VAL, "15") - field(PINI, "YES") -} - -record(ao, "BL45P-EA-IOC-01:FD_UPD_TIME") { - field(DESC, "FD Check Update Period") - field(DTYP, "IOC stats") - field(OUT, "@fd_scan_rate") - field(EGU, "sec") - field(DRVH, "60") - field(DRVL, "1") - field(HOPR, "60") - field(VAL, "20") - field(PINI, "YES") -} - -record(ao, "BL45P-EA-IOC-01:LOAD_UPD_TIME") { - field(DESC, "CPU Check Update Period") - field(DTYP, "IOC stats") - field(OUT, "@cpu_scan_rate") - field(EGU, "sec") - field(DRVH, "60") - field(DRVL, "1") - field(HOPR, "60") - field(VAL, "10") - field(PINI, "YES") -} - -record(ao, "BL45P-EA-IOC-01:MEM_UPD_TIME") { - field(DESC, "Memory Check Update Period") - field(DTYP, "IOC stats") - field(OUT, "@memory_scan_rate") - field(EGU, "sec") - field(DRVH, "60") - field(DRVL, "1") - field(HOPR, "60") - field(VAL, "10") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-01:ST_SCRIPT1") { - field(DESC, "Startup Script Part1") - field(DTYP, "IOC stats") - field(INP, "@startup_script_1") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-01:ST_SCRIPT2") { - field(DESC, "Startup Script Part2") - field(DTYP, "IOC stats") - field(INP, "@startup_script_2") - field(PINI, "YES") -} - -record(waveform, "BL45P-EA-IOC-01:ST_SCRIPT") { - field(DESC, "Startup Script") - field(DTYP, "IOC stats") - field(INP, "@startup_script") - field(NELM, "120") - field(FTVL, "CHAR") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-01:KERNEL_VERS") { - field(DESC, "Kernel Version") - field(DTYP, "IOC stats") - field(INP, "@kernel_ver") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-01:EPICS_VERS") { - field(DESC, "EPICS Version") - field(DTYP, "IOC stats") - field(INP, "@epics_ver") - field(PINI, "YES") -} - -record(waveform, "BL45P-EA-IOC-01:EPICS_VERSION") { - field(DESC, "EPICS Version") - field(DTYP, "IOC stats") - field(INP, "@epics_ver") - field(NELM, "120") - field(FTVL, "CHAR") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-01:HOSTNAME") { - field(DESC, "Host Name") - field(DTYP, "IOC stats") - field(INP, "@hostname") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-01:APP_DIR1") { - field(DESC, "Application Directory Part 1") - field(DTYP, "IOC stats") - field(INP, "@pwd1") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-01:APP_DIR2") { - field(DESC, "Application Directory Part 2") - field(DTYP, "IOC stats") - field(INP, "@pwd2") - field(PINI, "YES") -} - -record(waveform, "BL45P-EA-IOC-01:APP_DIR") { - field(DESC, "Application Directory") - field(DTYP, "IOC stats") - field(INP, "@pwd") - field(NELM, "160") - field(FTVL, "CHAR") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-01:UPTIME") { - field(DESC, "Elapsed Time since Start") - field(SCAN, "1 second") - field(DTYP, "IOC stats") - field(INP, "@up_time") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-01:ENGINEER") { - field(DESC, "Engineer") - field(DTYP, "IOC stats") - field(INP, "@engineer") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-01:LOCATION") { - field(DESC, "Location") - field(DTYP, "IOC stats") - field(INP, "@location") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-IOC-01:PROCESS_ID") { - field(DESC, "Process ID") - field(PINI, "YES") - field(DTYP, "IOC stats") - field(INP, "@proc_id") -} - -record(ai, "BL45P-EA-IOC-01:PARENT_ID") { - field(DESC, "Parent Process ID") - field(PINI, "YES") - field(DTYP, "IOC stats") - field(INP, "@parent_proc_id") -} - -record(stringin, "BL45P-EA-IOC-01:DLSVER") { - field(DESC, "IOC version") - field(DTYP, "IOC stats") - field(INP, "@dlsver") - field(PINI, "YES") -} -record(ai, "BL45P-EA-IOC-01:GTIM_TIME") { - field(DESC, "Gen Time Secs since 1990") - field(SCAN, "1 second") - field(DTYP, "General Time") - field(PREC, "3") - field(INP, "@TIME") - field(EGU, "sec") -} - -record(bo, "BL45P-EA-IOC-01:GTIM_RESET") { - field(DESC, "Gen Time Error Reset") - field(DTYP, "General Time") - field(OUT, "@RSTERRCNT") - field(ZNAM, "Reset") - field(ONAM, "Reset") -} - -record(longin, "BL45P-EA-IOC-01:GTIM_ERR_CNT") { - field(DESC, "Gen Time Error Count") - field(DTYP, "General Time") - field(INP, "@GETERRCNT") - field(SCAN, "1 second") - field(HIHI, "1") - field(HHSV, "MAJOR") -} - -record(stringin, "BL45P-EA-IOC-01:GTIM_CUR_SRC") { - field(DESC, "Gen Time Current Provider") - field(DTYP, "General Time") - field(INP, "@BESTTCP") - field(SCAN, "1 second") -} - -record(stringin, "BL45P-EA-IOC-01:GTIM_EVT_SRC") { - field(DESC, "Gen Time Event Provider") - field(DTYP, "General Time") - field(INP, "@BESTTEP") - field(SCAN, "1 second") -} - -record(stringin, "BL45P-EA-IOC-01:GTIM_HI_SRC") { - field(DESC, "Gen Time Highest Provider") - field(DTYP, "General Time") - field(INP, "@TOPTCP") - field(SCAN, "1 second") -} -record(stringin, "BL45P-EA-IOC-01:CA_ADDR_LIST") { - field(DESC, "EPICS_CA_ADDR_LIST") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_ADDR_LIST") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-01:CA_CONN_TIME") { - field(DESC, "EPICS_CA_CONN_TMO") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_CONN_TMO") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-01:CA_AUTO_ADDR") { - field(DESC, "EPICS_CA_AUTO_ADDR_LIST") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_AUTO_ADDR_LIST") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-01:CA_RPTR_PORT") { - field(DESC, "EPICS_CA_REPEATER_PORT") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_REPEATER_PORT") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-01:CA_SRVR_PORT") { - field(DESC, "EPICS_CA_SERVER_PORT") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_SERVER_PORT") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-01:CA_MAX_ARRAY") { - field(DESC, "EPICS_CA_MAX_ARRAY_BYTES") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_MAX_ARRAY_BYTES") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-01:CA_SRCH_TIME") { - field(DESC, "EPICS_CA_MAX_SEARCH_PERIOD") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_MAX_SEARCH_PERIOD") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-01:CA_BEAC_TIME") { - field(DESC, "EPICS_CA_BEACON_PERIOD") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_BEACON_PERIOD") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-01:TIMEZONE") { - field(DESC, "EPICS_TIMEZONE") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_TIMEZONE") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-01:TS_NTP_INET") { - field(DESC, "EPICS_TS_NTP_INET") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_TS_NTP_INET") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-01:IOC_LOG_PORT") { - field(DESC, "EPICS_IOC_LOG_PORT") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_IOC_LOG_PORT") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-01:IOC_LOG_INET") { - field(DESC, "EPICS_IOC_LOG_INET") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_IOC_LOG_INET") - field(PINI, "YES") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-EA-IOC-01:01HZ_MODE") { - field(DESC, "01HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-EA-IOC-01:01HZ_UPD_TIME") { - field(DESC, "01HZ Update Time") - field(SCAN, "10 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-EA-IOC-01:01HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-EA-IOC-01:02HZ_MODE") { - field(DESC, "02HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-EA-IOC-01:02HZ_UPD_TIME") { - field(DESC, "02HZ Update Time") - field(SCAN, "5 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-EA-IOC-01:02HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-EA-IOC-01:05HZ_MODE") { - field(DESC, "05HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-EA-IOC-01:05HZ_UPD_TIME") { - field(DESC, "05HZ Update Time") - field(SCAN, "2 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-EA-IOC-01:05HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-EA-IOC-01:1HZ_MODE") { - field(DESC, "1HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-EA-IOC-01:1HZ_UPD_TIME") { - field(DESC, "1HZ Update Time") - field(SCAN, "1 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-EA-IOC-01:1HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-EA-IOC-01:2HZ_MODE") { - field(DESC, "2HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-EA-IOC-01:2HZ_UPD_TIME") { - field(DESC, "2HZ Update Time") - field(SCAN, ".5 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-EA-IOC-01:2HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-EA-IOC-01:5HZ_MODE") { - field(DESC, "5HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-EA-IOC-01:5HZ_UPD_TIME") { - field(DESC, "5HZ Update Time") - field(SCAN, ".2 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-EA-IOC-01:5HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-EA-IOC-01:10HZ_MODE") { - field(DESC, "10HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-EA-IOC-01:10HZ_UPD_TIME") { - field(DESC, "10HZ Update Time") - field(SCAN, ".1 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-EA-IOC-01:10HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} - -record(calc, "BL45P-EA-IOC-01:SCANMON_SEVR") { - field(DESC, "ScanMon Max Severity") - field(SCAN, "1 second") - field(CALC, "0") - field(INPA, "BL45P-EA-IOC-01:01HZ_UPD_TIME.SEVR MS") - field(INPB, "BL45P-EA-IOC-01:02HZ_UPD_TIME.SEVR MS") - field(INPC, "BL45P-EA-IOC-01:05HZ_UPD_TIME.SEVR MS") - field(INPD, "BL45P-EA-IOC-01:1HZ_UPD_TIME.SEVR MS") - field(INPE, "BL45P-EA-IOC-01:2HZ_UPD_TIME.SEVR MS") - field(INPF, "BL45P-EA-IOC-01:5HZ_UPD_TIME.SEVR MS") - field(INPG, "BL45P-EA-IOC-01:10HZ_UPD_TIME.SEVR MS") -} - -# % macro, name, name for gui elements -# % macro, EDM_FILE, edm screen, defaults to ioc_stats_softdls.edl -# % macro, IOC, ioc name - -# % gui, EA01_STATS, edm, ioc_stats_softdls.edl, ioc=BL45P-EA-IOC-01 -# % gui, EA01_STATS, edmembed, ioc_embed.edl, ioc=BL45P-EA-IOC-01,EDM_FILE=ioc_stats_softdls.edl - - - -# This associates BOY screens with the template -# % gui, EA01_STATS, boydetail, devIocStatsApp_opi/iocStats_detail.opi, desc=BL45P-EA-IOC-01, IOC=BL45P-EA-IOC-01, name=EA01_STATS -# % gui, EA01_STATS, boyembed, devIocStatsApp_opi/iocStats_embed.opi, desc=BL45P-EA-IOC-01, IOC=BL45P-EA-IOC-01, name=EA01_STATS -# % gui, EA01_STATS, boyembed, devIocStatsApp_opi/iocStats_embed_box.opi, desc=BL45P-EA-IOC-01, IOC=BL45P-EA-IOC-01, name=EA01_STATS - -# These define what PVs a detail screen should contain -# % gui, EA01_STATS, readback, Startup Time,BL45P-EA-IOC-01:STARTOD -# % gui, EA01_STATS, readback, Current Time,BL45P-EA-IOC-01:TOD -# % gui, EA01_STATS, readback, Up Time,BL45P-EA-IOC-01:UPTIME -# % gui, EA01_STATS, readback, Heartbeat,BL45P-EA-IOC-01:HEARTBEAT -# % gui, EA01_STATS, readback, Records,BL45P-EA-IOC-01:RECORD_CNT -# % gui, EA01_STATS, readback, Host Name,BL45P-EA-IOC-01:HOSTNAME -# % gui, EA01_STATS, readback, User Name,BL45P-EA-IOC-01:ENGINEER -# % gui, EA01_STATS, readback, Location,BL45P-EA-IOC-01:LOCATION -# % gui, EA01_STATS, readback, CA Clients,BL45P-EA-IOC-01:CA_CLNT_CNT -# % gui, EA01_STATS, readback, CA PV Conns,BL45P-EA-IOC-01:CA_CONN_CNT -# % gui, EA01_STATS, readback, Susp Tasks,BL45P-EA-IOC-01:SUSP_TASK_CNT -# % gui, EA01_STATS, readback, EPICS Version,BL45P-EA-IOC-01:EPICS_VERS -# % gui, EA01_STATS, readback, OS Version,BL45P-EA-IOC-01:KERNEL_VERS -# % gui, EA01_STATS, readback, Application Directory,BL45P-EA-IOC-01:APP_DIR1 -# % gui, EA01_STATS, readback, Startup Script,BL45P-EA-IOC-01:ST_SCRIPT1 -# % gui, EA01_STATS, readback, Memory Free,BL45P-EA-IOC-01:MEM_FREE -# % gui, EA01_STATS, readback, Memory Used,BL45P-EA-IOC-01:MEM_USED -# % gui, EA01_STATS, readback, Memory Max,BL45P-EA-IOC-01:MEM_MAX -# % gui, EA01_STATS, readback, File Handles Free,BL45P-EA-IOC-01:FD_FREE -# % gui, EA01_STATS, readback, File Handles Max,BL45P-EA-IOC-01:FD_MAX -# % gui, EA01_STATS, readback, IOC CPU Load,BL45P-EA-IOC-01:IOC_CPU_LOAD -# % gui, EA01_STATS, readback, All CPUs Load,BL45P-EA-IOC-01:SYS_CPU_LOAD -# % gui, EA01_STATS, readback, System CPUs,BL45P-EA-IOC-01:CPU_CNT - -# Macros: -#% macro, P, Device Prefix -#% macro, R, Device Suffix -#% macro, PORT, Asyn Port name -#% macro, TIMEOUT, Timeout, default=1 -#% macro, ADDR, Asyn Port address, default=0 -#% gui, DET.DET, edmtab, ADGenICam.edl, P=BL45P-EA-MAP-01,R=:DET:,C=AVT_Manta_G235B - -record(ai, "BL45P-EA-MAP-01:DET:GC_FirmwareVerMajor_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_FirmwareVerMajor") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_FirmwareVerMajor") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_FirmwareVerMajor") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_FirmwareVerMinor_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_FirmwareVerMinor") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_FirmwareVerMinor") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_FirmwareVerMinor") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_FirmwareVerBuild_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_FirmwareVerBuild") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_FirmwareVerBuild") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_FirmwareVerBuild") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_SensorType_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_SensorType") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_SensorType") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_SensorType") - field(DOL, "0") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_SensorBits_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_SensorBits") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_SensorBits") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_SensorBits") - field(DISA, "0") -} - -record(stringin, "BL45P-EA-MAP-01:DET:GC_DeviceVendorName_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)GC_S_DeviceVendorName") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(stringin, "BL45P-EA-MAP-01:DET:GC_DeviceModelName_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)GC_S_DeviceModelName") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(stringin, "BL45P-EA-MAP-01:DET:GC_DevFirVersion_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)GC_S_DeviceFirmwareVersion") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(stringin, "BL45P-EA-MAP-01:DET:GC_DeviceID_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)GC_S_DeviceID") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(stringin, "BL45P-EA-MAP-01:DET:GC_DevicePartNumber_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)GC_S_DevicePartNumber") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_DeviceScanType_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_DeviceScanType") - field(ZRST, "Areascan") - field(ZRVL, "0") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_DeviceScanType") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_DeviceScanType") - field(DOL, "0") - field(ZRST, "Areascan") - field(ZRVL, "0") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_DevTemSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_DeviceTemperatureSelector") - field(ZRST, "Sensor") - field(ZRVL, "0") - field(ONST, "Main") - field(ONVL, "1") - field(TWST, "Power") - field(TWVL, "2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_DevTemSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_DeviceTemperatureSelector") - field(DOL, "0") - field(ZRST, "Sensor") - field(ZRVL, "0") - field(ONST, "Main") - field(ONVL, "1") - field(TWST, "Power") - field(TWVL, "2") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_DeviceTemperature_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_DeviceTemperature") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_DeviceTemperature") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_DeviceTemperature") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_StrBytesPerSecond_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_StreamBytesPerSecond") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_StrBytesPerSecond") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_StreamBytesPerSecond") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_BanControlMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_BandwidthControlMode") - field(ZRST, "StreamBytesPerSe") - field(ZRVL, "0") - field(ONST, "SCPD") - field(ONVL, "1") - field(TWST, "Both") - field(TWVL, "2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_BanControlMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_BandwidthControlMode") - field(DOL, "0") - field(ZRST, "StreamBytesPerSe") - field(ZRVL, "0") - field(ONST, "SCPD") - field(ONVL, "1") - field(TWST, "Both") - field(TWVL, "2") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_GevSCPSPacketSize_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_GevSCPSPacketSize") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_GevSCPSPacketSize") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_GevSCPSPacketSize") - field(DISA, "0") -} - -record(bi, "BL45P-EA-MAP-01:DET:GC_ChunkModeActive_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_B_ChunkModeActive") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(bo, "BL45P-EA-MAP-01:DET:GC_ChunkModeActive") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_B_ChunkModeActive") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_PayloadSize_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_PayloadSize") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_PayloadSize") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_PayloadSize") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_NonImaPayloadSize_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_NonImagePayloadSize") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_NonImaPayloadSize") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_NonImagePayloadSize") - field(DISA, "0") -} - -record(bi, "BL45P-EA-MAP-01:DET:GC_StrFraRatCon_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_B_StreamFrameRateConstrain") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(bo, "BL45P-EA-MAP-01:DET:GC_StrFraRatCon") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_B_StreamFrameRateConstrain") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_StreamHoldEnable_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_StreamHoldEnable") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "On") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_StreamHoldEnable") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_StreamHoldEnable") - field(DOL, "0") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "On") - field(ONVL, "1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_StrHoldCapacity_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_StreamHoldCapacity") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_StrHoldCapacity") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_StreamHoldCapacity") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_GevTimTicFre_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_GevTimestampTickFrequency") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_GevTimTicFre") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_GevTimestampTickFrequency") - field(DISA, "0") -} - -record(longout, "BL45P-EA-MAP-01:DET:GC_GevTimConLatch") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_C_GevTimestampControlLatch") - field(DISA, "0") -} - -record(longout, "BL45P-EA-MAP-01:DET:GC_GevTimConReset") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_C_GevTimestampControlReset") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_GevTimestampValue_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_GevTimestampValue") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_GevTimestampValue") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_GevTimestampValue") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_PtpMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_PtpMode") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "Slave") - field(ONVL, "1") - field(TWST, "Master") - field(TWVL, "2") - field(THST, "Auto") - field(THVL, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_PtpMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_PtpMode") - field(DOL, "0") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "Slave") - field(ONVL, "1") - field(TWST, "Master") - field(TWVL, "2") - field(THST, "Auto") - field(THVL, "3") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_PtpStatus_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_PtpStatus") - field(ZRST, "Initializing") - field(ZRVL, "0") - field(ONST, "Faulty") - field(ONVL, "1") - field(TWST, "Disabled") - field(TWVL, "2") - field(THST, "Listening") - field(THVL, "3") - field(FRST, "PreMaster") - field(FRVL, "4") - field(FVST, "Master") - field(FVVL, "5") - field(SXST, "Passive") - field(SXVL, "6") - field(SVST, "Uncalibrated") - field(SVVL, "7") - field(EIST, "Slave") - field(EIVL, "8") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_PtpStatus") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_PtpStatus") - field(DOL, "0") - field(ZRST, "Initializing") - field(ZRVL, "0") - field(ONST, "Faulty") - field(ONVL, "1") - field(TWST, "Disabled") - field(TWVL, "2") - field(THST, "Listening") - field(THVL, "3") - field(FRST, "PreMaster") - field(FRVL, "4") - field(FVST, "Master") - field(FVVL, "5") - field(SXST, "Passive") - field(SXVL, "6") - field(SVST, "Uncalibrated") - field(SVVL, "7") - field(EIST, "Slave") - field(EIVL, "8") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_PtpAcqGateTime_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_PtpAcquisitionGateTime") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_PtpAcqGateTime") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_PtpAcquisitionGateTime") - field(DISA, "0") -} - -record(longout, "BL45P-EA-MAP-01:DET:GC_AcquisitionStart") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_C_AcquisitionStart") - field(DISA, "0") -} - -record(longout, "BL45P-EA-MAP-01:DET:GC_AcquisitionStop") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_C_AcquisitionStop") - field(DISA, "0") -} - -record(longout, "BL45P-EA-MAP-01:DET:GC_AcquisitionAbort") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_C_AcquisitionAbort") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_AcquisitionMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_AcquisitionMode") - field(ZRST, "Continuous") - field(ZRVL, "1") - field(ONST, "SingleFrame") - field(ONVL, "2") - field(TWST, "MultiFrame") - field(TWVL, "3") - field(THST, "Recorder") - field(THVL, "4") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_AcquisitionMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_AcquisitionMode") - field(DOL, "1") - field(ZRST, "Continuous") - field(ZRVL, "1") - field(ONST, "SingleFrame") - field(ONVL, "2") - field(TWST, "MultiFrame") - field(TWVL, "3") - field(THST, "Recorder") - field(THVL, "4") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_AcqFrameCount_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_AcquisitionFrameCount") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_AcqFrameCount") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_AcquisitionFrameCount") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_AcqFrameRateAbs_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_AcquisitionFrameRateAbs") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_AcqFrameRateAbs") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_AcquisitionFrameRateAbs") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_AcqFrameRateLimit_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_AcquisitionFrameRateLimit") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_AcqFrameRateLimit") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_AcquisitionFrameRateLimit") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_RecPreEventCount_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_RecorderPreEventCount") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_RecPreEventCount") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_RecorderPreEventCount") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_TriggerSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_TriggerSelector") - field(ZRST, "FrameStart") - field(ZRVL, "0") - field(ONST, "AcquisitionStart") - field(ONVL, "3") - field(TWST, "AcquisitionEnd") - field(TWVL, "4") - field(THST, "AcquisitionRecor") - field(THVL, "6") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_TriggerSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_TriggerSelector") - field(DOL, "0") - field(ZRST, "FrameStart") - field(ZRVL, "0") - field(ONST, "AcquisitionStart") - field(ONVL, "3") - field(TWST, "AcquisitionEnd") - field(TWVL, "4") - field(THST, "AcquisitionRecor") - field(THVL, "6") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_TriggerMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_TriggerMode") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "On") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_TriggerMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_TriggerMode") - field(DOL, "0") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "On") - field(ONVL, "1") - field(DISA, "0") -} - -record(longout, "BL45P-EA-MAP-01:DET:GC_TriggerSoftware") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_C_TriggerSoftware") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_TriggerSource_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_TriggerSource") - field(ZRST, "Freerun") - field(ZRVL, "0") - field(ONST, "Line1") - field(ONVL, "1") - field(TWST, "Line2") - field(TWVL, "2") - field(THST, "Line3") - field(THVL, "3") - field(FRST, "Line4") - field(FRVL, "4") - field(FVST, "FixedRate") - field(FVVL, "5") - field(SXST, "Software") - field(SXVL, "6") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_TriggerSource") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_TriggerSource") - field(DOL, "0") - field(ZRST, "Freerun") - field(ZRVL, "0") - field(ONST, "Line1") - field(ONVL, "1") - field(TWST, "Line2") - field(TWVL, "2") - field(THST, "Line3") - field(THVL, "3") - field(FRST, "Line4") - field(FRVL, "4") - field(FVST, "FixedRate") - field(FVVL, "5") - field(SXST, "Software") - field(SXVL, "6") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_TriggerActivation_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_TriggerActivation") - field(ZRST, "RisingEdge") - field(ZRVL, "0") - field(ONST, "FallingEdge") - field(ONVL, "1") - field(TWST, "AnyEdge") - field(TWVL, "2") - field(THST, "LevelHigh") - field(THVL, "3") - field(FRST, "LevelLow") - field(FRVL, "4") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_TriggerActivation") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_TriggerActivation") - field(DOL, "0") - field(ZRST, "RisingEdge") - field(ZRVL, "0") - field(ONST, "FallingEdge") - field(ONVL, "1") - field(TWST, "AnyEdge") - field(TWVL, "2") - field(THST, "LevelHigh") - field(THVL, "3") - field(FRST, "LevelLow") - field(FRVL, "4") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_TriggerOverlap_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_TriggerOverlap") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "ReadOut") - field(ONVL, "1") - field(TWST, "PreviousFrame") - field(TWVL, "2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_TriggerOverlap") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_TriggerOverlap") - field(DOL, "0") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "ReadOut") - field(ONVL, "1") - field(TWST, "PreviousFrame") - field(TWVL, "2") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_TriggerDelayAbs_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_TriggerDelayAbs") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_TriggerDelayAbs") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_TriggerDelayAbs") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_SensorWidth_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_SensorWidth") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_SensorWidth") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_SensorWidth") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_SensorHeight_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_SensorHeight") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_SensorHeight") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_SensorHeight") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_BinningHorizontal_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_BinningHorizontal") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_BinningHorizontal") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_BinningHorizontal") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_BinningVertical_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_BinningVertical") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_BinningVertical") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_BinningVertical") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_DecHorizontal_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_DecimationHorizontal") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_DecHorizontal") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_DecimationHorizontal") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_DecVertical_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_DecimationVertical") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_DecVertical") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_DecimationVertical") - field(DISA, "0") -} - -record(bi, "BL45P-EA-MAP-01:DET:GC_ReverseX_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_B_ReverseX") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(bo, "BL45P-EA-MAP-01:DET:GC_ReverseX") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_B_ReverseX") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(bi, "BL45P-EA-MAP-01:DET:GC_ReverseY_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_B_ReverseY") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(bo, "BL45P-EA-MAP-01:DET:GC_ReverseY") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_B_ReverseY") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_WidthMax_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_WidthMax") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_WidthMax") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_WidthMax") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_HeightMax_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_HeightMax") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_HeightMax") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_HeightMax") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_PixelFormat_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_PixelFormat") - field(ZRST, "Mono8") - field(ZRVL, "0x01080001") - field(ONST, "Mono10") - field(ONVL, "0x01100003") - field(TWST, "Mono12") - field(TWVL, "0x01100005") - field(THST, "Mono12Packed") - field(THVL, "0x010C0006") - field(FRST, "Mono14") - field(FRVL, "0x01100025") - field(FVST, "BayerGR8") - field(FVVL, "0x01080008") - field(SXST, "BayerRG8") - field(SXVL, "0x01080009") - field(SVST, "BayerGB8") - field(SVVL, "0x0108000A") - field(EIST, "BayerBG8") - field(EIVL, "0x0108000B") - field(NIST, "BayerBG10") - field(NIVL, "0x0110000F") - field(TEST, "BayerGR12") - field(TEVL, "0x01100010") - field(ELST, "BayerRG12") - field(ELVL, "0x01100011") - field(TVST, "BayerGB12") - field(TVVL, "0x01100012") - field(TTST, "BayerGR12Packed") - field(TTVL, "0x010C002A") - field(FTST, "BayerRG12Packed") - field(FTVL, "0x010C002B") - field(FFST, "BayerGB12Packed") - field(FFVL, "0x010C002C") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_PixelFormat") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_PixelFormat") - field(DOL, "0x01080001") - field(ZRST, "Mono8") - field(ZRVL, "0x01080001") - field(ONST, "Mono10") - field(ONVL, "0x01100003") - field(TWST, "Mono12") - field(TWVL, "0x01100005") - field(THST, "Mono12Packed") - field(THVL, "0x010C0006") - field(FRST, "Mono14") - field(FRVL, "0x01100025") - field(FVST, "BayerGR8") - field(FVVL, "0x01080008") - field(SXST, "BayerRG8") - field(SXVL, "0x01080009") - field(SVST, "BayerGB8") - field(SVVL, "0x0108000A") - field(EIST, "BayerBG8") - field(EIVL, "0x0108000B") - field(NIST, "BayerBG10") - field(NIVL, "0x0110000F") - field(TEST, "BayerGR12") - field(TEVL, "0x01100010") - field(ELST, "BayerRG12") - field(ELVL, "0x01100011") - field(TVST, "BayerGB12") - field(TVVL, "0x01100012") - field(TTST, "BayerGR12Packed") - field(TTVL, "0x010C002A") - field(FTST, "BayerRG12Packed") - field(FTVL, "0x010C002B") - field(FFST, "BayerGB12Packed") - field(FFVL, "0x010C002C") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_Width_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_Width") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_Width") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_Width") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_Height_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_Height") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_Height") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_Height") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_OffsetX_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_OffsetX") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_OffsetX") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_OffsetX") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_OffsetY_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_OffsetY") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_OffsetY") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_OffsetY") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_ImageSize_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_ImageSize") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_ImageSize") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_ImageSize") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_Gamma_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_Gamma") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_Gamma") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_Gamma") - field(PREC, "3") - field(DISA, "0") -} - -record(bi, "BL45P-EA-MAP-01:DET:GC_DefectMaskEnable_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_B_DefectMaskEnable") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(bo, "BL45P-EA-MAP-01:DET:GC_DefectMaskEnable") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_B_DefectMaskEnable") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_Hue_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_Hue") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_Hue") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_Hue") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_Saturation_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_Saturation") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_Saturation") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_Saturation") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_Tap1_GainAdjust_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_Tap1_GainAdjust") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_Tap1_GainAdjust") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_Tap1_GainAdjust") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_Tap1_OffsetAdjust_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_Tap1_OffsetAdjust") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_Tap1_OffsetAdjust") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_Tap1_OffsetAdjust") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_Tap2_GainAdjust_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_Tap2_GainAdjust") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_Tap2_GainAdjust") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_Tap2_GainAdjust") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_Tap2_OffsetAdjust_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_Tap2_OffsetAdjust") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_Tap2_OffsetAdjust") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_Tap2_OffsetAdjust") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_Tap3_GainAdjust_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_Tap3_GainAdjust") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_Tap3_GainAdjust") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_Tap3_GainAdjust") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_Tap3_OffsetAdjust_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_Tap3_OffsetAdjust") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_Tap3_OffsetAdjust") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_Tap3_OffsetAdjust") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_Tap4_GainAdjust_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_Tap4_GainAdjust") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_Tap4_GainAdjust") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_Tap4_GainAdjust") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_Tap4_OffsetAdjust_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_Tap4_OffsetAdjust") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_Tap4_OffsetAdjust") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_Tap4_OffsetAdjust") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_ResCurrentGain_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_RestoreCurrentGain") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_ResCurrentGain") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_RestoreCurrentGain") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_RestoreAllGains_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_RestoreAllGains") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_RestoreAllGains") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_RestoreAllGains") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_DSPSubregionLeft_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_DSPSubregionLeft") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_DSPSubregionLeft") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_DSPSubregionLeft") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_DSPSubregionTop_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_DSPSubregionTop") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_DSPSubregionTop") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_DSPSubregionTop") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_DSPSubregionRight_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_DSPSubregionRight") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_DSPSubregionRight") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_DSPSubregionRight") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_DSPSubBottom_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_DSPSubregionBottom") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_DSPSubBottom") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_DSPSubregionBottom") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_ExposureAuto_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_ExposureAuto") - field(ZRST, "Off") - field(ZRVL, "1") - field(ONST, "Once") - field(ONVL, "3") - field(TWST, "Continuous") - field(TWVL, "2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_ExposureAuto") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_ExposureAuto") - field(DOL, "1") - field(ZRST, "Off") - field(ZRVL, "1") - field(ONST, "Once") - field(ONVL, "3") - field(TWST, "Continuous") - field(TWVL, "2") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_ExposureMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_ExposureMode") - field(ZRST, "Timed") - field(ZRVL, "0") - field(ONST, "TriggerWidth") - field(ONVL, "1") - field(TWST, "PieceWiseLinearH") - field(TWVL, "2") - field(THST, "InterleavedHDR") - field(THVL, "3") - field(FRST, "BracketHDR") - field(FRVL, "4") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_ExposureMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_ExposureMode") - field(DOL, "0") - field(ZRST, "Timed") - field(ZRVL, "0") - field(ONST, "TriggerWidth") - field(ONVL, "1") - field(TWST, "PieceWiseLinearH") - field(TWVL, "2") - field(THST, "InterleavedHDR") - field(THVL, "3") - field(FRST, "BracketHDR") - field(FRVL, "4") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_ExposureTimeAbs_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_ExposureTimeAbs") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_ExposureTimeAbs") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_ExposureTimeAbs") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_CmvExpTimePWL1_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_CmvExposureTimePWL1") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_CmvExpTimePWL1") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_CmvExposureTimePWL1") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_CmvExpTimePWL2_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_CmvExposureTimePWL2") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_CmvExpTimePWL2") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_CmvExposureTimePWL2") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_CmvPWLThreshold1_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_CmvPWLThreshold1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_CmvPWLThreshold1") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_CmvPWLThreshold1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_CmvPWLThreshold2_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_CmvPWLThreshold2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_CmvPWLThreshold2") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_CmvPWLThreshold2") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_ExpTimeIncrement_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_ExposureTimeIncrement") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_ExpTimeIncrement") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_ExposureTimeIncrement") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_ExpAutoTarget_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_ExposureAutoTarget") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_ExpAutoTarget") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_ExposureAutoTarget") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_ExposureAutoAlg_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_ExposureAutoAlg") - field(ZRST, "Mean") - field(ZRVL, "0") - field(ONST, "FitRange") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_ExposureAutoAlg") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_ExposureAutoAlg") - field(DOL, "0") - field(ZRST, "Mean") - field(ZRVL, "0") - field(ONST, "FitRange") - field(ONVL, "1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_ExposureAutoMin_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_ExposureAutoMin") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_ExposureAutoMin") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_ExposureAutoMin") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_ExposureAutoMax_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_ExposureAutoMax") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_ExposureAutoMax") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_ExposureAutoMax") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_ExposureAutoRate_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_ExposureAutoRate") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_ExposureAutoRate") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_ExposureAutoRate") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_ExpAutoOutliers_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_ExposureAutoOutliers") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_ExpAutoOutliers") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_ExposureAutoOutliers") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_ExpAutoAdjustTol_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_ExposureAutoAdjustTol") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_ExpAutoAdjustTol") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_ExposureAutoAdjustTol") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_GainSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_GainSelector") - field(ZRST, "All") - field(ZRVL, "0") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_GainSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_GainSelector") - field(DOL, "0") - field(ZRST, "All") - field(ZRVL, "0") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_Gain_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_Gain") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_Gain") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_Gain") - field(PREC, "3") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_GainAuto_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_GainAuto") - field(ZRST, "Off") - field(ZRVL, "1") - field(ONST, "Once") - field(ONVL, "3") - field(TWST, "Continuous") - field(TWVL, "2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_GainAuto") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_GainAuto") - field(DOL, "1") - field(ZRST, "Off") - field(ZRVL, "1") - field(ONST, "Once") - field(ONVL, "3") - field(TWST, "Continuous") - field(TWVL, "2") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_GainAutoTarget_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_GainAutoTarget") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_GainAutoTarget") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_GainAutoTarget") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_GainAutoMin_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_GainAutoMin") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_GainAutoMin") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_GainAutoMin") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_GainAutoMax_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_GainAutoMax") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_GainAutoMax") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_GainAutoMax") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_GainAutoRate_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_GainAutoRate") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_GainAutoRate") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_GainAutoRate") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_GainAutoOutliers_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_GainAutoOutliers") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_GainAutoOutliers") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_GainAutoOutliers") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_GainAutoAdjustTol_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_GainAutoAdjustTol") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_GainAutoAdjustTol") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_GainAutoAdjustTol") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_BlaLevelSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_BlackLevelSelector") - field(ZRST, "All") - field(ZRVL, "0") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_BlaLevelSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_BlackLevelSelector") - field(DOL, "0") - field(ZRST, "All") - field(ZRVL, "0") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_BlackLevel_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_BlackLevel") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_BlackLevel") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_BlackLevel") - field(PREC, "3") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_BalRatioSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_BalanceRatioSelector") - field(ZRST, "Red") - field(ZRVL, "0") - field(ONST, "Blue") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_BalRatioSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_BalanceRatioSelector") - field(DOL, "0") - field(ZRST, "Red") - field(ZRVL, "0") - field(ONST, "Blue") - field(ONVL, "1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_BalanceRatioAbs_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_BalanceRatioAbs") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_BalanceRatioAbs") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_BalanceRatioAbs") - field(PREC, "3") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_BalanceWhiteAuto_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_BalanceWhiteAuto") - field(ZRST, "Off") - field(ZRVL, "1") - field(ONST, "Once") - field(ONVL, "3") - field(TWST, "Continuous") - field(TWVL, "2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_BalanceWhiteAuto") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_BalanceWhiteAuto") - field(DOL, "1") - field(ZRST, "Off") - field(ZRVL, "1") - field(ONST, "Once") - field(ONVL, "3") - field(TWST, "Continuous") - field(TWVL, "2") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_BalWhiteAutoRate_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_BalanceWhiteAutoRate") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_BalWhiteAutoRate") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_BalanceWhiteAutoRate") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_BalWhiAutAdjTol_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_BalanceWhiteAutoAdjustTol") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_BalWhiAutAdjTol") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_BalanceWhiteAutoAdjustTol") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_IrisMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_IrisMode") - field(ZRST, "Disabled") - field(ZRVL, "0") - field(ONST, "Video") - field(ONVL, "1") - field(TWST, "VideoOpen") - field(TWVL, "2") - field(THST, "VideoClose") - field(THVL, "3") - field(FRST, "PIrisAuto") - field(FRVL, "4") - field(FVST, "PIrisManual") - field(FVVL, "5") - field(SXST, "DCIris") - field(SXVL, "6") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_IrisMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_IrisMode") - field(DOL, "0") - field(ZRST, "Disabled") - field(ZRVL, "0") - field(ONST, "Video") - field(ONVL, "1") - field(TWST, "VideoOpen") - field(TWVL, "2") - field(THST, "VideoClose") - field(THVL, "3") - field(FRST, "PIrisAuto") - field(FRVL, "4") - field(FVST, "PIrisManual") - field(FVVL, "5") - field(SXST, "DCIris") - field(SXVL, "6") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_IrisAutoTarget_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_IrisAutoTarget") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_IrisAutoTarget") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_IrisAutoTarget") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_IrisVideoLevel_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_IrisVideoLevel") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_IrisVideoLevel") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_IrisVideoLevel") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_IrisVideoLevelMin_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_IrisVideoLevelMin") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_IrisVideoLevelMin") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_IrisVideoLevelMin") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_IrisVideoLevelMax_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_IrisVideoLevelMax") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_IrisVideoLevelMax") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_IrisVideoLevelMax") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_LenPIrisFrequency_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_LensPIrisFrequency") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_LenPIrisFrequency") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_LensPIrisFrequency") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_LensPIrisNumSteps_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_LensPIrisNumSteps") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_LensPIrisNumSteps") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_LensPIrisNumSteps") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_LensPIrisPosition_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_LensPIrisPosition") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_LensPIrisPosition") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_LensPIrisPosition") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_LenDCDriStrength_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_LensDCDriveStrength") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_LenDCDriStrength") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_LensDCDriveStrength") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_DefMasColEnable_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_DefectMaskColumnEnable") - field(ZRST, "Disabled") - field(ZRVL, "0") - field(ONST, "Enabled") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_DefMasColEnable") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_DefectMaskColumnEnable") - field(DOL, "0") - field(ZRST, "Disabled") - field(ZRVL, "0") - field(ONST, "Enabled") - field(ONVL, "1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_VsubValue_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_VsubValue") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_VsubValue") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_VsubValue") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_ColTraSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_ColorTransformationSelector") - field(ZRST, "RGBtoRGB") - field(ZRVL, "0") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_ColTraSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_ColorTransformationSelector") - field(DOL, "0") - field(ZRST, "RGBtoRGB") - field(ZRVL, "0") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_ColTraMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_ColorTransformationMode") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "Manual") - field(ONVL, "1") - field(TWST, "Temp6500K") - field(TWVL, "2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_ColTraMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_ColorTransformationMode") - field(DOL, "0") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "Manual") - field(ONVL, "1") - field(TWST, "Temp6500K") - field(TWVL, "2") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_ColTraValSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_ColorTransformationValueSelector") - field(ZRST, "Gain00") - field(ZRVL, "0") - field(ONST, "Gain01") - field(ONVL, "1") - field(TWST, "Gain02") - field(TWVL, "2") - field(THST, "Gain10") - field(THVL, "3") - field(FRST, "Gain11") - field(FRVL, "4") - field(FVST, "Gain12") - field(FVVL, "5") - field(SXST, "Gain20") - field(SXVL, "6") - field(SVST, "Gain21") - field(SVVL, "7") - field(EIST, "Gain22") - field(EIVL, "8") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_ColTraValSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_ColorTransformationValueSelector") - field(DOL, "0") - field(ZRST, "Gain00") - field(ZRVL, "0") - field(ONST, "Gain01") - field(ONVL, "1") - field(TWST, "Gain02") - field(TWVL, "2") - field(THST, "Gain10") - field(THVL, "3") - field(FRST, "Gain11") - field(FRVL, "4") - field(FVST, "Gain12") - field(FVVL, "5") - field(SXST, "Gain20") - field(SXVL, "6") - field(SVST, "Gain21") - field(SVVL, "7") - field(EIST, "Gain22") - field(EIVL, "8") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_ColTraValue_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GC_D_ColorTransformationValue") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_ColTraValue") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GC_D_ColorTransformationValue") - field(PREC, "3") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_LUTSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_LUTSelector") - field(ZRST, "LUT1") - field(ZRVL, "0") - field(ONST, "LUT2") - field(ONVL, "1") - field(TWST, "LUT3") - field(TWVL, "2") - field(THST, "LUT4") - field(THVL, "3") - field(FRST, "LUT5") - field(FRVL, "4") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_LUTSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_LUTSelector") - field(DOL, "0") - field(ZRST, "LUT1") - field(ZRVL, "0") - field(ONST, "LUT2") - field(ONVL, "1") - field(TWST, "LUT3") - field(TWVL, "2") - field(THST, "LUT4") - field(THVL, "3") - field(FRST, "LUT5") - field(FRVL, "4") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_LUTMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_LUTMode") - field(ZRST, "Luminance") - field(ZRVL, "0") - field(ONST, "Red") - field(ONVL, "1") - field(TWST, "Green") - field(TWVL, "2") - field(THST, "Blue") - field(THVL, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_LUTMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_LUTMode") - field(DOL, "0") - field(ZRST, "Luminance") - field(ZRVL, "0") - field(ONST, "Red") - field(ONVL, "1") - field(TWST, "Green") - field(TWVL, "2") - field(THST, "Blue") - field(THVL, "3") - field(DISA, "0") -} - -record(bi, "BL45P-EA-MAP-01:DET:GC_LUTEnable_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_B_LUTEnable") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(bo, "BL45P-EA-MAP-01:DET:GC_LUTEnable") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_B_LUTEnable") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_LUTIndex_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_LUTIndex") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_LUTIndex") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_LUTIndex") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_LUTValue_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_LUTValue") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_LUTValue") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_LUTValue") - field(DISA, "0") -} - -record(longout, "BL45P-EA-MAP-01:DET:GC_LUTLoadAll") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_C_LUTLoadAll") - field(DISA, "0") -} - -record(longout, "BL45P-EA-MAP-01:DET:GC_LUTSaveAll") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_C_LUTSaveAll") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_LUTBitDepthIn_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_LUTBitDepthIn") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_LUTBitDepthIn") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_LUTBitDepthIn") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_LUTBitDepthOut_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_LUTBitDepthOut") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_LUTBitDepthOut") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_LUTBitDepthOut") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_LUTAddress_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_LUTAddress") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_LUTAddress") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_LUTAddress") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_LUTSizeBytes_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_LUTSizeBytes") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_LUTSizeBytes") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_LUTSizeBytes") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_SyncInLevels_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_SyncInLevels") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_SyncInLevels") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_SyncInLevels") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_SyncInSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_SyncInSelector") - field(ZRST, "SyncIn1") - field(ZRVL, "0") - field(ONST, "SyncIn2") - field(ONVL, "1") - field(TWST, "SyncIn3") - field(TWVL, "2") - field(THST, "SyncIn4") - field(THVL, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_SyncInSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_SyncInSelector") - field(DOL, "0") - field(ZRST, "SyncIn1") - field(ZRVL, "0") - field(ONST, "SyncIn2") - field(ONVL, "1") - field(TWST, "SyncIn3") - field(TWVL, "2") - field(THST, "SyncIn4") - field(THVL, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_SynInGlitchFilter_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_SyncInGlitchFilter") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_SynInGlitchFilter") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_SyncInGlitchFilter") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_SyncOutLevels_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_SyncOutLevels") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_SyncOutLevels") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_SyncOutLevels") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_SyncOutSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_SyncOutSelector") - field(ZRST, "SyncOut1") - field(ZRVL, "0") - field(ONST, "SyncOut2") - field(ONVL, "1") - field(TWST, "SyncOut3") - field(TWVL, "2") - field(THST, "SyncOut4") - field(THVL, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_SyncOutSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_SyncOutSelector") - field(DOL, "0") - field(ZRST, "SyncOut1") - field(ZRVL, "0") - field(ONST, "SyncOut2") - field(ONVL, "1") - field(TWST, "SyncOut3") - field(TWVL, "2") - field(THST, "SyncOut4") - field(THVL, "3") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_SyncOutSource_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_SyncOutSource") - field(ZRST, "GPO") - field(ZRVL, "0") - field(ONST, "AcquisitionTrigg") - field(ONVL, "1") - field(TWST, "FrameTriggerRead") - field(TWVL, "2") - field(THST, "Exposing") - field(THVL, "4") - field(FRST, "FrameReadout") - field(FRVL, "5") - field(FVST, "Imaging") - field(FVVL, "6") - field(SXST, "Acquiring") - field(SXVL, "7") - field(SVST, "LineIn1") - field(SVVL, "8") - field(EIST, "LineIn2") - field(EIVL, "9") - field(NIST, "Strobe1") - field(NIVL, "12") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_SyncOutSource") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_SyncOutSource") - field(DOL, "0") - field(ZRST, "GPO") - field(ZRVL, "0") - field(ONST, "AcquisitionTrigg") - field(ONVL, "1") - field(TWST, "FrameTriggerRead") - field(TWVL, "2") - field(THST, "Exposing") - field(THVL, "4") - field(FRST, "FrameReadout") - field(FRVL, "5") - field(FVST, "Imaging") - field(FVVL, "6") - field(SXST, "Acquiring") - field(SXVL, "7") - field(SVST, "LineIn1") - field(SVVL, "8") - field(EIST, "LineIn2") - field(EIVL, "9") - field(NIST, "Strobe1") - field(NIVL, "12") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_SyncOutPolarity_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_SyncOutPolarity") - field(ZRST, "Normal") - field(ZRVL, "0") - field(ONST, "Invert") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_SyncOutPolarity") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_SyncOutPolarity") - field(DOL, "0") - field(ZRST, "Normal") - field(ZRVL, "0") - field(ONST, "Invert") - field(ONVL, "1") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_StrobeSource_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_StrobeSource") - field(ZRST, "AcquisitionTrigg") - field(ZRVL, "1") - field(ONST, "FrameTriggerRead") - field(ONVL, "2") - field(TWST, "FrameTrigger") - field(TWVL, "3") - field(THST, "Exposing") - field(THVL, "4") - field(FRST, "FrameReadout") - field(FRVL, "5") - field(FVST, "Acquiring") - field(FVVL, "7") - field(SXST, "LineIn1") - field(SXVL, "8") - field(SVST, "LineIn2") - field(SVVL, "9") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_StrobeSource") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_StrobeSource") - field(DOL, "1") - field(ZRST, "AcquisitionTrigg") - field(ZRVL, "1") - field(ONST, "FrameTriggerRead") - field(ONVL, "2") - field(TWST, "FrameTrigger") - field(TWVL, "3") - field(THST, "Exposing") - field(THVL, "4") - field(FRST, "FrameReadout") - field(FRVL, "5") - field(FVST, "Acquiring") - field(FVVL, "7") - field(SXST, "LineIn1") - field(SXVL, "8") - field(SVST, "LineIn2") - field(SVVL, "9") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_StrDurationMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_StrobeDurationMode") - field(ZRST, "Source") - field(ZRVL, "0") - field(ONST, "Controlled") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_StrDurationMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_StrobeDurationMode") - field(DOL, "0") - field(ZRST, "Source") - field(ZRVL, "0") - field(ONST, "Controlled") - field(ONVL, "1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_StrobeDelay_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_StrobeDelay") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_StrobeDelay") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_StrobeDelay") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_StrobeDuration_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_StrobeDuration") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_StrobeDuration") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_StrobeDuration") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_EventSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_EventSelector") - field(ZRST, "AcquisitionStart") - field(ZRVL, "40000") - field(ONST, "AcquisitionEnd") - field(ONVL, "40001") - field(TWST, "FrameTrigger") - field(TWVL, "40002") - field(THST, "ExposureEnd") - field(THVL, "40003") - field(FRST, "AcquisitionRecor") - field(FRVL, "40004") - field(FVST, "PtpSyncLost") - field(FVVL, "40005") - field(SXST, "PtpSyncLocked") - field(SXVL, "40006") - field(SVST, "Line1RisingEdge") - field(SVVL, "40010") - field(EIST, "Line1FallingEdge") - field(EIVL, "40011") - field(NIST, "Line2RisingEdge") - field(NIVL, "40012") - field(TEST, "Line2FallingEdge") - field(TEVL, "40013") - field(ELST, "Line3RisingEdge") - field(ELVL, "40014") - field(TVST, "Line3FallingEdge") - field(TVVL, "40015") - field(TTST, "Line4RisingEdge") - field(TTVL, "40016") - field(FTST, "Line4FallingEdge") - field(FTVL, "40017") - field(FFST, "FrameTriggerRead") - field(FFVL, "40018") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_EventSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_EventSelector") - field(DOL, "40000") - field(ZRST, "AcquisitionStart") - field(ZRVL, "40000") - field(ONST, "AcquisitionEnd") - field(ONVL, "40001") - field(TWST, "FrameTrigger") - field(TWVL, "40002") - field(THST, "ExposureEnd") - field(THVL, "40003") - field(FRST, "AcquisitionRecor") - field(FRVL, "40004") - field(FVST, "PtpSyncLost") - field(FVVL, "40005") - field(SXST, "PtpSyncLocked") - field(SXVL, "40006") - field(SVST, "Line1RisingEdge") - field(SVVL, "40010") - field(EIST, "Line1FallingEdge") - field(EIVL, "40011") - field(NIST, "Line2RisingEdge") - field(NIVL, "40012") - field(TEST, "Line2FallingEdge") - field(TEVL, "40013") - field(ELST, "Line3RisingEdge") - field(ELVL, "40014") - field(TVST, "Line3FallingEdge") - field(TVVL, "40015") - field(TTST, "Line4RisingEdge") - field(TTVL, "40016") - field(FTST, "Line4FallingEdge") - field(FTVL, "40017") - field(FFST, "FrameTriggerRead") - field(FFVL, "40018") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_EventNotification_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_EventNotification") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "On") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_EventNotification") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_EventNotification") - field(DOL, "0") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "On") - field(ONVL, "1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EventsEnable1_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventsEnable1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EventsEnable1") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventsEnable1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EveAcqStart_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventAcquisitionStart") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EveAcqStart") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventAcquisitionStart") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EveAcquisitionEnd_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventAcquisitionEnd") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EveAcquisitionEnd") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventAcquisitionEnd") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EventFrameTrigger_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventFrameTrigger") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EventFrameTrigger") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventFrameTrigger") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EventExposureEnd_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventExposureEnd") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EventExposureEnd") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventExposureEnd") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EveAcqRecTrigger_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventAcquisitionRecordTrigger") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EveAcqRecTrigger") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventAcquisitionRecordTrigger") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EveLinRisingEdge_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventLine1RisingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EveLinRisingEdge") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventLine1RisingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EveLinFallingEdge_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventLine1FallingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EveLinFallingEdge") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventLine1FallingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EveLinRisingEdg0_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventLine2RisingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EveLinRisingEdg0") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventLine2RisingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EveLinFallingEdg0_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventLine2FallingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EveLinFallingEdg0") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventLine2FallingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EveLinRisingEdg1_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventLine3RisingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EveLinRisingEdg1") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventLine3RisingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EveLinFallingEdg1_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventLine3FallingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EveLinFallingEdg1") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventLine3FallingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EveLinRisingEdg2_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventLine4RisingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EveLinRisingEdg2") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventLine4RisingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EveLinFallingEdg2_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventLine4FallingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EveLinFallingEdg2") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventLine4FallingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EveFraTriReady_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventFrameTriggerReady") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EveFraTriReady") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventFrameTriggerReady") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EventPtpSyncLost_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventPtpSyncLost") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EventPtpSyncLost") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventPtpSyncLost") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EvePtpSyncLocked_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventPtpSyncLocked") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EvePtpSyncLocked") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventPtpSyncLocked") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EventOverflow_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventOverflow") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EventOverflow") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventOverflow") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_EventError_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_EventError") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_EventError") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_EventError") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_UserSetSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_UserSetSelector") - field(ZRST, "Default") - field(ZRVL, "0") - field(ONST, "UserSet1") - field(ONVL, "1") - field(TWST, "UserSet2") - field(TWVL, "2") - field(THST, "UserSet3") - field(THVL, "3") - field(FRST, "UserSet4") - field(FRVL, "4") - field(FVST, "UserSet5") - field(FVVL, "5") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_UserSetSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_UserSetSelector") - field(DOL, "0") - field(ZRST, "Default") - field(ZRVL, "0") - field(ONST, "UserSet1") - field(ONVL, "1") - field(TWST, "UserSet2") - field(TWVL, "2") - field(THST, "UserSet3") - field(THVL, "3") - field(FRST, "UserSet4") - field(FRVL, "4") - field(FVST, "UserSet5") - field(FVVL, "5") - field(DISA, "0") -} - -record(longout, "BL45P-EA-MAP-01:DET:GC_UserSetLoad") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_C_UserSetLoad") - field(DISA, "0") -} - -record(longout, "BL45P-EA-MAP-01:DET:GC_UserSetSave") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_C_UserSetSave") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_UseSetDefSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_UserSetDefaultSelector") - field(ZRST, "Default") - field(ZRVL, "0") - field(ONST, "UserSet1") - field(ONVL, "1") - field(TWST, "UserSet2") - field(TWVL, "2") - field(THST, "UserSet3") - field(THVL, "3") - field(FRST, "UserSet4") - field(FRVL, "4") - field(FVST, "UserSet5") - field(FVVL, "5") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_UseSetDefSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_UserSetDefaultSelector") - field(DOL, "0") - field(ZRST, "Default") - field(ZRVL, "0") - field(ONST, "UserSet1") - field(ONVL, "1") - field(TWST, "UserSet2") - field(TWVL, "2") - field(THST, "UserSet3") - field(THVL, "3") - field(FRST, "UserSet4") - field(FRVL, "4") - field(FVST, "UserSet5") - field(FVVL, "5") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_PvDumTriSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_PvDummyTriggerSelector") - field(ZRST, "FrameStart") - field(ZRVL, "0") - field(ONST, "AcquisitionStart") - field(ONVL, "3") - field(TWST, "AcquisitionEnd") - field(TWVL, "4") - field(THST, "AcquisitionRecor") - field(THVL, "6") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_PvDumTriSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_PvDummyTriggerSelector") - field(DOL, "0") - field(ZRST, "FrameStart") - field(ZRVL, "0") - field(ONST, "AcquisitionStart") - field(ONVL, "3") - field(TWST, "AcquisitionEnd") - field(TWVL, "4") - field(THST, "AcquisitionRecor") - field(THVL, "6") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_PvDumFraStaTriMod_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_PvDummyFrameStartTriggerMode") - field(ZRST, "Freerun") - field(ZRVL, "2147483648") - field(ONST, "SyncIn1") - field(ONVL, "2147483649") - field(TWST, "SyncIn2") - field(TWVL, "2147483650") - field(THST, "SyncIn3") - field(THVL, "2147483651") - field(FRST, "SyncIn4") - field(FRVL, "2147483652") - field(FVST, "FixedRate") - field(FVVL, "2147483653") - field(SXST, "Software") - field(SXVL, "2147483654") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_PvDumFraStaTriMod") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_PvDummyFrameStartTriggerMode") - field(DOL, "2147483648") - field(ZRST, "Freerun") - field(ZRVL, "2147483648") - field(ONST, "SyncIn1") - field(ONVL, "2147483649") - field(TWST, "SyncIn2") - field(TWVL, "2147483650") - field(THST, "SyncIn3") - field(THVL, "2147483651") - field(FRST, "SyncIn4") - field(FRVL, "2147483652") - field(FVST, "FixedRate") - field(FVVL, "2147483653") - field(SXST, "Software") - field(SXVL, "2147483654") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_PvDumTriggerMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_PvDummyTriggerMode") - field(ZRST, "Disabled") - field(ZRVL, "0") - field(ONST, "SyncIn1") - field(ONVL, "2147483649") - field(TWST, "SyncIn2") - field(TWVL, "2147483650") - field(THST, "SyncIn3") - field(THVL, "2147483651") - field(FRST, "SyncIn4") - field(FRVL, "2147483652") - field(FVST, "FixedRate") - field(FVVL, "2147483653") - field(SXST, "Software") - field(SXVL, "2147483654") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_PvDumTriggerMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_PvDummyTriggerMode") - field(DOL, "0") - field(ZRST, "Disabled") - field(ZRVL, "0") - field(ONST, "SyncIn1") - field(ONVL, "2147483649") - field(TWST, "SyncIn2") - field(TWVL, "2147483650") - field(THST, "SyncIn3") - field(THVL, "2147483651") - field(FRST, "SyncIn4") - field(FRVL, "2147483652") - field(FVST, "FixedRate") - field(FVVL, "2147483653") - field(SXST, "Software") - field(SXVL, "2147483654") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_FraStaTriDelay_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_FrameStartTriggerDelay") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_FraStaTriDelay") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_FrameStartTriggerDelay") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GC_ExposureModeValue_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)GC_E_ExposureModeValue") - field(ZRST, "Timed") - field(ZRVL, "1") - field(ONST, "AutoOnce") - field(ONVL, "3") - field(TWST, "Auto") - field(TWVL, "2") - field(THST, "TriggerWidth") - field(THVL, "5") - field(FRST, "PieceWiseLinearH") - field(FRVL, "9") - field(FVST, "InterleavedHDR") - field(FVVL, "13") - field(SXST, "BracketHDR") - field(SXVL, "17") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:GC_ExposureModeValue") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)GC_E_ExposureModeValue") - field(DOL, "1") - field(ZRST, "Timed") - field(ZRVL, "1") - field(ONST, "AutoOnce") - field(ONVL, "3") - field(TWST, "Auto") - field(TWVL, "2") - field(THST, "TriggerWidth") - field(THVL, "5") - field(FRST, "PieceWiseLinearH") - field(FRVL, "9") - field(FVST, "InterleavedHDR") - field(FVVL, "13") - field(SXST, "BracketHDR") - field(SXVL, "17") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_ExposureValue_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_ExposureValue") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_ExposureValue") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_ExposureValue") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_CmvExpValuePWL1_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_CmvExposureValuePWL1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_CmvExpValuePWL1") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_CmvExposureValuePWL1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_CmvExpValuePWL2_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_CmvExposureValuePWL2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_CmvExpValuePWL2") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_CmvExposureValuePWL2") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_TimeStampValueLo_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_TimeStampValueLo") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_TimeStampValueLo") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_TimeStampValueLo") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_TimeStampValueHi_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_TimeStampValueHi") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_TimeStampValueHi") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_TimeStampValueHi") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_WhitebalValueRed_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_WhitebalValueRed") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_WhitebalValueRed") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_WhitebalValueRed") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_WhitebalValueBlue_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_WhitebalValueBlue") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_WhitebalValueBlue") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_WhitebalValueBlue") - field(DISA, "0") -} - -record(stringin, "BL45P-EA-MAP-01:DET:GC_ModelName_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)GC_S_ModelName") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_PvGainRaw_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_PvGainRaw") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_PvGainRaw") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_PvGainRaw") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_PvGainAutoMin_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_PvGainAutoMin") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_PvGainAutoMin") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_PvGainAutoMin") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_PvGainAutoMax_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_PvGainAutoMax") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_PvGainAutoMax") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_PvGainAutoMax") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_OffsetValue_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_OffsetValue") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_OffsetValue") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_OffsetValue") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_PtpAcqGateTimeHi_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_PtpAcquisitionGateTimeHi") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_PtpAcqGateTimeHi") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_PtpAcquisitionGateTimeHi") - field(DISA, "0") -} - -record(ai, "BL45P-EA-MAP-01:DET:GC_PtpAcqGateTimeLo_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DET.DET,0,1)GC_I_PtpAcquisitionGateTimeLo") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-MAP-01:DET:GC_PtpAcqGateTimeLo") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DET.DET,0,1)GC_I_PtpAcquisitionGateTimeLo") - field(DISA, "0") -} - -# Database for the records specific to the ADAravis driver -# Macros: -#% macro, P, Device Prefix -#% macro, R, Device Suffix -#% macro, PORT, Asyn Port name -#% macro, TIMEOUT, Timeout, default 1 -#% macro, ADDR, Asyn Port address, default 0 - -# This associates a BOY screen with the template -# % gui, DET.DET, boydetail, aravisApp_opi/aravis_detail.opi, P=BL45P-EA-MAP-01, R=:DET:, DESC=Camera -# % gui, DET.DET, boyembed, aravisApp_opi/aravis_embed_box.opi, P=BL45P-EA-MAP-01, R=:DET:, DESC=Camera -# % gui, DET.DET, boyembed, aravisApp_opi/aravis_embed.opi, P=BL45P-EA-MAP-01, R=:DET:, DESC=Camera - -## ADGenICam.template -## Template database file to control some features of ADGenICam. -## -## Note: this file contains only the records that are not handled by the camera-specific GenICam autogenerated database - -#=================================================================# -# Template file: ADBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -# Using SCANRATE:The ImageJ EPICS_AD_Viewer plugin monitors ArrayCounter_RBV to decide -# when there is a new image to display. That means that it will not display faster than -# the SCANRATE you select. - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:DET:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:DET:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:DET:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:DET:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:DET:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:DET:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:DET:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:DET:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:DET:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:DET:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:DET:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:DET:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:DET:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:DET:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:DET:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:DET:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:DET:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:DET:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:DET:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:DET:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:DET:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:DET:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:DET:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.DET,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:DET:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.DET,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:DET:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:DET:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:DET:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:DET:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:DET:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:DET:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:DET:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:DET:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:DET:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:DET:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:DET:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:DET:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:DET:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:DET:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:DET:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:DET:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:DET:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:DET:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:DET:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:DET:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:DET:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:DET:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.DET,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:DET:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.DET,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:DET:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:DET:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:DET:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:DET:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:DET:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:DET:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:DET:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:DET:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:DET:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:DET:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:DET:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:DET:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:DET:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:DET:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)MAX_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:DET:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)MAX_SIZE_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the detector readout # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-MAP-01:DET:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)BIN_X") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:DET:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)BIN_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:DET:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)BIN_Y") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:DET:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)BIN_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:DET:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)MIN_X") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:DET:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:DET:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)MIN_Y") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:DET:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:DET:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)SIZE_X") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:DET:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:DET:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)SIZE_Y") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:DET:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:DET:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)REVERSE_X") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:DET:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)REVERSE_X") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:DET:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)REVERSE_Y") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:DET:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)REVERSE_Y") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the acquisition time and # -# period # -################################################################### -record(ao, "BL45P-EA-MAP-01:DET:AcquireTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)ACQ_TIME") - field(PREC, "3") - field(VAL, "1.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:DET:AcquireTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)ACQ_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:DET:AcquirePeriod") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)ACQ_PERIOD") - field(PREC, "3") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:DET:AcquirePeriod_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)ACQ_PERIOD") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:DET:TimeRemaining_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)TIME_REMAINING") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the gain # -################################################################### -record(ao, "BL45P-EA-MAP-01:DET:Gain") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)GAIN") - field(VAL, "1.0") - field(PREC, "3") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:DET:Gain_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)GAIN") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the frame type # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:DET:FrameType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)FRAME_TYPE") - field(ZRST, "Normal") - field(ZRVL, "0") - field(ONST, "Background") - field(ONVL, "1") - field(TWST, "FlatField") - field(TWVL, "2") - field(THST, "DblCorrelation") - field(THVL, "3") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:FrameType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)FRAME_TYPE") - field(ZRST, "Normal") - field(ZRVL, "0") - field(ONST, "Background") - field(ONVL, "1") - field(TWST, "FlatField") - field(TWVL, "2") - field(THST, "DblCorrelation") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the acquisition mode # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:DET:ImageMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)IMAGE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Multiple") - field(ONVL, "1") - field(TWST, "Continuous") - field(TWVL, "2") - field(VAL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:ImageMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)IMAGE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Multiple") - field(ONVL, "1") - field(TWST, "Continuous") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the trigger mode # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:DET:TriggerMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)TRIGGER_MODE") - field(ZRST, "Internal") - field(ZRVL, "0") - field(ONST, "External") - field(ONVL, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:TriggerMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)TRIGGER_MODE") - field(ZRST, "Internal") - field(ZRVL, "0") - field(ONST, "External") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the number of exposures and # -# number of images # -################################################################### -record(longout, "BL45P-EA-MAP-01:DET:NumExposures") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)NEXPOSURES") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:DET:NumExposures_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)NEXPOSURES") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:DET:NumExposuresCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)NEXPOSURES_COUNTER") - field(SCAN, "I/O Intr") -} -record(longout, "BL45P-EA-MAP-01:DET:NumImages") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)NIMAGES") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:DET:NumImages_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)NIMAGES") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:DET:NumImagesCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)NIMAGES_COUNTER") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are for the detector state # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:DET:DetectorState_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)STATUS") - field(ZRST, "Idle") - field(ZRVL, "0") - field(ZRSV, "NO_ALARM") - field(ONST, "Acquire") - field(ONVL, "1") - field(ONSV, "NO_ALARM") - field(TWST, "Readout") - field(TWVL, "2") - field(TWSV, "NO_ALARM") - field(THST, "Correct") - field(THVL, "3") - field(THSV, "NO_ALARM") - field(FRST, "Saving") - field(FRVL, "4") - field(FRSV, "NO_ALARM") - field(FVST, "Aborting") - field(FVVL, "5") - field(FVSV, "MINOR") - field(SXST, "Error") - field(SXVL, "6") - field(SXSV, "MAJOR") - field(SVST, "Waiting") - field(SVVL, "7") - field(SVSV, "NO_ALARM") - field(EIST, "Initializing") - field(EIVL, "8") - field(EISV, "NO_ALARM") - field(NIST, "Disconnected") - field(NIVL, "9") - field(NISV, "INVALID") - field(TEST, "Aborted") - field(TEVL, "10") - field(TESV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide status information # -################################################################### - -# Status message. -record(waveform, "BL45P-EA-MAP-01:DET:StatusMessage_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)STATUS_MESSAGE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:DET:StringToServer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)STRING_TO_SERVER") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:DET:StringFromServer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.DET,0,1)STRING_FROM_SERVER") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -################################################################@### -# This record can be used to force a read of the detector status # -#################################################################### -record(bo,"BL45P-EA-MAP-01:DET:ReadStatus") { - field(DTYP,"asynInt32") - field(OUT, "@asyn(DET.DET,0,1)READ_STATUS") - field(VAL, "1") - field(SCAN,"Passive") - info(autosaveFields, "SCAN") -} - -################################################################### -# These records control the shutter # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:DET:ShutterMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)SHUTTER_MODE") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "EPICS PV") - field(ONVL, "1") - field(TWST, "Detector output") - field(TWVL, "2") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:ShutterMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)SHUTTER_MODE") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "EPICS PV") - field(ONVL, "1") - field(TWST, "Camera output") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:DET:ShutterControl") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)SHUTTER_CONTROL") - field(ZNAM, "Close") - field(ONAM, "Open") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:DET:ShutterControl_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)SHUTTER_CONTROL") - field(ZNAM, "Close") - field(ONAM, "Open") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-MAP-01:DET:ShutterStatus_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)SHUTTER_STATUS") - field(ZNAM, "Closed") - field(ZSV, "NO_ALARM") - field(ONAM, "Open") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:DET:ShutterOpenDelay") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)SHUTTER_OPEN_DELAY") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:DET:ShutterOpenDelay_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)SHUTTER_OPEN_DELAY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:DET:ShutterCloseDelay") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)SHUTTER_CLOSE_DELAY") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:DET:ShutterCloseDelay_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)SHUTTER_CLOSE_DELAY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -# This record changes state when the driver opens/closes an EPICS shutter -record(bi, "BL45P-EA-MAP-01:DET:ShutterControlEPICS") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)SHUTTER_CONTROL_EPICS") - field(ZNAM, "Closed") - field(ZSV, "NO_ALARM") - field(ONAM, "Open") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") - field(FLNK, "BL45P-EA-MAP-01:DET:ShutterFanout.PROC") -} - -record(fanout, "BL45P-EA-MAP-01:DET:ShutterFanout") -{ - field(LNK1, "BL45P-EA-MAP-01:DET:ShutterOpenEPICS.PROC PP MS") - field(LNK2, "BL45P-EA-MAP-01:DET:ShutterCloseEPICS.PROC PP MS") -} - -record(calcout, "BL45P-EA-MAP-01:DET:ShutterOpenEPICS") -{ - field(INPA, "BL45P-EA-MAP-01:DET:ShutterControlEPICS.VAL NPP NMS") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(DOPT, "Use OCAL") - field(OCAL, "1") - field(OUT, "") - info(autosaveFields, "OUT OCAL") -} - -record(calcout, "BL45P-EA-MAP-01:DET:ShutterCloseEPICS") -{ - field(INPA, "BL45P-EA-MAP-01:DET:ShutterControlEPICS.VAL NPP NMS") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(DOPT, "Use OCAL") - field(OCAL, "0") - field(OUT, "") - info(autosaveFields, "OUT OCAL") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:ShutterStatusEPICS_RBV") -{ - field(DTYP, "Raw Soft Channel") - field(INP, "test CP MS") - field(ZRVL, "0") - field(ZRST, "Closed") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "Open") - field(ONSV, "MINOR") - info(autosaveFields, "INP ZRVL ONVL") -} - -################################################################### -# These records control the detector temperature # -################################################################### - -record(ao, "BL45P-EA-MAP-01:DET:Temperature") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET,0,1)TEMPERATURE") - field(PREC, "1") - field(EGU, "C") - field(VAL, "25.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:DET:Temperature_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)TEMPERATURE") - field(PREC, "1") - field(EGU, "C") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:DET:TemperatureActual") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)TEMPERATURE_ACTUAL") - field(PREC, "1") - field(EGU, "C") - field(SCAN, "I/O Intr") -} - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:DET:AsynIO") -{ - field(PORT, "DET.DET") - field(TIB2,"1") - info("ADType", "ADDriver") -} - - -## These are the records from ADBase.template that we modify - -# Some cameras use both AcquisitionFrameRate and AcquirePeriod. -# Make AcquirePeriod update if FrameRate is changed. -record(ao, "BL45P-EA-MAP-01:DET:AcquirePeriod") -{ - info(asyn:READBACK, "1") -} - -# This record hides the fact that some cameras use FrameRate and some use FrameRateAbs -# This is not PINI=YES because AcquirePeriod is and they control the same thing -record(ao, "BL45P-EA-MAP-01:DET:FrameRate") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.DET 0)GC_FRAMERATE") - field(PREC, "3") -} - -record(ai, "BL45P-EA-MAP-01:DET:FrameRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET 0)GC_FRAMERATE") - field(SCAN, "I/O Intr") - field(PREC, "3") -} - -# Some cameras (Basler, Point Grey, FLIR) use AcquisitionFrameRateEnable or AcquisitionFrameRateEnabled -# This record hides the fact that the feature name may differ; the record name is always the same. -record(bo, "BL45P-EA-MAP-01:DET:FrameRateEnable") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET 0)GC_FRAMERATE_ENABLE") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(bi, "BL45P-EA-MAP-01:DET:FrameRateEnable_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET 0)GC_FRAMERATE_ENABLE") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -# This record is used to ensure there is a record for TriggerSource even if there is no such GenICam feature -record(mbbo, "BL45P-EA-MAP-01:DET:TriggerSource") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET 0)GC_TRIGGER_SOURCE") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:TriggerSource_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET 0)GC_TRIGGER_SOURCE") - field(ZRST, "N.A.") - field(ZRVL, "0") - field(SCAN, "I/O Intr") -} - -# This record is used to ensure there is a record for TriggerOverlap even if there is no such GenICam feature -record(mbbo, "BL45P-EA-MAP-01:DET:TriggerOverlap") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET 0)GC_TRIGGER_OVERLAP") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:TriggerOverlap_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET 0)GC_TRIGGER_OVERLAP") - field(SCAN, "I/O Intr") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -# This record is used to ensure there is a record for TriggerSoftware even if there is no such GenICam feature -record(bo, "BL45P-EA-MAP-01:DET:TriggerSoftware") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET 0)GC_TRIGGER_SOFTWARE") - field(ZNAM, "Done") - field(ONAM, "Trigger") -} - -# This record is used to ensure there is a record for ExposureMode even if there is no such GenICam feature -record(mbbo, "BL45P-EA-MAP-01:DET:ExposureMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET 0)GC_EXPOSURE_MODE") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:ExposureMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET 0)GC_EXPOSURE_MODE") - field(ZRST, "N.A.") - field(ZRVL, "0") - field(SCAN, "I/O Intr") -} - -# This record is used to ensure there is a record for ExposureAuto even if there is no such GenICam feature -record(mbbo, "BL45P-EA-MAP-01:DET:ExposureAuto") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET 0)GC_EXPOSURE_AUTO") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:ExposureAuto_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET 0)GC_EXPOSURE_AUTO") - field(SCAN, "I/O Intr") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -# This record is used to ensure there is a record for GainAuto even if there is no such GenICam feature -record(mbbo, "BL45P-EA-MAP-01:DET:GainAuto") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET 0)GC_GAIN_AUTO") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:GainAuto_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET 0)GC_GAIN_AUTO") - field(SCAN, "I/O Intr") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -# This record is used to ensure there is a record for PixelFormat even if there is no such GenICam feature -record(mbbo, "BL45P-EA-MAP-01:DET:PixelFormat") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET 0)GC_PIXEL_FORMAT") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:PixelFormat_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET 0)GC_PIXEL_FORMAT") - field(ZRST, "N.A.") - field(ZRVL, "0") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:DET:ARFramesCompleted") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)ARAVIS_COMPLETED") - field(SCAN, "I/O Intr") - info(autosaveFields, "DESC LLSV LOLO LOW LSV") -} - -record(ai, "BL45P-EA-MAP-01:DET:ARFrameFailures") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)ARAVIS_FAILURES") - field(SCAN, "I/O Intr") - info(autosaveFields, "DESC HHSV HIHI HIGH HSV") -} - -record(ai, "BL45P-EA-MAP-01:DET:ARFrameUnderruns") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.DET,0,1)ARAVIS_UNDERRUNS") - field(SCAN, "I/O Intr") - info(autosaveFields, "DESC HHSV HIHI HIGH HSV") -} - -record(longin, "BL45P-EA-MAP-01:DET:ARMissingPackets") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)ARAVIS_MISSING_PKTS") - field(SCAN, "I/O Intr") - info(autosaveFields, "DESC HHSV HIHI HIGH HSV") -} - -record(longin, "BL45P-EA-MAP-01:DET:ARResentPackets") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)ARAVIS_RESENT_PKTS") - field(SCAN, "I/O Intr") - info(autosaveFields, "DESC HHSV HIHI HIGH HSV") -} - -record(mbbo, "BL45P-EA-MAP-01:DET:ARPacketResendEnable") -{ - field(DESC, "Packet resend enable") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)ARAVIS_PKT_RESEND") - field(ZRST, "Never") - field(ZRVL, "0") - field(ONST, "Always") - field(ONVL, "1") - field(VAL, "1") - field(PINI, "1") - info(autosaveFields, "DESC ONSV ZRSV PINI VAL") -} - -record(longout, "BL45P-EA-MAP-01:DET:ARPacketTimeout") -{ - field(DESC, "Delay in us before packet resend request") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)ARAVIS_PKT_TIMEOUT") - field(VAL, "20000") - field(EGU, "us") - field(PINI, "1") - info(autosaveFields, "DESC HHSV HIHI HIGH HSV LLSV LOLO LOW LSV PINI VAL") -} - -record(longout, "BL45P-EA-MAP-01:DET:ARFrameRetention") -{ - field(DESC, "Frame timeout in us after last packet") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)ARAVIS_FRAME_RETENTION") - field(VAL, "100000") - field(EGU, "us") - field(PINI, "1") - info(autosaveFields, "DESC HHSV HIHI HIGH HSV LLSV LOLO LOW LSV PINI VAL") -} - -record(longout, "BL45P-EA-MAP-01:DET:ARResetCamera") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)ARAVIS_RESET") - field(FLNK, "BL45P-EA-MAP-01:DET:ARConnectCamera") -} - -record(longout, "BL45P-EA-MAP-01:DET:ARConnectCamera") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)ARAVIS_CONNECTION") - field(VAL, "1") - field(PINI, "1") -} - -record(calcout, "BL45P-EA-MAP-01:DET:ARCheckConnection") -{ - field(SCAN, "1 second") - field(INPA, "BL45P-EA-MAP-01:DET:ARConnectCamera.SEVR CP") - field(CALC, "A==0") - field(OOPT, "When Non-zero") - field(OUT, "BL45P-EA-MAP-01:DET:ARConnectCamera.PROC PP") -} - -record(mbbi, "BL45P-EA-MAP-01:DET:ARLeftShift_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)ARAVIS_LEFTSHIFT") - field(ZRST, "No") - field(ZRVL, "0") - field(ONST, "Yes") - field(ONVL, "1") - field(SCAN, "I/O Intr") - info(autosaveFields, "DESC ZRSV ONSV") -} - -## If this is set to 1, then 10, 12 and 16 bit images will be left shifted -## so that a pixel with maximum exposure = 2^16 no matter what the pixel format -record(mbbo, "BL45P-EA-MAP-01:DET:ARLeftShift") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)ARAVIS_LEFTSHIFT") - field(ZRST, "No") - field(ZRVL, "0") - field(ONST, "Yes") - field(ONVL, "1") - info(autosaveFields, "DESC ZRSV ONSV VAL") -} - -record(bi, "BL45P-EA-MAP-01:DET:ARHWImageMode_RBV") { - field(DESC, "Use HW register for acquisition modes") - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.DET,0,1)ARAVIS_HWIMAGEMODE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") - info(autosaveFields, "DESC") -} - -## If this is set to 1, the acquisition mode is communicated to the -## hardware, on zero a software based implementation is used -record(bo, "BL45P-EA-MAP-01:DET:ARHWImageMode") { - field(DESC, "Use HW register for image modes") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.DET,0,1)ARAVIS_HWIMAGEMODE") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "DESC VAL") -} - - -# Disable gui components as DataType and ColorMode should be adjusted using GC_PixelFormat -record(mbbo, "BL45P-EA-MAP-01:DET:DataType") -{ - field(DISA, "1") -} -record(mbbi, "BL45P-EA-MAP-01:DET:DataType_RBV") -{ - field(DISA, "1") -} -record(mbbo, "BL45P-EA-MAP-01:DET:ColorMode") -{ - field(DISA, "1") -} -record(mbbi, "BL45P-EA-MAP-01:DET:ColorMode_RBV") -{ - field(DISA, "1") -} - - -# Database for the records specific to the ADAravis driver -# Macros: -#% macro, P, Device Prefix -#% macro, R, Device Suffix -#% macro, PORT, Asyn Port name -#% macro, TIMEOUT, Timeout, default 1 -#% macro, ADDR, Asyn Port address, default 0 - -# This associates a BOY screen with the template -# % gui, DIFF.DET, boydetail, aravisApp_opi/aravis_detail.opi, P=BL45P-EA-DIFF-01, R=:DET:, DESC=Camera -# % gui, DIFF.DET, boyembed, aravisApp_opi/aravis_embed_box.opi, P=BL45P-EA-DIFF-01, R=:DET:, DESC=Camera -# % gui, DIFF.DET, boyembed, aravisApp_opi/aravis_embed.opi, P=BL45P-EA-DIFF-01, R=:DET:, DESC=Camera - -## ADGenICam.template -## Template database file to control some features of ADGenICam. -## -## Note: this file contains only the records that are not handled by the camera-specific GenICam autogenerated database - -#=================================================================# -# Template file: ADBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -# Using SCANRATE:The ImageJ EPICS_AD_Viewer plugin monitors ArrayCounter_RBV to decide -# when there is a new image to display. That means that it will not display faster than -# the SCANRATE you select. - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:DET:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:DET:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:DET:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:DET:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:DET:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:DET:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:DET:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:DET:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:DET:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:DET:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:DET:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:DET:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:DET:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:DET:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:DET:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:DET:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:DET:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:DET:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:DET:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:DET:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:DET:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:DET:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:DET:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.DET,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:DET:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.DET,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:DET:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:DET:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:DET:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:DET:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:DET:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:DET:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:DET:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:DET:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:DET:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:DET:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:DET:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:DET:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:DET:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:DET:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:DET:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:DET:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:DET:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:DET:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:DET:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:DET:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:DET:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.DET,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:DET:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.DET,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:DET:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:DET:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:DET:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:DET:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:DET:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:DET:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:DET:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:DET:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:DET:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:DET:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:DET:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:DET:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:DET:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:DET:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)MAX_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:DET:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)MAX_SIZE_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the detector readout # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:DET:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)BIN_X") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:DET:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)BIN_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:DET:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)BIN_Y") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:DET:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)BIN_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:DET:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)MIN_X") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:DET:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:DET:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)MIN_Y") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:DET:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:DET:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)SIZE_X") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:DET:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:DET:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)SIZE_Y") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:DET:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:DET:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)REVERSE_X") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:DET:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)REVERSE_X") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:DET:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)REVERSE_Y") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:DET:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)REVERSE_Y") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the acquisition time and # -# period # -################################################################### -record(ao, "BL45P-EA-DIFF-01:DET:AcquireTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)ACQ_TIME") - field(PREC, "3") - field(VAL, "1.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:DET:AcquireTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)ACQ_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:DET:AcquirePeriod") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)ACQ_PERIOD") - field(PREC, "3") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:DET:AcquirePeriod_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)ACQ_PERIOD") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:DET:TimeRemaining_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)TIME_REMAINING") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the gain # -################################################################### -record(ao, "BL45P-EA-DIFF-01:DET:Gain") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GAIN") - field(VAL, "1.0") - field(PREC, "3") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:DET:Gain_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GAIN") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the frame type # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:DET:FrameType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)FRAME_TYPE") - field(ZRST, "Normal") - field(ZRVL, "0") - field(ONST, "Background") - field(ONVL, "1") - field(TWST, "FlatField") - field(TWVL, "2") - field(THST, "DblCorrelation") - field(THVL, "3") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:FrameType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)FRAME_TYPE") - field(ZRST, "Normal") - field(ZRVL, "0") - field(ONST, "Background") - field(ONVL, "1") - field(TWST, "FlatField") - field(TWVL, "2") - field(THST, "DblCorrelation") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the acquisition mode # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:DET:ImageMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)IMAGE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Multiple") - field(ONVL, "1") - field(TWST, "Continuous") - field(TWVL, "2") - field(VAL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:ImageMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)IMAGE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Multiple") - field(ONVL, "1") - field(TWST, "Continuous") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the trigger mode # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:DET:TriggerMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)TRIGGER_MODE") - field(ZRST, "Internal") - field(ZRVL, "0") - field(ONST, "External") - field(ONVL, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:TriggerMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)TRIGGER_MODE") - field(ZRST, "Internal") - field(ZRVL, "0") - field(ONST, "External") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the number of exposures and # -# number of images # -################################################################### -record(longout, "BL45P-EA-DIFF-01:DET:NumExposures") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)NEXPOSURES") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:DET:NumExposures_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)NEXPOSURES") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:DET:NumExposuresCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)NEXPOSURES_COUNTER") - field(SCAN, "I/O Intr") -} -record(longout, "BL45P-EA-DIFF-01:DET:NumImages") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)NIMAGES") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:DET:NumImages_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)NIMAGES") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:DET:NumImagesCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)NIMAGES_COUNTER") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are for the detector state # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:DET:DetectorState_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)STATUS") - field(ZRST, "Idle") - field(ZRVL, "0") - field(ZRSV, "NO_ALARM") - field(ONST, "Acquire") - field(ONVL, "1") - field(ONSV, "NO_ALARM") - field(TWST, "Readout") - field(TWVL, "2") - field(TWSV, "NO_ALARM") - field(THST, "Correct") - field(THVL, "3") - field(THSV, "NO_ALARM") - field(FRST, "Saving") - field(FRVL, "4") - field(FRSV, "NO_ALARM") - field(FVST, "Aborting") - field(FVVL, "5") - field(FVSV, "MINOR") - field(SXST, "Error") - field(SXVL, "6") - field(SXSV, "MAJOR") - field(SVST, "Waiting") - field(SVVL, "7") - field(SVSV, "NO_ALARM") - field(EIST, "Initializing") - field(EIVL, "8") - field(EISV, "NO_ALARM") - field(NIST, "Disconnected") - field(NIVL, "9") - field(NISV, "INVALID") - field(TEST, "Aborted") - field(TEVL, "10") - field(TESV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide status information # -################################################################### - -# Status message. -record(waveform, "BL45P-EA-DIFF-01:DET:StatusMessage_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)STATUS_MESSAGE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:DET:StringToServer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)STRING_TO_SERVER") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:DET:StringFromServer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)STRING_FROM_SERVER") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -################################################################@### -# This record can be used to force a read of the detector status # -#################################################################### -record(bo,"BL45P-EA-DIFF-01:DET:ReadStatus") { - field(DTYP,"asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)READ_STATUS") - field(VAL, "1") - field(SCAN,"Passive") - info(autosaveFields, "SCAN") -} - -################################################################### -# These records control the shutter # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:DET:ShutterMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)SHUTTER_MODE") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "EPICS PV") - field(ONVL, "1") - field(TWST, "Detector output") - field(TWVL, "2") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:ShutterMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)SHUTTER_MODE") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "EPICS PV") - field(ONVL, "1") - field(TWST, "Camera output") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:DET:ShutterControl") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)SHUTTER_CONTROL") - field(ZNAM, "Close") - field(ONAM, "Open") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:DET:ShutterControl_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)SHUTTER_CONTROL") - field(ZNAM, "Close") - field(ONAM, "Open") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-DIFF-01:DET:ShutterStatus_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)SHUTTER_STATUS") - field(ZNAM, "Closed") - field(ZSV, "NO_ALARM") - field(ONAM, "Open") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:DET:ShutterOpenDelay") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)SHUTTER_OPEN_DELAY") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:DET:ShutterOpenDelay_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)SHUTTER_OPEN_DELAY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:DET:ShutterCloseDelay") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)SHUTTER_CLOSE_DELAY") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:DET:ShutterCloseDelay_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)SHUTTER_CLOSE_DELAY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -# This record changes state when the driver opens/closes an EPICS shutter -record(bi, "BL45P-EA-DIFF-01:DET:ShutterControlEPICS") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)SHUTTER_CONTROL_EPICS") - field(ZNAM, "Closed") - field(ZSV, "NO_ALARM") - field(ONAM, "Open") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") - field(FLNK, "BL45P-EA-DIFF-01:DET:ShutterFanout.PROC") -} - -record(fanout, "BL45P-EA-DIFF-01:DET:ShutterFanout") -{ - field(LNK1, "BL45P-EA-DIFF-01:DET:ShutterOpenEPICS.PROC PP MS") - field(LNK2, "BL45P-EA-DIFF-01:DET:ShutterCloseEPICS.PROC PP MS") -} - -record(calcout, "BL45P-EA-DIFF-01:DET:ShutterOpenEPICS") -{ - field(INPA, "BL45P-EA-DIFF-01:DET:ShutterControlEPICS.VAL NPP NMS") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(DOPT, "Use OCAL") - field(OCAL, "1") - field(OUT, "") - info(autosaveFields, "OUT OCAL") -} - -record(calcout, "BL45P-EA-DIFF-01:DET:ShutterCloseEPICS") -{ - field(INPA, "BL45P-EA-DIFF-01:DET:ShutterControlEPICS.VAL NPP NMS") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(DOPT, "Use OCAL") - field(OCAL, "0") - field(OUT, "") - info(autosaveFields, "OUT OCAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:ShutterStatusEPICS_RBV") -{ - field(DTYP, "Raw Soft Channel") - field(INP, "test CP MS") - field(ZRVL, "0") - field(ZRST, "Closed") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "Open") - field(ONSV, "MINOR") - info(autosaveFields, "INP ZRVL ONVL") -} - -################################################################### -# These records control the detector temperature # -################################################################### - -record(ao, "BL45P-EA-DIFF-01:DET:Temperature") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)TEMPERATURE") - field(PREC, "1") - field(EGU, "C") - field(VAL, "25.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:DET:Temperature_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)TEMPERATURE") - field(PREC, "1") - field(EGU, "C") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:DET:TemperatureActual") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)TEMPERATURE_ACTUAL") - field(PREC, "1") - field(EGU, "C") - field(SCAN, "I/O Intr") -} - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:DET:AsynIO") -{ - field(PORT, "DIFF.DET") - field(TIB2,"1") - info("ADType", "ADDriver") -} - - -## These are the records from ADBase.template that we modify - -# Some cameras use both AcquisitionFrameRate and AcquirePeriod. -# Make AcquirePeriod update if FrameRate is changed. -record(ao, "BL45P-EA-DIFF-01:DET:AcquirePeriod") -{ - info(asyn:READBACK, "1") -} - -# This record hides the fact that some cameras use FrameRate and some use FrameRateAbs -# This is not PINI=YES because AcquirePeriod is and they control the same thing -record(ao, "BL45P-EA-DIFF-01:DET:FrameRate") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET 0)GC_FRAMERATE") - field(PREC, "3") -} - -record(ai, "BL45P-EA-DIFF-01:DET:FrameRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET 0)GC_FRAMERATE") - field(SCAN, "I/O Intr") - field(PREC, "3") -} - -# Some cameras (Basler, Point Grey, FLIR) use AcquisitionFrameRateEnable or AcquisitionFrameRateEnabled -# This record hides the fact that the feature name may differ; the record name is always the same. -record(bo, "BL45P-EA-DIFF-01:DET:FrameRateEnable") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET 0)GC_FRAMERATE_ENABLE") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(bi, "BL45P-EA-DIFF-01:DET:FrameRateEnable_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET 0)GC_FRAMERATE_ENABLE") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -# This record is used to ensure there is a record for TriggerSource even if there is no such GenICam feature -record(mbbo, "BL45P-EA-DIFF-01:DET:TriggerSource") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET 0)GC_TRIGGER_SOURCE") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:TriggerSource_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET 0)GC_TRIGGER_SOURCE") - field(ZRST, "N.A.") - field(ZRVL, "0") - field(SCAN, "I/O Intr") -} - -# This record is used to ensure there is a record for TriggerOverlap even if there is no such GenICam feature -record(mbbo, "BL45P-EA-DIFF-01:DET:TriggerOverlap") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET 0)GC_TRIGGER_OVERLAP") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:TriggerOverlap_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET 0)GC_TRIGGER_OVERLAP") - field(SCAN, "I/O Intr") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -# This record is used to ensure there is a record for TriggerSoftware even if there is no such GenICam feature -record(bo, "BL45P-EA-DIFF-01:DET:TriggerSoftware") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET 0)GC_TRIGGER_SOFTWARE") - field(ZNAM, "Done") - field(ONAM, "Trigger") -} - -# This record is used to ensure there is a record for ExposureMode even if there is no such GenICam feature -record(mbbo, "BL45P-EA-DIFF-01:DET:ExposureMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET 0)GC_EXPOSURE_MODE") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:ExposureMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET 0)GC_EXPOSURE_MODE") - field(ZRST, "N.A.") - field(ZRVL, "0") - field(SCAN, "I/O Intr") -} - -# This record is used to ensure there is a record for ExposureAuto even if there is no such GenICam feature -record(mbbo, "BL45P-EA-DIFF-01:DET:ExposureAuto") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET 0)GC_EXPOSURE_AUTO") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:ExposureAuto_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET 0)GC_EXPOSURE_AUTO") - field(SCAN, "I/O Intr") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -# This record is used to ensure there is a record for GainAuto even if there is no such GenICam feature -record(mbbo, "BL45P-EA-DIFF-01:DET:GainAuto") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET 0)GC_GAIN_AUTO") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GainAuto_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET 0)GC_GAIN_AUTO") - field(SCAN, "I/O Intr") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -# This record is used to ensure there is a record for PixelFormat even if there is no such GenICam feature -record(mbbo, "BL45P-EA-DIFF-01:DET:PixelFormat") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET 0)GC_PIXEL_FORMAT") - field(ZRST, "N.A.") - field(ZRVL, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:PixelFormat_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET 0)GC_PIXEL_FORMAT") - field(ZRST, "N.A.") - field(ZRVL, "0") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:DET:ARFramesCompleted") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)ARAVIS_COMPLETED") - field(SCAN, "I/O Intr") - info(autosaveFields, "DESC LLSV LOLO LOW LSV") -} - -record(ai, "BL45P-EA-DIFF-01:DET:ARFrameFailures") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)ARAVIS_FAILURES") - field(SCAN, "I/O Intr") - info(autosaveFields, "DESC HHSV HIHI HIGH HSV") -} - -record(ai, "BL45P-EA-DIFF-01:DET:ARFrameUnderruns") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)ARAVIS_UNDERRUNS") - field(SCAN, "I/O Intr") - info(autosaveFields, "DESC HHSV HIHI HIGH HSV") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ARMissingPackets") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)ARAVIS_MISSING_PKTS") - field(SCAN, "I/O Intr") - info(autosaveFields, "DESC HHSV HIHI HIGH HSV") -} - -record(longin, "BL45P-EA-DIFF-01:DET:ARResentPackets") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)ARAVIS_RESENT_PKTS") - field(SCAN, "I/O Intr") - info(autosaveFields, "DESC HHSV HIHI HIGH HSV") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:ARPacketResendEnable") -{ - field(DESC, "Packet resend enable") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)ARAVIS_PKT_RESEND") - field(ZRST, "Never") - field(ZRVL, "0") - field(ONST, "Always") - field(ONVL, "1") - field(VAL, "1") - field(PINI, "1") - info(autosaveFields, "DESC ONSV ZRSV PINI VAL") -} - -record(longout, "BL45P-EA-DIFF-01:DET:ARPacketTimeout") -{ - field(DESC, "Delay in us before packet resend request") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)ARAVIS_PKT_TIMEOUT") - field(VAL, "20000") - field(EGU, "us") - field(PINI, "1") - info(autosaveFields, "DESC HHSV HIHI HIGH HSV LLSV LOLO LOW LSV PINI VAL") -} - -record(longout, "BL45P-EA-DIFF-01:DET:ARFrameRetention") -{ - field(DESC, "Frame timeout in us after last packet") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)ARAVIS_FRAME_RETENTION") - field(VAL, "100000") - field(EGU, "us") - field(PINI, "1") - info(autosaveFields, "DESC HHSV HIHI HIGH HSV LLSV LOLO LOW LSV PINI VAL") -} - -record(longout, "BL45P-EA-DIFF-01:DET:ARResetCamera") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)ARAVIS_RESET") - field(FLNK, "BL45P-EA-DIFF-01:DET:ARConnectCamera") -} - -record(longout, "BL45P-EA-DIFF-01:DET:ARConnectCamera") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)ARAVIS_CONNECTION") - field(VAL, "1") - field(PINI, "1") -} - -record(calcout, "BL45P-EA-DIFF-01:DET:ARCheckConnection") -{ - field(SCAN, "1 second") - field(INPA, "BL45P-EA-DIFF-01:DET:ARConnectCamera.SEVR CP") - field(CALC, "A==0") - field(OOPT, "When Non-zero") - field(OUT, "BL45P-EA-DIFF-01:DET:ARConnectCamera.PROC PP") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:ARLeftShift_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)ARAVIS_LEFTSHIFT") - field(ZRST, "No") - field(ZRVL, "0") - field(ONST, "Yes") - field(ONVL, "1") - field(SCAN, "I/O Intr") - info(autosaveFields, "DESC ZRSV ONSV") -} - -## If this is set to 1, then 10, 12 and 16 bit images will be left shifted -## so that a pixel with maximum exposure = 2^16 no matter what the pixel format -record(mbbo, "BL45P-EA-DIFF-01:DET:ARLeftShift") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)ARAVIS_LEFTSHIFT") - field(ZRST, "No") - field(ZRVL, "0") - field(ONST, "Yes") - field(ONVL, "1") - info(autosaveFields, "DESC ZRSV ONSV VAL") -} - -record(bi, "BL45P-EA-DIFF-01:DET:ARHWImageMode_RBV") { - field(DESC, "Use HW register for acquisition modes") - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)ARAVIS_HWIMAGEMODE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") - info(autosaveFields, "DESC") -} - -## If this is set to 1, the acquisition mode is communicated to the -## hardware, on zero a software based implementation is used -record(bo, "BL45P-EA-DIFF-01:DET:ARHWImageMode") { - field(DESC, "Use HW register for image modes") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)ARAVIS_HWIMAGEMODE") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "DESC VAL") -} - - -# Disable gui components as DataType and ColorMode should be adjusted using GC_PixelFormat -record(mbbo, "BL45P-EA-DIFF-01:DET:DataType") -{ - field(DISA, "1") -} -record(mbbi, "BL45P-EA-DIFF-01:DET:DataType_RBV") -{ - field(DISA, "1") -} -record(mbbo, "BL45P-EA-DIFF-01:DET:ColorMode") -{ - field(DISA, "1") -} -record(mbbi, "BL45P-EA-DIFF-01:DET:ColorMode_RBV") -{ - field(DISA, "1") -} - - -# Macros: -#% macro, P, Device Prefix -#% macro, R, Device Suffix -#% macro, PORT, Asyn Port name -#% macro, TIMEOUT, Timeout, default=1 -#% macro, ADDR, Asyn Port address, default=0 -#% gui, DIFF.DET, edmtab, ADGenICam.edl, P=BL45P-EA-DIFF-01,R=:DET:,C=AVT_Mako_G234B - -record(ai, "BL45P-EA-DIFF-01:DET:GC_FirmwareVerMajor_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_FirmwareVerMajor") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_FirmwareVerMajor") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_FirmwareVerMajor") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_FirmwareVerMinor_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_FirmwareVerMinor") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_FirmwareVerMinor") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_FirmwareVerMinor") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_FirmwareVerBuild_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_FirmwareVerBuild") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_FirmwareVerBuild") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_FirmwareVerBuild") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_SensorType_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_SensorType") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_SensorType") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_SensorType") - field(DOL, "0") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_SensorBits_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_SensorBits") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_SensorBits") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_SensorBits") - field(DISA, "0") -} - -record(stringin, "BL45P-EA-DIFF-01:DET:GC_DeviceVendorName_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)GC_S_DeviceVendorName") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(stringin, "BL45P-EA-DIFF-01:DET:GC_DeviceModelName_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)GC_S_DeviceModelName") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(stringin, "BL45P-EA-DIFF-01:DET:GC_DevFirVersion_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)GC_S_DeviceFirmwareVersion") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(stringin, "BL45P-EA-DIFF-01:DET:GC_DeviceID_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)GC_S_DeviceID") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(stringin, "BL45P-EA-DIFF-01:DET:GC_DevicePartNumber_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)GC_S_DevicePartNumber") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_DeviceScanType_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_DeviceScanType") - field(ZRST, "Areascan") - field(ZRVL, "0") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_DeviceScanType") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_DeviceScanType") - field(DOL, "0") - field(ZRST, "Areascan") - field(ZRVL, "0") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_DevTemSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_DeviceTemperatureSelector") - field(ZRST, "Sensor") - field(ZRVL, "0") - field(ONST, "Main") - field(ONVL, "1") - field(TWST, "Power") - field(TWVL, "2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_DevTemSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_DeviceTemperatureSelector") - field(DOL, "0") - field(ZRST, "Sensor") - field(ZRVL, "0") - field(ONST, "Main") - field(ONVL, "1") - field(TWST, "Power") - field(TWVL, "2") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_DeviceTemperature_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GC_D_DeviceTemperature") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_DeviceTemperature") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_D_DeviceTemperature") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_StrBytesPerSecond_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_StreamBytesPerSecond") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_StrBytesPerSecond") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_StreamBytesPerSecond") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_BanControlMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_BandwidthControlMode") - field(ZRST, "StreamBytesPerSe") - field(ZRVL, "0") - field(ONST, "SCPD") - field(ONVL, "1") - field(TWST, "Both") - field(TWVL, "2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_BanControlMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_BandwidthControlMode") - field(DOL, "0") - field(ZRST, "StreamBytesPerSe") - field(ZRVL, "0") - field(ONST, "SCPD") - field(ONVL, "1") - field(TWST, "Both") - field(TWVL, "2") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_GevSCPSPacketSize_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_GevSCPSPacketSize") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_GevSCPSPacketSize") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_GevSCPSPacketSize") - field(DISA, "0") -} - -record(bi, "BL45P-EA-DIFF-01:DET:GC_ChunkModeActive_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_B_ChunkModeActive") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(bo, "BL45P-EA-DIFF-01:DET:GC_ChunkModeActive") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_B_ChunkModeActive") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_PayloadSize_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_PayloadSize") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_PayloadSize") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_PayloadSize") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_NonImaPayloadSize_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_NonImagePayloadSize") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_NonImaPayloadSize") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_NonImagePayloadSize") - field(DISA, "0") -} - -record(bi, "BL45P-EA-DIFF-01:DET:GC_StrFraRatCon_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_B_StreamFrameRateConstrain") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(bo, "BL45P-EA-DIFF-01:DET:GC_StrFraRatCon") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_B_StreamFrameRateConstrain") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_StreamHoldEnable_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_StreamHoldEnable") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "On") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_StreamHoldEnable") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_StreamHoldEnable") - field(DOL, "0") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "On") - field(ONVL, "1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_StrHoldCapacity_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_StreamHoldCapacity") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_StrHoldCapacity") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_StreamHoldCapacity") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_GevTimTicFre_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_GevTimestampTickFrequency") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_GevTimTicFre") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_GevTimestampTickFrequency") - field(DISA, "0") -} - -record(longout, "BL45P-EA-DIFF-01:DET:GC_GevTimConLatch") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_C_GevTimestampControlLatch") - field(DISA, "0") -} - -record(longout, "BL45P-EA-DIFF-01:DET:GC_GevTimConReset") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_C_GevTimestampControlReset") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_GevTimestampValue_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_GevTimestampValue") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_GevTimestampValue") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_GevTimestampValue") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_PtpMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_PtpMode") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "Slave") - field(ONVL, "1") - field(TWST, "Master") - field(TWVL, "2") - field(THST, "Auto") - field(THVL, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_PtpMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_PtpMode") - field(DOL, "0") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "Slave") - field(ONVL, "1") - field(TWST, "Master") - field(TWVL, "2") - field(THST, "Auto") - field(THVL, "3") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_PtpStatus_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_PtpStatus") - field(ZRST, "Initializing") - field(ZRVL, "0") - field(ONST, "Faulty") - field(ONVL, "1") - field(TWST, "Disabled") - field(TWVL, "2") - field(THST, "Listening") - field(THVL, "3") - field(FRST, "PreMaster") - field(FRVL, "4") - field(FVST, "Master") - field(FVVL, "5") - field(SXST, "Passive") - field(SXVL, "6") - field(SVST, "Uncalibrated") - field(SVVL, "7") - field(EIST, "Slave") - field(EIVL, "8") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_PtpStatus") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_PtpStatus") - field(DOL, "0") - field(ZRST, "Initializing") - field(ZRVL, "0") - field(ONST, "Faulty") - field(ONVL, "1") - field(TWST, "Disabled") - field(TWVL, "2") - field(THST, "Listening") - field(THVL, "3") - field(FRST, "PreMaster") - field(FRVL, "4") - field(FVST, "Master") - field(FVVL, "5") - field(SXST, "Passive") - field(SXVL, "6") - field(SVST, "Uncalibrated") - field(SVVL, "7") - field(EIST, "Slave") - field(EIVL, "8") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_PtpAcqGateTime_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_PtpAcquisitionGateTime") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_PtpAcqGateTime") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_PtpAcquisitionGateTime") - field(DISA, "0") -} - -record(longout, "BL45P-EA-DIFF-01:DET:GC_AcquisitionStart") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_C_AcquisitionStart") - field(DISA, "0") -} - -record(longout, "BL45P-EA-DIFF-01:DET:GC_AcquisitionStop") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_C_AcquisitionStop") - field(DISA, "0") -} - -record(longout, "BL45P-EA-DIFF-01:DET:GC_AcquisitionAbort") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_C_AcquisitionAbort") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_AcquisitionMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_AcquisitionMode") - field(ZRST, "Continuous") - field(ZRVL, "1") - field(ONST, "SingleFrame") - field(ONVL, "2") - field(TWST, "MultiFrame") - field(TWVL, "3") - field(THST, "Recorder") - field(THVL, "4") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_AcquisitionMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_AcquisitionMode") - field(DOL, "1") - field(ZRST, "Continuous") - field(ZRVL, "1") - field(ONST, "SingleFrame") - field(ONVL, "2") - field(TWST, "MultiFrame") - field(TWVL, "3") - field(THST, "Recorder") - field(THVL, "4") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_AcqFrameCount_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_AcquisitionFrameCount") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_AcqFrameCount") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_AcquisitionFrameCount") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_AcqFrameRateAbs_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GC_D_AcquisitionFrameRateAbs") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_AcqFrameRateAbs") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_D_AcquisitionFrameRateAbs") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_AcqFrameRateLimit_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GC_D_AcquisitionFrameRateLimit") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_AcqFrameRateLimit") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_D_AcquisitionFrameRateLimit") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_RecPreEventCount_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_RecorderPreEventCount") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_RecPreEventCount") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_RecorderPreEventCount") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_TriggerSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_TriggerSelector") - field(ZRST, "FrameStart") - field(ZRVL, "0") - field(ONST, "AcquisitionStart") - field(ONVL, "3") - field(TWST, "AcquisitionEnd") - field(TWVL, "4") - field(THST, "AcquisitionRecor") - field(THVL, "6") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_TriggerSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_TriggerSelector") - field(DOL, "0") - field(ZRST, "FrameStart") - field(ZRVL, "0") - field(ONST, "AcquisitionStart") - field(ONVL, "3") - field(TWST, "AcquisitionEnd") - field(TWVL, "4") - field(THST, "AcquisitionRecor") - field(THVL, "6") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_TriggerMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_TriggerMode") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "On") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_TriggerMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_TriggerMode") - field(DOL, "0") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "On") - field(ONVL, "1") - field(DISA, "0") -} - -record(longout, "BL45P-EA-DIFF-01:DET:GC_TriggerSoftware") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_C_TriggerSoftware") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_TriggerSource_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_TriggerSource") - field(ZRST, "Freerun") - field(ZRVL, "0") - field(ONST, "Line1") - field(ONVL, "1") - field(TWST, "Line2") - field(TWVL, "2") - field(THST, "Line3") - field(THVL, "3") - field(FRST, "Line4") - field(FRVL, "4") - field(FVST, "FixedRate") - field(FVVL, "5") - field(SXST, "Software") - field(SXVL, "6") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_TriggerSource") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_TriggerSource") - field(DOL, "0") - field(ZRST, "Freerun") - field(ZRVL, "0") - field(ONST, "Line1") - field(ONVL, "1") - field(TWST, "Line2") - field(TWVL, "2") - field(THST, "Line3") - field(THVL, "3") - field(FRST, "Line4") - field(FRVL, "4") - field(FVST, "FixedRate") - field(FVVL, "5") - field(SXST, "Software") - field(SXVL, "6") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_TriggerActivation_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_TriggerActivation") - field(ZRST, "RisingEdge") - field(ZRVL, "0") - field(ONST, "FallingEdge") - field(ONVL, "1") - field(TWST, "AnyEdge") - field(TWVL, "2") - field(THST, "LevelHigh") - field(THVL, "3") - field(FRST, "LevelLow") - field(FRVL, "4") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_TriggerActivation") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_TriggerActivation") - field(DOL, "0") - field(ZRST, "RisingEdge") - field(ZRVL, "0") - field(ONST, "FallingEdge") - field(ONVL, "1") - field(TWST, "AnyEdge") - field(TWVL, "2") - field(THST, "LevelHigh") - field(THVL, "3") - field(FRST, "LevelLow") - field(FRVL, "4") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_TriggerOverlap_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_TriggerOverlap") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "ReadOut") - field(ONVL, "1") - field(TWST, "PreviousFrame") - field(TWVL, "2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_TriggerOverlap") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_TriggerOverlap") - field(DOL, "0") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "ReadOut") - field(ONVL, "1") - field(TWST, "PreviousFrame") - field(TWVL, "2") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_TriggerDelayAbs_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GC_D_TriggerDelayAbs") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_TriggerDelayAbs") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_D_TriggerDelayAbs") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_SensorWidth_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_SensorWidth") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_SensorWidth") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_SensorWidth") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_SensorHeight_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_SensorHeight") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_SensorHeight") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_SensorHeight") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_BinningHorizontal_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_BinningHorizontal") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_BinningHorizontal") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_BinningHorizontal") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_BinningVertical_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_BinningVertical") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_BinningVertical") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_BinningVertical") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_DecHorizontal_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_DecimationHorizontal") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_DecHorizontal") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_DecimationHorizontal") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_DecVertical_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_DecimationVertical") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_DecVertical") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_DecimationVertical") - field(DISA, "0") -} - -record(bi, "BL45P-EA-DIFF-01:DET:GC_ReverseX_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_B_ReverseX") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(bo, "BL45P-EA-DIFF-01:DET:GC_ReverseX") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_B_ReverseX") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(bi, "BL45P-EA-DIFF-01:DET:GC_ReverseY_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_B_ReverseY") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(bo, "BL45P-EA-DIFF-01:DET:GC_ReverseY") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_B_ReverseY") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_WidthMax_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_WidthMax") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_WidthMax") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_WidthMax") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_HeightMax_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_HeightMax") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_HeightMax") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_HeightMax") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_PixelFormat_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_PixelFormat") - field(ZRST, "Mono8") - field(ZRVL, "0x01080001") - field(ONST, "Mono10") - field(ONVL, "0x01100003") - field(TWST, "Mono12") - field(TWVL, "0x01100005") - field(THST, "Mono12Packed") - field(THVL, "0x010C0006") - field(FRST, "Mono14") - field(FRVL, "0x01100025") - field(FVST, "BayerGR8") - field(FVVL, "0x01080008") - field(SXST, "BayerRG8") - field(SXVL, "0x01080009") - field(SVST, "BayerGB8") - field(SVVL, "0x0108000A") - field(EIST, "BayerBG8") - field(EIVL, "0x0108000B") - field(NIST, "BayerBG10") - field(NIVL, "0x0110000F") - field(TEST, "BayerGR12") - field(TEVL, "0x01100010") - field(ELST, "BayerRG12") - field(ELVL, "0x01100011") - field(TVST, "BayerGB12") - field(TVVL, "0x01100012") - field(TTST, "BayerGR12Packed") - field(TTVL, "0x010C002A") - field(FTST, "BayerRG12Packed") - field(FTVL, "0x010C002B") - field(FFST, "BayerGB12Packed") - field(FFVL, "0x010C002C") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_PixelFormat") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_PixelFormat") - field(DOL, "0x01080001") - field(ZRST, "Mono8") - field(ZRVL, "0x01080001") - field(ONST, "Mono10") - field(ONVL, "0x01100003") - field(TWST, "Mono12") - field(TWVL, "0x01100005") - field(THST, "Mono12Packed") - field(THVL, "0x010C0006") - field(FRST, "Mono14") - field(FRVL, "0x01100025") - field(FVST, "BayerGR8") - field(FVVL, "0x01080008") - field(SXST, "BayerRG8") - field(SXVL, "0x01080009") - field(SVST, "BayerGB8") - field(SVVL, "0x0108000A") - field(EIST, "BayerBG8") - field(EIVL, "0x0108000B") - field(NIST, "BayerBG10") - field(NIVL, "0x0110000F") - field(TEST, "BayerGR12") - field(TEVL, "0x01100010") - field(ELST, "BayerRG12") - field(ELVL, "0x01100011") - field(TVST, "BayerGB12") - field(TVVL, "0x01100012") - field(TTST, "BayerGR12Packed") - field(TTVL, "0x010C002A") - field(FTST, "BayerRG12Packed") - field(FTVL, "0x010C002B") - field(FFST, "BayerGB12Packed") - field(FFVL, "0x010C002C") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_Width_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_Width") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_Width") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_Width") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_Height_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_Height") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_Height") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_Height") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_OffsetX_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_OffsetX") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_OffsetX") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_OffsetX") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_OffsetY_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_OffsetY") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_OffsetY") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_OffsetY") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_ImageSize_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_ImageSize") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_ImageSize") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_ImageSize") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_Gamma_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GC_D_Gamma") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_Gamma") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_D_Gamma") - field(PREC, "3") - field(DISA, "0") -} - -record(bi, "BL45P-EA-DIFF-01:DET:GC_DefectMaskEnable_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_B_DefectMaskEnable") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(bo, "BL45P-EA-DIFF-01:DET:GC_DefectMaskEnable") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_B_DefectMaskEnable") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_Hue_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GC_D_Hue") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_Hue") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_D_Hue") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_Saturation_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GC_D_Saturation") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_Saturation") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_D_Saturation") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_DSPSubregionLeft_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_DSPSubregionLeft") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_DSPSubregionLeft") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_DSPSubregionLeft") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_DSPSubregionTop_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_DSPSubregionTop") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_DSPSubregionTop") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_DSPSubregionTop") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_DSPSubregionRight_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_DSPSubregionRight") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_DSPSubregionRight") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_DSPSubregionRight") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_DSPSubBottom_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_DSPSubregionBottom") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_DSPSubBottom") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_DSPSubregionBottom") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_ExposureAuto_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_ExposureAuto") - field(ZRST, "Off") - field(ZRVL, "1") - field(ONST, "Once") - field(ONVL, "3") - field(TWST, "Continuous") - field(TWVL, "2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_ExposureAuto") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_ExposureAuto") - field(DOL, "1") - field(ZRST, "Off") - field(ZRVL, "1") - field(ONST, "Once") - field(ONVL, "3") - field(TWST, "Continuous") - field(TWVL, "2") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_ExposureMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_ExposureMode") - field(ZRST, "Timed") - field(ZRVL, "0") - field(ONST, "TriggerWidth") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_ExposureMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_ExposureMode") - field(DOL, "0") - field(ZRST, "Timed") - field(ZRVL, "0") - field(ONST, "TriggerWidth") - field(ONVL, "1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_ExposureTimeAbs_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GC_D_ExposureTimeAbs") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_ExposureTimeAbs") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_D_ExposureTimeAbs") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_ExpTimeIncrement_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GC_D_ExposureTimeIncrement") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_ExpTimeIncrement") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_D_ExposureTimeIncrement") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_ExpAutoTarget_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_ExposureAutoTarget") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_ExpAutoTarget") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_ExposureAutoTarget") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_ExposureAutoAlg_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_ExposureAutoAlg") - field(ZRST, "Mean") - field(ZRVL, "0") - field(ONST, "FitRange") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_ExposureAutoAlg") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_ExposureAutoAlg") - field(DOL, "0") - field(ZRST, "Mean") - field(ZRVL, "0") - field(ONST, "FitRange") - field(ONVL, "1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_ExposureAutoMin_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_ExposureAutoMin") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_ExposureAutoMin") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_ExposureAutoMin") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_ExposureAutoMax_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_ExposureAutoMax") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_ExposureAutoMax") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_ExposureAutoMax") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_ExposureAutoRate_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_ExposureAutoRate") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_ExposureAutoRate") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_ExposureAutoRate") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_ExpAutoOutliers_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_ExposureAutoOutliers") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_ExpAutoOutliers") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_ExposureAutoOutliers") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_ExpAutoAdjustTol_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_ExposureAutoAdjustTol") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_ExpAutoAdjustTol") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_ExposureAutoAdjustTol") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_GainSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_GainSelector") - field(ZRST, "All") - field(ZRVL, "0") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_GainSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_GainSelector") - field(DOL, "0") - field(ZRST, "All") - field(ZRVL, "0") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_Gain_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GC_D_Gain") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_Gain") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_D_Gain") - field(PREC, "3") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_GainAuto_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_GainAuto") - field(ZRST, "Off") - field(ZRVL, "1") - field(ONST, "Once") - field(ONVL, "3") - field(TWST, "Continuous") - field(TWVL, "2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_GainAuto") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_GainAuto") - field(DOL, "1") - field(ZRST, "Off") - field(ZRVL, "1") - field(ONST, "Once") - field(ONVL, "3") - field(TWST, "Continuous") - field(TWVL, "2") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_GainAutoTarget_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_GainAutoTarget") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_GainAutoTarget") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_GainAutoTarget") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_GainAutoMin_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GC_D_GainAutoMin") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_GainAutoMin") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_D_GainAutoMin") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_GainAutoMax_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GC_D_GainAutoMax") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_GainAutoMax") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_D_GainAutoMax") - field(PREC, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_GainAutoRate_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_GainAutoRate") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_GainAutoRate") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_GainAutoRate") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_GainAutoOutliers_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_GainAutoOutliers") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_GainAutoOutliers") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_GainAutoOutliers") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_GainAutoAdjustTol_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_GainAutoAdjustTol") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_GainAutoAdjustTol") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_GainAutoAdjustTol") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_BlaLevelSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_BlackLevelSelector") - field(ZRST, "All") - field(ZRVL, "0") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_BlaLevelSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_BlackLevelSelector") - field(DOL, "0") - field(ZRST, "All") - field(ZRVL, "0") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_BlackLevel_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GC_D_BlackLevel") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_BlackLevel") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_D_BlackLevel") - field(PREC, "3") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_BalRatioSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_BalanceRatioSelector") - field(ZRST, "Red") - field(ZRVL, "0") - field(ONST, "Blue") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_BalRatioSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_BalanceRatioSelector") - field(DOL, "0") - field(ZRST, "Red") - field(ZRVL, "0") - field(ONST, "Blue") - field(ONVL, "1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_BalanceRatioAbs_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GC_D_BalanceRatioAbs") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_BalanceRatioAbs") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_D_BalanceRatioAbs") - field(PREC, "3") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_BalanceWhiteAuto_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_BalanceWhiteAuto") - field(ZRST, "Off") - field(ZRVL, "1") - field(ONST, "Once") - field(ONVL, "3") - field(TWST, "Continuous") - field(TWVL, "2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_BalanceWhiteAuto") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_BalanceWhiteAuto") - field(DOL, "1") - field(ZRST, "Off") - field(ZRVL, "1") - field(ONST, "Once") - field(ONVL, "3") - field(TWST, "Continuous") - field(TWVL, "2") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_BalWhiteAutoRate_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_BalanceWhiteAutoRate") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_BalWhiteAutoRate") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_BalanceWhiteAutoRate") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_BalWhiAutAdjTol_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_BalanceWhiteAutoAdjustTol") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_BalWhiAutAdjTol") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_BalanceWhiteAutoAdjustTol") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_IrisMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_IrisMode") - field(ZRST, "Disabled") - field(ZRVL, "0") - field(ONST, "Video") - field(ONVL, "1") - field(TWST, "VideoOpen") - field(TWVL, "2") - field(THST, "VideoClose") - field(THVL, "3") - field(FRST, "PIrisAuto") - field(FRVL, "4") - field(FVST, "PIrisManual") - field(FVVL, "5") - field(SXST, "DCIris") - field(SXVL, "6") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_IrisMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_IrisMode") - field(DOL, "0") - field(ZRST, "Disabled") - field(ZRVL, "0") - field(ONST, "Video") - field(ONVL, "1") - field(TWST, "VideoOpen") - field(TWVL, "2") - field(THST, "VideoClose") - field(THVL, "3") - field(FRST, "PIrisAuto") - field(FRVL, "4") - field(FVST, "PIrisManual") - field(FVVL, "5") - field(SXST, "DCIris") - field(SXVL, "6") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_IrisAutoTarget_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_IrisAutoTarget") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_IrisAutoTarget") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_IrisAutoTarget") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_IrisVideoLevel_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_IrisVideoLevel") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_IrisVideoLevel") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_IrisVideoLevel") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_IrisVideoLevelMin_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_IrisVideoLevelMin") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_IrisVideoLevelMin") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_IrisVideoLevelMin") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_IrisVideoLevelMax_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_IrisVideoLevelMax") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_IrisVideoLevelMax") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_IrisVideoLevelMax") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_LenPIrisFrequency_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_LensPIrisFrequency") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_LenPIrisFrequency") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_LensPIrisFrequency") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_LensPIrisNumSteps_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_LensPIrisNumSteps") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_LensPIrisNumSteps") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_LensPIrisNumSteps") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_LensPIrisPosition_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_LensPIrisPosition") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_LensPIrisPosition") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_LensPIrisPosition") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_LenDCDriStrength_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_LensDCDriveStrength") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_LenDCDriStrength") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_LensDCDriveStrength") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_DefMasColEnable_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_DefectMaskColumnEnable") - field(ZRST, "Disabled") - field(ZRVL, "0") - field(ONST, "Enabled") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_DefMasColEnable") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_DefectMaskColumnEnable") - field(DOL, "0") - field(ZRST, "Disabled") - field(ZRVL, "0") - field(ONST, "Enabled") - field(ONVL, "1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_VsubValue_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_VsubValue") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_VsubValue") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_VsubValue") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_ColTraSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_ColorTransformationSelector") - field(ZRST, "RGBtoRGB") - field(ZRVL, "0") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_ColTraSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_ColorTransformationSelector") - field(DOL, "0") - field(ZRST, "RGBtoRGB") - field(ZRVL, "0") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_ColTraMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_ColorTransformationMode") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "Manual") - field(ONVL, "1") - field(TWST, "Temp6500K") - field(TWVL, "2") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_ColTraMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_ColorTransformationMode") - field(DOL, "0") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "Manual") - field(ONVL, "1") - field(TWST, "Temp6500K") - field(TWVL, "2") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_ColTraValSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_ColorTransformationValueSelector") - field(ZRST, "Gain00") - field(ZRVL, "0") - field(ONST, "Gain01") - field(ONVL, "1") - field(TWST, "Gain02") - field(TWVL, "2") - field(THST, "Gain10") - field(THVL, "3") - field(FRST, "Gain11") - field(FRVL, "4") - field(FVST, "Gain12") - field(FVVL, "5") - field(SXST, "Gain20") - field(SXVL, "6") - field(SVST, "Gain21") - field(SVVL, "7") - field(EIST, "Gain22") - field(EIVL, "8") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_ColTraValSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_ColorTransformationValueSelector") - field(DOL, "0") - field(ZRST, "Gain00") - field(ZRVL, "0") - field(ONST, "Gain01") - field(ONVL, "1") - field(TWST, "Gain02") - field(TWVL, "2") - field(THST, "Gain10") - field(THVL, "3") - field(FRST, "Gain11") - field(FRVL, "4") - field(FVST, "Gain12") - field(FVVL, "5") - field(SXST, "Gain20") - field(SXVL, "6") - field(SVST, "Gain21") - field(SVVL, "7") - field(EIST, "Gain22") - field(EIVL, "8") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_ColTraValue_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.DET,0,1)GC_D_ColorTransformationValue") - field(PREC, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_ColTraValue") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_D_ColorTransformationValue") - field(PREC, "3") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_LUTSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_LUTSelector") - field(ZRST, "LUT1") - field(ZRVL, "0") - field(ONST, "LUT2") - field(ONVL, "1") - field(TWST, "LUT3") - field(TWVL, "2") - field(THST, "LUT4") - field(THVL, "3") - field(FRST, "LUT5") - field(FRVL, "4") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_LUTSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_LUTSelector") - field(DOL, "0") - field(ZRST, "LUT1") - field(ZRVL, "0") - field(ONST, "LUT2") - field(ONVL, "1") - field(TWST, "LUT3") - field(TWVL, "2") - field(THST, "LUT4") - field(THVL, "3") - field(FRST, "LUT5") - field(FRVL, "4") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_LUTMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_LUTMode") - field(ZRST, "Luminance") - field(ZRVL, "0") - field(ONST, "Red") - field(ONVL, "1") - field(TWST, "Green") - field(TWVL, "2") - field(THST, "Blue") - field(THVL, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_LUTMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_LUTMode") - field(DOL, "0") - field(ZRST, "Luminance") - field(ZRVL, "0") - field(ONST, "Red") - field(ONVL, "1") - field(TWST, "Green") - field(TWVL, "2") - field(THST, "Blue") - field(THVL, "3") - field(DISA, "0") -} - -record(bi, "BL45P-EA-DIFF-01:DET:GC_LUTEnable_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_B_LUTEnable") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(bo, "BL45P-EA-DIFF-01:DET:GC_LUTEnable") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_B_LUTEnable") - field(ZNAM, "No") - field(ONAM, "Yes") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_LUTIndex_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_LUTIndex") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_LUTIndex") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_LUTIndex") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_LUTValue_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_LUTValue") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_LUTValue") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_LUTValue") - field(DISA, "0") -} - -record(longout, "BL45P-EA-DIFF-01:DET:GC_LUTLoadAll") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_C_LUTLoadAll") - field(DISA, "0") -} - -record(longout, "BL45P-EA-DIFF-01:DET:GC_LUTSaveAll") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_C_LUTSaveAll") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_LUTBitDepthIn_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_LUTBitDepthIn") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_LUTBitDepthIn") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_LUTBitDepthIn") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_LUTBitDepthOut_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_LUTBitDepthOut") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_LUTBitDepthOut") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_LUTBitDepthOut") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_LUTAddress_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_LUTAddress") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_LUTAddress") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_LUTAddress") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_LUTSizeBytes_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_LUTSizeBytes") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_LUTSizeBytes") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_LUTSizeBytes") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_SyncInLevels_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_SyncInLevels") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_SyncInLevels") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_SyncInLevels") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_SyncInSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_SyncInSelector") - field(ZRST, "SyncIn1") - field(ZRVL, "0") - field(ONST, "SyncIn2") - field(ONVL, "1") - field(TWST, "SyncIn3") - field(TWVL, "2") - field(THST, "SyncIn4") - field(THVL, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_SyncInSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_SyncInSelector") - field(DOL, "0") - field(ZRST, "SyncIn1") - field(ZRVL, "0") - field(ONST, "SyncIn2") - field(ONVL, "1") - field(TWST, "SyncIn3") - field(TWVL, "2") - field(THST, "SyncIn4") - field(THVL, "3") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_SynInGlitchFilter_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_SyncInGlitchFilter") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_SynInGlitchFilter") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_SyncInGlitchFilter") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_SyncOutLevels_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_SyncOutLevels") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_SyncOutLevels") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_SyncOutLevels") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_SyncOutSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_SyncOutSelector") - field(ZRST, "SyncOut1") - field(ZRVL, "0") - field(ONST, "SyncOut2") - field(ONVL, "1") - field(TWST, "SyncOut3") - field(TWVL, "2") - field(THST, "SyncOut4") - field(THVL, "3") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_SyncOutSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_SyncOutSelector") - field(DOL, "0") - field(ZRST, "SyncOut1") - field(ZRVL, "0") - field(ONST, "SyncOut2") - field(ONVL, "1") - field(TWST, "SyncOut3") - field(TWVL, "2") - field(THST, "SyncOut4") - field(THVL, "3") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_SyncOutSource_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_SyncOutSource") - field(ZRST, "GPO") - field(ZRVL, "0") - field(ONST, "AcquisitionTrigg") - field(ONVL, "1") - field(TWST, "FrameTriggerRead") - field(TWVL, "2") - field(THST, "Exposing") - field(THVL, "4") - field(FRST, "FrameReadout") - field(FRVL, "5") - field(FVST, "Imaging") - field(FVVL, "6") - field(SXST, "Acquiring") - field(SXVL, "7") - field(SVST, "LineIn1") - field(SVVL, "8") - field(EIST, "LineIn2") - field(EIVL, "9") - field(NIST, "Strobe1") - field(NIVL, "12") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_SyncOutSource") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_SyncOutSource") - field(DOL, "0") - field(ZRST, "GPO") - field(ZRVL, "0") - field(ONST, "AcquisitionTrigg") - field(ONVL, "1") - field(TWST, "FrameTriggerRead") - field(TWVL, "2") - field(THST, "Exposing") - field(THVL, "4") - field(FRST, "FrameReadout") - field(FRVL, "5") - field(FVST, "Imaging") - field(FVVL, "6") - field(SXST, "Acquiring") - field(SXVL, "7") - field(SVST, "LineIn1") - field(SVVL, "8") - field(EIST, "LineIn2") - field(EIVL, "9") - field(NIST, "Strobe1") - field(NIVL, "12") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_SyncOutPolarity_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_SyncOutPolarity") - field(ZRST, "Normal") - field(ZRVL, "0") - field(ONST, "Invert") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_SyncOutPolarity") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_SyncOutPolarity") - field(DOL, "0") - field(ZRST, "Normal") - field(ZRVL, "0") - field(ONST, "Invert") - field(ONVL, "1") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_StrobeSource_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_StrobeSource") - field(ZRST, "AcquisitionTrigg") - field(ZRVL, "1") - field(ONST, "FrameTriggerRead") - field(ONVL, "2") - field(TWST, "FrameTrigger") - field(TWVL, "3") - field(THST, "Exposing") - field(THVL, "4") - field(FRST, "FrameReadout") - field(FRVL, "5") - field(FVST, "Acquiring") - field(FVVL, "7") - field(SXST, "LineIn1") - field(SXVL, "8") - field(SVST, "LineIn2") - field(SVVL, "9") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_StrobeSource") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_StrobeSource") - field(DOL, "1") - field(ZRST, "AcquisitionTrigg") - field(ZRVL, "1") - field(ONST, "FrameTriggerRead") - field(ONVL, "2") - field(TWST, "FrameTrigger") - field(TWVL, "3") - field(THST, "Exposing") - field(THVL, "4") - field(FRST, "FrameReadout") - field(FRVL, "5") - field(FVST, "Acquiring") - field(FVVL, "7") - field(SXST, "LineIn1") - field(SXVL, "8") - field(SVST, "LineIn2") - field(SVVL, "9") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_StrDurationMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_StrobeDurationMode") - field(ZRST, "Source") - field(ZRVL, "0") - field(ONST, "Controlled") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_StrDurationMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_StrobeDurationMode") - field(DOL, "0") - field(ZRST, "Source") - field(ZRVL, "0") - field(ONST, "Controlled") - field(ONVL, "1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_StrobeDelay_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_StrobeDelay") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_StrobeDelay") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_StrobeDelay") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_StrobeDuration_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_StrobeDuration") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_StrobeDuration") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_StrobeDuration") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_EventSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_EventSelector") - field(ZRST, "AcquisitionStart") - field(ZRVL, "40000") - field(ONST, "AcquisitionEnd") - field(ONVL, "40001") - field(TWST, "FrameTrigger") - field(TWVL, "40002") - field(THST, "ExposureEnd") - field(THVL, "40003") - field(FRST, "AcquisitionRecor") - field(FRVL, "40004") - field(FVST, "PtpSyncLost") - field(FVVL, "40005") - field(SXST, "PtpSyncLocked") - field(SXVL, "40006") - field(SVST, "Line1RisingEdge") - field(SVVL, "40010") - field(EIST, "Line1FallingEdge") - field(EIVL, "40011") - field(NIST, "Line2RisingEdge") - field(NIVL, "40012") - field(TEST, "Line2FallingEdge") - field(TEVL, "40013") - field(ELST, "Line3RisingEdge") - field(ELVL, "40014") - field(TVST, "Line3FallingEdge") - field(TVVL, "40015") - field(TTST, "Line4RisingEdge") - field(TTVL, "40016") - field(FTST, "Line4FallingEdge") - field(FTVL, "40017") - field(FFST, "FrameTriggerRead") - field(FFVL, "40018") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_EventSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_EventSelector") - field(DOL, "40000") - field(ZRST, "AcquisitionStart") - field(ZRVL, "40000") - field(ONST, "AcquisitionEnd") - field(ONVL, "40001") - field(TWST, "FrameTrigger") - field(TWVL, "40002") - field(THST, "ExposureEnd") - field(THVL, "40003") - field(FRST, "AcquisitionRecor") - field(FRVL, "40004") - field(FVST, "PtpSyncLost") - field(FVVL, "40005") - field(SXST, "PtpSyncLocked") - field(SXVL, "40006") - field(SVST, "Line1RisingEdge") - field(SVVL, "40010") - field(EIST, "Line1FallingEdge") - field(EIVL, "40011") - field(NIST, "Line2RisingEdge") - field(NIVL, "40012") - field(TEST, "Line2FallingEdge") - field(TEVL, "40013") - field(ELST, "Line3RisingEdge") - field(ELVL, "40014") - field(TVST, "Line3FallingEdge") - field(TVVL, "40015") - field(TTST, "Line4RisingEdge") - field(TTVL, "40016") - field(FTST, "Line4FallingEdge") - field(FTVL, "40017") - field(FFST, "FrameTriggerRead") - field(FFVL, "40018") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_EventNotification_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_EventNotification") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "On") - field(ONVL, "1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_EventNotification") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_EventNotification") - field(DOL, "0") - field(ZRST, "Off") - field(ZRVL, "0") - field(ONST, "On") - field(ONVL, "1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EventsEnable1_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventsEnable1") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EventsEnable1") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventsEnable1") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EveAcqStart_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventAcquisitionStart") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EveAcqStart") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventAcquisitionStart") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EveAcquisitionEnd_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventAcquisitionEnd") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EveAcquisitionEnd") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventAcquisitionEnd") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EventFrameTrigger_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventFrameTrigger") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EventFrameTrigger") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventFrameTrigger") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EventExposureEnd_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventExposureEnd") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EventExposureEnd") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventExposureEnd") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EveAcqRecTrigger_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventAcquisitionRecordTrigger") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EveAcqRecTrigger") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventAcquisitionRecordTrigger") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EveLinRisingEdge_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventLine1RisingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EveLinRisingEdge") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventLine1RisingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EveLinFallingEdge_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventLine1FallingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EveLinFallingEdge") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventLine1FallingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EveLinRisingEdg0_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventLine2RisingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EveLinRisingEdg0") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventLine2RisingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EveLinFallingEdg0_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventLine2FallingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EveLinFallingEdg0") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventLine2FallingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EveLinRisingEdg1_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventLine3RisingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EveLinRisingEdg1") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventLine3RisingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EveLinFallingEdg1_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventLine3FallingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EveLinFallingEdg1") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventLine3FallingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EveLinRisingEdg2_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventLine4RisingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EveLinRisingEdg2") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventLine4RisingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EveLinFallingEdg2_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventLine4FallingEdge") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EveLinFallingEdg2") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventLine4FallingEdge") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EveFraTriReady_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventFrameTriggerReady") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EveFraTriReady") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventFrameTriggerReady") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EveExposureStart_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventExposureStart") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EveExposureStart") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventExposureStart") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EventPtpSyncLost_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventPtpSyncLost") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EventPtpSyncLost") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventPtpSyncLost") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EvePtpSyncLocked_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventPtpSyncLocked") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EvePtpSyncLocked") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventPtpSyncLocked") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EventOverflow_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventOverflow") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EventOverflow") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventOverflow") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_EventError_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_EventError") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_EventError") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_EventError") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_UserSetSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_UserSetSelector") - field(ZRST, "Default") - field(ZRVL, "0") - field(ONST, "UserSet1") - field(ONVL, "1") - field(TWST, "UserSet2") - field(TWVL, "2") - field(THST, "UserSet3") - field(THVL, "3") - field(FRST, "UserSet4") - field(FRVL, "4") - field(FVST, "UserSet5") - field(FVVL, "5") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_UserSetSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_UserSetSelector") - field(DOL, "0") - field(ZRST, "Default") - field(ZRVL, "0") - field(ONST, "UserSet1") - field(ONVL, "1") - field(TWST, "UserSet2") - field(TWVL, "2") - field(THST, "UserSet3") - field(THVL, "3") - field(FRST, "UserSet4") - field(FRVL, "4") - field(FVST, "UserSet5") - field(FVVL, "5") - field(DISA, "0") -} - -record(longout, "BL45P-EA-DIFF-01:DET:GC_UserSetLoad") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_C_UserSetLoad") - field(DISA, "0") -} - -record(longout, "BL45P-EA-DIFF-01:DET:GC_UserSetSave") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_C_UserSetSave") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_UseSetDefSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_UserSetDefaultSelector") - field(ZRST, "Default") - field(ZRVL, "0") - field(ONST, "UserSet1") - field(ONVL, "1") - field(TWST, "UserSet2") - field(TWVL, "2") - field(THST, "UserSet3") - field(THVL, "3") - field(FRST, "UserSet4") - field(FRVL, "4") - field(FVST, "UserSet5") - field(FVVL, "5") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_UseSetDefSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_UserSetDefaultSelector") - field(DOL, "0") - field(ZRST, "Default") - field(ZRVL, "0") - field(ONST, "UserSet1") - field(ONVL, "1") - field(TWST, "UserSet2") - field(TWVL, "2") - field(THST, "UserSet3") - field(THVL, "3") - field(FRST, "UserSet4") - field(FRVL, "4") - field(FVST, "UserSet5") - field(FVVL, "5") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_PvDumTriSelector_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_PvDummyTriggerSelector") - field(ZRST, "FrameStart") - field(ZRVL, "0") - field(ONST, "AcquisitionStart") - field(ONVL, "3") - field(TWST, "AcquisitionEnd") - field(TWVL, "4") - field(THST, "AcquisitionRecor") - field(THVL, "6") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_PvDumTriSelector") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_PvDummyTriggerSelector") - field(DOL, "0") - field(ZRST, "FrameStart") - field(ZRVL, "0") - field(ONST, "AcquisitionStart") - field(ONVL, "3") - field(TWST, "AcquisitionEnd") - field(TWVL, "4") - field(THST, "AcquisitionRecor") - field(THVL, "6") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_PvDumFraStaTriMod_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_PvDummyFrameStartTriggerMode") - field(ZRST, "Freerun") - field(ZRVL, "2147483648") - field(ONST, "SyncIn1") - field(ONVL, "2147483649") - field(TWST, "SyncIn2") - field(TWVL, "2147483650") - field(THST, "SyncIn3") - field(THVL, "2147483651") - field(FRST, "SyncIn4") - field(FRVL, "2147483652") - field(FVST, "FixedRate") - field(FVVL, "2147483653") - field(SXST, "Software") - field(SXVL, "2147483654") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_PvDumFraStaTriMod") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_PvDummyFrameStartTriggerMode") - field(DOL, "2147483648") - field(ZRST, "Freerun") - field(ZRVL, "2147483648") - field(ONST, "SyncIn1") - field(ONVL, "2147483649") - field(TWST, "SyncIn2") - field(TWVL, "2147483650") - field(THST, "SyncIn3") - field(THVL, "2147483651") - field(FRST, "SyncIn4") - field(FRVL, "2147483652") - field(FVST, "FixedRate") - field(FVVL, "2147483653") - field(SXST, "Software") - field(SXVL, "2147483654") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_PvDumTriggerMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_PvDummyTriggerMode") - field(ZRST, "Disabled") - field(ZRVL, "0") - field(ONST, "SyncIn1") - field(ONVL, "2147483649") - field(TWST, "SyncIn2") - field(TWVL, "2147483650") - field(THST, "SyncIn3") - field(THVL, "2147483651") - field(FRST, "SyncIn4") - field(FRVL, "2147483652") - field(FVST, "FixedRate") - field(FVVL, "2147483653") - field(SXST, "Software") - field(SXVL, "2147483654") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_PvDumTriggerMode") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_PvDummyTriggerMode") - field(DOL, "0") - field(ZRST, "Disabled") - field(ZRVL, "0") - field(ONST, "SyncIn1") - field(ONVL, "2147483649") - field(TWST, "SyncIn2") - field(TWVL, "2147483650") - field(THST, "SyncIn3") - field(THVL, "2147483651") - field(FRST, "SyncIn4") - field(FRVL, "2147483652") - field(FVST, "FixedRate") - field(FVVL, "2147483653") - field(SXST, "Software") - field(SXVL, "2147483654") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_FraStaTriDelay_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_FrameStartTriggerDelay") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_FraStaTriDelay") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_FrameStartTriggerDelay") - field(DISA, "0") -} - -record(mbbi, "BL45P-EA-DIFF-01:DET:GC_ExposureModeValue_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.DET,0,1)GC_E_ExposureModeValue") - field(ZRST, "Timed") - field(ZRVL, "1") - field(ONST, "AutoOnce") - field(ONVL, "3") - field(TWST, "Auto") - field(TWVL, "2") - field(THST, "TriggerWidth") - field(THVL, "5") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:DET:GC_ExposureModeValue") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.DET,0,1)GC_E_ExposureModeValue") - field(DOL, "1") - field(ZRST, "Timed") - field(ZRVL, "1") - field(ONST, "AutoOnce") - field(ONVL, "3") - field(TWST, "Auto") - field(TWVL, "2") - field(THST, "TriggerWidth") - field(THVL, "5") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_ExposureValue_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_ExposureValue") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_ExposureValue") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_ExposureValue") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_TimeStampValueLo_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_TimeStampValueLo") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_TimeStampValueLo") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_TimeStampValueLo") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_TimeStampValueHi_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_TimeStampValueHi") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_TimeStampValueHi") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_TimeStampValueHi") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_WhitebalValueRed_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_WhitebalValueRed") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_WhitebalValueRed") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_WhitebalValueRed") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_WhitebalValueBlue_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_WhitebalValueBlue") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_WhitebalValueBlue") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_WhitebalValueBlue") - field(DISA, "0") -} - -record(stringin, "BL45P-EA-DIFF-01:DET:GC_ModelName_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.DET,0,1)GC_S_ModelName") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_PvGainRaw_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_PvGainRaw") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_PvGainRaw") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_PvGainRaw") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_PvGainAutoMin_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_PvGainAutoMin") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_PvGainAutoMin") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_PvGainAutoMin") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_PvGainAutoMax_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_PvGainAutoMax") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_PvGainAutoMax") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_PvGainAutoMax") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_OffsetValue_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_OffsetValue") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_OffsetValue") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_OffsetValue") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_PtpAcqGateTimeHi_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_PtpAcquisitionGateTimeHi") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_PtpAcqGateTimeHi") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_PtpAcquisitionGateTimeHi") - field(DISA, "0") -} - -record(ai, "BL45P-EA-DIFF-01:DET:GC_PtpAcqGateTimeLo_RBV") { - field(DTYP, "asynInt64") - field(INP, "@asyn(DIFF.DET,0,1)GC_I_PtpAcquisitionGateTimeLo") - field(SCAN, "I/O Intr") - field(DISA, "0") -} - -record(ao, "BL45P-EA-DIFF-01:DET:GC_PtpAcqGateTimeLo") { - field(DTYP, "asynInt64") - field(OUT, "@asyn(DIFF.DET,0,1)GC_I_PtpAcquisitionGateTimeLo") - field(DISA, "0") -} - -#=================================================================# -# Template file: NDROI.template -# Database for ND ROIs -# Mark Rivers -# April 22, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DET.roi, edmtab, NDROI.edl, P=BL45P-EA-MAP-01,R=:ROI: - -# This associates a BOY screen with the template -# % gui, DET.roi, boydetail,ADApp_opi/dls/roi_detail.opi, P=BL45P-EA-MAP-01, R=:ROI:, DESC=Region of Interest -# % gui, DET.roi, boyembed, ADApp_opi/dls/roi_embed_box.opi, P=BL45P-EA-MAP-01, R=:ROI:, DESC=Region of Interest -# % gui, DET.roi, boyembed, ADApp_opi/dls/roi_embed.opi, P=BL45P-EA-MAP-01, R=:ROI:, DESC=Region of Interest - -# % gui, DET.roi, groupHeading, Info -# % gui, DET.roi, readback, Port name, BL45P-EA-MAP-01:ROI:PortName_RBV -# % gui, DET.roi, readback, Plugin type, BL45P-EA-MAP-01:ROI:PluginType_RBV -# Input -# % gui, DET.roi, demandString, Input, BL45P-EA-MAP-01:ROI:NDArrayPort -# % gui, DET.roi, readback, Input, BL45P-EA-MAP-01:ROI:NDArrayPort_RBV - -# % gui, DET.roi, groupHeading, Callback -# % gui, DET.roi, enum, Callbacks, BL45P-EA-MAP-01:ROI:EnableCallbacks -# % gui, DET.roi, statusbits, Callbacks, BL45P-EA-MAP-01:ROI:EnableCallbacks_RBV -# % gui, DET.roi, demand, Min Callback Time, BL45P-EA-MAP-01:ROI:MinCallbackTime -# % gui, DET.roi, readback, Min Callback Time, BL45P-EA-MAP-01:ROI:MinCallbackTime_RBV -# % gui, DET.roi, enum, Block Callbacks, BL45P-EA-MAP-01:ROI:BlockingCallbacks -# % gui, DET.roi, statusbits, Block Callbacks, BL45P-EA-MAP-01:ROI:BlockingCallbacks_RBV - -# % gui, DET.roi, groupHeading, Counters -# % gui, DET.roi, demand, Array Counter, BL45P-EA-MAP-01:ROI:ArrayCounter -# % gui, DET.roi, readback, Array Counter, BL45P-EA-MAP-01:ROI:ArrayCounter_RBV -# % gui, DET.roi, readback, Array Rate (fps), BL45P-EA-MAP-01:ROI:ArrayRate_RBV -# % gui, DET.roi, readback, Queue Use, BL45P-EA-MAP-01:ROI:QueueUse -# % gui, DET.roi, readback, Queue Size, BL45P-EA-MAP-01:ROI:QueueSize -# % gui, DET.roi, demand, Dropped Arrays, BL45P-EA-MAP-01:ROI:DroppedArrays -# % gui, DET.roi, readback, Dropped Arrays, BL45P-EA-MAP-01:ROI:DroppedArrays_RBV - -# % gui, DET.roi, groupHeading, Array Settings -# % gui, DET.roi, readback, Num Dimensions, BL45P-EA-MAP-01:ROI:NDimensions_RBV -# % gui, DET.roi, readback, Dim 0 Size, BL45P-EA-MAP-01:ROI:ArraySize0_RBV -# % gui, DET.roi, readback, Dim 1 Size, BL45P-EA-MAP-01:ROI:ArraySize1_RBV -# % gui, DET.roi, readback, Dim 2 Size, BL45P-EA-MAP-01:ROI:ArraySize2_RBV -# % gui, DET.roi, readback, Input Data Type, BL45P-EA-MAP-01:ROI:DataType_RBV -# % gui, DET.roi, readback, Colour Mode, BL45P-EA-MAP-01:ROI:ColorMode_RBV -# % gui, DET.roi, readback, Bayer Pattern, BL45P-EA-MAP-01:ROI:BayerPattern_RBV -# % gui, DET.roi, readback, Unique id, BL45P-EA-MAP-01:ROI:UniqueId_RBV -# % gui, DET.roi, readback, Timestamp, BL45P-EA-MAP-01:ROI:TimeStamp_RBV - -# Output -# % gui, DET.roi, groupHeading, Output -# % gui, DET.roi, demand, Name, BL45P-EA-MAP-01:ROI:Name -# % gui, DET.roi, enum, Out data type, BL45P-EA-MAP-01:ROI:DataTypeOut -# % gui, DET.roi, readback, Out data type, BL45P-EA-MAP-01:ROI:DataTypeOut_RBV -# % gui, DET.roi, demand, Attributes file, BL45P-EA-MAP-01:ROI:NDAttributesFile -# Scaling -# % gui, DET.roi, groupHeading, Scaling -# % gui, DET.roi, enum, Enable Scaling, BL45P-EA-MAP-01:ROI:EnableScale -# % gui, DET.roi, readback, Enable Scaling, BL45P-EA-MAP-01:ROI:EnableScale_RBV -# % gui, DET.roi, demand, Scale Divisor, BL45P-EA-MAP-01:ROI:Scale -# % gui, DET.roi, readback, Scale Divisor, BL45P-EA-MAP-01:ROI:Scale_RBV -# X region -# % gui, DET.roi, groupHeading, X Region -# % gui, DET.roi, enum, X, BL45P-EA-MAP-01:ROI:EnableX -# % gui, DET.roi, readback, X, BL45P-EA-MAP-01:ROI:EnableX_RBV -# % gui, DET.roi, enum, Autosize X, BL45P-EA-MAP-01:ROI:AutoSizeX -# % gui, DET.roi, readback, Autosize X, BL45P-EA-MAP-01:ROI:AutoSizeX_RBV -# % gui, DET.roi, readback, Input Size X, BL45P-EA-MAP-01:ROI:MaxSizeX_RBV -# % gui, DET.roi, demand, Binning X, BL45P-EA-MAP-01:ROI:BinX -# % gui, DET.roi, readback, Binning X, BL45P-EA-MAP-01:ROI:BinX_RBV -# % gui, DET.roi, demand, Start X, BL45P-EA-MAP-01:ROI:MinX -# % gui, DET.roi, readback, Start X, BL45P-EA-MAP-01:ROI:MinX_RBV -# % gui, DET.roi, demand, Size X, BL45P-EA-MAP-01:ROI:SizeX -# % gui, DET.roi, readback, Size X, BL45P-EA-MAP-01:ROI:SizeX_RBV -# % gui, DET.roi, enum, Reverse X, BL45P-EA-MAP-01:ROI:ReverseX -# % gui, DET.roi, readback, Reverse X, BL45P-EA-MAP-01:ROI:ReverseX_RBV -# % gui, DET.roi, readback, Bytes X, BL45P-EA-MAP-01:ROI:ArraySizeX_RBV -# Y region -# % gui, DET.roi, groupHeading, Y Region -# % gui, DET.roi, enum, Y, BL45P-EA-MAP-01:ROI:EnableY -# % gui, DET.roi, readback, Y, BL45P-EA-MAP-01:ROI:EnableY_RBV -# % gui, DET.roi, enum, Autosize Y, BL45P-EA-MAP-01:ROI:AutoSizeY -# % gui, DET.roi, readback, Autosize Y, BL45P-EA-MAP-01:ROI:AutoSizeY_RBV -# % gui, DET.roi, readback, Input size Y, BL45P-EA-MAP-01:ROI:MaxSizeY_RBV -# % gui, DET.roi, demand, Binning Y, BL45P-EA-MAP-01:ROI:BinY -# % gui, DET.roi, readback, Binning Y, BL45P-EA-MAP-01:ROI:BinY_RBV -# % gui, DET.roi, demand, Start Y, BL45P-EA-MAP-01:ROI:MinY -# % gui, DET.roi, readback, Start Y, BL45P-EA-MAP-01:ROI:MinY_RBV -# % gui, DET.roi, demand, Size Y, BL45P-EA-MAP-01:ROI:SizeY -# % gui, DET.roi, readback, Size Y, BL45P-EA-MAP-01:ROI:SizeY_RBV -# % gui, DET.roi, enum, Reverse Y, BL45P-EA-MAP-01:ROI:ReverseY -# % gui, DET.roi, readback, Reverse Y, BL45P-EA-MAP-01:ROI:ReverseY_RBV -# % gui, DET.roi, readback, Bytes Y, BL45P-EA-MAP-01:ROI:ArraySizeY_RBV -# Z region -# % gui, DET.roi, groupHeading, Z Region -# % gui, DET.roi, enum, Z, BL45P-EA-MAP-01:ROI:EnableZ -# % gui, DET.roi, readback, Z, BL45P-EA-MAP-01:ROI:EnableZ_RBV -# % gui, DET.roi, enum, Autosize Z, BL45P-EA-MAP-01:ROI:AutoSizeZ -# % gui, DET.roi, readback, Autosize Z, BL45P-EA-MAP-01:ROI:AutoSizeZ_RBV -# % gui, DET.roi, readback, Input size Z, BL45P-EA-MAP-01:ROI:MaxSizeZ_RBV -# % gui, DET.roi, demand, Binning Z, BL45P-EA-MAP-01:ROI:BinZ -# % gui, DET.roi, readback, Binning Z, BL45P-EA-MAP-01:ROI:BinZ_RBV -# % gui, DET.roi, demand, Start Z, BL45P-EA-MAP-01:ROI:MinZ -# % gui, DET.roi, readback, Start Z, BL45P-EA-MAP-01:ROI:MinZ_RBV -# % gui, DET.roi, demand, Size Z, BL45P-EA-MAP-01:ROI:SizeZ -# % gui, DET.roi, readback, Size Z, BL45P-EA-MAP-01:ROI:SizeZ_RBV -# % gui, DET.roi, enum, Reverse Z, BL45P-EA-MAP-01:ROI:ReverseZ -# % gui, DET.roi, readback, Reverse Z, BL45P-EA-MAP-01:ROI:ReverseZ_RBV -# % gui, DET.roi, readback, Bytes Z, BL45P-EA-MAP-01:ROI:ArraySizeZ_RBV -# Memory -# % gui, DET.roi, groupHeading, Memory -# % gui, DET.roi, readback, Max memory, BL45P-EA-MAP-01:ROI:PoolMaxMem -# % gui, DET.roi, readback, Max buffers, BL45P-EA-MAP-01:ROI:PoolMaxBuffers -# % gui, DET.roi, readback, Used memory, BL45P-EA-MAP-01:ROI:PoolUsedMem -# % gui, DET.roi, readback, Allocated buffers, BL45P-EA-MAP-01:ROI:PoolAllocBuffers -# % gui, DET.roi, readback, Free buffers, BL45P-EA-MAP-01:ROI:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.roi,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.roi,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.roi,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.roi,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.roi,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.roi,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.roi,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.roi,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:ROI:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:ROI:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:ROI:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:ROI:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:ROI:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:ROI:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:ROI:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:ROI:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:ROI:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:ROI:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:ROI:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.roi,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:ROI:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.roi,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ROI:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:ROI:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:ROI:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.roi,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:ROI:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:ROI:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.roi,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:ROI:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:ROI:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ROI:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:ROI:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:ROI:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ROI:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.roi,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ROI:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.roi,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:ROI:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:ROI:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.roi,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:ROI:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.roi,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:ROI:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:ROI:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ROI:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:ROI:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ROI:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:ROI:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:ROI:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:ROI:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:ROI:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:ROI:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.roi,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:ROI:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.roi,0,1)NDARRAY_PORT") - field(VAL, "DET.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:ROI:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.roi,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.roi,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.roi,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:ROI:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:ROI:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:ROI:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:ROI:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:ROI:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ROI:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:ROI:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.roi,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.roi,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:ROI:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.roi,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:ROI:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ROI:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ROI:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ROI:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:ROI:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:ROI:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:ROI:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:ROI:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:ROI:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:ROI:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:ROI:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:ROI:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:ROI:QueueSize") - field(INPB, "BL45P-EA-MAP-01:ROI:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:ROI:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:ROI:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.roi,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:ROI:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.roi,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ROI:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ROI:SortSize") - field(OUT, "BL45P-EA-MAP-01:ROI:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:ROI:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ROI:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:ROI:AsynIO") -{ - field(PORT, "DET.roi") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the label for the ROI # -################################################################### -record(stringout, "BL45P-EA-MAP-01:ROI:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.roi,0,1)NAME") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:ROI:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.roi,0,1)NAME") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the ROI definition # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-MAP-01:ROI:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM0_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM0_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM1_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM1_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI:BinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM2_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI:BinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM2_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM0_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM0_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM1_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM1_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI:MinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM2_MIN") - field(LOPR, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI:MinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM2_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM0_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM0_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM1_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM1_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI:SizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM2_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI:SizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM2_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI:AutoSizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM0_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI:AutoSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM0_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI:AutoSizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM1_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI:AutoSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM1_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI:AutoSizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM2_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI:AutoSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM2_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM0_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM1_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI:MaxSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM2_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM0_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM0_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM1_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM1_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI:ReverseZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM2_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI:ReverseZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM2_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI:EnableX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM0_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI:EnableX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM0_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI:EnableY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM1_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI:EnableY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM1_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI:EnableZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)DIM2_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI:EnableZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)DIM2_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the scaling of the data. Useful when # -# binning or converting data types # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI:EnableScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)ENABLE_SCALE") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI:EnableScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ENABLE_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.roi,0,1)SCALE_VALUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.roi,0,1)SCALE_VALUE") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:ROI:MaxX") -{ - field(INP, "BL45P-EA-MAP-01:ROI:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:ROI:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:ROI:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:ROI:MaxX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:ROI:MinX.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:ROI:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:ROI:MaxY") -{ - field(INP, "BL45P-EA-MAP-01:ROI:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:ROI:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:ROI:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:ROI:MaxY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:ROI:MinY.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:ROI:SizeY.HOPR NPP") -} - -################################################################### -# These records whether dimensions of 1 are collapsed (removed) # # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI:CollapseDims") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.roi,0,1)COLLAPSE_DIMS") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI:CollapseDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.roi,0,1)COLLAPSE_DIMS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -#=================================================================# -# Template file: NDROI.template -# Database for ND ROIs -# Mark Rivers -# April 22, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DET.rois.roi1, edmtab, NDROI.edl, P=BL45P-EA-MAP-01,R=:ROI1: - -# This associates a BOY screen with the template -# % gui, DET.rois.roi1, boydetail,ADApp_opi/dls/roi_detail.opi, P=BL45P-EA-MAP-01, R=:ROI1:, DESC=Region of Interest -# % gui, DET.rois.roi1, boyembed, ADApp_opi/dls/roi_embed_box.opi, P=BL45P-EA-MAP-01, R=:ROI1:, DESC=Region of Interest -# % gui, DET.rois.roi1, boyembed, ADApp_opi/dls/roi_embed.opi, P=BL45P-EA-MAP-01, R=:ROI1:, DESC=Region of Interest - -# % gui, DET.rois.roi1, groupHeading, Info -# % gui, DET.rois.roi1, readback, Port name, BL45P-EA-MAP-01:ROI1:PortName_RBV -# % gui, DET.rois.roi1, readback, Plugin type, BL45P-EA-MAP-01:ROI1:PluginType_RBV -# Input -# % gui, DET.rois.roi1, demandString, Input, BL45P-EA-MAP-01:ROI1:NDArrayPort -# % gui, DET.rois.roi1, readback, Input, BL45P-EA-MAP-01:ROI1:NDArrayPort_RBV - -# % gui, DET.rois.roi1, groupHeading, Callback -# % gui, DET.rois.roi1, enum, Callbacks, BL45P-EA-MAP-01:ROI1:EnableCallbacks -# % gui, DET.rois.roi1, statusbits, Callbacks, BL45P-EA-MAP-01:ROI1:EnableCallbacks_RBV -# % gui, DET.rois.roi1, demand, Min Callback Time, BL45P-EA-MAP-01:ROI1:MinCallbackTime -# % gui, DET.rois.roi1, readback, Min Callback Time, BL45P-EA-MAP-01:ROI1:MinCallbackTime_RBV -# % gui, DET.rois.roi1, enum, Block Callbacks, BL45P-EA-MAP-01:ROI1:BlockingCallbacks -# % gui, DET.rois.roi1, statusbits, Block Callbacks, BL45P-EA-MAP-01:ROI1:BlockingCallbacks_RBV - -# % gui, DET.rois.roi1, groupHeading, Counters -# % gui, DET.rois.roi1, demand, Array Counter, BL45P-EA-MAP-01:ROI1:ArrayCounter -# % gui, DET.rois.roi1, readback, Array Counter, BL45P-EA-MAP-01:ROI1:ArrayCounter_RBV -# % gui, DET.rois.roi1, readback, Array Rate (fps), BL45P-EA-MAP-01:ROI1:ArrayRate_RBV -# % gui, DET.rois.roi1, readback, Queue Use, BL45P-EA-MAP-01:ROI1:QueueUse -# % gui, DET.rois.roi1, readback, Queue Size, BL45P-EA-MAP-01:ROI1:QueueSize -# % gui, DET.rois.roi1, demand, Dropped Arrays, BL45P-EA-MAP-01:ROI1:DroppedArrays -# % gui, DET.rois.roi1, readback, Dropped Arrays, BL45P-EA-MAP-01:ROI1:DroppedArrays_RBV - -# % gui, DET.rois.roi1, groupHeading, Array Settings -# % gui, DET.rois.roi1, readback, Num Dimensions, BL45P-EA-MAP-01:ROI1:NDimensions_RBV -# % gui, DET.rois.roi1, readback, Dim 0 Size, BL45P-EA-MAP-01:ROI1:ArraySize0_RBV -# % gui, DET.rois.roi1, readback, Dim 1 Size, BL45P-EA-MAP-01:ROI1:ArraySize1_RBV -# % gui, DET.rois.roi1, readback, Dim 2 Size, BL45P-EA-MAP-01:ROI1:ArraySize2_RBV -# % gui, DET.rois.roi1, readback, Input Data Type, BL45P-EA-MAP-01:ROI1:DataType_RBV -# % gui, DET.rois.roi1, readback, Colour Mode, BL45P-EA-MAP-01:ROI1:ColorMode_RBV -# % gui, DET.rois.roi1, readback, Bayer Pattern, BL45P-EA-MAP-01:ROI1:BayerPattern_RBV -# % gui, DET.rois.roi1, readback, Unique id, BL45P-EA-MAP-01:ROI1:UniqueId_RBV -# % gui, DET.rois.roi1, readback, Timestamp, BL45P-EA-MAP-01:ROI1:TimeStamp_RBV - -# Output -# % gui, DET.rois.roi1, groupHeading, Output -# % gui, DET.rois.roi1, demand, Name, BL45P-EA-MAP-01:ROI1:Name -# % gui, DET.rois.roi1, enum, Out data type, BL45P-EA-MAP-01:ROI1:DataTypeOut -# % gui, DET.rois.roi1, readback, Out data type, BL45P-EA-MAP-01:ROI1:DataTypeOut_RBV -# % gui, DET.rois.roi1, demand, Attributes file, BL45P-EA-MAP-01:ROI1:NDAttributesFile -# Scaling -# % gui, DET.rois.roi1, groupHeading, Scaling -# % gui, DET.rois.roi1, enum, Enable Scaling, BL45P-EA-MAP-01:ROI1:EnableScale -# % gui, DET.rois.roi1, readback, Enable Scaling, BL45P-EA-MAP-01:ROI1:EnableScale_RBV -# % gui, DET.rois.roi1, demand, Scale Divisor, BL45P-EA-MAP-01:ROI1:Scale -# % gui, DET.rois.roi1, readback, Scale Divisor, BL45P-EA-MAP-01:ROI1:Scale_RBV -# X region -# % gui, DET.rois.roi1, groupHeading, X Region -# % gui, DET.rois.roi1, enum, X, BL45P-EA-MAP-01:ROI1:EnableX -# % gui, DET.rois.roi1, readback, X, BL45P-EA-MAP-01:ROI1:EnableX_RBV -# % gui, DET.rois.roi1, enum, Autosize X, BL45P-EA-MAP-01:ROI1:AutoSizeX -# % gui, DET.rois.roi1, readback, Autosize X, BL45P-EA-MAP-01:ROI1:AutoSizeX_RBV -# % gui, DET.rois.roi1, readback, Input Size X, BL45P-EA-MAP-01:ROI1:MaxSizeX_RBV -# % gui, DET.rois.roi1, demand, Binning X, BL45P-EA-MAP-01:ROI1:BinX -# % gui, DET.rois.roi1, readback, Binning X, BL45P-EA-MAP-01:ROI1:BinX_RBV -# % gui, DET.rois.roi1, demand, Start X, BL45P-EA-MAP-01:ROI1:MinX -# % gui, DET.rois.roi1, readback, Start X, BL45P-EA-MAP-01:ROI1:MinX_RBV -# % gui, DET.rois.roi1, demand, Size X, BL45P-EA-MAP-01:ROI1:SizeX -# % gui, DET.rois.roi1, readback, Size X, BL45P-EA-MAP-01:ROI1:SizeX_RBV -# % gui, DET.rois.roi1, enum, Reverse X, BL45P-EA-MAP-01:ROI1:ReverseX -# % gui, DET.rois.roi1, readback, Reverse X, BL45P-EA-MAP-01:ROI1:ReverseX_RBV -# % gui, DET.rois.roi1, readback, Bytes X, BL45P-EA-MAP-01:ROI1:ArraySizeX_RBV -# Y region -# % gui, DET.rois.roi1, groupHeading, Y Region -# % gui, DET.rois.roi1, enum, Y, BL45P-EA-MAP-01:ROI1:EnableY -# % gui, DET.rois.roi1, readback, Y, BL45P-EA-MAP-01:ROI1:EnableY_RBV -# % gui, DET.rois.roi1, enum, Autosize Y, BL45P-EA-MAP-01:ROI1:AutoSizeY -# % gui, DET.rois.roi1, readback, Autosize Y, BL45P-EA-MAP-01:ROI1:AutoSizeY_RBV -# % gui, DET.rois.roi1, readback, Input size Y, BL45P-EA-MAP-01:ROI1:MaxSizeY_RBV -# % gui, DET.rois.roi1, demand, Binning Y, BL45P-EA-MAP-01:ROI1:BinY -# % gui, DET.rois.roi1, readback, Binning Y, BL45P-EA-MAP-01:ROI1:BinY_RBV -# % gui, DET.rois.roi1, demand, Start Y, BL45P-EA-MAP-01:ROI1:MinY -# % gui, DET.rois.roi1, readback, Start Y, BL45P-EA-MAP-01:ROI1:MinY_RBV -# % gui, DET.rois.roi1, demand, Size Y, BL45P-EA-MAP-01:ROI1:SizeY -# % gui, DET.rois.roi1, readback, Size Y, BL45P-EA-MAP-01:ROI1:SizeY_RBV -# % gui, DET.rois.roi1, enum, Reverse Y, BL45P-EA-MAP-01:ROI1:ReverseY -# % gui, DET.rois.roi1, readback, Reverse Y, BL45P-EA-MAP-01:ROI1:ReverseY_RBV -# % gui, DET.rois.roi1, readback, Bytes Y, BL45P-EA-MAP-01:ROI1:ArraySizeY_RBV -# Z region -# % gui, DET.rois.roi1, groupHeading, Z Region -# % gui, DET.rois.roi1, enum, Z, BL45P-EA-MAP-01:ROI1:EnableZ -# % gui, DET.rois.roi1, readback, Z, BL45P-EA-MAP-01:ROI1:EnableZ_RBV -# % gui, DET.rois.roi1, enum, Autosize Z, BL45P-EA-MAP-01:ROI1:AutoSizeZ -# % gui, DET.rois.roi1, readback, Autosize Z, BL45P-EA-MAP-01:ROI1:AutoSizeZ_RBV -# % gui, DET.rois.roi1, readback, Input size Z, BL45P-EA-MAP-01:ROI1:MaxSizeZ_RBV -# % gui, DET.rois.roi1, demand, Binning Z, BL45P-EA-MAP-01:ROI1:BinZ -# % gui, DET.rois.roi1, readback, Binning Z, BL45P-EA-MAP-01:ROI1:BinZ_RBV -# % gui, DET.rois.roi1, demand, Start Z, BL45P-EA-MAP-01:ROI1:MinZ -# % gui, DET.rois.roi1, readback, Start Z, BL45P-EA-MAP-01:ROI1:MinZ_RBV -# % gui, DET.rois.roi1, demand, Size Z, BL45P-EA-MAP-01:ROI1:SizeZ -# % gui, DET.rois.roi1, readback, Size Z, BL45P-EA-MAP-01:ROI1:SizeZ_RBV -# % gui, DET.rois.roi1, enum, Reverse Z, BL45P-EA-MAP-01:ROI1:ReverseZ -# % gui, DET.rois.roi1, readback, Reverse Z, BL45P-EA-MAP-01:ROI1:ReverseZ_RBV -# % gui, DET.rois.roi1, readback, Bytes Z, BL45P-EA-MAP-01:ROI1:ArraySizeZ_RBV -# Memory -# % gui, DET.rois.roi1, groupHeading, Memory -# % gui, DET.rois.roi1, readback, Max memory, BL45P-EA-MAP-01:ROI1:PoolMaxMem -# % gui, DET.rois.roi1, readback, Max buffers, BL45P-EA-MAP-01:ROI1:PoolMaxBuffers -# % gui, DET.rois.roi1, readback, Used memory, BL45P-EA-MAP-01:ROI1:PoolUsedMem -# % gui, DET.rois.roi1, readback, Allocated buffers, BL45P-EA-MAP-01:ROI1:PoolAllocBuffers -# % gui, DET.rois.roi1, readback, Free buffers, BL45P-EA-MAP-01:ROI1:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI1:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi1,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI1:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi1,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI1:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi1,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI1:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi1,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI1:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi1,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI1:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi1,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI1:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi1,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI1:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi1,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI1:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI1:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI1:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:ROI1:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:ROI1:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:ROI1:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI1:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:ROI1:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:ROI1:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:ROI1:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:ROI1:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:ROI1:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.rois.roi1,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:ROI1:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.rois.roi1,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI1:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI1:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ROI1:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:ROI1:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:ROI1:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi1,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI1:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI1:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI1:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI1:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:ROI1:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:ROI1:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi1,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:ROI1:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:ROI1:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ROI1:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:ROI1:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:ROI1:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI1:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ROI1:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.rois.roi1,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ROI1:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.rois.roi1,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:ROI1:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:ROI1:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi1,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:ROI1:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi1,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:ROI1:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ROI1:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ROI1:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:ROI1:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:ROI1:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:ROI1:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:ROI1:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI1:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi1,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:ROI1:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.rois.roi1,0,1)NDARRAY_PORT") - field(VAL, "DET.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:ROI1:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi1,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI1:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI1:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI1:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi1,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI1:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi1,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI1:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:ROI1:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:ROI1:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:ROI1:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:ROI1:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:ROI1:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ROI1:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:ROI1:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi1,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI1:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi1,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:ROI1:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi1,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI1:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI1:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:ROI1:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI1:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ROI1:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI1:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ROI1:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI1:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:ROI1:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:ROI1:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:ROI1:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI1:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:ROI1:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:ROI1:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:ROI1:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI1:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:ROI1:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:ROI1:QueueSize") - field(INPB, "BL45P-EA-MAP-01:ROI1:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:ROI1:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:ROI1:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI1:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI1:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi1,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:ROI1:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi1,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI1:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ROI1:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI1:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ROI1:SortSize") - field(OUT, "BL45P-EA-MAP-01:ROI1:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:ROI1:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI1:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:ROI1:AsynIO") -{ - field(PORT, "DET.rois.roi1") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the label for the ROI # -################################################################### -record(stringout, "BL45P-EA-MAP-01:ROI1:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.rois.roi1,0,1)NAME") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:ROI1:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi1,0,1)NAME") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the ROI definition # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-MAP-01:ROI1:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM0_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM0_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI1:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM1_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM1_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI1:BinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM2_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:BinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM2_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI1:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM0_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM0_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI1:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM1_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM1_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI1:MinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM2_MIN") - field(LOPR, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:MinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM2_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI1:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM0_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM0_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI1:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM1_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM1_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI1:SizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM2_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:SizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM2_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI1:AutoSizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM0_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:AutoSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM0_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI1:AutoSizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM1_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:AutoSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM1_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI1:AutoSizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM2_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:AutoSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM2_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM0_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM1_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:MaxSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM2_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI1:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM0_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM0_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI1:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM1_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM1_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI1:ReverseZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM2_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:ReverseZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM2_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI1:EnableX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM0_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:EnableX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM0_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI1:EnableY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM1_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:EnableY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM1_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI1:EnableZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)DIM2_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:EnableZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)DIM2_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the scaling of the data. Useful when # -# binning or converting data types # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI1:EnableScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)ENABLE_SCALE") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:EnableScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ENABLE_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI1:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi1,0,1)SCALE_VALUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI1:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi1,0,1)SCALE_VALUE") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI1:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI1:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:ROI1:MaxX") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:ROI1:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:ROI1:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:ROI1:MaxX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:ROI1:MinX.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:ROI1:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:ROI1:MaxY") -{ - field(INP, "BL45P-EA-MAP-01:ROI1:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:ROI1:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:ROI1:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:ROI1:MaxY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:ROI1:MinY.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:ROI1:SizeY.HOPR NPP") -} - -################################################################### -# These records whether dimensions of 1 are collapsed (removed) # # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI1:CollapseDims") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi1,0,1)COLLAPSE_DIMS") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI1:CollapseDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi1,0,1)COLLAPSE_DIMS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -#=================================================================# -# Template file: NDROI.template -# Database for ND ROIs -# Mark Rivers -# April 22, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DET.rois.roi2, edmtab, NDROI.edl, P=BL45P-EA-MAP-01,R=:ROI2: - -# This associates a BOY screen with the template -# % gui, DET.rois.roi2, boydetail,ADApp_opi/dls/roi_detail.opi, P=BL45P-EA-MAP-01, R=:ROI2:, DESC=Region of Interest -# % gui, DET.rois.roi2, boyembed, ADApp_opi/dls/roi_embed_box.opi, P=BL45P-EA-MAP-01, R=:ROI2:, DESC=Region of Interest -# % gui, DET.rois.roi2, boyembed, ADApp_opi/dls/roi_embed.opi, P=BL45P-EA-MAP-01, R=:ROI2:, DESC=Region of Interest - -# % gui, DET.rois.roi2, groupHeading, Info -# % gui, DET.rois.roi2, readback, Port name, BL45P-EA-MAP-01:ROI2:PortName_RBV -# % gui, DET.rois.roi2, readback, Plugin type, BL45P-EA-MAP-01:ROI2:PluginType_RBV -# Input -# % gui, DET.rois.roi2, demandString, Input, BL45P-EA-MAP-01:ROI2:NDArrayPort -# % gui, DET.rois.roi2, readback, Input, BL45P-EA-MAP-01:ROI2:NDArrayPort_RBV - -# % gui, DET.rois.roi2, groupHeading, Callback -# % gui, DET.rois.roi2, enum, Callbacks, BL45P-EA-MAP-01:ROI2:EnableCallbacks -# % gui, DET.rois.roi2, statusbits, Callbacks, BL45P-EA-MAP-01:ROI2:EnableCallbacks_RBV -# % gui, DET.rois.roi2, demand, Min Callback Time, BL45P-EA-MAP-01:ROI2:MinCallbackTime -# % gui, DET.rois.roi2, readback, Min Callback Time, BL45P-EA-MAP-01:ROI2:MinCallbackTime_RBV -# % gui, DET.rois.roi2, enum, Block Callbacks, BL45P-EA-MAP-01:ROI2:BlockingCallbacks -# % gui, DET.rois.roi2, statusbits, Block Callbacks, BL45P-EA-MAP-01:ROI2:BlockingCallbacks_RBV - -# % gui, DET.rois.roi2, groupHeading, Counters -# % gui, DET.rois.roi2, demand, Array Counter, BL45P-EA-MAP-01:ROI2:ArrayCounter -# % gui, DET.rois.roi2, readback, Array Counter, BL45P-EA-MAP-01:ROI2:ArrayCounter_RBV -# % gui, DET.rois.roi2, readback, Array Rate (fps), BL45P-EA-MAP-01:ROI2:ArrayRate_RBV -# % gui, DET.rois.roi2, readback, Queue Use, BL45P-EA-MAP-01:ROI2:QueueUse -# % gui, DET.rois.roi2, readback, Queue Size, BL45P-EA-MAP-01:ROI2:QueueSize -# % gui, DET.rois.roi2, demand, Dropped Arrays, BL45P-EA-MAP-01:ROI2:DroppedArrays -# % gui, DET.rois.roi2, readback, Dropped Arrays, BL45P-EA-MAP-01:ROI2:DroppedArrays_RBV - -# % gui, DET.rois.roi2, groupHeading, Array Settings -# % gui, DET.rois.roi2, readback, Num Dimensions, BL45P-EA-MAP-01:ROI2:NDimensions_RBV -# % gui, DET.rois.roi2, readback, Dim 0 Size, BL45P-EA-MAP-01:ROI2:ArraySize0_RBV -# % gui, DET.rois.roi2, readback, Dim 1 Size, BL45P-EA-MAP-01:ROI2:ArraySize1_RBV -# % gui, DET.rois.roi2, readback, Dim 2 Size, BL45P-EA-MAP-01:ROI2:ArraySize2_RBV -# % gui, DET.rois.roi2, readback, Input Data Type, BL45P-EA-MAP-01:ROI2:DataType_RBV -# % gui, DET.rois.roi2, readback, Colour Mode, BL45P-EA-MAP-01:ROI2:ColorMode_RBV -# % gui, DET.rois.roi2, readback, Bayer Pattern, BL45P-EA-MAP-01:ROI2:BayerPattern_RBV -# % gui, DET.rois.roi2, readback, Unique id, BL45P-EA-MAP-01:ROI2:UniqueId_RBV -# % gui, DET.rois.roi2, readback, Timestamp, BL45P-EA-MAP-01:ROI2:TimeStamp_RBV - -# Output -# % gui, DET.rois.roi2, groupHeading, Output -# % gui, DET.rois.roi2, demand, Name, BL45P-EA-MAP-01:ROI2:Name -# % gui, DET.rois.roi2, enum, Out data type, BL45P-EA-MAP-01:ROI2:DataTypeOut -# % gui, DET.rois.roi2, readback, Out data type, BL45P-EA-MAP-01:ROI2:DataTypeOut_RBV -# % gui, DET.rois.roi2, demand, Attributes file, BL45P-EA-MAP-01:ROI2:NDAttributesFile -# Scaling -# % gui, DET.rois.roi2, groupHeading, Scaling -# % gui, DET.rois.roi2, enum, Enable Scaling, BL45P-EA-MAP-01:ROI2:EnableScale -# % gui, DET.rois.roi2, readback, Enable Scaling, BL45P-EA-MAP-01:ROI2:EnableScale_RBV -# % gui, DET.rois.roi2, demand, Scale Divisor, BL45P-EA-MAP-01:ROI2:Scale -# % gui, DET.rois.roi2, readback, Scale Divisor, BL45P-EA-MAP-01:ROI2:Scale_RBV -# X region -# % gui, DET.rois.roi2, groupHeading, X Region -# % gui, DET.rois.roi2, enum, X, BL45P-EA-MAP-01:ROI2:EnableX -# % gui, DET.rois.roi2, readback, X, BL45P-EA-MAP-01:ROI2:EnableX_RBV -# % gui, DET.rois.roi2, enum, Autosize X, BL45P-EA-MAP-01:ROI2:AutoSizeX -# % gui, DET.rois.roi2, readback, Autosize X, BL45P-EA-MAP-01:ROI2:AutoSizeX_RBV -# % gui, DET.rois.roi2, readback, Input Size X, BL45P-EA-MAP-01:ROI2:MaxSizeX_RBV -# % gui, DET.rois.roi2, demand, Binning X, BL45P-EA-MAP-01:ROI2:BinX -# % gui, DET.rois.roi2, readback, Binning X, BL45P-EA-MAP-01:ROI2:BinX_RBV -# % gui, DET.rois.roi2, demand, Start X, BL45P-EA-MAP-01:ROI2:MinX -# % gui, DET.rois.roi2, readback, Start X, BL45P-EA-MAP-01:ROI2:MinX_RBV -# % gui, DET.rois.roi2, demand, Size X, BL45P-EA-MAP-01:ROI2:SizeX -# % gui, DET.rois.roi2, readback, Size X, BL45P-EA-MAP-01:ROI2:SizeX_RBV -# % gui, DET.rois.roi2, enum, Reverse X, BL45P-EA-MAP-01:ROI2:ReverseX -# % gui, DET.rois.roi2, readback, Reverse X, BL45P-EA-MAP-01:ROI2:ReverseX_RBV -# % gui, DET.rois.roi2, readback, Bytes X, BL45P-EA-MAP-01:ROI2:ArraySizeX_RBV -# Y region -# % gui, DET.rois.roi2, groupHeading, Y Region -# % gui, DET.rois.roi2, enum, Y, BL45P-EA-MAP-01:ROI2:EnableY -# % gui, DET.rois.roi2, readback, Y, BL45P-EA-MAP-01:ROI2:EnableY_RBV -# % gui, DET.rois.roi2, enum, Autosize Y, BL45P-EA-MAP-01:ROI2:AutoSizeY -# % gui, DET.rois.roi2, readback, Autosize Y, BL45P-EA-MAP-01:ROI2:AutoSizeY_RBV -# % gui, DET.rois.roi2, readback, Input size Y, BL45P-EA-MAP-01:ROI2:MaxSizeY_RBV -# % gui, DET.rois.roi2, demand, Binning Y, BL45P-EA-MAP-01:ROI2:BinY -# % gui, DET.rois.roi2, readback, Binning Y, BL45P-EA-MAP-01:ROI2:BinY_RBV -# % gui, DET.rois.roi2, demand, Start Y, BL45P-EA-MAP-01:ROI2:MinY -# % gui, DET.rois.roi2, readback, Start Y, BL45P-EA-MAP-01:ROI2:MinY_RBV -# % gui, DET.rois.roi2, demand, Size Y, BL45P-EA-MAP-01:ROI2:SizeY -# % gui, DET.rois.roi2, readback, Size Y, BL45P-EA-MAP-01:ROI2:SizeY_RBV -# % gui, DET.rois.roi2, enum, Reverse Y, BL45P-EA-MAP-01:ROI2:ReverseY -# % gui, DET.rois.roi2, readback, Reverse Y, BL45P-EA-MAP-01:ROI2:ReverseY_RBV -# % gui, DET.rois.roi2, readback, Bytes Y, BL45P-EA-MAP-01:ROI2:ArraySizeY_RBV -# Z region -# % gui, DET.rois.roi2, groupHeading, Z Region -# % gui, DET.rois.roi2, enum, Z, BL45P-EA-MAP-01:ROI2:EnableZ -# % gui, DET.rois.roi2, readback, Z, BL45P-EA-MAP-01:ROI2:EnableZ_RBV -# % gui, DET.rois.roi2, enum, Autosize Z, BL45P-EA-MAP-01:ROI2:AutoSizeZ -# % gui, DET.rois.roi2, readback, Autosize Z, BL45P-EA-MAP-01:ROI2:AutoSizeZ_RBV -# % gui, DET.rois.roi2, readback, Input size Z, BL45P-EA-MAP-01:ROI2:MaxSizeZ_RBV -# % gui, DET.rois.roi2, demand, Binning Z, BL45P-EA-MAP-01:ROI2:BinZ -# % gui, DET.rois.roi2, readback, Binning Z, BL45P-EA-MAP-01:ROI2:BinZ_RBV -# % gui, DET.rois.roi2, demand, Start Z, BL45P-EA-MAP-01:ROI2:MinZ -# % gui, DET.rois.roi2, readback, Start Z, BL45P-EA-MAP-01:ROI2:MinZ_RBV -# % gui, DET.rois.roi2, demand, Size Z, BL45P-EA-MAP-01:ROI2:SizeZ -# % gui, DET.rois.roi2, readback, Size Z, BL45P-EA-MAP-01:ROI2:SizeZ_RBV -# % gui, DET.rois.roi2, enum, Reverse Z, BL45P-EA-MAP-01:ROI2:ReverseZ -# % gui, DET.rois.roi2, readback, Reverse Z, BL45P-EA-MAP-01:ROI2:ReverseZ_RBV -# % gui, DET.rois.roi2, readback, Bytes Z, BL45P-EA-MAP-01:ROI2:ArraySizeZ_RBV -# Memory -# % gui, DET.rois.roi2, groupHeading, Memory -# % gui, DET.rois.roi2, readback, Max memory, BL45P-EA-MAP-01:ROI2:PoolMaxMem -# % gui, DET.rois.roi2, readback, Max buffers, BL45P-EA-MAP-01:ROI2:PoolMaxBuffers -# % gui, DET.rois.roi2, readback, Used memory, BL45P-EA-MAP-01:ROI2:PoolUsedMem -# % gui, DET.rois.roi2, readback, Allocated buffers, BL45P-EA-MAP-01:ROI2:PoolAllocBuffers -# % gui, DET.rois.roi2, readback, Free buffers, BL45P-EA-MAP-01:ROI2:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI2:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi2,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI2:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi2,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI2:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi2,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI2:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi2,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI2:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi2,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI2:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi2,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI2:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi2,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI2:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi2,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI2:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI2:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI2:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:ROI2:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:ROI2:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:ROI2:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI2:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:ROI2:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:ROI2:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:ROI2:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:ROI2:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:ROI2:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.rois.roi2,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:ROI2:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.rois.roi2,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI2:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI2:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ROI2:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:ROI2:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:ROI2:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi2,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI2:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI2:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI2:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI2:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:ROI2:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:ROI2:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi2,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:ROI2:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:ROI2:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ROI2:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:ROI2:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:ROI2:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI2:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ROI2:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.rois.roi2,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ROI2:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.rois.roi2,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:ROI2:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:ROI2:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi2,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:ROI2:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi2,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:ROI2:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ROI2:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ROI2:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:ROI2:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:ROI2:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:ROI2:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:ROI2:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI2:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi2,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:ROI2:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.rois.roi2,0,1)NDARRAY_PORT") - field(VAL, "DET.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:ROI2:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi2,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI2:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI2:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI2:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi2,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI2:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi2,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI2:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:ROI2:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:ROI2:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:ROI2:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:ROI2:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:ROI2:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ROI2:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:ROI2:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi2,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI2:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi2,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:ROI2:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi2,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI2:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI2:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:ROI2:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI2:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ROI2:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI2:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ROI2:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI2:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:ROI2:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:ROI2:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:ROI2:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI2:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:ROI2:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:ROI2:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:ROI2:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI2:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:ROI2:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:ROI2:QueueSize") - field(INPB, "BL45P-EA-MAP-01:ROI2:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:ROI2:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:ROI2:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI2:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI2:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi2,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:ROI2:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi2,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI2:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ROI2:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI2:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ROI2:SortSize") - field(OUT, "BL45P-EA-MAP-01:ROI2:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:ROI2:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI2:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:ROI2:AsynIO") -{ - field(PORT, "DET.rois.roi2") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the label for the ROI # -################################################################### -record(stringout, "BL45P-EA-MAP-01:ROI2:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.rois.roi2,0,1)NAME") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:ROI2:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi2,0,1)NAME") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the ROI definition # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-MAP-01:ROI2:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM0_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM0_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI2:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM1_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM1_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI2:BinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM2_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:BinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM2_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI2:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM0_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM0_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI2:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM1_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM1_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI2:MinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM2_MIN") - field(LOPR, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:MinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM2_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI2:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM0_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM0_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI2:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM1_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM1_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI2:SizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM2_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:SizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM2_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI2:AutoSizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM0_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:AutoSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM0_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI2:AutoSizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM1_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:AutoSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM1_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI2:AutoSizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM2_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:AutoSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM2_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM0_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM1_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:MaxSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM2_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI2:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM0_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM0_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI2:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM1_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM1_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI2:ReverseZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM2_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:ReverseZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM2_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI2:EnableX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM0_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:EnableX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM0_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI2:EnableY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM1_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:EnableY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM1_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI2:EnableZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)DIM2_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:EnableZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)DIM2_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the scaling of the data. Useful when # -# binning or converting data types # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI2:EnableScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)ENABLE_SCALE") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:EnableScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ENABLE_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI2:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi2,0,1)SCALE_VALUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI2:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi2,0,1)SCALE_VALUE") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI2:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI2:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:ROI2:MaxX") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:ROI2:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:ROI2:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:ROI2:MaxX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:ROI2:MinX.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:ROI2:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:ROI2:MaxY") -{ - field(INP, "BL45P-EA-MAP-01:ROI2:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:ROI2:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:ROI2:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:ROI2:MaxY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:ROI2:MinY.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:ROI2:SizeY.HOPR NPP") -} - -################################################################### -# These records whether dimensions of 1 are collapsed (removed) # # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI2:CollapseDims") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi2,0,1)COLLAPSE_DIMS") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI2:CollapseDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi2,0,1)COLLAPSE_DIMS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -#=================================================================# -# Template file: NDROI.template -# Database for ND ROIs -# Mark Rivers -# April 22, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DET.rois.roi3, edmtab, NDROI.edl, P=BL45P-EA-MAP-01,R=:ROI3: - -# This associates a BOY screen with the template -# % gui, DET.rois.roi3, boydetail,ADApp_opi/dls/roi_detail.opi, P=BL45P-EA-MAP-01, R=:ROI3:, DESC=Region of Interest -# % gui, DET.rois.roi3, boyembed, ADApp_opi/dls/roi_embed_box.opi, P=BL45P-EA-MAP-01, R=:ROI3:, DESC=Region of Interest -# % gui, DET.rois.roi3, boyembed, ADApp_opi/dls/roi_embed.opi, P=BL45P-EA-MAP-01, R=:ROI3:, DESC=Region of Interest - -# % gui, DET.rois.roi3, groupHeading, Info -# % gui, DET.rois.roi3, readback, Port name, BL45P-EA-MAP-01:ROI3:PortName_RBV -# % gui, DET.rois.roi3, readback, Plugin type, BL45P-EA-MAP-01:ROI3:PluginType_RBV -# Input -# % gui, DET.rois.roi3, demandString, Input, BL45P-EA-MAP-01:ROI3:NDArrayPort -# % gui, DET.rois.roi3, readback, Input, BL45P-EA-MAP-01:ROI3:NDArrayPort_RBV - -# % gui, DET.rois.roi3, groupHeading, Callback -# % gui, DET.rois.roi3, enum, Callbacks, BL45P-EA-MAP-01:ROI3:EnableCallbacks -# % gui, DET.rois.roi3, statusbits, Callbacks, BL45P-EA-MAP-01:ROI3:EnableCallbacks_RBV -# % gui, DET.rois.roi3, demand, Min Callback Time, BL45P-EA-MAP-01:ROI3:MinCallbackTime -# % gui, DET.rois.roi3, readback, Min Callback Time, BL45P-EA-MAP-01:ROI3:MinCallbackTime_RBV -# % gui, DET.rois.roi3, enum, Block Callbacks, BL45P-EA-MAP-01:ROI3:BlockingCallbacks -# % gui, DET.rois.roi3, statusbits, Block Callbacks, BL45P-EA-MAP-01:ROI3:BlockingCallbacks_RBV - -# % gui, DET.rois.roi3, groupHeading, Counters -# % gui, DET.rois.roi3, demand, Array Counter, BL45P-EA-MAP-01:ROI3:ArrayCounter -# % gui, DET.rois.roi3, readback, Array Counter, BL45P-EA-MAP-01:ROI3:ArrayCounter_RBV -# % gui, DET.rois.roi3, readback, Array Rate (fps), BL45P-EA-MAP-01:ROI3:ArrayRate_RBV -# % gui, DET.rois.roi3, readback, Queue Use, BL45P-EA-MAP-01:ROI3:QueueUse -# % gui, DET.rois.roi3, readback, Queue Size, BL45P-EA-MAP-01:ROI3:QueueSize -# % gui, DET.rois.roi3, demand, Dropped Arrays, BL45P-EA-MAP-01:ROI3:DroppedArrays -# % gui, DET.rois.roi3, readback, Dropped Arrays, BL45P-EA-MAP-01:ROI3:DroppedArrays_RBV - -# % gui, DET.rois.roi3, groupHeading, Array Settings -# % gui, DET.rois.roi3, readback, Num Dimensions, BL45P-EA-MAP-01:ROI3:NDimensions_RBV -# % gui, DET.rois.roi3, readback, Dim 0 Size, BL45P-EA-MAP-01:ROI3:ArraySize0_RBV -# % gui, DET.rois.roi3, readback, Dim 1 Size, BL45P-EA-MAP-01:ROI3:ArraySize1_RBV -# % gui, DET.rois.roi3, readback, Dim 2 Size, BL45P-EA-MAP-01:ROI3:ArraySize2_RBV -# % gui, DET.rois.roi3, readback, Input Data Type, BL45P-EA-MAP-01:ROI3:DataType_RBV -# % gui, DET.rois.roi3, readback, Colour Mode, BL45P-EA-MAP-01:ROI3:ColorMode_RBV -# % gui, DET.rois.roi3, readback, Bayer Pattern, BL45P-EA-MAP-01:ROI3:BayerPattern_RBV -# % gui, DET.rois.roi3, readback, Unique id, BL45P-EA-MAP-01:ROI3:UniqueId_RBV -# % gui, DET.rois.roi3, readback, Timestamp, BL45P-EA-MAP-01:ROI3:TimeStamp_RBV - -# Output -# % gui, DET.rois.roi3, groupHeading, Output -# % gui, DET.rois.roi3, demand, Name, BL45P-EA-MAP-01:ROI3:Name -# % gui, DET.rois.roi3, enum, Out data type, BL45P-EA-MAP-01:ROI3:DataTypeOut -# % gui, DET.rois.roi3, readback, Out data type, BL45P-EA-MAP-01:ROI3:DataTypeOut_RBV -# % gui, DET.rois.roi3, demand, Attributes file, BL45P-EA-MAP-01:ROI3:NDAttributesFile -# Scaling -# % gui, DET.rois.roi3, groupHeading, Scaling -# % gui, DET.rois.roi3, enum, Enable Scaling, BL45P-EA-MAP-01:ROI3:EnableScale -# % gui, DET.rois.roi3, readback, Enable Scaling, BL45P-EA-MAP-01:ROI3:EnableScale_RBV -# % gui, DET.rois.roi3, demand, Scale Divisor, BL45P-EA-MAP-01:ROI3:Scale -# % gui, DET.rois.roi3, readback, Scale Divisor, BL45P-EA-MAP-01:ROI3:Scale_RBV -# X region -# % gui, DET.rois.roi3, groupHeading, X Region -# % gui, DET.rois.roi3, enum, X, BL45P-EA-MAP-01:ROI3:EnableX -# % gui, DET.rois.roi3, readback, X, BL45P-EA-MAP-01:ROI3:EnableX_RBV -# % gui, DET.rois.roi3, enum, Autosize X, BL45P-EA-MAP-01:ROI3:AutoSizeX -# % gui, DET.rois.roi3, readback, Autosize X, BL45P-EA-MAP-01:ROI3:AutoSizeX_RBV -# % gui, DET.rois.roi3, readback, Input Size X, BL45P-EA-MAP-01:ROI3:MaxSizeX_RBV -# % gui, DET.rois.roi3, demand, Binning X, BL45P-EA-MAP-01:ROI3:BinX -# % gui, DET.rois.roi3, readback, Binning X, BL45P-EA-MAP-01:ROI3:BinX_RBV -# % gui, DET.rois.roi3, demand, Start X, BL45P-EA-MAP-01:ROI3:MinX -# % gui, DET.rois.roi3, readback, Start X, BL45P-EA-MAP-01:ROI3:MinX_RBV -# % gui, DET.rois.roi3, demand, Size X, BL45P-EA-MAP-01:ROI3:SizeX -# % gui, DET.rois.roi3, readback, Size X, BL45P-EA-MAP-01:ROI3:SizeX_RBV -# % gui, DET.rois.roi3, enum, Reverse X, BL45P-EA-MAP-01:ROI3:ReverseX -# % gui, DET.rois.roi3, readback, Reverse X, BL45P-EA-MAP-01:ROI3:ReverseX_RBV -# % gui, DET.rois.roi3, readback, Bytes X, BL45P-EA-MAP-01:ROI3:ArraySizeX_RBV -# Y region -# % gui, DET.rois.roi3, groupHeading, Y Region -# % gui, DET.rois.roi3, enum, Y, BL45P-EA-MAP-01:ROI3:EnableY -# % gui, DET.rois.roi3, readback, Y, BL45P-EA-MAP-01:ROI3:EnableY_RBV -# % gui, DET.rois.roi3, enum, Autosize Y, BL45P-EA-MAP-01:ROI3:AutoSizeY -# % gui, DET.rois.roi3, readback, Autosize Y, BL45P-EA-MAP-01:ROI3:AutoSizeY_RBV -# % gui, DET.rois.roi3, readback, Input size Y, BL45P-EA-MAP-01:ROI3:MaxSizeY_RBV -# % gui, DET.rois.roi3, demand, Binning Y, BL45P-EA-MAP-01:ROI3:BinY -# % gui, DET.rois.roi3, readback, Binning Y, BL45P-EA-MAP-01:ROI3:BinY_RBV -# % gui, DET.rois.roi3, demand, Start Y, BL45P-EA-MAP-01:ROI3:MinY -# % gui, DET.rois.roi3, readback, Start Y, BL45P-EA-MAP-01:ROI3:MinY_RBV -# % gui, DET.rois.roi3, demand, Size Y, BL45P-EA-MAP-01:ROI3:SizeY -# % gui, DET.rois.roi3, readback, Size Y, BL45P-EA-MAP-01:ROI3:SizeY_RBV -# % gui, DET.rois.roi3, enum, Reverse Y, BL45P-EA-MAP-01:ROI3:ReverseY -# % gui, DET.rois.roi3, readback, Reverse Y, BL45P-EA-MAP-01:ROI3:ReverseY_RBV -# % gui, DET.rois.roi3, readback, Bytes Y, BL45P-EA-MAP-01:ROI3:ArraySizeY_RBV -# Z region -# % gui, DET.rois.roi3, groupHeading, Z Region -# % gui, DET.rois.roi3, enum, Z, BL45P-EA-MAP-01:ROI3:EnableZ -# % gui, DET.rois.roi3, readback, Z, BL45P-EA-MAP-01:ROI3:EnableZ_RBV -# % gui, DET.rois.roi3, enum, Autosize Z, BL45P-EA-MAP-01:ROI3:AutoSizeZ -# % gui, DET.rois.roi3, readback, Autosize Z, BL45P-EA-MAP-01:ROI3:AutoSizeZ_RBV -# % gui, DET.rois.roi3, readback, Input size Z, BL45P-EA-MAP-01:ROI3:MaxSizeZ_RBV -# % gui, DET.rois.roi3, demand, Binning Z, BL45P-EA-MAP-01:ROI3:BinZ -# % gui, DET.rois.roi3, readback, Binning Z, BL45P-EA-MAP-01:ROI3:BinZ_RBV -# % gui, DET.rois.roi3, demand, Start Z, BL45P-EA-MAP-01:ROI3:MinZ -# % gui, DET.rois.roi3, readback, Start Z, BL45P-EA-MAP-01:ROI3:MinZ_RBV -# % gui, DET.rois.roi3, demand, Size Z, BL45P-EA-MAP-01:ROI3:SizeZ -# % gui, DET.rois.roi3, readback, Size Z, BL45P-EA-MAP-01:ROI3:SizeZ_RBV -# % gui, DET.rois.roi3, enum, Reverse Z, BL45P-EA-MAP-01:ROI3:ReverseZ -# % gui, DET.rois.roi3, readback, Reverse Z, BL45P-EA-MAP-01:ROI3:ReverseZ_RBV -# % gui, DET.rois.roi3, readback, Bytes Z, BL45P-EA-MAP-01:ROI3:ArraySizeZ_RBV -# Memory -# % gui, DET.rois.roi3, groupHeading, Memory -# % gui, DET.rois.roi3, readback, Max memory, BL45P-EA-MAP-01:ROI3:PoolMaxMem -# % gui, DET.rois.roi3, readback, Max buffers, BL45P-EA-MAP-01:ROI3:PoolMaxBuffers -# % gui, DET.rois.roi3, readback, Used memory, BL45P-EA-MAP-01:ROI3:PoolUsedMem -# % gui, DET.rois.roi3, readback, Allocated buffers, BL45P-EA-MAP-01:ROI3:PoolAllocBuffers -# % gui, DET.rois.roi3, readback, Free buffers, BL45P-EA-MAP-01:ROI3:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI3:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi3,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI3:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi3,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI3:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi3,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI3:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi3,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI3:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi3,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI3:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi3,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI3:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi3,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI3:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi3,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI3:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI3:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI3:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:ROI3:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:ROI3:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:ROI3:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI3:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:ROI3:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:ROI3:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:ROI3:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:ROI3:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:ROI3:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.rois.roi3,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:ROI3:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.rois.roi3,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI3:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI3:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ROI3:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:ROI3:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:ROI3:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi3,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI3:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI3:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI3:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI3:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:ROI3:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:ROI3:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi3,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:ROI3:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:ROI3:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ROI3:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:ROI3:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:ROI3:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI3:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ROI3:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.rois.roi3,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ROI3:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.rois.roi3,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:ROI3:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:ROI3:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi3,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:ROI3:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi3,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:ROI3:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ROI3:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ROI3:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:ROI3:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:ROI3:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:ROI3:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:ROI3:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI3:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi3,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:ROI3:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.rois.roi3,0,1)NDARRAY_PORT") - field(VAL, "DET.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:ROI3:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi3,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI3:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI3:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI3:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi3,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI3:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi3,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI3:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:ROI3:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:ROI3:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:ROI3:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:ROI3:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:ROI3:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ROI3:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:ROI3:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi3,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI3:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi3,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:ROI3:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi3,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI3:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI3:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:ROI3:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI3:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ROI3:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI3:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ROI3:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI3:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:ROI3:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:ROI3:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:ROI3:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI3:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:ROI3:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:ROI3:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:ROI3:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI3:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:ROI3:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:ROI3:QueueSize") - field(INPB, "BL45P-EA-MAP-01:ROI3:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:ROI3:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:ROI3:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI3:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI3:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi3,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:ROI3:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi3,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI3:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ROI3:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI3:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ROI3:SortSize") - field(OUT, "BL45P-EA-MAP-01:ROI3:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:ROI3:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI3:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:ROI3:AsynIO") -{ - field(PORT, "DET.rois.roi3") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the label for the ROI # -################################################################### -record(stringout, "BL45P-EA-MAP-01:ROI3:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.rois.roi3,0,1)NAME") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:ROI3:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi3,0,1)NAME") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the ROI definition # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-MAP-01:ROI3:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM0_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM0_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI3:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM1_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM1_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI3:BinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM2_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:BinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM2_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI3:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM0_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM0_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI3:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM1_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM1_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI3:MinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM2_MIN") - field(LOPR, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:MinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM2_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI3:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM0_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM0_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI3:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM1_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM1_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI3:SizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM2_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:SizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM2_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI3:AutoSizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM0_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:AutoSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM0_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI3:AutoSizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM1_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:AutoSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM1_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI3:AutoSizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM2_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:AutoSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM2_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM0_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM1_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:MaxSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM2_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI3:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM0_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM0_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI3:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM1_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM1_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI3:ReverseZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM2_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:ReverseZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM2_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI3:EnableX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM0_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:EnableX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM0_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI3:EnableY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM1_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:EnableY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM1_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI3:EnableZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)DIM2_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:EnableZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)DIM2_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the scaling of the data. Useful when # -# binning or converting data types # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI3:EnableScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)ENABLE_SCALE") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:EnableScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ENABLE_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI3:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi3,0,1)SCALE_VALUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI3:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi3,0,1)SCALE_VALUE") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI3:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI3:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:ROI3:MaxX") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:ROI3:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:ROI3:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:ROI3:MaxX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:ROI3:MinX.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:ROI3:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:ROI3:MaxY") -{ - field(INP, "BL45P-EA-MAP-01:ROI3:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:ROI3:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:ROI3:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:ROI3:MaxY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:ROI3:MinY.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:ROI3:SizeY.HOPR NPP") -} - -################################################################### -# These records whether dimensions of 1 are collapsed (removed) # # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI3:CollapseDims") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi3,0,1)COLLAPSE_DIMS") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI3:CollapseDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi3,0,1)COLLAPSE_DIMS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -#=================================================================# -# Template file: NDROI.template -# Database for ND ROIs -# Mark Rivers -# April 22, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DET.rois.roi4, edmtab, NDROI.edl, P=BL45P-EA-MAP-01,R=:ROI4: - -# This associates a BOY screen with the template -# % gui, DET.rois.roi4, boydetail,ADApp_opi/dls/roi_detail.opi, P=BL45P-EA-MAP-01, R=:ROI4:, DESC=Region of Interest -# % gui, DET.rois.roi4, boyembed, ADApp_opi/dls/roi_embed_box.opi, P=BL45P-EA-MAP-01, R=:ROI4:, DESC=Region of Interest -# % gui, DET.rois.roi4, boyembed, ADApp_opi/dls/roi_embed.opi, P=BL45P-EA-MAP-01, R=:ROI4:, DESC=Region of Interest - -# % gui, DET.rois.roi4, groupHeading, Info -# % gui, DET.rois.roi4, readback, Port name, BL45P-EA-MAP-01:ROI4:PortName_RBV -# % gui, DET.rois.roi4, readback, Plugin type, BL45P-EA-MAP-01:ROI4:PluginType_RBV -# Input -# % gui, DET.rois.roi4, demandString, Input, BL45P-EA-MAP-01:ROI4:NDArrayPort -# % gui, DET.rois.roi4, readback, Input, BL45P-EA-MAP-01:ROI4:NDArrayPort_RBV - -# % gui, DET.rois.roi4, groupHeading, Callback -# % gui, DET.rois.roi4, enum, Callbacks, BL45P-EA-MAP-01:ROI4:EnableCallbacks -# % gui, DET.rois.roi4, statusbits, Callbacks, BL45P-EA-MAP-01:ROI4:EnableCallbacks_RBV -# % gui, DET.rois.roi4, demand, Min Callback Time, BL45P-EA-MAP-01:ROI4:MinCallbackTime -# % gui, DET.rois.roi4, readback, Min Callback Time, BL45P-EA-MAP-01:ROI4:MinCallbackTime_RBV -# % gui, DET.rois.roi4, enum, Block Callbacks, BL45P-EA-MAP-01:ROI4:BlockingCallbacks -# % gui, DET.rois.roi4, statusbits, Block Callbacks, BL45P-EA-MAP-01:ROI4:BlockingCallbacks_RBV - -# % gui, DET.rois.roi4, groupHeading, Counters -# % gui, DET.rois.roi4, demand, Array Counter, BL45P-EA-MAP-01:ROI4:ArrayCounter -# % gui, DET.rois.roi4, readback, Array Counter, BL45P-EA-MAP-01:ROI4:ArrayCounter_RBV -# % gui, DET.rois.roi4, readback, Array Rate (fps), BL45P-EA-MAP-01:ROI4:ArrayRate_RBV -# % gui, DET.rois.roi4, readback, Queue Use, BL45P-EA-MAP-01:ROI4:QueueUse -# % gui, DET.rois.roi4, readback, Queue Size, BL45P-EA-MAP-01:ROI4:QueueSize -# % gui, DET.rois.roi4, demand, Dropped Arrays, BL45P-EA-MAP-01:ROI4:DroppedArrays -# % gui, DET.rois.roi4, readback, Dropped Arrays, BL45P-EA-MAP-01:ROI4:DroppedArrays_RBV - -# % gui, DET.rois.roi4, groupHeading, Array Settings -# % gui, DET.rois.roi4, readback, Num Dimensions, BL45P-EA-MAP-01:ROI4:NDimensions_RBV -# % gui, DET.rois.roi4, readback, Dim 0 Size, BL45P-EA-MAP-01:ROI4:ArraySize0_RBV -# % gui, DET.rois.roi4, readback, Dim 1 Size, BL45P-EA-MAP-01:ROI4:ArraySize1_RBV -# % gui, DET.rois.roi4, readback, Dim 2 Size, BL45P-EA-MAP-01:ROI4:ArraySize2_RBV -# % gui, DET.rois.roi4, readback, Input Data Type, BL45P-EA-MAP-01:ROI4:DataType_RBV -# % gui, DET.rois.roi4, readback, Colour Mode, BL45P-EA-MAP-01:ROI4:ColorMode_RBV -# % gui, DET.rois.roi4, readback, Bayer Pattern, BL45P-EA-MAP-01:ROI4:BayerPattern_RBV -# % gui, DET.rois.roi4, readback, Unique id, BL45P-EA-MAP-01:ROI4:UniqueId_RBV -# % gui, DET.rois.roi4, readback, Timestamp, BL45P-EA-MAP-01:ROI4:TimeStamp_RBV - -# Output -# % gui, DET.rois.roi4, groupHeading, Output -# % gui, DET.rois.roi4, demand, Name, BL45P-EA-MAP-01:ROI4:Name -# % gui, DET.rois.roi4, enum, Out data type, BL45P-EA-MAP-01:ROI4:DataTypeOut -# % gui, DET.rois.roi4, readback, Out data type, BL45P-EA-MAP-01:ROI4:DataTypeOut_RBV -# % gui, DET.rois.roi4, demand, Attributes file, BL45P-EA-MAP-01:ROI4:NDAttributesFile -# Scaling -# % gui, DET.rois.roi4, groupHeading, Scaling -# % gui, DET.rois.roi4, enum, Enable Scaling, BL45P-EA-MAP-01:ROI4:EnableScale -# % gui, DET.rois.roi4, readback, Enable Scaling, BL45P-EA-MAP-01:ROI4:EnableScale_RBV -# % gui, DET.rois.roi4, demand, Scale Divisor, BL45P-EA-MAP-01:ROI4:Scale -# % gui, DET.rois.roi4, readback, Scale Divisor, BL45P-EA-MAP-01:ROI4:Scale_RBV -# X region -# % gui, DET.rois.roi4, groupHeading, X Region -# % gui, DET.rois.roi4, enum, X, BL45P-EA-MAP-01:ROI4:EnableX -# % gui, DET.rois.roi4, readback, X, BL45P-EA-MAP-01:ROI4:EnableX_RBV -# % gui, DET.rois.roi4, enum, Autosize X, BL45P-EA-MAP-01:ROI4:AutoSizeX -# % gui, DET.rois.roi4, readback, Autosize X, BL45P-EA-MAP-01:ROI4:AutoSizeX_RBV -# % gui, DET.rois.roi4, readback, Input Size X, BL45P-EA-MAP-01:ROI4:MaxSizeX_RBV -# % gui, DET.rois.roi4, demand, Binning X, BL45P-EA-MAP-01:ROI4:BinX -# % gui, DET.rois.roi4, readback, Binning X, BL45P-EA-MAP-01:ROI4:BinX_RBV -# % gui, DET.rois.roi4, demand, Start X, BL45P-EA-MAP-01:ROI4:MinX -# % gui, DET.rois.roi4, readback, Start X, BL45P-EA-MAP-01:ROI4:MinX_RBV -# % gui, DET.rois.roi4, demand, Size X, BL45P-EA-MAP-01:ROI4:SizeX -# % gui, DET.rois.roi4, readback, Size X, BL45P-EA-MAP-01:ROI4:SizeX_RBV -# % gui, DET.rois.roi4, enum, Reverse X, BL45P-EA-MAP-01:ROI4:ReverseX -# % gui, DET.rois.roi4, readback, Reverse X, BL45P-EA-MAP-01:ROI4:ReverseX_RBV -# % gui, DET.rois.roi4, readback, Bytes X, BL45P-EA-MAP-01:ROI4:ArraySizeX_RBV -# Y region -# % gui, DET.rois.roi4, groupHeading, Y Region -# % gui, DET.rois.roi4, enum, Y, BL45P-EA-MAP-01:ROI4:EnableY -# % gui, DET.rois.roi4, readback, Y, BL45P-EA-MAP-01:ROI4:EnableY_RBV -# % gui, DET.rois.roi4, enum, Autosize Y, BL45P-EA-MAP-01:ROI4:AutoSizeY -# % gui, DET.rois.roi4, readback, Autosize Y, BL45P-EA-MAP-01:ROI4:AutoSizeY_RBV -# % gui, DET.rois.roi4, readback, Input size Y, BL45P-EA-MAP-01:ROI4:MaxSizeY_RBV -# % gui, DET.rois.roi4, demand, Binning Y, BL45P-EA-MAP-01:ROI4:BinY -# % gui, DET.rois.roi4, readback, Binning Y, BL45P-EA-MAP-01:ROI4:BinY_RBV -# % gui, DET.rois.roi4, demand, Start Y, BL45P-EA-MAP-01:ROI4:MinY -# % gui, DET.rois.roi4, readback, Start Y, BL45P-EA-MAP-01:ROI4:MinY_RBV -# % gui, DET.rois.roi4, demand, Size Y, BL45P-EA-MAP-01:ROI4:SizeY -# % gui, DET.rois.roi4, readback, Size Y, BL45P-EA-MAP-01:ROI4:SizeY_RBV -# % gui, DET.rois.roi4, enum, Reverse Y, BL45P-EA-MAP-01:ROI4:ReverseY -# % gui, DET.rois.roi4, readback, Reverse Y, BL45P-EA-MAP-01:ROI4:ReverseY_RBV -# % gui, DET.rois.roi4, readback, Bytes Y, BL45P-EA-MAP-01:ROI4:ArraySizeY_RBV -# Z region -# % gui, DET.rois.roi4, groupHeading, Z Region -# % gui, DET.rois.roi4, enum, Z, BL45P-EA-MAP-01:ROI4:EnableZ -# % gui, DET.rois.roi4, readback, Z, BL45P-EA-MAP-01:ROI4:EnableZ_RBV -# % gui, DET.rois.roi4, enum, Autosize Z, BL45P-EA-MAP-01:ROI4:AutoSizeZ -# % gui, DET.rois.roi4, readback, Autosize Z, BL45P-EA-MAP-01:ROI4:AutoSizeZ_RBV -# % gui, DET.rois.roi4, readback, Input size Z, BL45P-EA-MAP-01:ROI4:MaxSizeZ_RBV -# % gui, DET.rois.roi4, demand, Binning Z, BL45P-EA-MAP-01:ROI4:BinZ -# % gui, DET.rois.roi4, readback, Binning Z, BL45P-EA-MAP-01:ROI4:BinZ_RBV -# % gui, DET.rois.roi4, demand, Start Z, BL45P-EA-MAP-01:ROI4:MinZ -# % gui, DET.rois.roi4, readback, Start Z, BL45P-EA-MAP-01:ROI4:MinZ_RBV -# % gui, DET.rois.roi4, demand, Size Z, BL45P-EA-MAP-01:ROI4:SizeZ -# % gui, DET.rois.roi4, readback, Size Z, BL45P-EA-MAP-01:ROI4:SizeZ_RBV -# % gui, DET.rois.roi4, enum, Reverse Z, BL45P-EA-MAP-01:ROI4:ReverseZ -# % gui, DET.rois.roi4, readback, Reverse Z, BL45P-EA-MAP-01:ROI4:ReverseZ_RBV -# % gui, DET.rois.roi4, readback, Bytes Z, BL45P-EA-MAP-01:ROI4:ArraySizeZ_RBV -# Memory -# % gui, DET.rois.roi4, groupHeading, Memory -# % gui, DET.rois.roi4, readback, Max memory, BL45P-EA-MAP-01:ROI4:PoolMaxMem -# % gui, DET.rois.roi4, readback, Max buffers, BL45P-EA-MAP-01:ROI4:PoolMaxBuffers -# % gui, DET.rois.roi4, readback, Used memory, BL45P-EA-MAP-01:ROI4:PoolUsedMem -# % gui, DET.rois.roi4, readback, Allocated buffers, BL45P-EA-MAP-01:ROI4:PoolAllocBuffers -# % gui, DET.rois.roi4, readback, Free buffers, BL45P-EA-MAP-01:ROI4:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI4:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi4,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI4:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi4,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI4:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi4,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI4:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi4,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI4:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi4,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI4:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi4,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI4:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi4,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI4:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi4,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI4:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI4:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI4:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:ROI4:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:ROI4:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:ROI4:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI4:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:ROI4:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:ROI4:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:ROI4:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:ROI4:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:ROI4:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.rois.roi4,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:ROI4:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.rois.roi4,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI4:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI4:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ROI4:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:ROI4:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:ROI4:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi4,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI4:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI4:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI4:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI4:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:ROI4:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:ROI4:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi4,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:ROI4:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:ROI4:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ROI4:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:ROI4:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:ROI4:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI4:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ROI4:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.rois.roi4,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ROI4:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.rois.roi4,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:ROI4:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:ROI4:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi4,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:ROI4:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi4,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:ROI4:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ROI4:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ROI4:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:ROI4:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:ROI4:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:ROI4:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:ROI4:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI4:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi4,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:ROI4:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.rois.roi4,0,1)NDARRAY_PORT") - field(VAL, "DET.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:ROI4:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi4,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI4:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI4:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI4:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi4,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI4:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi4,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI4:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:ROI4:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:ROI4:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:ROI4:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:ROI4:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:ROI4:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ROI4:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:ROI4:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi4,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI4:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi4,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:ROI4:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi4,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI4:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI4:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:ROI4:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI4:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ROI4:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI4:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ROI4:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI4:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:ROI4:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:ROI4:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:ROI4:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI4:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:ROI4:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:ROI4:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:ROI4:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI4:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:ROI4:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:ROI4:QueueSize") - field(INPB, "BL45P-EA-MAP-01:ROI4:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:ROI4:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:ROI4:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI4:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI4:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi4,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:ROI4:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi4,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI4:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ROI4:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI4:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ROI4:SortSize") - field(OUT, "BL45P-EA-MAP-01:ROI4:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:ROI4:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI4:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:ROI4:AsynIO") -{ - field(PORT, "DET.rois.roi4") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the label for the ROI # -################################################################### -record(stringout, "BL45P-EA-MAP-01:ROI4:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.rois.roi4,0,1)NAME") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:ROI4:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi4,0,1)NAME") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the ROI definition # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-MAP-01:ROI4:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM0_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM0_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI4:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM1_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM1_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI4:BinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM2_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:BinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM2_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI4:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM0_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM0_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI4:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM1_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM1_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI4:MinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM2_MIN") - field(LOPR, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:MinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM2_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI4:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM0_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM0_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI4:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM1_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM1_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI4:SizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM2_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:SizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM2_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI4:AutoSizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM0_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:AutoSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM0_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI4:AutoSizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM1_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:AutoSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM1_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI4:AutoSizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM2_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:AutoSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM2_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM0_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM1_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:MaxSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM2_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI4:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM0_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM0_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI4:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM1_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM1_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI4:ReverseZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM2_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:ReverseZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM2_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI4:EnableX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM0_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:EnableX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM0_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI4:EnableY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM1_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:EnableY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM1_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI4:EnableZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)DIM2_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:EnableZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)DIM2_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the scaling of the data. Useful when # -# binning or converting data types # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI4:EnableScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)ENABLE_SCALE") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:EnableScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ENABLE_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI4:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi4,0,1)SCALE_VALUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI4:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi4,0,1)SCALE_VALUE") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI4:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI4:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:ROI4:MaxX") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:ROI4:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:ROI4:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:ROI4:MaxX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:ROI4:MinX.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:ROI4:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:ROI4:MaxY") -{ - field(INP, "BL45P-EA-MAP-01:ROI4:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:ROI4:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:ROI4:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:ROI4:MaxY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:ROI4:MinY.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:ROI4:SizeY.HOPR NPP") -} - -################################################################### -# These records whether dimensions of 1 are collapsed (removed) # # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI4:CollapseDims") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi4,0,1)COLLAPSE_DIMS") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI4:CollapseDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi4,0,1)COLLAPSE_DIMS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -#=================================================================# -# Template file: NDROI.template -# Database for ND ROIs -# Mark Rivers -# April 22, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DET.rois.roi5, edmtab, NDROI.edl, P=BL45P-EA-MAP-01,R=:ROI5: - -# This associates a BOY screen with the template -# % gui, DET.rois.roi5, boydetail,ADApp_opi/dls/roi_detail.opi, P=BL45P-EA-MAP-01, R=:ROI5:, DESC=Region of Interest -# % gui, DET.rois.roi5, boyembed, ADApp_opi/dls/roi_embed_box.opi, P=BL45P-EA-MAP-01, R=:ROI5:, DESC=Region of Interest -# % gui, DET.rois.roi5, boyembed, ADApp_opi/dls/roi_embed.opi, P=BL45P-EA-MAP-01, R=:ROI5:, DESC=Region of Interest - -# % gui, DET.rois.roi5, groupHeading, Info -# % gui, DET.rois.roi5, readback, Port name, BL45P-EA-MAP-01:ROI5:PortName_RBV -# % gui, DET.rois.roi5, readback, Plugin type, BL45P-EA-MAP-01:ROI5:PluginType_RBV -# Input -# % gui, DET.rois.roi5, demandString, Input, BL45P-EA-MAP-01:ROI5:NDArrayPort -# % gui, DET.rois.roi5, readback, Input, BL45P-EA-MAP-01:ROI5:NDArrayPort_RBV - -# % gui, DET.rois.roi5, groupHeading, Callback -# % gui, DET.rois.roi5, enum, Callbacks, BL45P-EA-MAP-01:ROI5:EnableCallbacks -# % gui, DET.rois.roi5, statusbits, Callbacks, BL45P-EA-MAP-01:ROI5:EnableCallbacks_RBV -# % gui, DET.rois.roi5, demand, Min Callback Time, BL45P-EA-MAP-01:ROI5:MinCallbackTime -# % gui, DET.rois.roi5, readback, Min Callback Time, BL45P-EA-MAP-01:ROI5:MinCallbackTime_RBV -# % gui, DET.rois.roi5, enum, Block Callbacks, BL45P-EA-MAP-01:ROI5:BlockingCallbacks -# % gui, DET.rois.roi5, statusbits, Block Callbacks, BL45P-EA-MAP-01:ROI5:BlockingCallbacks_RBV - -# % gui, DET.rois.roi5, groupHeading, Counters -# % gui, DET.rois.roi5, demand, Array Counter, BL45P-EA-MAP-01:ROI5:ArrayCounter -# % gui, DET.rois.roi5, readback, Array Counter, BL45P-EA-MAP-01:ROI5:ArrayCounter_RBV -# % gui, DET.rois.roi5, readback, Array Rate (fps), BL45P-EA-MAP-01:ROI5:ArrayRate_RBV -# % gui, DET.rois.roi5, readback, Queue Use, BL45P-EA-MAP-01:ROI5:QueueUse -# % gui, DET.rois.roi5, readback, Queue Size, BL45P-EA-MAP-01:ROI5:QueueSize -# % gui, DET.rois.roi5, demand, Dropped Arrays, BL45P-EA-MAP-01:ROI5:DroppedArrays -# % gui, DET.rois.roi5, readback, Dropped Arrays, BL45P-EA-MAP-01:ROI5:DroppedArrays_RBV - -# % gui, DET.rois.roi5, groupHeading, Array Settings -# % gui, DET.rois.roi5, readback, Num Dimensions, BL45P-EA-MAP-01:ROI5:NDimensions_RBV -# % gui, DET.rois.roi5, readback, Dim 0 Size, BL45P-EA-MAP-01:ROI5:ArraySize0_RBV -# % gui, DET.rois.roi5, readback, Dim 1 Size, BL45P-EA-MAP-01:ROI5:ArraySize1_RBV -# % gui, DET.rois.roi5, readback, Dim 2 Size, BL45P-EA-MAP-01:ROI5:ArraySize2_RBV -# % gui, DET.rois.roi5, readback, Input Data Type, BL45P-EA-MAP-01:ROI5:DataType_RBV -# % gui, DET.rois.roi5, readback, Colour Mode, BL45P-EA-MAP-01:ROI5:ColorMode_RBV -# % gui, DET.rois.roi5, readback, Bayer Pattern, BL45P-EA-MAP-01:ROI5:BayerPattern_RBV -# % gui, DET.rois.roi5, readback, Unique id, BL45P-EA-MAP-01:ROI5:UniqueId_RBV -# % gui, DET.rois.roi5, readback, Timestamp, BL45P-EA-MAP-01:ROI5:TimeStamp_RBV - -# Output -# % gui, DET.rois.roi5, groupHeading, Output -# % gui, DET.rois.roi5, demand, Name, BL45P-EA-MAP-01:ROI5:Name -# % gui, DET.rois.roi5, enum, Out data type, BL45P-EA-MAP-01:ROI5:DataTypeOut -# % gui, DET.rois.roi5, readback, Out data type, BL45P-EA-MAP-01:ROI5:DataTypeOut_RBV -# % gui, DET.rois.roi5, demand, Attributes file, BL45P-EA-MAP-01:ROI5:NDAttributesFile -# Scaling -# % gui, DET.rois.roi5, groupHeading, Scaling -# % gui, DET.rois.roi5, enum, Enable Scaling, BL45P-EA-MAP-01:ROI5:EnableScale -# % gui, DET.rois.roi5, readback, Enable Scaling, BL45P-EA-MAP-01:ROI5:EnableScale_RBV -# % gui, DET.rois.roi5, demand, Scale Divisor, BL45P-EA-MAP-01:ROI5:Scale -# % gui, DET.rois.roi5, readback, Scale Divisor, BL45P-EA-MAP-01:ROI5:Scale_RBV -# X region -# % gui, DET.rois.roi5, groupHeading, X Region -# % gui, DET.rois.roi5, enum, X, BL45P-EA-MAP-01:ROI5:EnableX -# % gui, DET.rois.roi5, readback, X, BL45P-EA-MAP-01:ROI5:EnableX_RBV -# % gui, DET.rois.roi5, enum, Autosize X, BL45P-EA-MAP-01:ROI5:AutoSizeX -# % gui, DET.rois.roi5, readback, Autosize X, BL45P-EA-MAP-01:ROI5:AutoSizeX_RBV -# % gui, DET.rois.roi5, readback, Input Size X, BL45P-EA-MAP-01:ROI5:MaxSizeX_RBV -# % gui, DET.rois.roi5, demand, Binning X, BL45P-EA-MAP-01:ROI5:BinX -# % gui, DET.rois.roi5, readback, Binning X, BL45P-EA-MAP-01:ROI5:BinX_RBV -# % gui, DET.rois.roi5, demand, Start X, BL45P-EA-MAP-01:ROI5:MinX -# % gui, DET.rois.roi5, readback, Start X, BL45P-EA-MAP-01:ROI5:MinX_RBV -# % gui, DET.rois.roi5, demand, Size X, BL45P-EA-MAP-01:ROI5:SizeX -# % gui, DET.rois.roi5, readback, Size X, BL45P-EA-MAP-01:ROI5:SizeX_RBV -# % gui, DET.rois.roi5, enum, Reverse X, BL45P-EA-MAP-01:ROI5:ReverseX -# % gui, DET.rois.roi5, readback, Reverse X, BL45P-EA-MAP-01:ROI5:ReverseX_RBV -# % gui, DET.rois.roi5, readback, Bytes X, BL45P-EA-MAP-01:ROI5:ArraySizeX_RBV -# Y region -# % gui, DET.rois.roi5, groupHeading, Y Region -# % gui, DET.rois.roi5, enum, Y, BL45P-EA-MAP-01:ROI5:EnableY -# % gui, DET.rois.roi5, readback, Y, BL45P-EA-MAP-01:ROI5:EnableY_RBV -# % gui, DET.rois.roi5, enum, Autosize Y, BL45P-EA-MAP-01:ROI5:AutoSizeY -# % gui, DET.rois.roi5, readback, Autosize Y, BL45P-EA-MAP-01:ROI5:AutoSizeY_RBV -# % gui, DET.rois.roi5, readback, Input size Y, BL45P-EA-MAP-01:ROI5:MaxSizeY_RBV -# % gui, DET.rois.roi5, demand, Binning Y, BL45P-EA-MAP-01:ROI5:BinY -# % gui, DET.rois.roi5, readback, Binning Y, BL45P-EA-MAP-01:ROI5:BinY_RBV -# % gui, DET.rois.roi5, demand, Start Y, BL45P-EA-MAP-01:ROI5:MinY -# % gui, DET.rois.roi5, readback, Start Y, BL45P-EA-MAP-01:ROI5:MinY_RBV -# % gui, DET.rois.roi5, demand, Size Y, BL45P-EA-MAP-01:ROI5:SizeY -# % gui, DET.rois.roi5, readback, Size Y, BL45P-EA-MAP-01:ROI5:SizeY_RBV -# % gui, DET.rois.roi5, enum, Reverse Y, BL45P-EA-MAP-01:ROI5:ReverseY -# % gui, DET.rois.roi5, readback, Reverse Y, BL45P-EA-MAP-01:ROI5:ReverseY_RBV -# % gui, DET.rois.roi5, readback, Bytes Y, BL45P-EA-MAP-01:ROI5:ArraySizeY_RBV -# Z region -# % gui, DET.rois.roi5, groupHeading, Z Region -# % gui, DET.rois.roi5, enum, Z, BL45P-EA-MAP-01:ROI5:EnableZ -# % gui, DET.rois.roi5, readback, Z, BL45P-EA-MAP-01:ROI5:EnableZ_RBV -# % gui, DET.rois.roi5, enum, Autosize Z, BL45P-EA-MAP-01:ROI5:AutoSizeZ -# % gui, DET.rois.roi5, readback, Autosize Z, BL45P-EA-MAP-01:ROI5:AutoSizeZ_RBV -# % gui, DET.rois.roi5, readback, Input size Z, BL45P-EA-MAP-01:ROI5:MaxSizeZ_RBV -# % gui, DET.rois.roi5, demand, Binning Z, BL45P-EA-MAP-01:ROI5:BinZ -# % gui, DET.rois.roi5, readback, Binning Z, BL45P-EA-MAP-01:ROI5:BinZ_RBV -# % gui, DET.rois.roi5, demand, Start Z, BL45P-EA-MAP-01:ROI5:MinZ -# % gui, DET.rois.roi5, readback, Start Z, BL45P-EA-MAP-01:ROI5:MinZ_RBV -# % gui, DET.rois.roi5, demand, Size Z, BL45P-EA-MAP-01:ROI5:SizeZ -# % gui, DET.rois.roi5, readback, Size Z, BL45P-EA-MAP-01:ROI5:SizeZ_RBV -# % gui, DET.rois.roi5, enum, Reverse Z, BL45P-EA-MAP-01:ROI5:ReverseZ -# % gui, DET.rois.roi5, readback, Reverse Z, BL45P-EA-MAP-01:ROI5:ReverseZ_RBV -# % gui, DET.rois.roi5, readback, Bytes Z, BL45P-EA-MAP-01:ROI5:ArraySizeZ_RBV -# Memory -# % gui, DET.rois.roi5, groupHeading, Memory -# % gui, DET.rois.roi5, readback, Max memory, BL45P-EA-MAP-01:ROI5:PoolMaxMem -# % gui, DET.rois.roi5, readback, Max buffers, BL45P-EA-MAP-01:ROI5:PoolMaxBuffers -# % gui, DET.rois.roi5, readback, Used memory, BL45P-EA-MAP-01:ROI5:PoolUsedMem -# % gui, DET.rois.roi5, readback, Allocated buffers, BL45P-EA-MAP-01:ROI5:PoolAllocBuffers -# % gui, DET.rois.roi5, readback, Free buffers, BL45P-EA-MAP-01:ROI5:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI5:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi5,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI5:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi5,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI5:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi5,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI5:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi5,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI5:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi5,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI5:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi5,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI5:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi5,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI5:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi5,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI5:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI5:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI5:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:ROI5:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:ROI5:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:ROI5:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI5:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:ROI5:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:ROI5:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:ROI5:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:ROI5:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:ROI5:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.rois.roi5,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:ROI5:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.rois.roi5,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI5:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI5:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ROI5:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:ROI5:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:ROI5:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi5,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI5:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI5:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI5:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI5:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:ROI5:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:ROI5:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi5,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:ROI5:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:ROI5:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ROI5:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:ROI5:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:ROI5:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI5:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ROI5:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.rois.roi5,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ROI5:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.rois.roi5,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:ROI5:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:ROI5:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi5,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:ROI5:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi5,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:ROI5:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ROI5:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ROI5:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:ROI5:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:ROI5:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:ROI5:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:ROI5:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI5:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi5,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:ROI5:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.rois.roi5,0,1)NDARRAY_PORT") - field(VAL, "DET.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:ROI5:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi5,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI5:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI5:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI5:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi5,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI5:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi5,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI5:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:ROI5:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:ROI5:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:ROI5:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:ROI5:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:ROI5:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ROI5:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:ROI5:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi5,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI5:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi5,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:ROI5:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi5,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI5:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI5:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:ROI5:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI5:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ROI5:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI5:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ROI5:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI5:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:ROI5:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:ROI5:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:ROI5:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI5:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:ROI5:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:ROI5:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:ROI5:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI5:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:ROI5:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:ROI5:QueueSize") - field(INPB, "BL45P-EA-MAP-01:ROI5:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:ROI5:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:ROI5:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI5:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI5:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi5,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:ROI5:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi5,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI5:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ROI5:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI5:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ROI5:SortSize") - field(OUT, "BL45P-EA-MAP-01:ROI5:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:ROI5:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI5:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:ROI5:AsynIO") -{ - field(PORT, "DET.rois.roi5") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the label for the ROI # -################################################################### -record(stringout, "BL45P-EA-MAP-01:ROI5:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.rois.roi5,0,1)NAME") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:ROI5:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi5,0,1)NAME") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the ROI definition # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-MAP-01:ROI5:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM0_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM0_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI5:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM1_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM1_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI5:BinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM2_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:BinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM2_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI5:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM0_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM0_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI5:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM1_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM1_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI5:MinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM2_MIN") - field(LOPR, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:MinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM2_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI5:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM0_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM0_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI5:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM1_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM1_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI5:SizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM2_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:SizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM2_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI5:AutoSizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM0_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:AutoSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM0_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI5:AutoSizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM1_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:AutoSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM1_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI5:AutoSizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM2_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:AutoSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM2_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM0_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM1_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:MaxSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM2_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI5:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM0_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM0_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI5:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM1_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM1_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI5:ReverseZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM2_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:ReverseZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM2_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI5:EnableX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM0_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:EnableX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM0_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI5:EnableY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM1_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:EnableY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM1_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI5:EnableZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)DIM2_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:EnableZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)DIM2_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the scaling of the data. Useful when # -# binning or converting data types # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI5:EnableScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)ENABLE_SCALE") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:EnableScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ENABLE_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI5:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi5,0,1)SCALE_VALUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI5:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi5,0,1)SCALE_VALUE") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI5:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI5:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:ROI5:MaxX") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:ROI5:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:ROI5:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:ROI5:MaxX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:ROI5:MinX.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:ROI5:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:ROI5:MaxY") -{ - field(INP, "BL45P-EA-MAP-01:ROI5:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:ROI5:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:ROI5:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:ROI5:MaxY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:ROI5:MinY.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:ROI5:SizeY.HOPR NPP") -} - -################################################################### -# These records whether dimensions of 1 are collapsed (removed) # # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI5:CollapseDims") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi5,0,1)COLLAPSE_DIMS") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI5:CollapseDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi5,0,1)COLLAPSE_DIMS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -#=================================================================# -# Template file: NDROI.template -# Database for ND ROIs -# Mark Rivers -# April 22, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DET.rois.roi6, edmtab, NDROI.edl, P=BL45P-EA-MAP-01,R=:ROI6: - -# This associates a BOY screen with the template -# % gui, DET.rois.roi6, boydetail,ADApp_opi/dls/roi_detail.opi, P=BL45P-EA-MAP-01, R=:ROI6:, DESC=Region of Interest -# % gui, DET.rois.roi6, boyembed, ADApp_opi/dls/roi_embed_box.opi, P=BL45P-EA-MAP-01, R=:ROI6:, DESC=Region of Interest -# % gui, DET.rois.roi6, boyembed, ADApp_opi/dls/roi_embed.opi, P=BL45P-EA-MAP-01, R=:ROI6:, DESC=Region of Interest - -# % gui, DET.rois.roi6, groupHeading, Info -# % gui, DET.rois.roi6, readback, Port name, BL45P-EA-MAP-01:ROI6:PortName_RBV -# % gui, DET.rois.roi6, readback, Plugin type, BL45P-EA-MAP-01:ROI6:PluginType_RBV -# Input -# % gui, DET.rois.roi6, demandString, Input, BL45P-EA-MAP-01:ROI6:NDArrayPort -# % gui, DET.rois.roi6, readback, Input, BL45P-EA-MAP-01:ROI6:NDArrayPort_RBV - -# % gui, DET.rois.roi6, groupHeading, Callback -# % gui, DET.rois.roi6, enum, Callbacks, BL45P-EA-MAP-01:ROI6:EnableCallbacks -# % gui, DET.rois.roi6, statusbits, Callbacks, BL45P-EA-MAP-01:ROI6:EnableCallbacks_RBV -# % gui, DET.rois.roi6, demand, Min Callback Time, BL45P-EA-MAP-01:ROI6:MinCallbackTime -# % gui, DET.rois.roi6, readback, Min Callback Time, BL45P-EA-MAP-01:ROI6:MinCallbackTime_RBV -# % gui, DET.rois.roi6, enum, Block Callbacks, BL45P-EA-MAP-01:ROI6:BlockingCallbacks -# % gui, DET.rois.roi6, statusbits, Block Callbacks, BL45P-EA-MAP-01:ROI6:BlockingCallbacks_RBV - -# % gui, DET.rois.roi6, groupHeading, Counters -# % gui, DET.rois.roi6, demand, Array Counter, BL45P-EA-MAP-01:ROI6:ArrayCounter -# % gui, DET.rois.roi6, readback, Array Counter, BL45P-EA-MAP-01:ROI6:ArrayCounter_RBV -# % gui, DET.rois.roi6, readback, Array Rate (fps), BL45P-EA-MAP-01:ROI6:ArrayRate_RBV -# % gui, DET.rois.roi6, readback, Queue Use, BL45P-EA-MAP-01:ROI6:QueueUse -# % gui, DET.rois.roi6, readback, Queue Size, BL45P-EA-MAP-01:ROI6:QueueSize -# % gui, DET.rois.roi6, demand, Dropped Arrays, BL45P-EA-MAP-01:ROI6:DroppedArrays -# % gui, DET.rois.roi6, readback, Dropped Arrays, BL45P-EA-MAP-01:ROI6:DroppedArrays_RBV - -# % gui, DET.rois.roi6, groupHeading, Array Settings -# % gui, DET.rois.roi6, readback, Num Dimensions, BL45P-EA-MAP-01:ROI6:NDimensions_RBV -# % gui, DET.rois.roi6, readback, Dim 0 Size, BL45P-EA-MAP-01:ROI6:ArraySize0_RBV -# % gui, DET.rois.roi6, readback, Dim 1 Size, BL45P-EA-MAP-01:ROI6:ArraySize1_RBV -# % gui, DET.rois.roi6, readback, Dim 2 Size, BL45P-EA-MAP-01:ROI6:ArraySize2_RBV -# % gui, DET.rois.roi6, readback, Input Data Type, BL45P-EA-MAP-01:ROI6:DataType_RBV -# % gui, DET.rois.roi6, readback, Colour Mode, BL45P-EA-MAP-01:ROI6:ColorMode_RBV -# % gui, DET.rois.roi6, readback, Bayer Pattern, BL45P-EA-MAP-01:ROI6:BayerPattern_RBV -# % gui, DET.rois.roi6, readback, Unique id, BL45P-EA-MAP-01:ROI6:UniqueId_RBV -# % gui, DET.rois.roi6, readback, Timestamp, BL45P-EA-MAP-01:ROI6:TimeStamp_RBV - -# Output -# % gui, DET.rois.roi6, groupHeading, Output -# % gui, DET.rois.roi6, demand, Name, BL45P-EA-MAP-01:ROI6:Name -# % gui, DET.rois.roi6, enum, Out data type, BL45P-EA-MAP-01:ROI6:DataTypeOut -# % gui, DET.rois.roi6, readback, Out data type, BL45P-EA-MAP-01:ROI6:DataTypeOut_RBV -# % gui, DET.rois.roi6, demand, Attributes file, BL45P-EA-MAP-01:ROI6:NDAttributesFile -# Scaling -# % gui, DET.rois.roi6, groupHeading, Scaling -# % gui, DET.rois.roi6, enum, Enable Scaling, BL45P-EA-MAP-01:ROI6:EnableScale -# % gui, DET.rois.roi6, readback, Enable Scaling, BL45P-EA-MAP-01:ROI6:EnableScale_RBV -# % gui, DET.rois.roi6, demand, Scale Divisor, BL45P-EA-MAP-01:ROI6:Scale -# % gui, DET.rois.roi6, readback, Scale Divisor, BL45P-EA-MAP-01:ROI6:Scale_RBV -# X region -# % gui, DET.rois.roi6, groupHeading, X Region -# % gui, DET.rois.roi6, enum, X, BL45P-EA-MAP-01:ROI6:EnableX -# % gui, DET.rois.roi6, readback, X, BL45P-EA-MAP-01:ROI6:EnableX_RBV -# % gui, DET.rois.roi6, enum, Autosize X, BL45P-EA-MAP-01:ROI6:AutoSizeX -# % gui, DET.rois.roi6, readback, Autosize X, BL45P-EA-MAP-01:ROI6:AutoSizeX_RBV -# % gui, DET.rois.roi6, readback, Input Size X, BL45P-EA-MAP-01:ROI6:MaxSizeX_RBV -# % gui, DET.rois.roi6, demand, Binning X, BL45P-EA-MAP-01:ROI6:BinX -# % gui, DET.rois.roi6, readback, Binning X, BL45P-EA-MAP-01:ROI6:BinX_RBV -# % gui, DET.rois.roi6, demand, Start X, BL45P-EA-MAP-01:ROI6:MinX -# % gui, DET.rois.roi6, readback, Start X, BL45P-EA-MAP-01:ROI6:MinX_RBV -# % gui, DET.rois.roi6, demand, Size X, BL45P-EA-MAP-01:ROI6:SizeX -# % gui, DET.rois.roi6, readback, Size X, BL45P-EA-MAP-01:ROI6:SizeX_RBV -# % gui, DET.rois.roi6, enum, Reverse X, BL45P-EA-MAP-01:ROI6:ReverseX -# % gui, DET.rois.roi6, readback, Reverse X, BL45P-EA-MAP-01:ROI6:ReverseX_RBV -# % gui, DET.rois.roi6, readback, Bytes X, BL45P-EA-MAP-01:ROI6:ArraySizeX_RBV -# Y region -# % gui, DET.rois.roi6, groupHeading, Y Region -# % gui, DET.rois.roi6, enum, Y, BL45P-EA-MAP-01:ROI6:EnableY -# % gui, DET.rois.roi6, readback, Y, BL45P-EA-MAP-01:ROI6:EnableY_RBV -# % gui, DET.rois.roi6, enum, Autosize Y, BL45P-EA-MAP-01:ROI6:AutoSizeY -# % gui, DET.rois.roi6, readback, Autosize Y, BL45P-EA-MAP-01:ROI6:AutoSizeY_RBV -# % gui, DET.rois.roi6, readback, Input size Y, BL45P-EA-MAP-01:ROI6:MaxSizeY_RBV -# % gui, DET.rois.roi6, demand, Binning Y, BL45P-EA-MAP-01:ROI6:BinY -# % gui, DET.rois.roi6, readback, Binning Y, BL45P-EA-MAP-01:ROI6:BinY_RBV -# % gui, DET.rois.roi6, demand, Start Y, BL45P-EA-MAP-01:ROI6:MinY -# % gui, DET.rois.roi6, readback, Start Y, BL45P-EA-MAP-01:ROI6:MinY_RBV -# % gui, DET.rois.roi6, demand, Size Y, BL45P-EA-MAP-01:ROI6:SizeY -# % gui, DET.rois.roi6, readback, Size Y, BL45P-EA-MAP-01:ROI6:SizeY_RBV -# % gui, DET.rois.roi6, enum, Reverse Y, BL45P-EA-MAP-01:ROI6:ReverseY -# % gui, DET.rois.roi6, readback, Reverse Y, BL45P-EA-MAP-01:ROI6:ReverseY_RBV -# % gui, DET.rois.roi6, readback, Bytes Y, BL45P-EA-MAP-01:ROI6:ArraySizeY_RBV -# Z region -# % gui, DET.rois.roi6, groupHeading, Z Region -# % gui, DET.rois.roi6, enum, Z, BL45P-EA-MAP-01:ROI6:EnableZ -# % gui, DET.rois.roi6, readback, Z, BL45P-EA-MAP-01:ROI6:EnableZ_RBV -# % gui, DET.rois.roi6, enum, Autosize Z, BL45P-EA-MAP-01:ROI6:AutoSizeZ -# % gui, DET.rois.roi6, readback, Autosize Z, BL45P-EA-MAP-01:ROI6:AutoSizeZ_RBV -# % gui, DET.rois.roi6, readback, Input size Z, BL45P-EA-MAP-01:ROI6:MaxSizeZ_RBV -# % gui, DET.rois.roi6, demand, Binning Z, BL45P-EA-MAP-01:ROI6:BinZ -# % gui, DET.rois.roi6, readback, Binning Z, BL45P-EA-MAP-01:ROI6:BinZ_RBV -# % gui, DET.rois.roi6, demand, Start Z, BL45P-EA-MAP-01:ROI6:MinZ -# % gui, DET.rois.roi6, readback, Start Z, BL45P-EA-MAP-01:ROI6:MinZ_RBV -# % gui, DET.rois.roi6, demand, Size Z, BL45P-EA-MAP-01:ROI6:SizeZ -# % gui, DET.rois.roi6, readback, Size Z, BL45P-EA-MAP-01:ROI6:SizeZ_RBV -# % gui, DET.rois.roi6, enum, Reverse Z, BL45P-EA-MAP-01:ROI6:ReverseZ -# % gui, DET.rois.roi6, readback, Reverse Z, BL45P-EA-MAP-01:ROI6:ReverseZ_RBV -# % gui, DET.rois.roi6, readback, Bytes Z, BL45P-EA-MAP-01:ROI6:ArraySizeZ_RBV -# Memory -# % gui, DET.rois.roi6, groupHeading, Memory -# % gui, DET.rois.roi6, readback, Max memory, BL45P-EA-MAP-01:ROI6:PoolMaxMem -# % gui, DET.rois.roi6, readback, Max buffers, BL45P-EA-MAP-01:ROI6:PoolMaxBuffers -# % gui, DET.rois.roi6, readback, Used memory, BL45P-EA-MAP-01:ROI6:PoolUsedMem -# % gui, DET.rois.roi6, readback, Allocated buffers, BL45P-EA-MAP-01:ROI6:PoolAllocBuffers -# % gui, DET.rois.roi6, readback, Free buffers, BL45P-EA-MAP-01:ROI6:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI6:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi6,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI6:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi6,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI6:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi6,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI6:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi6,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI6:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi6,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI6:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi6,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI6:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi6,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ROI6:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi6,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI6:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI6:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI6:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:ROI6:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:ROI6:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:ROI6:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI6:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:ROI6:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:ROI6:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:ROI6:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:ROI6:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:ROI6:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.rois.roi6,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:ROI6:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.rois.roi6,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ROI6:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ROI6:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ROI6:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:ROI6:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:ROI6:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi6,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI6:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI6:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI6:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI6:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:ROI6:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:ROI6:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi6,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:ROI6:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:ROI6:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ROI6:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:ROI6:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:ROI6:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI6:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ROI6:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.rois.roi6,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ROI6:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.rois.roi6,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:ROI6:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:ROI6:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi6,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:ROI6:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi6,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:ROI6:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ROI6:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ROI6:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:ROI6:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:ROI6:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:ROI6:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:ROI6:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ROI6:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi6,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:ROI6:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.rois.roi6,0,1)NDARRAY_PORT") - field(VAL, "DET.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:ROI6:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi6,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI6:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI6:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI6:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi6,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI6:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi6,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI6:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:ROI6:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:ROI6:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:ROI6:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:ROI6:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:ROI6:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ROI6:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:ROI6:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi6,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI6:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi6,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:ROI6:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi6,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI6:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:ROI6:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:ROI6:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI6:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ROI6:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI6:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ROI6:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI6:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:ROI6:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:ROI6:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:ROI6:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI6:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:ROI6:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:ROI6:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:ROI6:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ROI6:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:ROI6:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:ROI6:QueueSize") - field(INPB, "BL45P-EA-MAP-01:ROI6:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:ROI6:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:ROI6:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI6:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI6:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi6,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:ROI6:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi6,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI6:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ROI6:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ROI6:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ROI6:SortSize") - field(OUT, "BL45P-EA-MAP-01:ROI6:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:ROI6:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI6:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:ROI6:AsynIO") -{ - field(PORT, "DET.rois.roi6") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the label for the ROI # -################################################################### -record(stringout, "BL45P-EA-MAP-01:ROI6:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.rois.roi6,0,1)NAME") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:ROI6:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.rois.roi6,0,1)NAME") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the ROI definition # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-MAP-01:ROI6:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM0_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM0_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI6:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM1_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM1_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI6:BinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM2_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:BinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM2_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI6:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM0_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM0_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI6:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM1_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM1_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI6:MinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM2_MIN") - field(LOPR, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:MinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM2_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI6:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM0_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM0_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI6:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM1_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM1_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ROI6:SizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM2_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:SizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM2_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI6:AutoSizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM0_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:AutoSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM0_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI6:AutoSizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM1_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:AutoSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM1_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI6:AutoSizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM2_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:AutoSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM2_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM0_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM1_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:MaxSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM2_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI6:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM0_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM0_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI6:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM1_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM1_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI6:ReverseZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM2_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:ReverseZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM2_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI6:EnableX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM0_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:EnableX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM0_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI6:EnableY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM1_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:EnableY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM1_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:ROI6:EnableZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)DIM2_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:EnableZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)DIM2_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the scaling of the data. Useful when # -# binning or converting data types # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI6:EnableScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)ENABLE_SCALE") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:EnableScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ENABLE_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ROI6:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.rois.roi6,0,1)SCALE_VALUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ROI6:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.rois.roi6,0,1)SCALE_VALUE") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ROI6:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ROI6:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:ROI6:MaxX") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:ROI6:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:ROI6:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:ROI6:MaxX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:ROI6:MinX.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:ROI6:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:ROI6:MaxY") -{ - field(INP, "BL45P-EA-MAP-01:ROI6:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:ROI6:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:ROI6:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:ROI6:MaxY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:ROI6:MinY.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:ROI6:SizeY.HOPR NPP") -} - -################################################################### -# These records whether dimensions of 1 are collapsed (removed) # # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ROI6:CollapseDims") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.rois.roi6,0,1)COLLAPSE_DIMS") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ROI6:CollapseDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.rois.roi6,0,1)COLLAPSE_DIMS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -#=================================================================# -# Template file: NDROI.template -# Database for ND ROIs -# Mark Rivers -# April 22, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DIFF.roi, edmtab, NDROI.edl, P=BL45P-EA-DIFF-01,R=:ROI: - -# This associates a BOY screen with the template -# % gui, DIFF.roi, boydetail,ADApp_opi/dls/roi_detail.opi, P=BL45P-EA-DIFF-01, R=:ROI:, DESC=Region of Interest -# % gui, DIFF.roi, boyembed, ADApp_opi/dls/roi_embed_box.opi, P=BL45P-EA-DIFF-01, R=:ROI:, DESC=Region of Interest -# % gui, DIFF.roi, boyembed, ADApp_opi/dls/roi_embed.opi, P=BL45P-EA-DIFF-01, R=:ROI:, DESC=Region of Interest - -# % gui, DIFF.roi, groupHeading, Info -# % gui, DIFF.roi, readback, Port name, BL45P-EA-DIFF-01:ROI:PortName_RBV -# % gui, DIFF.roi, readback, Plugin type, BL45P-EA-DIFF-01:ROI:PluginType_RBV -# Input -# % gui, DIFF.roi, demandString, Input, BL45P-EA-DIFF-01:ROI:NDArrayPort -# % gui, DIFF.roi, readback, Input, BL45P-EA-DIFF-01:ROI:NDArrayPort_RBV - -# % gui, DIFF.roi, groupHeading, Callback -# % gui, DIFF.roi, enum, Callbacks, BL45P-EA-DIFF-01:ROI:EnableCallbacks -# % gui, DIFF.roi, statusbits, Callbacks, BL45P-EA-DIFF-01:ROI:EnableCallbacks_RBV -# % gui, DIFF.roi, demand, Min Callback Time, BL45P-EA-DIFF-01:ROI:MinCallbackTime -# % gui, DIFF.roi, readback, Min Callback Time, BL45P-EA-DIFF-01:ROI:MinCallbackTime_RBV -# % gui, DIFF.roi, enum, Block Callbacks, BL45P-EA-DIFF-01:ROI:BlockingCallbacks -# % gui, DIFF.roi, statusbits, Block Callbacks, BL45P-EA-DIFF-01:ROI:BlockingCallbacks_RBV - -# % gui, DIFF.roi, groupHeading, Counters -# % gui, DIFF.roi, demand, Array Counter, BL45P-EA-DIFF-01:ROI:ArrayCounter -# % gui, DIFF.roi, readback, Array Counter, BL45P-EA-DIFF-01:ROI:ArrayCounter_RBV -# % gui, DIFF.roi, readback, Array Rate (fps), BL45P-EA-DIFF-01:ROI:ArrayRate_RBV -# % gui, DIFF.roi, readback, Queue Use, BL45P-EA-DIFF-01:ROI:QueueUse -# % gui, DIFF.roi, readback, Queue Size, BL45P-EA-DIFF-01:ROI:QueueSize -# % gui, DIFF.roi, demand, Dropped Arrays, BL45P-EA-DIFF-01:ROI:DroppedArrays -# % gui, DIFF.roi, readback, Dropped Arrays, BL45P-EA-DIFF-01:ROI:DroppedArrays_RBV - -# % gui, DIFF.roi, groupHeading, Array Settings -# % gui, DIFF.roi, readback, Num Dimensions, BL45P-EA-DIFF-01:ROI:NDimensions_RBV -# % gui, DIFF.roi, readback, Dim 0 Size, BL45P-EA-DIFF-01:ROI:ArraySize0_RBV -# % gui, DIFF.roi, readback, Dim 1 Size, BL45P-EA-DIFF-01:ROI:ArraySize1_RBV -# % gui, DIFF.roi, readback, Dim 2 Size, BL45P-EA-DIFF-01:ROI:ArraySize2_RBV -# % gui, DIFF.roi, readback, Input Data Type, BL45P-EA-DIFF-01:ROI:DataType_RBV -# % gui, DIFF.roi, readback, Colour Mode, BL45P-EA-DIFF-01:ROI:ColorMode_RBV -# % gui, DIFF.roi, readback, Bayer Pattern, BL45P-EA-DIFF-01:ROI:BayerPattern_RBV -# % gui, DIFF.roi, readback, Unique id, BL45P-EA-DIFF-01:ROI:UniqueId_RBV -# % gui, DIFF.roi, readback, Timestamp, BL45P-EA-DIFF-01:ROI:TimeStamp_RBV - -# Output -# % gui, DIFF.roi, groupHeading, Output -# % gui, DIFF.roi, demand, Name, BL45P-EA-DIFF-01:ROI:Name -# % gui, DIFF.roi, enum, Out data type, BL45P-EA-DIFF-01:ROI:DataTypeOut -# % gui, DIFF.roi, readback, Out data type, BL45P-EA-DIFF-01:ROI:DataTypeOut_RBV -# % gui, DIFF.roi, demand, Attributes file, BL45P-EA-DIFF-01:ROI:NDAttributesFile -# Scaling -# % gui, DIFF.roi, groupHeading, Scaling -# % gui, DIFF.roi, enum, Enable Scaling, BL45P-EA-DIFF-01:ROI:EnableScale -# % gui, DIFF.roi, readback, Enable Scaling, BL45P-EA-DIFF-01:ROI:EnableScale_RBV -# % gui, DIFF.roi, demand, Scale Divisor, BL45P-EA-DIFF-01:ROI:Scale -# % gui, DIFF.roi, readback, Scale Divisor, BL45P-EA-DIFF-01:ROI:Scale_RBV -# X region -# % gui, DIFF.roi, groupHeading, X Region -# % gui, DIFF.roi, enum, X, BL45P-EA-DIFF-01:ROI:EnableX -# % gui, DIFF.roi, readback, X, BL45P-EA-DIFF-01:ROI:EnableX_RBV -# % gui, DIFF.roi, enum, Autosize X, BL45P-EA-DIFF-01:ROI:AutoSizeX -# % gui, DIFF.roi, readback, Autosize X, BL45P-EA-DIFF-01:ROI:AutoSizeX_RBV -# % gui, DIFF.roi, readback, Input Size X, BL45P-EA-DIFF-01:ROI:MaxSizeX_RBV -# % gui, DIFF.roi, demand, Binning X, BL45P-EA-DIFF-01:ROI:BinX -# % gui, DIFF.roi, readback, Binning X, BL45P-EA-DIFF-01:ROI:BinX_RBV -# % gui, DIFF.roi, demand, Start X, BL45P-EA-DIFF-01:ROI:MinX -# % gui, DIFF.roi, readback, Start X, BL45P-EA-DIFF-01:ROI:MinX_RBV -# % gui, DIFF.roi, demand, Size X, BL45P-EA-DIFF-01:ROI:SizeX -# % gui, DIFF.roi, readback, Size X, BL45P-EA-DIFF-01:ROI:SizeX_RBV -# % gui, DIFF.roi, enum, Reverse X, BL45P-EA-DIFF-01:ROI:ReverseX -# % gui, DIFF.roi, readback, Reverse X, BL45P-EA-DIFF-01:ROI:ReverseX_RBV -# % gui, DIFF.roi, readback, Bytes X, BL45P-EA-DIFF-01:ROI:ArraySizeX_RBV -# Y region -# % gui, DIFF.roi, groupHeading, Y Region -# % gui, DIFF.roi, enum, Y, BL45P-EA-DIFF-01:ROI:EnableY -# % gui, DIFF.roi, readback, Y, BL45P-EA-DIFF-01:ROI:EnableY_RBV -# % gui, DIFF.roi, enum, Autosize Y, BL45P-EA-DIFF-01:ROI:AutoSizeY -# % gui, DIFF.roi, readback, Autosize Y, BL45P-EA-DIFF-01:ROI:AutoSizeY_RBV -# % gui, DIFF.roi, readback, Input size Y, BL45P-EA-DIFF-01:ROI:MaxSizeY_RBV -# % gui, DIFF.roi, demand, Binning Y, BL45P-EA-DIFF-01:ROI:BinY -# % gui, DIFF.roi, readback, Binning Y, BL45P-EA-DIFF-01:ROI:BinY_RBV -# % gui, DIFF.roi, demand, Start Y, BL45P-EA-DIFF-01:ROI:MinY -# % gui, DIFF.roi, readback, Start Y, BL45P-EA-DIFF-01:ROI:MinY_RBV -# % gui, DIFF.roi, demand, Size Y, BL45P-EA-DIFF-01:ROI:SizeY -# % gui, DIFF.roi, readback, Size Y, BL45P-EA-DIFF-01:ROI:SizeY_RBV -# % gui, DIFF.roi, enum, Reverse Y, BL45P-EA-DIFF-01:ROI:ReverseY -# % gui, DIFF.roi, readback, Reverse Y, BL45P-EA-DIFF-01:ROI:ReverseY_RBV -# % gui, DIFF.roi, readback, Bytes Y, BL45P-EA-DIFF-01:ROI:ArraySizeY_RBV -# Z region -# % gui, DIFF.roi, groupHeading, Z Region -# % gui, DIFF.roi, enum, Z, BL45P-EA-DIFF-01:ROI:EnableZ -# % gui, DIFF.roi, readback, Z, BL45P-EA-DIFF-01:ROI:EnableZ_RBV -# % gui, DIFF.roi, enum, Autosize Z, BL45P-EA-DIFF-01:ROI:AutoSizeZ -# % gui, DIFF.roi, readback, Autosize Z, BL45P-EA-DIFF-01:ROI:AutoSizeZ_RBV -# % gui, DIFF.roi, readback, Input size Z, BL45P-EA-DIFF-01:ROI:MaxSizeZ_RBV -# % gui, DIFF.roi, demand, Binning Z, BL45P-EA-DIFF-01:ROI:BinZ -# % gui, DIFF.roi, readback, Binning Z, BL45P-EA-DIFF-01:ROI:BinZ_RBV -# % gui, DIFF.roi, demand, Start Z, BL45P-EA-DIFF-01:ROI:MinZ -# % gui, DIFF.roi, readback, Start Z, BL45P-EA-DIFF-01:ROI:MinZ_RBV -# % gui, DIFF.roi, demand, Size Z, BL45P-EA-DIFF-01:ROI:SizeZ -# % gui, DIFF.roi, readback, Size Z, BL45P-EA-DIFF-01:ROI:SizeZ_RBV -# % gui, DIFF.roi, enum, Reverse Z, BL45P-EA-DIFF-01:ROI:ReverseZ -# % gui, DIFF.roi, readback, Reverse Z, BL45P-EA-DIFF-01:ROI:ReverseZ_RBV -# % gui, DIFF.roi, readback, Bytes Z, BL45P-EA-DIFF-01:ROI:ArraySizeZ_RBV -# Memory -# % gui, DIFF.roi, groupHeading, Memory -# % gui, DIFF.roi, readback, Max memory, BL45P-EA-DIFF-01:ROI:PoolMaxMem -# % gui, DIFF.roi, readback, Max buffers, BL45P-EA-DIFF-01:ROI:PoolMaxBuffers -# % gui, DIFF.roi, readback, Used memory, BL45P-EA-DIFF-01:ROI:PoolUsedMem -# % gui, DIFF.roi, readback, Allocated buffers, BL45P-EA-DIFF-01:ROI:PoolAllocBuffers -# % gui, DIFF.roi, readback, Free buffers, BL45P-EA-DIFF-01:ROI:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.roi,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.roi,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.roi,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.roi,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.roi,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.roi,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.roi,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.roi,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:ROI:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:ROI:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:ROI:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:ROI:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:ROI:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:ROI:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:ROI:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.roi,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:ROI:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.roi,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ROI:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:ROI:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:ROI:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.roi,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:ROI:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:ROI:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.roi,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:ROI:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:ROI:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:ROI:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:ROI:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ROI:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.roi,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ROI:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.roi,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:ROI:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:ROI:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.roi,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:ROI:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.roi,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:ROI:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ROI:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ROI:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:ROI:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:ROI:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:ROI:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.roi,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:ROI:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.roi,0,1)NDARRAY_PORT") - field(VAL, "DIFF.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.roi,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.roi,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.roi,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:ROI:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:ROI:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:ROI:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:ROI:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.roi,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.roi,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:ROI:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.roi,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:ROI:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ROI:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ROI:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:ROI:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:ROI:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:ROI:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:ROI:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:ROI:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:ROI:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:ROI:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:ROI:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:ROI:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:ROI:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:ROI:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.roi,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:ROI:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.roi,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ROI:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ROI:SortSize") - field(OUT, "BL45P-EA-DIFF-01:ROI:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:ROI:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:ROI:AsynIO") -{ - field(PORT, "DIFF.roi") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the label for the ROI # -################################################################### -record(stringout, "BL45P-EA-DIFF-01:ROI:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.roi,0,1)NAME") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.roi,0,1)NAME") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the ROI definition # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:ROI:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM0_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM0_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM1_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM1_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI:BinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM2_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:BinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM2_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM0_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM0_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM1_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM1_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI:MinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM2_MIN") - field(LOPR, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:MinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM2_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM0_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM0_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM1_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM1_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI:SizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM2_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:SizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM2_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI:AutoSizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM0_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:AutoSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM0_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI:AutoSizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM1_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:AutoSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM1_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI:AutoSizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM2_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:AutoSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM2_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM0_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM1_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:MaxSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM2_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM0_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM0_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM1_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM1_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI:ReverseZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM2_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:ReverseZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM2_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI:EnableX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM0_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:EnableX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM0_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI:EnableY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM1_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:EnableY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM1_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI:EnableZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)DIM2_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:EnableZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)DIM2_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the scaling of the data. Useful when # -# binning or converting data types # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI:EnableScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)ENABLE_SCALE") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:EnableScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ENABLE_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.roi,0,1)SCALE_VALUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.roi,0,1)SCALE_VALUE") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:ROI:MaxX") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:ROI:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:ROI:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:ROI:MaxX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:ROI:MinX.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:ROI:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:ROI:MaxY") -{ - field(INP, "BL45P-EA-DIFF-01:ROI:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:ROI:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:ROI:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:ROI:MaxY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:ROI:MinY.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:ROI:SizeY.HOPR NPP") -} - -################################################################### -# These records whether dimensions of 1 are collapsed (removed) # # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI:CollapseDims") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.roi,0,1)COLLAPSE_DIMS") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI:CollapseDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.roi,0,1)COLLAPSE_DIMS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -#=================================================================# -# Template file: NDROI.template -# Database for ND ROIs -# Mark Rivers -# April 22, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DIFF.rois.roi1, edmtab, NDROI.edl, P=BL45P-EA-DIFF-01,R=:ROI1: - -# This associates a BOY screen with the template -# % gui, DIFF.rois.roi1, boydetail,ADApp_opi/dls/roi_detail.opi, P=BL45P-EA-DIFF-01, R=:ROI1:, DESC=Region of Interest -# % gui, DIFF.rois.roi1, boyembed, ADApp_opi/dls/roi_embed_box.opi, P=BL45P-EA-DIFF-01, R=:ROI1:, DESC=Region of Interest -# % gui, DIFF.rois.roi1, boyembed, ADApp_opi/dls/roi_embed.opi, P=BL45P-EA-DIFF-01, R=:ROI1:, DESC=Region of Interest - -# % gui, DIFF.rois.roi1, groupHeading, Info -# % gui, DIFF.rois.roi1, readback, Port name, BL45P-EA-DIFF-01:ROI1:PortName_RBV -# % gui, DIFF.rois.roi1, readback, Plugin type, BL45P-EA-DIFF-01:ROI1:PluginType_RBV -# Input -# % gui, DIFF.rois.roi1, demandString, Input, BL45P-EA-DIFF-01:ROI1:NDArrayPort -# % gui, DIFF.rois.roi1, readback, Input, BL45P-EA-DIFF-01:ROI1:NDArrayPort_RBV - -# % gui, DIFF.rois.roi1, groupHeading, Callback -# % gui, DIFF.rois.roi1, enum, Callbacks, BL45P-EA-DIFF-01:ROI1:EnableCallbacks -# % gui, DIFF.rois.roi1, statusbits, Callbacks, BL45P-EA-DIFF-01:ROI1:EnableCallbacks_RBV -# % gui, DIFF.rois.roi1, demand, Min Callback Time, BL45P-EA-DIFF-01:ROI1:MinCallbackTime -# % gui, DIFF.rois.roi1, readback, Min Callback Time, BL45P-EA-DIFF-01:ROI1:MinCallbackTime_RBV -# % gui, DIFF.rois.roi1, enum, Block Callbacks, BL45P-EA-DIFF-01:ROI1:BlockingCallbacks -# % gui, DIFF.rois.roi1, statusbits, Block Callbacks, BL45P-EA-DIFF-01:ROI1:BlockingCallbacks_RBV - -# % gui, DIFF.rois.roi1, groupHeading, Counters -# % gui, DIFF.rois.roi1, demand, Array Counter, BL45P-EA-DIFF-01:ROI1:ArrayCounter -# % gui, DIFF.rois.roi1, readback, Array Counter, BL45P-EA-DIFF-01:ROI1:ArrayCounter_RBV -# % gui, DIFF.rois.roi1, readback, Array Rate (fps), BL45P-EA-DIFF-01:ROI1:ArrayRate_RBV -# % gui, DIFF.rois.roi1, readback, Queue Use, BL45P-EA-DIFF-01:ROI1:QueueUse -# % gui, DIFF.rois.roi1, readback, Queue Size, BL45P-EA-DIFF-01:ROI1:QueueSize -# % gui, DIFF.rois.roi1, demand, Dropped Arrays, BL45P-EA-DIFF-01:ROI1:DroppedArrays -# % gui, DIFF.rois.roi1, readback, Dropped Arrays, BL45P-EA-DIFF-01:ROI1:DroppedArrays_RBV - -# % gui, DIFF.rois.roi1, groupHeading, Array Settings -# % gui, DIFF.rois.roi1, readback, Num Dimensions, BL45P-EA-DIFF-01:ROI1:NDimensions_RBV -# % gui, DIFF.rois.roi1, readback, Dim 0 Size, BL45P-EA-DIFF-01:ROI1:ArraySize0_RBV -# % gui, DIFF.rois.roi1, readback, Dim 1 Size, BL45P-EA-DIFF-01:ROI1:ArraySize1_RBV -# % gui, DIFF.rois.roi1, readback, Dim 2 Size, BL45P-EA-DIFF-01:ROI1:ArraySize2_RBV -# % gui, DIFF.rois.roi1, readback, Input Data Type, BL45P-EA-DIFF-01:ROI1:DataType_RBV -# % gui, DIFF.rois.roi1, readback, Colour Mode, BL45P-EA-DIFF-01:ROI1:ColorMode_RBV -# % gui, DIFF.rois.roi1, readback, Bayer Pattern, BL45P-EA-DIFF-01:ROI1:BayerPattern_RBV -# % gui, DIFF.rois.roi1, readback, Unique id, BL45P-EA-DIFF-01:ROI1:UniqueId_RBV -# % gui, DIFF.rois.roi1, readback, Timestamp, BL45P-EA-DIFF-01:ROI1:TimeStamp_RBV - -# Output -# % gui, DIFF.rois.roi1, groupHeading, Output -# % gui, DIFF.rois.roi1, demand, Name, BL45P-EA-DIFF-01:ROI1:Name -# % gui, DIFF.rois.roi1, enum, Out data type, BL45P-EA-DIFF-01:ROI1:DataTypeOut -# % gui, DIFF.rois.roi1, readback, Out data type, BL45P-EA-DIFF-01:ROI1:DataTypeOut_RBV -# % gui, DIFF.rois.roi1, demand, Attributes file, BL45P-EA-DIFF-01:ROI1:NDAttributesFile -# Scaling -# % gui, DIFF.rois.roi1, groupHeading, Scaling -# % gui, DIFF.rois.roi1, enum, Enable Scaling, BL45P-EA-DIFF-01:ROI1:EnableScale -# % gui, DIFF.rois.roi1, readback, Enable Scaling, BL45P-EA-DIFF-01:ROI1:EnableScale_RBV -# % gui, DIFF.rois.roi1, demand, Scale Divisor, BL45P-EA-DIFF-01:ROI1:Scale -# % gui, DIFF.rois.roi1, readback, Scale Divisor, BL45P-EA-DIFF-01:ROI1:Scale_RBV -# X region -# % gui, DIFF.rois.roi1, groupHeading, X Region -# % gui, DIFF.rois.roi1, enum, X, BL45P-EA-DIFF-01:ROI1:EnableX -# % gui, DIFF.rois.roi1, readback, X, BL45P-EA-DIFF-01:ROI1:EnableX_RBV -# % gui, DIFF.rois.roi1, enum, Autosize X, BL45P-EA-DIFF-01:ROI1:AutoSizeX -# % gui, DIFF.rois.roi1, readback, Autosize X, BL45P-EA-DIFF-01:ROI1:AutoSizeX_RBV -# % gui, DIFF.rois.roi1, readback, Input Size X, BL45P-EA-DIFF-01:ROI1:MaxSizeX_RBV -# % gui, DIFF.rois.roi1, demand, Binning X, BL45P-EA-DIFF-01:ROI1:BinX -# % gui, DIFF.rois.roi1, readback, Binning X, BL45P-EA-DIFF-01:ROI1:BinX_RBV -# % gui, DIFF.rois.roi1, demand, Start X, BL45P-EA-DIFF-01:ROI1:MinX -# % gui, DIFF.rois.roi1, readback, Start X, BL45P-EA-DIFF-01:ROI1:MinX_RBV -# % gui, DIFF.rois.roi1, demand, Size X, BL45P-EA-DIFF-01:ROI1:SizeX -# % gui, DIFF.rois.roi1, readback, Size X, BL45P-EA-DIFF-01:ROI1:SizeX_RBV -# % gui, DIFF.rois.roi1, enum, Reverse X, BL45P-EA-DIFF-01:ROI1:ReverseX -# % gui, DIFF.rois.roi1, readback, Reverse X, BL45P-EA-DIFF-01:ROI1:ReverseX_RBV -# % gui, DIFF.rois.roi1, readback, Bytes X, BL45P-EA-DIFF-01:ROI1:ArraySizeX_RBV -# Y region -# % gui, DIFF.rois.roi1, groupHeading, Y Region -# % gui, DIFF.rois.roi1, enum, Y, BL45P-EA-DIFF-01:ROI1:EnableY -# % gui, DIFF.rois.roi1, readback, Y, BL45P-EA-DIFF-01:ROI1:EnableY_RBV -# % gui, DIFF.rois.roi1, enum, Autosize Y, BL45P-EA-DIFF-01:ROI1:AutoSizeY -# % gui, DIFF.rois.roi1, readback, Autosize Y, BL45P-EA-DIFF-01:ROI1:AutoSizeY_RBV -# % gui, DIFF.rois.roi1, readback, Input size Y, BL45P-EA-DIFF-01:ROI1:MaxSizeY_RBV -# % gui, DIFF.rois.roi1, demand, Binning Y, BL45P-EA-DIFF-01:ROI1:BinY -# % gui, DIFF.rois.roi1, readback, Binning Y, BL45P-EA-DIFF-01:ROI1:BinY_RBV -# % gui, DIFF.rois.roi1, demand, Start Y, BL45P-EA-DIFF-01:ROI1:MinY -# % gui, DIFF.rois.roi1, readback, Start Y, BL45P-EA-DIFF-01:ROI1:MinY_RBV -# % gui, DIFF.rois.roi1, demand, Size Y, BL45P-EA-DIFF-01:ROI1:SizeY -# % gui, DIFF.rois.roi1, readback, Size Y, BL45P-EA-DIFF-01:ROI1:SizeY_RBV -# % gui, DIFF.rois.roi1, enum, Reverse Y, BL45P-EA-DIFF-01:ROI1:ReverseY -# % gui, DIFF.rois.roi1, readback, Reverse Y, BL45P-EA-DIFF-01:ROI1:ReverseY_RBV -# % gui, DIFF.rois.roi1, readback, Bytes Y, BL45P-EA-DIFF-01:ROI1:ArraySizeY_RBV -# Z region -# % gui, DIFF.rois.roi1, groupHeading, Z Region -# % gui, DIFF.rois.roi1, enum, Z, BL45P-EA-DIFF-01:ROI1:EnableZ -# % gui, DIFF.rois.roi1, readback, Z, BL45P-EA-DIFF-01:ROI1:EnableZ_RBV -# % gui, DIFF.rois.roi1, enum, Autosize Z, BL45P-EA-DIFF-01:ROI1:AutoSizeZ -# % gui, DIFF.rois.roi1, readback, Autosize Z, BL45P-EA-DIFF-01:ROI1:AutoSizeZ_RBV -# % gui, DIFF.rois.roi1, readback, Input size Z, BL45P-EA-DIFF-01:ROI1:MaxSizeZ_RBV -# % gui, DIFF.rois.roi1, demand, Binning Z, BL45P-EA-DIFF-01:ROI1:BinZ -# % gui, DIFF.rois.roi1, readback, Binning Z, BL45P-EA-DIFF-01:ROI1:BinZ_RBV -# % gui, DIFF.rois.roi1, demand, Start Z, BL45P-EA-DIFF-01:ROI1:MinZ -# % gui, DIFF.rois.roi1, readback, Start Z, BL45P-EA-DIFF-01:ROI1:MinZ_RBV -# % gui, DIFF.rois.roi1, demand, Size Z, BL45P-EA-DIFF-01:ROI1:SizeZ -# % gui, DIFF.rois.roi1, readback, Size Z, BL45P-EA-DIFF-01:ROI1:SizeZ_RBV -# % gui, DIFF.rois.roi1, enum, Reverse Z, BL45P-EA-DIFF-01:ROI1:ReverseZ -# % gui, DIFF.rois.roi1, readback, Reverse Z, BL45P-EA-DIFF-01:ROI1:ReverseZ_RBV -# % gui, DIFF.rois.roi1, readback, Bytes Z, BL45P-EA-DIFF-01:ROI1:ArraySizeZ_RBV -# Memory -# % gui, DIFF.rois.roi1, groupHeading, Memory -# % gui, DIFF.rois.roi1, readback, Max memory, BL45P-EA-DIFF-01:ROI1:PoolMaxMem -# % gui, DIFF.rois.roi1, readback, Max buffers, BL45P-EA-DIFF-01:ROI1:PoolMaxBuffers -# % gui, DIFF.rois.roi1, readback, Used memory, BL45P-EA-DIFF-01:ROI1:PoolUsedMem -# % gui, DIFF.rois.roi1, readback, Allocated buffers, BL45P-EA-DIFF-01:ROI1:PoolAllocBuffers -# % gui, DIFF.rois.roi1, readback, Free buffers, BL45P-EA-DIFF-01:ROI1:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI1:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI1:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI1:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi1,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI1:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi1,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI1:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi1,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI1:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi1,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI1:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi1,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI1:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi1,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI1:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI1:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI1:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:ROI1:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:ROI1:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI1:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:ROI1:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:ROI1:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:ROI1:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:ROI1:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:ROI1:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:ROI1:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI1:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:ROI1:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:ROI1:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi1,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI1:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI1:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI1:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI1:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:ROI1:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:ROI1:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi1,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:ROI1:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:ROI1:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI1:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:ROI1:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:ROI1:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI1:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ROI1:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ROI1:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:ROI1:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:ROI1:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi1,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:ROI1:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi1,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:ROI1:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI1:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:ROI1:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:ROI1:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI1:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi1,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:ROI1:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)NDARRAY_PORT") - field(VAL, "DIFF.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI1:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi1,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI1:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI1:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI1:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI1:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi1,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI1:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:ROI1:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI1:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI1:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:ROI1:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:ROI1:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI1:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:ROI1:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI1:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi1,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:ROI1:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi1,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI1:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI1:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:ROI1:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI1:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI1:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ROI1:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI1:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:ROI1:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:ROI1:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI1:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:ROI1:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:ROI1:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI1:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:ROI1:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:ROI1:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:ROI1:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:ROI1:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:ROI1:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI1:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI1:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:ROI1:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi1,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI1:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI1:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ROI1:SortSize") - field(OUT, "BL45P-EA-DIFF-01:ROI1:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:ROI1:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI1:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:ROI1:AsynIO") -{ - field(PORT, "DIFF.rois.roi1") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the label for the ROI # -################################################################### -record(stringout, "BL45P-EA-DIFF-01:ROI1:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)NAME") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI1:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi1,0,1)NAME") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the ROI definition # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:ROI1:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM0_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM0_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI1:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM1_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM1_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI1:BinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM2_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:BinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM2_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI1:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM0_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM0_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI1:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM1_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM1_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI1:MinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM2_MIN") - field(LOPR, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:MinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM2_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI1:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM0_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM0_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI1:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM1_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM1_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI1:SizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM2_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:SizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM2_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI1:AutoSizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM0_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:AutoSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM0_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI1:AutoSizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM1_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:AutoSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM1_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI1:AutoSizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM2_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:AutoSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM2_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM0_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM1_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:MaxSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM2_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI1:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM0_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM0_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI1:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM1_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM1_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI1:ReverseZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM2_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:ReverseZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM2_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI1:EnableX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM0_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:EnableX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM0_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI1:EnableY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM1_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:EnableY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM1_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI1:EnableZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)DIM2_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:EnableZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)DIM2_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the scaling of the data. Useful when # -# binning or converting data types # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI1:EnableScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)ENABLE_SCALE") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:EnableScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ENABLE_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI1:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)SCALE_VALUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI1:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi1,0,1)SCALE_VALUE") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI1:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI1:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:ROI1:MaxX") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:ROI1:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:ROI1:MaxX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:ROI1:MinX.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:ROI1:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:ROI1:MaxY") -{ - field(INP, "BL45P-EA-DIFF-01:ROI1:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:ROI1:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:ROI1:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:ROI1:MaxY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:ROI1:MinY.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:ROI1:SizeY.HOPR NPP") -} - -################################################################### -# These records whether dimensions of 1 are collapsed (removed) # # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI1:CollapseDims") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi1,0,1)COLLAPSE_DIMS") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI1:CollapseDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi1,0,1)COLLAPSE_DIMS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -#=================================================================# -# Template file: NDROI.template -# Database for ND ROIs -# Mark Rivers -# April 22, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DIFF.rois.roi2, edmtab, NDROI.edl, P=BL45P-EA-DIFF-01,R=:ROI2: - -# This associates a BOY screen with the template -# % gui, DIFF.rois.roi2, boydetail,ADApp_opi/dls/roi_detail.opi, P=BL45P-EA-DIFF-01, R=:ROI2:, DESC=Region of Interest -# % gui, DIFF.rois.roi2, boyembed, ADApp_opi/dls/roi_embed_box.opi, P=BL45P-EA-DIFF-01, R=:ROI2:, DESC=Region of Interest -# % gui, DIFF.rois.roi2, boyembed, ADApp_opi/dls/roi_embed.opi, P=BL45P-EA-DIFF-01, R=:ROI2:, DESC=Region of Interest - -# % gui, DIFF.rois.roi2, groupHeading, Info -# % gui, DIFF.rois.roi2, readback, Port name, BL45P-EA-DIFF-01:ROI2:PortName_RBV -# % gui, DIFF.rois.roi2, readback, Plugin type, BL45P-EA-DIFF-01:ROI2:PluginType_RBV -# Input -# % gui, DIFF.rois.roi2, demandString, Input, BL45P-EA-DIFF-01:ROI2:NDArrayPort -# % gui, DIFF.rois.roi2, readback, Input, BL45P-EA-DIFF-01:ROI2:NDArrayPort_RBV - -# % gui, DIFF.rois.roi2, groupHeading, Callback -# % gui, DIFF.rois.roi2, enum, Callbacks, BL45P-EA-DIFF-01:ROI2:EnableCallbacks -# % gui, DIFF.rois.roi2, statusbits, Callbacks, BL45P-EA-DIFF-01:ROI2:EnableCallbacks_RBV -# % gui, DIFF.rois.roi2, demand, Min Callback Time, BL45P-EA-DIFF-01:ROI2:MinCallbackTime -# % gui, DIFF.rois.roi2, readback, Min Callback Time, BL45P-EA-DIFF-01:ROI2:MinCallbackTime_RBV -# % gui, DIFF.rois.roi2, enum, Block Callbacks, BL45P-EA-DIFF-01:ROI2:BlockingCallbacks -# % gui, DIFF.rois.roi2, statusbits, Block Callbacks, BL45P-EA-DIFF-01:ROI2:BlockingCallbacks_RBV - -# % gui, DIFF.rois.roi2, groupHeading, Counters -# % gui, DIFF.rois.roi2, demand, Array Counter, BL45P-EA-DIFF-01:ROI2:ArrayCounter -# % gui, DIFF.rois.roi2, readback, Array Counter, BL45P-EA-DIFF-01:ROI2:ArrayCounter_RBV -# % gui, DIFF.rois.roi2, readback, Array Rate (fps), BL45P-EA-DIFF-01:ROI2:ArrayRate_RBV -# % gui, DIFF.rois.roi2, readback, Queue Use, BL45P-EA-DIFF-01:ROI2:QueueUse -# % gui, DIFF.rois.roi2, readback, Queue Size, BL45P-EA-DIFF-01:ROI2:QueueSize -# % gui, DIFF.rois.roi2, demand, Dropped Arrays, BL45P-EA-DIFF-01:ROI2:DroppedArrays -# % gui, DIFF.rois.roi2, readback, Dropped Arrays, BL45P-EA-DIFF-01:ROI2:DroppedArrays_RBV - -# % gui, DIFF.rois.roi2, groupHeading, Array Settings -# % gui, DIFF.rois.roi2, readback, Num Dimensions, BL45P-EA-DIFF-01:ROI2:NDimensions_RBV -# % gui, DIFF.rois.roi2, readback, Dim 0 Size, BL45P-EA-DIFF-01:ROI2:ArraySize0_RBV -# % gui, DIFF.rois.roi2, readback, Dim 1 Size, BL45P-EA-DIFF-01:ROI2:ArraySize1_RBV -# % gui, DIFF.rois.roi2, readback, Dim 2 Size, BL45P-EA-DIFF-01:ROI2:ArraySize2_RBV -# % gui, DIFF.rois.roi2, readback, Input Data Type, BL45P-EA-DIFF-01:ROI2:DataType_RBV -# % gui, DIFF.rois.roi2, readback, Colour Mode, BL45P-EA-DIFF-01:ROI2:ColorMode_RBV -# % gui, DIFF.rois.roi2, readback, Bayer Pattern, BL45P-EA-DIFF-01:ROI2:BayerPattern_RBV -# % gui, DIFF.rois.roi2, readback, Unique id, BL45P-EA-DIFF-01:ROI2:UniqueId_RBV -# % gui, DIFF.rois.roi2, readback, Timestamp, BL45P-EA-DIFF-01:ROI2:TimeStamp_RBV - -# Output -# % gui, DIFF.rois.roi2, groupHeading, Output -# % gui, DIFF.rois.roi2, demand, Name, BL45P-EA-DIFF-01:ROI2:Name -# % gui, DIFF.rois.roi2, enum, Out data type, BL45P-EA-DIFF-01:ROI2:DataTypeOut -# % gui, DIFF.rois.roi2, readback, Out data type, BL45P-EA-DIFF-01:ROI2:DataTypeOut_RBV -# % gui, DIFF.rois.roi2, demand, Attributes file, BL45P-EA-DIFF-01:ROI2:NDAttributesFile -# Scaling -# % gui, DIFF.rois.roi2, groupHeading, Scaling -# % gui, DIFF.rois.roi2, enum, Enable Scaling, BL45P-EA-DIFF-01:ROI2:EnableScale -# % gui, DIFF.rois.roi2, readback, Enable Scaling, BL45P-EA-DIFF-01:ROI2:EnableScale_RBV -# % gui, DIFF.rois.roi2, demand, Scale Divisor, BL45P-EA-DIFF-01:ROI2:Scale -# % gui, DIFF.rois.roi2, readback, Scale Divisor, BL45P-EA-DIFF-01:ROI2:Scale_RBV -# X region -# % gui, DIFF.rois.roi2, groupHeading, X Region -# % gui, DIFF.rois.roi2, enum, X, BL45P-EA-DIFF-01:ROI2:EnableX -# % gui, DIFF.rois.roi2, readback, X, BL45P-EA-DIFF-01:ROI2:EnableX_RBV -# % gui, DIFF.rois.roi2, enum, Autosize X, BL45P-EA-DIFF-01:ROI2:AutoSizeX -# % gui, DIFF.rois.roi2, readback, Autosize X, BL45P-EA-DIFF-01:ROI2:AutoSizeX_RBV -# % gui, DIFF.rois.roi2, readback, Input Size X, BL45P-EA-DIFF-01:ROI2:MaxSizeX_RBV -# % gui, DIFF.rois.roi2, demand, Binning X, BL45P-EA-DIFF-01:ROI2:BinX -# % gui, DIFF.rois.roi2, readback, Binning X, BL45P-EA-DIFF-01:ROI2:BinX_RBV -# % gui, DIFF.rois.roi2, demand, Start X, BL45P-EA-DIFF-01:ROI2:MinX -# % gui, DIFF.rois.roi2, readback, Start X, BL45P-EA-DIFF-01:ROI2:MinX_RBV -# % gui, DIFF.rois.roi2, demand, Size X, BL45P-EA-DIFF-01:ROI2:SizeX -# % gui, DIFF.rois.roi2, readback, Size X, BL45P-EA-DIFF-01:ROI2:SizeX_RBV -# % gui, DIFF.rois.roi2, enum, Reverse X, BL45P-EA-DIFF-01:ROI2:ReverseX -# % gui, DIFF.rois.roi2, readback, Reverse X, BL45P-EA-DIFF-01:ROI2:ReverseX_RBV -# % gui, DIFF.rois.roi2, readback, Bytes X, BL45P-EA-DIFF-01:ROI2:ArraySizeX_RBV -# Y region -# % gui, DIFF.rois.roi2, groupHeading, Y Region -# % gui, DIFF.rois.roi2, enum, Y, BL45P-EA-DIFF-01:ROI2:EnableY -# % gui, DIFF.rois.roi2, readback, Y, BL45P-EA-DIFF-01:ROI2:EnableY_RBV -# % gui, DIFF.rois.roi2, enum, Autosize Y, BL45P-EA-DIFF-01:ROI2:AutoSizeY -# % gui, DIFF.rois.roi2, readback, Autosize Y, BL45P-EA-DIFF-01:ROI2:AutoSizeY_RBV -# % gui, DIFF.rois.roi2, readback, Input size Y, BL45P-EA-DIFF-01:ROI2:MaxSizeY_RBV -# % gui, DIFF.rois.roi2, demand, Binning Y, BL45P-EA-DIFF-01:ROI2:BinY -# % gui, DIFF.rois.roi2, readback, Binning Y, BL45P-EA-DIFF-01:ROI2:BinY_RBV -# % gui, DIFF.rois.roi2, demand, Start Y, BL45P-EA-DIFF-01:ROI2:MinY -# % gui, DIFF.rois.roi2, readback, Start Y, BL45P-EA-DIFF-01:ROI2:MinY_RBV -# % gui, DIFF.rois.roi2, demand, Size Y, BL45P-EA-DIFF-01:ROI2:SizeY -# % gui, DIFF.rois.roi2, readback, Size Y, BL45P-EA-DIFF-01:ROI2:SizeY_RBV -# % gui, DIFF.rois.roi2, enum, Reverse Y, BL45P-EA-DIFF-01:ROI2:ReverseY -# % gui, DIFF.rois.roi2, readback, Reverse Y, BL45P-EA-DIFF-01:ROI2:ReverseY_RBV -# % gui, DIFF.rois.roi2, readback, Bytes Y, BL45P-EA-DIFF-01:ROI2:ArraySizeY_RBV -# Z region -# % gui, DIFF.rois.roi2, groupHeading, Z Region -# % gui, DIFF.rois.roi2, enum, Z, BL45P-EA-DIFF-01:ROI2:EnableZ -# % gui, DIFF.rois.roi2, readback, Z, BL45P-EA-DIFF-01:ROI2:EnableZ_RBV -# % gui, DIFF.rois.roi2, enum, Autosize Z, BL45P-EA-DIFF-01:ROI2:AutoSizeZ -# % gui, DIFF.rois.roi2, readback, Autosize Z, BL45P-EA-DIFF-01:ROI2:AutoSizeZ_RBV -# % gui, DIFF.rois.roi2, readback, Input size Z, BL45P-EA-DIFF-01:ROI2:MaxSizeZ_RBV -# % gui, DIFF.rois.roi2, demand, Binning Z, BL45P-EA-DIFF-01:ROI2:BinZ -# % gui, DIFF.rois.roi2, readback, Binning Z, BL45P-EA-DIFF-01:ROI2:BinZ_RBV -# % gui, DIFF.rois.roi2, demand, Start Z, BL45P-EA-DIFF-01:ROI2:MinZ -# % gui, DIFF.rois.roi2, readback, Start Z, BL45P-EA-DIFF-01:ROI2:MinZ_RBV -# % gui, DIFF.rois.roi2, demand, Size Z, BL45P-EA-DIFF-01:ROI2:SizeZ -# % gui, DIFF.rois.roi2, readback, Size Z, BL45P-EA-DIFF-01:ROI2:SizeZ_RBV -# % gui, DIFF.rois.roi2, enum, Reverse Z, BL45P-EA-DIFF-01:ROI2:ReverseZ -# % gui, DIFF.rois.roi2, readback, Reverse Z, BL45P-EA-DIFF-01:ROI2:ReverseZ_RBV -# % gui, DIFF.rois.roi2, readback, Bytes Z, BL45P-EA-DIFF-01:ROI2:ArraySizeZ_RBV -# Memory -# % gui, DIFF.rois.roi2, groupHeading, Memory -# % gui, DIFF.rois.roi2, readback, Max memory, BL45P-EA-DIFF-01:ROI2:PoolMaxMem -# % gui, DIFF.rois.roi2, readback, Max buffers, BL45P-EA-DIFF-01:ROI2:PoolMaxBuffers -# % gui, DIFF.rois.roi2, readback, Used memory, BL45P-EA-DIFF-01:ROI2:PoolUsedMem -# % gui, DIFF.rois.roi2, readback, Allocated buffers, BL45P-EA-DIFF-01:ROI2:PoolAllocBuffers -# % gui, DIFF.rois.roi2, readback, Free buffers, BL45P-EA-DIFF-01:ROI2:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI2:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI2:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI2:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi2,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI2:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi2,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI2:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi2,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI2:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi2,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI2:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi2,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI2:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi2,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI2:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI2:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI2:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:ROI2:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:ROI2:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI2:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:ROI2:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:ROI2:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:ROI2:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:ROI2:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:ROI2:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:ROI2:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI2:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:ROI2:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:ROI2:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi2,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI2:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI2:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI2:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI2:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:ROI2:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:ROI2:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi2,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:ROI2:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:ROI2:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI2:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:ROI2:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:ROI2:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI2:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ROI2:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ROI2:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:ROI2:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:ROI2:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi2,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:ROI2:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi2,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:ROI2:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI2:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:ROI2:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:ROI2:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI2:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi2,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:ROI2:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)NDARRAY_PORT") - field(VAL, "DIFF.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI2:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi2,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI2:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI2:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI2:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI2:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi2,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI2:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:ROI2:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI2:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI2:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:ROI2:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:ROI2:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI2:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:ROI2:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI2:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi2,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:ROI2:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi2,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI2:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI2:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:ROI2:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI2:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI2:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ROI2:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI2:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:ROI2:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:ROI2:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI2:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:ROI2:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:ROI2:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI2:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:ROI2:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:ROI2:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:ROI2:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:ROI2:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:ROI2:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI2:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI2:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:ROI2:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi2,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI2:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI2:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ROI2:SortSize") - field(OUT, "BL45P-EA-DIFF-01:ROI2:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:ROI2:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI2:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:ROI2:AsynIO") -{ - field(PORT, "DIFF.rois.roi2") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the label for the ROI # -################################################################### -record(stringout, "BL45P-EA-DIFF-01:ROI2:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)NAME") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI2:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi2,0,1)NAME") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the ROI definition # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:ROI2:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM0_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM0_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI2:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM1_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM1_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI2:BinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM2_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:BinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM2_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI2:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM0_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM0_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI2:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM1_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM1_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI2:MinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM2_MIN") - field(LOPR, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:MinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM2_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI2:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM0_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM0_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI2:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM1_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM1_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI2:SizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM2_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:SizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM2_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI2:AutoSizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM0_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:AutoSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM0_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI2:AutoSizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM1_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:AutoSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM1_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI2:AutoSizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM2_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:AutoSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM2_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM0_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM1_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:MaxSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM2_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI2:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM0_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM0_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI2:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM1_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM1_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI2:ReverseZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM2_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:ReverseZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM2_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI2:EnableX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM0_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:EnableX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM0_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI2:EnableY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM1_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:EnableY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM1_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI2:EnableZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)DIM2_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:EnableZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)DIM2_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the scaling of the data. Useful when # -# binning or converting data types # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI2:EnableScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)ENABLE_SCALE") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:EnableScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ENABLE_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI2:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)SCALE_VALUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI2:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi2,0,1)SCALE_VALUE") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI2:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI2:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:ROI2:MaxX") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:ROI2:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:ROI2:MaxX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:ROI2:MinX.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:ROI2:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:ROI2:MaxY") -{ - field(INP, "BL45P-EA-DIFF-01:ROI2:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:ROI2:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:ROI2:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:ROI2:MaxY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:ROI2:MinY.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:ROI2:SizeY.HOPR NPP") -} - -################################################################### -# These records whether dimensions of 1 are collapsed (removed) # # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI2:CollapseDims") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi2,0,1)COLLAPSE_DIMS") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI2:CollapseDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi2,0,1)COLLAPSE_DIMS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -#=================================================================# -# Template file: NDROI.template -# Database for ND ROIs -# Mark Rivers -# April 22, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DIFF.rois.roi3, edmtab, NDROI.edl, P=BL45P-EA-DIFF-01,R=:ROI3: - -# This associates a BOY screen with the template -# % gui, DIFF.rois.roi3, boydetail,ADApp_opi/dls/roi_detail.opi, P=BL45P-EA-DIFF-01, R=:ROI3:, DESC=Region of Interest -# % gui, DIFF.rois.roi3, boyembed, ADApp_opi/dls/roi_embed_box.opi, P=BL45P-EA-DIFF-01, R=:ROI3:, DESC=Region of Interest -# % gui, DIFF.rois.roi3, boyembed, ADApp_opi/dls/roi_embed.opi, P=BL45P-EA-DIFF-01, R=:ROI3:, DESC=Region of Interest - -# % gui, DIFF.rois.roi3, groupHeading, Info -# % gui, DIFF.rois.roi3, readback, Port name, BL45P-EA-DIFF-01:ROI3:PortName_RBV -# % gui, DIFF.rois.roi3, readback, Plugin type, BL45P-EA-DIFF-01:ROI3:PluginType_RBV -# Input -# % gui, DIFF.rois.roi3, demandString, Input, BL45P-EA-DIFF-01:ROI3:NDArrayPort -# % gui, DIFF.rois.roi3, readback, Input, BL45P-EA-DIFF-01:ROI3:NDArrayPort_RBV - -# % gui, DIFF.rois.roi3, groupHeading, Callback -# % gui, DIFF.rois.roi3, enum, Callbacks, BL45P-EA-DIFF-01:ROI3:EnableCallbacks -# % gui, DIFF.rois.roi3, statusbits, Callbacks, BL45P-EA-DIFF-01:ROI3:EnableCallbacks_RBV -# % gui, DIFF.rois.roi3, demand, Min Callback Time, BL45P-EA-DIFF-01:ROI3:MinCallbackTime -# % gui, DIFF.rois.roi3, readback, Min Callback Time, BL45P-EA-DIFF-01:ROI3:MinCallbackTime_RBV -# % gui, DIFF.rois.roi3, enum, Block Callbacks, BL45P-EA-DIFF-01:ROI3:BlockingCallbacks -# % gui, DIFF.rois.roi3, statusbits, Block Callbacks, BL45P-EA-DIFF-01:ROI3:BlockingCallbacks_RBV - -# % gui, DIFF.rois.roi3, groupHeading, Counters -# % gui, DIFF.rois.roi3, demand, Array Counter, BL45P-EA-DIFF-01:ROI3:ArrayCounter -# % gui, DIFF.rois.roi3, readback, Array Counter, BL45P-EA-DIFF-01:ROI3:ArrayCounter_RBV -# % gui, DIFF.rois.roi3, readback, Array Rate (fps), BL45P-EA-DIFF-01:ROI3:ArrayRate_RBV -# % gui, DIFF.rois.roi3, readback, Queue Use, BL45P-EA-DIFF-01:ROI3:QueueUse -# % gui, DIFF.rois.roi3, readback, Queue Size, BL45P-EA-DIFF-01:ROI3:QueueSize -# % gui, DIFF.rois.roi3, demand, Dropped Arrays, BL45P-EA-DIFF-01:ROI3:DroppedArrays -# % gui, DIFF.rois.roi3, readback, Dropped Arrays, BL45P-EA-DIFF-01:ROI3:DroppedArrays_RBV - -# % gui, DIFF.rois.roi3, groupHeading, Array Settings -# % gui, DIFF.rois.roi3, readback, Num Dimensions, BL45P-EA-DIFF-01:ROI3:NDimensions_RBV -# % gui, DIFF.rois.roi3, readback, Dim 0 Size, BL45P-EA-DIFF-01:ROI3:ArraySize0_RBV -# % gui, DIFF.rois.roi3, readback, Dim 1 Size, BL45P-EA-DIFF-01:ROI3:ArraySize1_RBV -# % gui, DIFF.rois.roi3, readback, Dim 2 Size, BL45P-EA-DIFF-01:ROI3:ArraySize2_RBV -# % gui, DIFF.rois.roi3, readback, Input Data Type, BL45P-EA-DIFF-01:ROI3:DataType_RBV -# % gui, DIFF.rois.roi3, readback, Colour Mode, BL45P-EA-DIFF-01:ROI3:ColorMode_RBV -# % gui, DIFF.rois.roi3, readback, Bayer Pattern, BL45P-EA-DIFF-01:ROI3:BayerPattern_RBV -# % gui, DIFF.rois.roi3, readback, Unique id, BL45P-EA-DIFF-01:ROI3:UniqueId_RBV -# % gui, DIFF.rois.roi3, readback, Timestamp, BL45P-EA-DIFF-01:ROI3:TimeStamp_RBV - -# Output -# % gui, DIFF.rois.roi3, groupHeading, Output -# % gui, DIFF.rois.roi3, demand, Name, BL45P-EA-DIFF-01:ROI3:Name -# % gui, DIFF.rois.roi3, enum, Out data type, BL45P-EA-DIFF-01:ROI3:DataTypeOut -# % gui, DIFF.rois.roi3, readback, Out data type, BL45P-EA-DIFF-01:ROI3:DataTypeOut_RBV -# % gui, DIFF.rois.roi3, demand, Attributes file, BL45P-EA-DIFF-01:ROI3:NDAttributesFile -# Scaling -# % gui, DIFF.rois.roi3, groupHeading, Scaling -# % gui, DIFF.rois.roi3, enum, Enable Scaling, BL45P-EA-DIFF-01:ROI3:EnableScale -# % gui, DIFF.rois.roi3, readback, Enable Scaling, BL45P-EA-DIFF-01:ROI3:EnableScale_RBV -# % gui, DIFF.rois.roi3, demand, Scale Divisor, BL45P-EA-DIFF-01:ROI3:Scale -# % gui, DIFF.rois.roi3, readback, Scale Divisor, BL45P-EA-DIFF-01:ROI3:Scale_RBV -# X region -# % gui, DIFF.rois.roi3, groupHeading, X Region -# % gui, DIFF.rois.roi3, enum, X, BL45P-EA-DIFF-01:ROI3:EnableX -# % gui, DIFF.rois.roi3, readback, X, BL45P-EA-DIFF-01:ROI3:EnableX_RBV -# % gui, DIFF.rois.roi3, enum, Autosize X, BL45P-EA-DIFF-01:ROI3:AutoSizeX -# % gui, DIFF.rois.roi3, readback, Autosize X, BL45P-EA-DIFF-01:ROI3:AutoSizeX_RBV -# % gui, DIFF.rois.roi3, readback, Input Size X, BL45P-EA-DIFF-01:ROI3:MaxSizeX_RBV -# % gui, DIFF.rois.roi3, demand, Binning X, BL45P-EA-DIFF-01:ROI3:BinX -# % gui, DIFF.rois.roi3, readback, Binning X, BL45P-EA-DIFF-01:ROI3:BinX_RBV -# % gui, DIFF.rois.roi3, demand, Start X, BL45P-EA-DIFF-01:ROI3:MinX -# % gui, DIFF.rois.roi3, readback, Start X, BL45P-EA-DIFF-01:ROI3:MinX_RBV -# % gui, DIFF.rois.roi3, demand, Size X, BL45P-EA-DIFF-01:ROI3:SizeX -# % gui, DIFF.rois.roi3, readback, Size X, BL45P-EA-DIFF-01:ROI3:SizeX_RBV -# % gui, DIFF.rois.roi3, enum, Reverse X, BL45P-EA-DIFF-01:ROI3:ReverseX -# % gui, DIFF.rois.roi3, readback, Reverse X, BL45P-EA-DIFF-01:ROI3:ReverseX_RBV -# % gui, DIFF.rois.roi3, readback, Bytes X, BL45P-EA-DIFF-01:ROI3:ArraySizeX_RBV -# Y region -# % gui, DIFF.rois.roi3, groupHeading, Y Region -# % gui, DIFF.rois.roi3, enum, Y, BL45P-EA-DIFF-01:ROI3:EnableY -# % gui, DIFF.rois.roi3, readback, Y, BL45P-EA-DIFF-01:ROI3:EnableY_RBV -# % gui, DIFF.rois.roi3, enum, Autosize Y, BL45P-EA-DIFF-01:ROI3:AutoSizeY -# % gui, DIFF.rois.roi3, readback, Autosize Y, BL45P-EA-DIFF-01:ROI3:AutoSizeY_RBV -# % gui, DIFF.rois.roi3, readback, Input size Y, BL45P-EA-DIFF-01:ROI3:MaxSizeY_RBV -# % gui, DIFF.rois.roi3, demand, Binning Y, BL45P-EA-DIFF-01:ROI3:BinY -# % gui, DIFF.rois.roi3, readback, Binning Y, BL45P-EA-DIFF-01:ROI3:BinY_RBV -# % gui, DIFF.rois.roi3, demand, Start Y, BL45P-EA-DIFF-01:ROI3:MinY -# % gui, DIFF.rois.roi3, readback, Start Y, BL45P-EA-DIFF-01:ROI3:MinY_RBV -# % gui, DIFF.rois.roi3, demand, Size Y, BL45P-EA-DIFF-01:ROI3:SizeY -# % gui, DIFF.rois.roi3, readback, Size Y, BL45P-EA-DIFF-01:ROI3:SizeY_RBV -# % gui, DIFF.rois.roi3, enum, Reverse Y, BL45P-EA-DIFF-01:ROI3:ReverseY -# % gui, DIFF.rois.roi3, readback, Reverse Y, BL45P-EA-DIFF-01:ROI3:ReverseY_RBV -# % gui, DIFF.rois.roi3, readback, Bytes Y, BL45P-EA-DIFF-01:ROI3:ArraySizeY_RBV -# Z region -# % gui, DIFF.rois.roi3, groupHeading, Z Region -# % gui, DIFF.rois.roi3, enum, Z, BL45P-EA-DIFF-01:ROI3:EnableZ -# % gui, DIFF.rois.roi3, readback, Z, BL45P-EA-DIFF-01:ROI3:EnableZ_RBV -# % gui, DIFF.rois.roi3, enum, Autosize Z, BL45P-EA-DIFF-01:ROI3:AutoSizeZ -# % gui, DIFF.rois.roi3, readback, Autosize Z, BL45P-EA-DIFF-01:ROI3:AutoSizeZ_RBV -# % gui, DIFF.rois.roi3, readback, Input size Z, BL45P-EA-DIFF-01:ROI3:MaxSizeZ_RBV -# % gui, DIFF.rois.roi3, demand, Binning Z, BL45P-EA-DIFF-01:ROI3:BinZ -# % gui, DIFF.rois.roi3, readback, Binning Z, BL45P-EA-DIFF-01:ROI3:BinZ_RBV -# % gui, DIFF.rois.roi3, demand, Start Z, BL45P-EA-DIFF-01:ROI3:MinZ -# % gui, DIFF.rois.roi3, readback, Start Z, BL45P-EA-DIFF-01:ROI3:MinZ_RBV -# % gui, DIFF.rois.roi3, demand, Size Z, BL45P-EA-DIFF-01:ROI3:SizeZ -# % gui, DIFF.rois.roi3, readback, Size Z, BL45P-EA-DIFF-01:ROI3:SizeZ_RBV -# % gui, DIFF.rois.roi3, enum, Reverse Z, BL45P-EA-DIFF-01:ROI3:ReverseZ -# % gui, DIFF.rois.roi3, readback, Reverse Z, BL45P-EA-DIFF-01:ROI3:ReverseZ_RBV -# % gui, DIFF.rois.roi3, readback, Bytes Z, BL45P-EA-DIFF-01:ROI3:ArraySizeZ_RBV -# Memory -# % gui, DIFF.rois.roi3, groupHeading, Memory -# % gui, DIFF.rois.roi3, readback, Max memory, BL45P-EA-DIFF-01:ROI3:PoolMaxMem -# % gui, DIFF.rois.roi3, readback, Max buffers, BL45P-EA-DIFF-01:ROI3:PoolMaxBuffers -# % gui, DIFF.rois.roi3, readback, Used memory, BL45P-EA-DIFF-01:ROI3:PoolUsedMem -# % gui, DIFF.rois.roi3, readback, Allocated buffers, BL45P-EA-DIFF-01:ROI3:PoolAllocBuffers -# % gui, DIFF.rois.roi3, readback, Free buffers, BL45P-EA-DIFF-01:ROI3:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI3:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI3:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI3:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi3,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI3:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi3,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI3:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi3,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI3:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi3,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI3:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi3,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI3:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi3,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI3:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI3:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI3:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:ROI3:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:ROI3:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI3:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:ROI3:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:ROI3:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:ROI3:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:ROI3:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:ROI3:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:ROI3:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI3:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:ROI3:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:ROI3:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi3,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI3:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI3:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI3:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI3:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:ROI3:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:ROI3:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi3,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:ROI3:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:ROI3:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI3:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:ROI3:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:ROI3:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI3:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ROI3:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ROI3:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:ROI3:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:ROI3:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi3,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:ROI3:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi3,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:ROI3:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI3:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:ROI3:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:ROI3:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI3:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi3,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:ROI3:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)NDARRAY_PORT") - field(VAL, "DIFF.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI3:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi3,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI3:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI3:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI3:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI3:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi3,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI3:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:ROI3:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI3:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI3:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:ROI3:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:ROI3:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI3:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:ROI3:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI3:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi3,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:ROI3:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi3,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI3:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI3:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:ROI3:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI3:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI3:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ROI3:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI3:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:ROI3:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:ROI3:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI3:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:ROI3:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:ROI3:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI3:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:ROI3:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:ROI3:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:ROI3:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:ROI3:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:ROI3:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI3:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI3:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:ROI3:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi3,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI3:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI3:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ROI3:SortSize") - field(OUT, "BL45P-EA-DIFF-01:ROI3:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:ROI3:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI3:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:ROI3:AsynIO") -{ - field(PORT, "DIFF.rois.roi3") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the label for the ROI # -################################################################### -record(stringout, "BL45P-EA-DIFF-01:ROI3:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)NAME") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI3:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi3,0,1)NAME") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the ROI definition # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:ROI3:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM0_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM0_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI3:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM1_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM1_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI3:BinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM2_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:BinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM2_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI3:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM0_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM0_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI3:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM1_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM1_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI3:MinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM2_MIN") - field(LOPR, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:MinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM2_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI3:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM0_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM0_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI3:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM1_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM1_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI3:SizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM2_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:SizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM2_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI3:AutoSizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM0_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:AutoSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM0_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI3:AutoSizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM1_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:AutoSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM1_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI3:AutoSizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM2_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:AutoSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM2_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM0_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM1_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:MaxSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM2_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI3:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM0_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM0_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI3:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM1_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM1_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI3:ReverseZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM2_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:ReverseZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM2_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI3:EnableX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM0_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:EnableX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM0_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI3:EnableY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM1_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:EnableY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM1_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI3:EnableZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)DIM2_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:EnableZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)DIM2_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the scaling of the data. Useful when # -# binning or converting data types # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI3:EnableScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)ENABLE_SCALE") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:EnableScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ENABLE_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI3:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)SCALE_VALUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI3:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi3,0,1)SCALE_VALUE") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI3:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI3:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:ROI3:MaxX") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:ROI3:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:ROI3:MaxX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:ROI3:MinX.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:ROI3:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:ROI3:MaxY") -{ - field(INP, "BL45P-EA-DIFF-01:ROI3:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:ROI3:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:ROI3:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:ROI3:MaxY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:ROI3:MinY.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:ROI3:SizeY.HOPR NPP") -} - -################################################################### -# These records whether dimensions of 1 are collapsed (removed) # # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI3:CollapseDims") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi3,0,1)COLLAPSE_DIMS") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI3:CollapseDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi3,0,1)COLLAPSE_DIMS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -#=================================================================# -# Template file: NDROI.template -# Database for ND ROIs -# Mark Rivers -# April 22, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DIFF.rois.roi4, edmtab, NDROI.edl, P=BL45P-EA-DIFF-01,R=:ROI4: - -# This associates a BOY screen with the template -# % gui, DIFF.rois.roi4, boydetail,ADApp_opi/dls/roi_detail.opi, P=BL45P-EA-DIFF-01, R=:ROI4:, DESC=Region of Interest -# % gui, DIFF.rois.roi4, boyembed, ADApp_opi/dls/roi_embed_box.opi, P=BL45P-EA-DIFF-01, R=:ROI4:, DESC=Region of Interest -# % gui, DIFF.rois.roi4, boyembed, ADApp_opi/dls/roi_embed.opi, P=BL45P-EA-DIFF-01, R=:ROI4:, DESC=Region of Interest - -# % gui, DIFF.rois.roi4, groupHeading, Info -# % gui, DIFF.rois.roi4, readback, Port name, BL45P-EA-DIFF-01:ROI4:PortName_RBV -# % gui, DIFF.rois.roi4, readback, Plugin type, BL45P-EA-DIFF-01:ROI4:PluginType_RBV -# Input -# % gui, DIFF.rois.roi4, demandString, Input, BL45P-EA-DIFF-01:ROI4:NDArrayPort -# % gui, DIFF.rois.roi4, readback, Input, BL45P-EA-DIFF-01:ROI4:NDArrayPort_RBV - -# % gui, DIFF.rois.roi4, groupHeading, Callback -# % gui, DIFF.rois.roi4, enum, Callbacks, BL45P-EA-DIFF-01:ROI4:EnableCallbacks -# % gui, DIFF.rois.roi4, statusbits, Callbacks, BL45P-EA-DIFF-01:ROI4:EnableCallbacks_RBV -# % gui, DIFF.rois.roi4, demand, Min Callback Time, BL45P-EA-DIFF-01:ROI4:MinCallbackTime -# % gui, DIFF.rois.roi4, readback, Min Callback Time, BL45P-EA-DIFF-01:ROI4:MinCallbackTime_RBV -# % gui, DIFF.rois.roi4, enum, Block Callbacks, BL45P-EA-DIFF-01:ROI4:BlockingCallbacks -# % gui, DIFF.rois.roi4, statusbits, Block Callbacks, BL45P-EA-DIFF-01:ROI4:BlockingCallbacks_RBV - -# % gui, DIFF.rois.roi4, groupHeading, Counters -# % gui, DIFF.rois.roi4, demand, Array Counter, BL45P-EA-DIFF-01:ROI4:ArrayCounter -# % gui, DIFF.rois.roi4, readback, Array Counter, BL45P-EA-DIFF-01:ROI4:ArrayCounter_RBV -# % gui, DIFF.rois.roi4, readback, Array Rate (fps), BL45P-EA-DIFF-01:ROI4:ArrayRate_RBV -# % gui, DIFF.rois.roi4, readback, Queue Use, BL45P-EA-DIFF-01:ROI4:QueueUse -# % gui, DIFF.rois.roi4, readback, Queue Size, BL45P-EA-DIFF-01:ROI4:QueueSize -# % gui, DIFF.rois.roi4, demand, Dropped Arrays, BL45P-EA-DIFF-01:ROI4:DroppedArrays -# % gui, DIFF.rois.roi4, readback, Dropped Arrays, BL45P-EA-DIFF-01:ROI4:DroppedArrays_RBV - -# % gui, DIFF.rois.roi4, groupHeading, Array Settings -# % gui, DIFF.rois.roi4, readback, Num Dimensions, BL45P-EA-DIFF-01:ROI4:NDimensions_RBV -# % gui, DIFF.rois.roi4, readback, Dim 0 Size, BL45P-EA-DIFF-01:ROI4:ArraySize0_RBV -# % gui, DIFF.rois.roi4, readback, Dim 1 Size, BL45P-EA-DIFF-01:ROI4:ArraySize1_RBV -# % gui, DIFF.rois.roi4, readback, Dim 2 Size, BL45P-EA-DIFF-01:ROI4:ArraySize2_RBV -# % gui, DIFF.rois.roi4, readback, Input Data Type, BL45P-EA-DIFF-01:ROI4:DataType_RBV -# % gui, DIFF.rois.roi4, readback, Colour Mode, BL45P-EA-DIFF-01:ROI4:ColorMode_RBV -# % gui, DIFF.rois.roi4, readback, Bayer Pattern, BL45P-EA-DIFF-01:ROI4:BayerPattern_RBV -# % gui, DIFF.rois.roi4, readback, Unique id, BL45P-EA-DIFF-01:ROI4:UniqueId_RBV -# % gui, DIFF.rois.roi4, readback, Timestamp, BL45P-EA-DIFF-01:ROI4:TimeStamp_RBV - -# Output -# % gui, DIFF.rois.roi4, groupHeading, Output -# % gui, DIFF.rois.roi4, demand, Name, BL45P-EA-DIFF-01:ROI4:Name -# % gui, DIFF.rois.roi4, enum, Out data type, BL45P-EA-DIFF-01:ROI4:DataTypeOut -# % gui, DIFF.rois.roi4, readback, Out data type, BL45P-EA-DIFF-01:ROI4:DataTypeOut_RBV -# % gui, DIFF.rois.roi4, demand, Attributes file, BL45P-EA-DIFF-01:ROI4:NDAttributesFile -# Scaling -# % gui, DIFF.rois.roi4, groupHeading, Scaling -# % gui, DIFF.rois.roi4, enum, Enable Scaling, BL45P-EA-DIFF-01:ROI4:EnableScale -# % gui, DIFF.rois.roi4, readback, Enable Scaling, BL45P-EA-DIFF-01:ROI4:EnableScale_RBV -# % gui, DIFF.rois.roi4, demand, Scale Divisor, BL45P-EA-DIFF-01:ROI4:Scale -# % gui, DIFF.rois.roi4, readback, Scale Divisor, BL45P-EA-DIFF-01:ROI4:Scale_RBV -# X region -# % gui, DIFF.rois.roi4, groupHeading, X Region -# % gui, DIFF.rois.roi4, enum, X, BL45P-EA-DIFF-01:ROI4:EnableX -# % gui, DIFF.rois.roi4, readback, X, BL45P-EA-DIFF-01:ROI4:EnableX_RBV -# % gui, DIFF.rois.roi4, enum, Autosize X, BL45P-EA-DIFF-01:ROI4:AutoSizeX -# % gui, DIFF.rois.roi4, readback, Autosize X, BL45P-EA-DIFF-01:ROI4:AutoSizeX_RBV -# % gui, DIFF.rois.roi4, readback, Input Size X, BL45P-EA-DIFF-01:ROI4:MaxSizeX_RBV -# % gui, DIFF.rois.roi4, demand, Binning X, BL45P-EA-DIFF-01:ROI4:BinX -# % gui, DIFF.rois.roi4, readback, Binning X, BL45P-EA-DIFF-01:ROI4:BinX_RBV -# % gui, DIFF.rois.roi4, demand, Start X, BL45P-EA-DIFF-01:ROI4:MinX -# % gui, DIFF.rois.roi4, readback, Start X, BL45P-EA-DIFF-01:ROI4:MinX_RBV -# % gui, DIFF.rois.roi4, demand, Size X, BL45P-EA-DIFF-01:ROI4:SizeX -# % gui, DIFF.rois.roi4, readback, Size X, BL45P-EA-DIFF-01:ROI4:SizeX_RBV -# % gui, DIFF.rois.roi4, enum, Reverse X, BL45P-EA-DIFF-01:ROI4:ReverseX -# % gui, DIFF.rois.roi4, readback, Reverse X, BL45P-EA-DIFF-01:ROI4:ReverseX_RBV -# % gui, DIFF.rois.roi4, readback, Bytes X, BL45P-EA-DIFF-01:ROI4:ArraySizeX_RBV -# Y region -# % gui, DIFF.rois.roi4, groupHeading, Y Region -# % gui, DIFF.rois.roi4, enum, Y, BL45P-EA-DIFF-01:ROI4:EnableY -# % gui, DIFF.rois.roi4, readback, Y, BL45P-EA-DIFF-01:ROI4:EnableY_RBV -# % gui, DIFF.rois.roi4, enum, Autosize Y, BL45P-EA-DIFF-01:ROI4:AutoSizeY -# % gui, DIFF.rois.roi4, readback, Autosize Y, BL45P-EA-DIFF-01:ROI4:AutoSizeY_RBV -# % gui, DIFF.rois.roi4, readback, Input size Y, BL45P-EA-DIFF-01:ROI4:MaxSizeY_RBV -# % gui, DIFF.rois.roi4, demand, Binning Y, BL45P-EA-DIFF-01:ROI4:BinY -# % gui, DIFF.rois.roi4, readback, Binning Y, BL45P-EA-DIFF-01:ROI4:BinY_RBV -# % gui, DIFF.rois.roi4, demand, Start Y, BL45P-EA-DIFF-01:ROI4:MinY -# % gui, DIFF.rois.roi4, readback, Start Y, BL45P-EA-DIFF-01:ROI4:MinY_RBV -# % gui, DIFF.rois.roi4, demand, Size Y, BL45P-EA-DIFF-01:ROI4:SizeY -# % gui, DIFF.rois.roi4, readback, Size Y, BL45P-EA-DIFF-01:ROI4:SizeY_RBV -# % gui, DIFF.rois.roi4, enum, Reverse Y, BL45P-EA-DIFF-01:ROI4:ReverseY -# % gui, DIFF.rois.roi4, readback, Reverse Y, BL45P-EA-DIFF-01:ROI4:ReverseY_RBV -# % gui, DIFF.rois.roi4, readback, Bytes Y, BL45P-EA-DIFF-01:ROI4:ArraySizeY_RBV -# Z region -# % gui, DIFF.rois.roi4, groupHeading, Z Region -# % gui, DIFF.rois.roi4, enum, Z, BL45P-EA-DIFF-01:ROI4:EnableZ -# % gui, DIFF.rois.roi4, readback, Z, BL45P-EA-DIFF-01:ROI4:EnableZ_RBV -# % gui, DIFF.rois.roi4, enum, Autosize Z, BL45P-EA-DIFF-01:ROI4:AutoSizeZ -# % gui, DIFF.rois.roi4, readback, Autosize Z, BL45P-EA-DIFF-01:ROI4:AutoSizeZ_RBV -# % gui, DIFF.rois.roi4, readback, Input size Z, BL45P-EA-DIFF-01:ROI4:MaxSizeZ_RBV -# % gui, DIFF.rois.roi4, demand, Binning Z, BL45P-EA-DIFF-01:ROI4:BinZ -# % gui, DIFF.rois.roi4, readback, Binning Z, BL45P-EA-DIFF-01:ROI4:BinZ_RBV -# % gui, DIFF.rois.roi4, demand, Start Z, BL45P-EA-DIFF-01:ROI4:MinZ -# % gui, DIFF.rois.roi4, readback, Start Z, BL45P-EA-DIFF-01:ROI4:MinZ_RBV -# % gui, DIFF.rois.roi4, demand, Size Z, BL45P-EA-DIFF-01:ROI4:SizeZ -# % gui, DIFF.rois.roi4, readback, Size Z, BL45P-EA-DIFF-01:ROI4:SizeZ_RBV -# % gui, DIFF.rois.roi4, enum, Reverse Z, BL45P-EA-DIFF-01:ROI4:ReverseZ -# % gui, DIFF.rois.roi4, readback, Reverse Z, BL45P-EA-DIFF-01:ROI4:ReverseZ_RBV -# % gui, DIFF.rois.roi4, readback, Bytes Z, BL45P-EA-DIFF-01:ROI4:ArraySizeZ_RBV -# Memory -# % gui, DIFF.rois.roi4, groupHeading, Memory -# % gui, DIFF.rois.roi4, readback, Max memory, BL45P-EA-DIFF-01:ROI4:PoolMaxMem -# % gui, DIFF.rois.roi4, readback, Max buffers, BL45P-EA-DIFF-01:ROI4:PoolMaxBuffers -# % gui, DIFF.rois.roi4, readback, Used memory, BL45P-EA-DIFF-01:ROI4:PoolUsedMem -# % gui, DIFF.rois.roi4, readback, Allocated buffers, BL45P-EA-DIFF-01:ROI4:PoolAllocBuffers -# % gui, DIFF.rois.roi4, readback, Free buffers, BL45P-EA-DIFF-01:ROI4:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI4:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI4:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI4:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi4,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI4:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi4,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI4:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi4,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI4:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi4,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI4:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi4,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI4:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi4,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI4:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI4:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI4:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:ROI4:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:ROI4:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI4:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:ROI4:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:ROI4:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:ROI4:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:ROI4:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:ROI4:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:ROI4:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI4:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:ROI4:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:ROI4:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi4,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI4:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI4:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI4:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI4:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:ROI4:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:ROI4:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi4,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:ROI4:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:ROI4:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI4:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:ROI4:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:ROI4:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI4:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ROI4:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ROI4:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:ROI4:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:ROI4:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi4,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:ROI4:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi4,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:ROI4:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI4:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:ROI4:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:ROI4:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI4:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi4,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:ROI4:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)NDARRAY_PORT") - field(VAL, "DIFF.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI4:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi4,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI4:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI4:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI4:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI4:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi4,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI4:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:ROI4:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI4:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI4:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:ROI4:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:ROI4:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI4:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:ROI4:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI4:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi4,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:ROI4:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi4,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI4:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI4:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:ROI4:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI4:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI4:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ROI4:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI4:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:ROI4:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:ROI4:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI4:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:ROI4:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:ROI4:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI4:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:ROI4:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:ROI4:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:ROI4:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:ROI4:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:ROI4:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI4:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI4:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:ROI4:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi4,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI4:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI4:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ROI4:SortSize") - field(OUT, "BL45P-EA-DIFF-01:ROI4:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:ROI4:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI4:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:ROI4:AsynIO") -{ - field(PORT, "DIFF.rois.roi4") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the label for the ROI # -################################################################### -record(stringout, "BL45P-EA-DIFF-01:ROI4:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)NAME") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI4:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi4,0,1)NAME") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the ROI definition # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:ROI4:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM0_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM0_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI4:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM1_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM1_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI4:BinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM2_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:BinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM2_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI4:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM0_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM0_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI4:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM1_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM1_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI4:MinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM2_MIN") - field(LOPR, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:MinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM2_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI4:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM0_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM0_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI4:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM1_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM1_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI4:SizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM2_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:SizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM2_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI4:AutoSizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM0_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:AutoSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM0_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI4:AutoSizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM1_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:AutoSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM1_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI4:AutoSizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM2_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:AutoSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM2_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM0_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM1_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:MaxSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM2_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI4:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM0_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM0_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI4:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM1_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM1_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI4:ReverseZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM2_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:ReverseZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM2_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI4:EnableX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM0_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:EnableX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM0_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI4:EnableY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM1_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:EnableY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM1_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI4:EnableZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)DIM2_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:EnableZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)DIM2_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the scaling of the data. Useful when # -# binning or converting data types # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI4:EnableScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)ENABLE_SCALE") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:EnableScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ENABLE_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI4:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)SCALE_VALUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI4:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi4,0,1)SCALE_VALUE") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI4:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI4:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:ROI4:MaxX") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:ROI4:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:ROI4:MaxX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:ROI4:MinX.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:ROI4:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:ROI4:MaxY") -{ - field(INP, "BL45P-EA-DIFF-01:ROI4:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:ROI4:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:ROI4:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:ROI4:MaxY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:ROI4:MinY.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:ROI4:SizeY.HOPR NPP") -} - -################################################################### -# These records whether dimensions of 1 are collapsed (removed) # # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI4:CollapseDims") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi4,0,1)COLLAPSE_DIMS") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI4:CollapseDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi4,0,1)COLLAPSE_DIMS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -#=================================================================# -# Template file: NDROI.template -# Database for ND ROIs -# Mark Rivers -# April 22, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DIFF.rois.roi5, edmtab, NDROI.edl, P=BL45P-EA-DIFF-01,R=:ROI5: - -# This associates a BOY screen with the template -# % gui, DIFF.rois.roi5, boydetail,ADApp_opi/dls/roi_detail.opi, P=BL45P-EA-DIFF-01, R=:ROI5:, DESC=Region of Interest -# % gui, DIFF.rois.roi5, boyembed, ADApp_opi/dls/roi_embed_box.opi, P=BL45P-EA-DIFF-01, R=:ROI5:, DESC=Region of Interest -# % gui, DIFF.rois.roi5, boyembed, ADApp_opi/dls/roi_embed.opi, P=BL45P-EA-DIFF-01, R=:ROI5:, DESC=Region of Interest - -# % gui, DIFF.rois.roi5, groupHeading, Info -# % gui, DIFF.rois.roi5, readback, Port name, BL45P-EA-DIFF-01:ROI5:PortName_RBV -# % gui, DIFF.rois.roi5, readback, Plugin type, BL45P-EA-DIFF-01:ROI5:PluginType_RBV -# Input -# % gui, DIFF.rois.roi5, demandString, Input, BL45P-EA-DIFF-01:ROI5:NDArrayPort -# % gui, DIFF.rois.roi5, readback, Input, BL45P-EA-DIFF-01:ROI5:NDArrayPort_RBV - -# % gui, DIFF.rois.roi5, groupHeading, Callback -# % gui, DIFF.rois.roi5, enum, Callbacks, BL45P-EA-DIFF-01:ROI5:EnableCallbacks -# % gui, DIFF.rois.roi5, statusbits, Callbacks, BL45P-EA-DIFF-01:ROI5:EnableCallbacks_RBV -# % gui, DIFF.rois.roi5, demand, Min Callback Time, BL45P-EA-DIFF-01:ROI5:MinCallbackTime -# % gui, DIFF.rois.roi5, readback, Min Callback Time, BL45P-EA-DIFF-01:ROI5:MinCallbackTime_RBV -# % gui, DIFF.rois.roi5, enum, Block Callbacks, BL45P-EA-DIFF-01:ROI5:BlockingCallbacks -# % gui, DIFF.rois.roi5, statusbits, Block Callbacks, BL45P-EA-DIFF-01:ROI5:BlockingCallbacks_RBV - -# % gui, DIFF.rois.roi5, groupHeading, Counters -# % gui, DIFF.rois.roi5, demand, Array Counter, BL45P-EA-DIFF-01:ROI5:ArrayCounter -# % gui, DIFF.rois.roi5, readback, Array Counter, BL45P-EA-DIFF-01:ROI5:ArrayCounter_RBV -# % gui, DIFF.rois.roi5, readback, Array Rate (fps), BL45P-EA-DIFF-01:ROI5:ArrayRate_RBV -# % gui, DIFF.rois.roi5, readback, Queue Use, BL45P-EA-DIFF-01:ROI5:QueueUse -# % gui, DIFF.rois.roi5, readback, Queue Size, BL45P-EA-DIFF-01:ROI5:QueueSize -# % gui, DIFF.rois.roi5, demand, Dropped Arrays, BL45P-EA-DIFF-01:ROI5:DroppedArrays -# % gui, DIFF.rois.roi5, readback, Dropped Arrays, BL45P-EA-DIFF-01:ROI5:DroppedArrays_RBV - -# % gui, DIFF.rois.roi5, groupHeading, Array Settings -# % gui, DIFF.rois.roi5, readback, Num Dimensions, BL45P-EA-DIFF-01:ROI5:NDimensions_RBV -# % gui, DIFF.rois.roi5, readback, Dim 0 Size, BL45P-EA-DIFF-01:ROI5:ArraySize0_RBV -# % gui, DIFF.rois.roi5, readback, Dim 1 Size, BL45P-EA-DIFF-01:ROI5:ArraySize1_RBV -# % gui, DIFF.rois.roi5, readback, Dim 2 Size, BL45P-EA-DIFF-01:ROI5:ArraySize2_RBV -# % gui, DIFF.rois.roi5, readback, Input Data Type, BL45P-EA-DIFF-01:ROI5:DataType_RBV -# % gui, DIFF.rois.roi5, readback, Colour Mode, BL45P-EA-DIFF-01:ROI5:ColorMode_RBV -# % gui, DIFF.rois.roi5, readback, Bayer Pattern, BL45P-EA-DIFF-01:ROI5:BayerPattern_RBV -# % gui, DIFF.rois.roi5, readback, Unique id, BL45P-EA-DIFF-01:ROI5:UniqueId_RBV -# % gui, DIFF.rois.roi5, readback, Timestamp, BL45P-EA-DIFF-01:ROI5:TimeStamp_RBV - -# Output -# % gui, DIFF.rois.roi5, groupHeading, Output -# % gui, DIFF.rois.roi5, demand, Name, BL45P-EA-DIFF-01:ROI5:Name -# % gui, DIFF.rois.roi5, enum, Out data type, BL45P-EA-DIFF-01:ROI5:DataTypeOut -# % gui, DIFF.rois.roi5, readback, Out data type, BL45P-EA-DIFF-01:ROI5:DataTypeOut_RBV -# % gui, DIFF.rois.roi5, demand, Attributes file, BL45P-EA-DIFF-01:ROI5:NDAttributesFile -# Scaling -# % gui, DIFF.rois.roi5, groupHeading, Scaling -# % gui, DIFF.rois.roi5, enum, Enable Scaling, BL45P-EA-DIFF-01:ROI5:EnableScale -# % gui, DIFF.rois.roi5, readback, Enable Scaling, BL45P-EA-DIFF-01:ROI5:EnableScale_RBV -# % gui, DIFF.rois.roi5, demand, Scale Divisor, BL45P-EA-DIFF-01:ROI5:Scale -# % gui, DIFF.rois.roi5, readback, Scale Divisor, BL45P-EA-DIFF-01:ROI5:Scale_RBV -# X region -# % gui, DIFF.rois.roi5, groupHeading, X Region -# % gui, DIFF.rois.roi5, enum, X, BL45P-EA-DIFF-01:ROI5:EnableX -# % gui, DIFF.rois.roi5, readback, X, BL45P-EA-DIFF-01:ROI5:EnableX_RBV -# % gui, DIFF.rois.roi5, enum, Autosize X, BL45P-EA-DIFF-01:ROI5:AutoSizeX -# % gui, DIFF.rois.roi5, readback, Autosize X, BL45P-EA-DIFF-01:ROI5:AutoSizeX_RBV -# % gui, DIFF.rois.roi5, readback, Input Size X, BL45P-EA-DIFF-01:ROI5:MaxSizeX_RBV -# % gui, DIFF.rois.roi5, demand, Binning X, BL45P-EA-DIFF-01:ROI5:BinX -# % gui, DIFF.rois.roi5, readback, Binning X, BL45P-EA-DIFF-01:ROI5:BinX_RBV -# % gui, DIFF.rois.roi5, demand, Start X, BL45P-EA-DIFF-01:ROI5:MinX -# % gui, DIFF.rois.roi5, readback, Start X, BL45P-EA-DIFF-01:ROI5:MinX_RBV -# % gui, DIFF.rois.roi5, demand, Size X, BL45P-EA-DIFF-01:ROI5:SizeX -# % gui, DIFF.rois.roi5, readback, Size X, BL45P-EA-DIFF-01:ROI5:SizeX_RBV -# % gui, DIFF.rois.roi5, enum, Reverse X, BL45P-EA-DIFF-01:ROI5:ReverseX -# % gui, DIFF.rois.roi5, readback, Reverse X, BL45P-EA-DIFF-01:ROI5:ReverseX_RBV -# % gui, DIFF.rois.roi5, readback, Bytes X, BL45P-EA-DIFF-01:ROI5:ArraySizeX_RBV -# Y region -# % gui, DIFF.rois.roi5, groupHeading, Y Region -# % gui, DIFF.rois.roi5, enum, Y, BL45P-EA-DIFF-01:ROI5:EnableY -# % gui, DIFF.rois.roi5, readback, Y, BL45P-EA-DIFF-01:ROI5:EnableY_RBV -# % gui, DIFF.rois.roi5, enum, Autosize Y, BL45P-EA-DIFF-01:ROI5:AutoSizeY -# % gui, DIFF.rois.roi5, readback, Autosize Y, BL45P-EA-DIFF-01:ROI5:AutoSizeY_RBV -# % gui, DIFF.rois.roi5, readback, Input size Y, BL45P-EA-DIFF-01:ROI5:MaxSizeY_RBV -# % gui, DIFF.rois.roi5, demand, Binning Y, BL45P-EA-DIFF-01:ROI5:BinY -# % gui, DIFF.rois.roi5, readback, Binning Y, BL45P-EA-DIFF-01:ROI5:BinY_RBV -# % gui, DIFF.rois.roi5, demand, Start Y, BL45P-EA-DIFF-01:ROI5:MinY -# % gui, DIFF.rois.roi5, readback, Start Y, BL45P-EA-DIFF-01:ROI5:MinY_RBV -# % gui, DIFF.rois.roi5, demand, Size Y, BL45P-EA-DIFF-01:ROI5:SizeY -# % gui, DIFF.rois.roi5, readback, Size Y, BL45P-EA-DIFF-01:ROI5:SizeY_RBV -# % gui, DIFF.rois.roi5, enum, Reverse Y, BL45P-EA-DIFF-01:ROI5:ReverseY -# % gui, DIFF.rois.roi5, readback, Reverse Y, BL45P-EA-DIFF-01:ROI5:ReverseY_RBV -# % gui, DIFF.rois.roi5, readback, Bytes Y, BL45P-EA-DIFF-01:ROI5:ArraySizeY_RBV -# Z region -# % gui, DIFF.rois.roi5, groupHeading, Z Region -# % gui, DIFF.rois.roi5, enum, Z, BL45P-EA-DIFF-01:ROI5:EnableZ -# % gui, DIFF.rois.roi5, readback, Z, BL45P-EA-DIFF-01:ROI5:EnableZ_RBV -# % gui, DIFF.rois.roi5, enum, Autosize Z, BL45P-EA-DIFF-01:ROI5:AutoSizeZ -# % gui, DIFF.rois.roi5, readback, Autosize Z, BL45P-EA-DIFF-01:ROI5:AutoSizeZ_RBV -# % gui, DIFF.rois.roi5, readback, Input size Z, BL45P-EA-DIFF-01:ROI5:MaxSizeZ_RBV -# % gui, DIFF.rois.roi5, demand, Binning Z, BL45P-EA-DIFF-01:ROI5:BinZ -# % gui, DIFF.rois.roi5, readback, Binning Z, BL45P-EA-DIFF-01:ROI5:BinZ_RBV -# % gui, DIFF.rois.roi5, demand, Start Z, BL45P-EA-DIFF-01:ROI5:MinZ -# % gui, DIFF.rois.roi5, readback, Start Z, BL45P-EA-DIFF-01:ROI5:MinZ_RBV -# % gui, DIFF.rois.roi5, demand, Size Z, BL45P-EA-DIFF-01:ROI5:SizeZ -# % gui, DIFF.rois.roi5, readback, Size Z, BL45P-EA-DIFF-01:ROI5:SizeZ_RBV -# % gui, DIFF.rois.roi5, enum, Reverse Z, BL45P-EA-DIFF-01:ROI5:ReverseZ -# % gui, DIFF.rois.roi5, readback, Reverse Z, BL45P-EA-DIFF-01:ROI5:ReverseZ_RBV -# % gui, DIFF.rois.roi5, readback, Bytes Z, BL45P-EA-DIFF-01:ROI5:ArraySizeZ_RBV -# Memory -# % gui, DIFF.rois.roi5, groupHeading, Memory -# % gui, DIFF.rois.roi5, readback, Max memory, BL45P-EA-DIFF-01:ROI5:PoolMaxMem -# % gui, DIFF.rois.roi5, readback, Max buffers, BL45P-EA-DIFF-01:ROI5:PoolMaxBuffers -# % gui, DIFF.rois.roi5, readback, Used memory, BL45P-EA-DIFF-01:ROI5:PoolUsedMem -# % gui, DIFF.rois.roi5, readback, Allocated buffers, BL45P-EA-DIFF-01:ROI5:PoolAllocBuffers -# % gui, DIFF.rois.roi5, readback, Free buffers, BL45P-EA-DIFF-01:ROI5:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI5:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI5:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI5:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi5,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI5:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi5,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI5:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi5,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI5:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi5,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI5:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi5,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI5:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi5,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI5:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI5:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI5:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:ROI5:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:ROI5:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI5:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:ROI5:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:ROI5:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:ROI5:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:ROI5:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:ROI5:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:ROI5:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI5:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:ROI5:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:ROI5:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi5,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI5:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI5:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI5:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI5:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:ROI5:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:ROI5:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi5,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:ROI5:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:ROI5:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI5:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:ROI5:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:ROI5:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI5:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ROI5:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ROI5:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:ROI5:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:ROI5:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi5,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:ROI5:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi5,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:ROI5:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI5:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:ROI5:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:ROI5:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI5:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi5,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:ROI5:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)NDARRAY_PORT") - field(VAL, "DIFF.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI5:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi5,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI5:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI5:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI5:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI5:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi5,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI5:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:ROI5:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI5:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI5:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:ROI5:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:ROI5:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI5:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:ROI5:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI5:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi5,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:ROI5:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi5,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI5:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI5:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:ROI5:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI5:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI5:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ROI5:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI5:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:ROI5:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:ROI5:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI5:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:ROI5:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:ROI5:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI5:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:ROI5:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:ROI5:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:ROI5:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:ROI5:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:ROI5:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI5:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI5:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:ROI5:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi5,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI5:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI5:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ROI5:SortSize") - field(OUT, "BL45P-EA-DIFF-01:ROI5:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:ROI5:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI5:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:ROI5:AsynIO") -{ - field(PORT, "DIFF.rois.roi5") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the label for the ROI # -################################################################### -record(stringout, "BL45P-EA-DIFF-01:ROI5:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)NAME") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI5:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi5,0,1)NAME") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the ROI definition # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:ROI5:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM0_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM0_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI5:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM1_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM1_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI5:BinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM2_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:BinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM2_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI5:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM0_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM0_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI5:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM1_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM1_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI5:MinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM2_MIN") - field(LOPR, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:MinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM2_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI5:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM0_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM0_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI5:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM1_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM1_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI5:SizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM2_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:SizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM2_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI5:AutoSizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM0_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:AutoSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM0_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI5:AutoSizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM1_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:AutoSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM1_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI5:AutoSizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM2_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:AutoSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM2_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM0_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM1_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:MaxSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM2_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI5:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM0_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM0_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI5:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM1_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM1_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI5:ReverseZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM2_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:ReverseZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM2_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI5:EnableX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM0_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:EnableX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM0_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI5:EnableY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM1_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:EnableY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM1_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI5:EnableZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)DIM2_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:EnableZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)DIM2_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the scaling of the data. Useful when # -# binning or converting data types # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI5:EnableScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)ENABLE_SCALE") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:EnableScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ENABLE_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI5:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)SCALE_VALUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI5:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi5,0,1)SCALE_VALUE") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI5:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI5:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:ROI5:MaxX") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:ROI5:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:ROI5:MaxX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:ROI5:MinX.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:ROI5:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:ROI5:MaxY") -{ - field(INP, "BL45P-EA-DIFF-01:ROI5:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:ROI5:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:ROI5:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:ROI5:MaxY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:ROI5:MinY.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:ROI5:SizeY.HOPR NPP") -} - -################################################################### -# These records whether dimensions of 1 are collapsed (removed) # # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI5:CollapseDims") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi5,0,1)COLLAPSE_DIMS") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI5:CollapseDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi5,0,1)COLLAPSE_DIMS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -#=================================================================# -# Template file: NDROI.template -# Database for ND ROIs -# Mark Rivers -# April 22, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DIFF.rois.roi6, edmtab, NDROI.edl, P=BL45P-EA-DIFF-01,R=:ROI6: - -# This associates a BOY screen with the template -# % gui, DIFF.rois.roi6, boydetail,ADApp_opi/dls/roi_detail.opi, P=BL45P-EA-DIFF-01, R=:ROI6:, DESC=Region of Interest -# % gui, DIFF.rois.roi6, boyembed, ADApp_opi/dls/roi_embed_box.opi, P=BL45P-EA-DIFF-01, R=:ROI6:, DESC=Region of Interest -# % gui, DIFF.rois.roi6, boyembed, ADApp_opi/dls/roi_embed.opi, P=BL45P-EA-DIFF-01, R=:ROI6:, DESC=Region of Interest - -# % gui, DIFF.rois.roi6, groupHeading, Info -# % gui, DIFF.rois.roi6, readback, Port name, BL45P-EA-DIFF-01:ROI6:PortName_RBV -# % gui, DIFF.rois.roi6, readback, Plugin type, BL45P-EA-DIFF-01:ROI6:PluginType_RBV -# Input -# % gui, DIFF.rois.roi6, demandString, Input, BL45P-EA-DIFF-01:ROI6:NDArrayPort -# % gui, DIFF.rois.roi6, readback, Input, BL45P-EA-DIFF-01:ROI6:NDArrayPort_RBV - -# % gui, DIFF.rois.roi6, groupHeading, Callback -# % gui, DIFF.rois.roi6, enum, Callbacks, BL45P-EA-DIFF-01:ROI6:EnableCallbacks -# % gui, DIFF.rois.roi6, statusbits, Callbacks, BL45P-EA-DIFF-01:ROI6:EnableCallbacks_RBV -# % gui, DIFF.rois.roi6, demand, Min Callback Time, BL45P-EA-DIFF-01:ROI6:MinCallbackTime -# % gui, DIFF.rois.roi6, readback, Min Callback Time, BL45P-EA-DIFF-01:ROI6:MinCallbackTime_RBV -# % gui, DIFF.rois.roi6, enum, Block Callbacks, BL45P-EA-DIFF-01:ROI6:BlockingCallbacks -# % gui, DIFF.rois.roi6, statusbits, Block Callbacks, BL45P-EA-DIFF-01:ROI6:BlockingCallbacks_RBV - -# % gui, DIFF.rois.roi6, groupHeading, Counters -# % gui, DIFF.rois.roi6, demand, Array Counter, BL45P-EA-DIFF-01:ROI6:ArrayCounter -# % gui, DIFF.rois.roi6, readback, Array Counter, BL45P-EA-DIFF-01:ROI6:ArrayCounter_RBV -# % gui, DIFF.rois.roi6, readback, Array Rate (fps), BL45P-EA-DIFF-01:ROI6:ArrayRate_RBV -# % gui, DIFF.rois.roi6, readback, Queue Use, BL45P-EA-DIFF-01:ROI6:QueueUse -# % gui, DIFF.rois.roi6, readback, Queue Size, BL45P-EA-DIFF-01:ROI6:QueueSize -# % gui, DIFF.rois.roi6, demand, Dropped Arrays, BL45P-EA-DIFF-01:ROI6:DroppedArrays -# % gui, DIFF.rois.roi6, readback, Dropped Arrays, BL45P-EA-DIFF-01:ROI6:DroppedArrays_RBV - -# % gui, DIFF.rois.roi6, groupHeading, Array Settings -# % gui, DIFF.rois.roi6, readback, Num Dimensions, BL45P-EA-DIFF-01:ROI6:NDimensions_RBV -# % gui, DIFF.rois.roi6, readback, Dim 0 Size, BL45P-EA-DIFF-01:ROI6:ArraySize0_RBV -# % gui, DIFF.rois.roi6, readback, Dim 1 Size, BL45P-EA-DIFF-01:ROI6:ArraySize1_RBV -# % gui, DIFF.rois.roi6, readback, Dim 2 Size, BL45P-EA-DIFF-01:ROI6:ArraySize2_RBV -# % gui, DIFF.rois.roi6, readback, Input Data Type, BL45P-EA-DIFF-01:ROI6:DataType_RBV -# % gui, DIFF.rois.roi6, readback, Colour Mode, BL45P-EA-DIFF-01:ROI6:ColorMode_RBV -# % gui, DIFF.rois.roi6, readback, Bayer Pattern, BL45P-EA-DIFF-01:ROI6:BayerPattern_RBV -# % gui, DIFF.rois.roi6, readback, Unique id, BL45P-EA-DIFF-01:ROI6:UniqueId_RBV -# % gui, DIFF.rois.roi6, readback, Timestamp, BL45P-EA-DIFF-01:ROI6:TimeStamp_RBV - -# Output -# % gui, DIFF.rois.roi6, groupHeading, Output -# % gui, DIFF.rois.roi6, demand, Name, BL45P-EA-DIFF-01:ROI6:Name -# % gui, DIFF.rois.roi6, enum, Out data type, BL45P-EA-DIFF-01:ROI6:DataTypeOut -# % gui, DIFF.rois.roi6, readback, Out data type, BL45P-EA-DIFF-01:ROI6:DataTypeOut_RBV -# % gui, DIFF.rois.roi6, demand, Attributes file, BL45P-EA-DIFF-01:ROI6:NDAttributesFile -# Scaling -# % gui, DIFF.rois.roi6, groupHeading, Scaling -# % gui, DIFF.rois.roi6, enum, Enable Scaling, BL45P-EA-DIFF-01:ROI6:EnableScale -# % gui, DIFF.rois.roi6, readback, Enable Scaling, BL45P-EA-DIFF-01:ROI6:EnableScale_RBV -# % gui, DIFF.rois.roi6, demand, Scale Divisor, BL45P-EA-DIFF-01:ROI6:Scale -# % gui, DIFF.rois.roi6, readback, Scale Divisor, BL45P-EA-DIFF-01:ROI6:Scale_RBV -# X region -# % gui, DIFF.rois.roi6, groupHeading, X Region -# % gui, DIFF.rois.roi6, enum, X, BL45P-EA-DIFF-01:ROI6:EnableX -# % gui, DIFF.rois.roi6, readback, X, BL45P-EA-DIFF-01:ROI6:EnableX_RBV -# % gui, DIFF.rois.roi6, enum, Autosize X, BL45P-EA-DIFF-01:ROI6:AutoSizeX -# % gui, DIFF.rois.roi6, readback, Autosize X, BL45P-EA-DIFF-01:ROI6:AutoSizeX_RBV -# % gui, DIFF.rois.roi6, readback, Input Size X, BL45P-EA-DIFF-01:ROI6:MaxSizeX_RBV -# % gui, DIFF.rois.roi6, demand, Binning X, BL45P-EA-DIFF-01:ROI6:BinX -# % gui, DIFF.rois.roi6, readback, Binning X, BL45P-EA-DIFF-01:ROI6:BinX_RBV -# % gui, DIFF.rois.roi6, demand, Start X, BL45P-EA-DIFF-01:ROI6:MinX -# % gui, DIFF.rois.roi6, readback, Start X, BL45P-EA-DIFF-01:ROI6:MinX_RBV -# % gui, DIFF.rois.roi6, demand, Size X, BL45P-EA-DIFF-01:ROI6:SizeX -# % gui, DIFF.rois.roi6, readback, Size X, BL45P-EA-DIFF-01:ROI6:SizeX_RBV -# % gui, DIFF.rois.roi6, enum, Reverse X, BL45P-EA-DIFF-01:ROI6:ReverseX -# % gui, DIFF.rois.roi6, readback, Reverse X, BL45P-EA-DIFF-01:ROI6:ReverseX_RBV -# % gui, DIFF.rois.roi6, readback, Bytes X, BL45P-EA-DIFF-01:ROI6:ArraySizeX_RBV -# Y region -# % gui, DIFF.rois.roi6, groupHeading, Y Region -# % gui, DIFF.rois.roi6, enum, Y, BL45P-EA-DIFF-01:ROI6:EnableY -# % gui, DIFF.rois.roi6, readback, Y, BL45P-EA-DIFF-01:ROI6:EnableY_RBV -# % gui, DIFF.rois.roi6, enum, Autosize Y, BL45P-EA-DIFF-01:ROI6:AutoSizeY -# % gui, DIFF.rois.roi6, readback, Autosize Y, BL45P-EA-DIFF-01:ROI6:AutoSizeY_RBV -# % gui, DIFF.rois.roi6, readback, Input size Y, BL45P-EA-DIFF-01:ROI6:MaxSizeY_RBV -# % gui, DIFF.rois.roi6, demand, Binning Y, BL45P-EA-DIFF-01:ROI6:BinY -# % gui, DIFF.rois.roi6, readback, Binning Y, BL45P-EA-DIFF-01:ROI6:BinY_RBV -# % gui, DIFF.rois.roi6, demand, Start Y, BL45P-EA-DIFF-01:ROI6:MinY -# % gui, DIFF.rois.roi6, readback, Start Y, BL45P-EA-DIFF-01:ROI6:MinY_RBV -# % gui, DIFF.rois.roi6, demand, Size Y, BL45P-EA-DIFF-01:ROI6:SizeY -# % gui, DIFF.rois.roi6, readback, Size Y, BL45P-EA-DIFF-01:ROI6:SizeY_RBV -# % gui, DIFF.rois.roi6, enum, Reverse Y, BL45P-EA-DIFF-01:ROI6:ReverseY -# % gui, DIFF.rois.roi6, readback, Reverse Y, BL45P-EA-DIFF-01:ROI6:ReverseY_RBV -# % gui, DIFF.rois.roi6, readback, Bytes Y, BL45P-EA-DIFF-01:ROI6:ArraySizeY_RBV -# Z region -# % gui, DIFF.rois.roi6, groupHeading, Z Region -# % gui, DIFF.rois.roi6, enum, Z, BL45P-EA-DIFF-01:ROI6:EnableZ -# % gui, DIFF.rois.roi6, readback, Z, BL45P-EA-DIFF-01:ROI6:EnableZ_RBV -# % gui, DIFF.rois.roi6, enum, Autosize Z, BL45P-EA-DIFF-01:ROI6:AutoSizeZ -# % gui, DIFF.rois.roi6, readback, Autosize Z, BL45P-EA-DIFF-01:ROI6:AutoSizeZ_RBV -# % gui, DIFF.rois.roi6, readback, Input size Z, BL45P-EA-DIFF-01:ROI6:MaxSizeZ_RBV -# % gui, DIFF.rois.roi6, demand, Binning Z, BL45P-EA-DIFF-01:ROI6:BinZ -# % gui, DIFF.rois.roi6, readback, Binning Z, BL45P-EA-DIFF-01:ROI6:BinZ_RBV -# % gui, DIFF.rois.roi6, demand, Start Z, BL45P-EA-DIFF-01:ROI6:MinZ -# % gui, DIFF.rois.roi6, readback, Start Z, BL45P-EA-DIFF-01:ROI6:MinZ_RBV -# % gui, DIFF.rois.roi6, demand, Size Z, BL45P-EA-DIFF-01:ROI6:SizeZ -# % gui, DIFF.rois.roi6, readback, Size Z, BL45P-EA-DIFF-01:ROI6:SizeZ_RBV -# % gui, DIFF.rois.roi6, enum, Reverse Z, BL45P-EA-DIFF-01:ROI6:ReverseZ -# % gui, DIFF.rois.roi6, readback, Reverse Z, BL45P-EA-DIFF-01:ROI6:ReverseZ_RBV -# % gui, DIFF.rois.roi6, readback, Bytes Z, BL45P-EA-DIFF-01:ROI6:ArraySizeZ_RBV -# Memory -# % gui, DIFF.rois.roi6, groupHeading, Memory -# % gui, DIFF.rois.roi6, readback, Max memory, BL45P-EA-DIFF-01:ROI6:PoolMaxMem -# % gui, DIFF.rois.roi6, readback, Max buffers, BL45P-EA-DIFF-01:ROI6:PoolMaxBuffers -# % gui, DIFF.rois.roi6, readback, Used memory, BL45P-EA-DIFF-01:ROI6:PoolUsedMem -# % gui, DIFF.rois.roi6, readback, Allocated buffers, BL45P-EA-DIFF-01:ROI6:PoolAllocBuffers -# % gui, DIFF.rois.roi6, readback, Free buffers, BL45P-EA-DIFF-01:ROI6:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI6:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI6:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI6:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi6,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI6:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi6,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI6:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi6,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI6:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi6,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI6:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi6,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI6:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi6,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI6:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI6:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI6:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:ROI6:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:ROI6:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI6:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:ROI6:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:ROI6:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:ROI6:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:ROI6:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:ROI6:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:ROI6:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ROI6:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:ROI6:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:ROI6:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi6,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI6:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI6:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI6:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI6:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:ROI6:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:ROI6:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi6,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:ROI6:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:ROI6:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI6:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:ROI6:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:ROI6:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI6:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ROI6:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ROI6:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:ROI6:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:ROI6:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi6,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:ROI6:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi6,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:ROI6:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI6:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:ROI6:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:ROI6:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ROI6:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi6,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:ROI6:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)NDARRAY_PORT") - field(VAL, "DIFF.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI6:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi6,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI6:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI6:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI6:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI6:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi6,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI6:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:ROI6:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI6:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI6:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:ROI6:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:ROI6:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ROI6:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:ROI6:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI6:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi6,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:ROI6:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi6,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI6:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ROI6:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:ROI6:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI6:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI6:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ROI6:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI6:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:ROI6:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:ROI6:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI6:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:ROI6:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:ROI6:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ROI6:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:ROI6:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:ROI6:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:ROI6:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:ROI6:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:ROI6:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI6:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI6:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:ROI6:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi6,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI6:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ROI6:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ROI6:SortSize") - field(OUT, "BL45P-EA-DIFF-01:ROI6:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:ROI6:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI6:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:ROI6:AsynIO") -{ - field(PORT, "DIFF.rois.roi6") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the label for the ROI # -################################################################### -record(stringout, "BL45P-EA-DIFF-01:ROI6:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)NAME") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:ROI6:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.rois.roi6,0,1)NAME") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the ROI definition # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:ROI6:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM0_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM0_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI6:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM1_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM1_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI6:BinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM2_BIN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:BinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM2_BIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI6:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM0_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM0_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI6:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM1_MIN") - field(LOPR, "0") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM1_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI6:MinZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM2_MIN") - field(LOPR, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:MinZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM2_MIN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI6:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM0_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM0_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI6:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM1_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM1_SIZE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ROI6:SizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM2_SIZE") - field(VAL, "1000000") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:SizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM2_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI6:AutoSizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM0_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:AutoSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM0_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI6:AutoSizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM1_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:AutoSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM1_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI6:AutoSizeZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM2_AUTO_SIZE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:AutoSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM2_AUTO_SIZE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM0_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM1_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:MaxSizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM2_MAX_SIZE") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI6:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM0_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM0_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI6:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM1_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM1_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI6:ReverseZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM2_REVERSE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:ReverseZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM2_REVERSE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI6:EnableX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM0_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:EnableX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM0_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI6:EnableY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM1_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:EnableY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM1_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:ROI6:EnableZ") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)DIM2_ENABLE") - field(VAL, "1") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:EnableZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)DIM2_ENABLE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the scaling of the data. Useful when # -# binning or converting data types # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI6:EnableScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)ENABLE_SCALE") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:EnableScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ENABLE_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ROI6:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)SCALE_VALUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ROI6:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.rois.roi6,0,1)SCALE_VALUE") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ROI6:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ROI6:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)ROI_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:ROI6:MaxX") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:ROI6:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:ROI6:MaxX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:ROI6:MinX.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:ROI6:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:ROI6:MaxY") -{ - field(INP, "BL45P-EA-DIFF-01:ROI6:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:ROI6:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:ROI6:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:ROI6:MaxY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:ROI6:MinY.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:ROI6:SizeY.HOPR NPP") -} - -################################################################### -# These records whether dimensions of 1 are collapsed (removed) # # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ROI6:CollapseDims") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.rois.roi6,0,1)COLLAPSE_DIMS") - field(VAL, "0") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ROI6:CollapseDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.rois.roi6,0,1)COLLAPSE_DIMS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -#=================================================================# -# Template file: NDStats.template - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, NCHANS, Number of channels -# % macro, XSIZE, x size -# % macro, YSIZE, y size -# % macro, HIST_SIZE, hist size -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Timeout -# % macro, TS_PORT, TS port - -# This associates the template with an edm screen -# % gui, DET.stat, edmtab, NDStats.edl, P=BL45P-EA-MAP-01,R=:STAT: - -# This associates a BOY screen with the template -# % gui, DET.stat, boydetail,ADApp_opi/dls/stats_detail.opi, P=BL45P-EA-MAP-01, R=:STAT:, DESC=Statistics -# % gui, DET.stat, boyembed, ADApp_opi/dls/stats_embed_box.opi, P=BL45P-EA-MAP-01, R=:STAT:, DESC=Statistics -# % gui, DET.stat, boyembed, ADApp_opi/dls/stats_embed.opi, P=BL45P-EA-MAP-01, R=:STAT:, DESC=Statistics - - -# % gui, DET.stat, groupHeading, Info -# % gui, DET.stat, readback, Port name, BL45P-EA-MAP-01:STAT:PortName_RBV -# % gui, DET.stat, readback, Plugin type, BL45P-EA-MAP-01:STAT:PluginType_RBV -# Input -# % gui, DET.stat, demandString, Input, BL45P-EA-MAP-01:STAT:NDArrayPort -# % gui, DET.stat, readback, Input, BL45P-EA-MAP-01:STAT:NDArrayPort_RBV - -# % gui, DET.stat, groupHeading, Callback -# % gui, DET.stat, enum, Callbacks, BL45P-EA-MAP-01:STAT:EnableCallbacks -# % gui, DET.stat, statusbits, Callbacks, BL45P-EA-MAP-01:STAT:EnableCallbacks_RBV -# % gui, DET.stat, demand, Min Callback Time, BL45P-EA-MAP-01:STAT:MinCallbackTime -# % gui, DET.stat, readback, Min Callback Time, BL45P-EA-MAP-01:STAT:MinCallbackTime_RBV -# % gui, DET.stat, enum, Block Callbacks, BL45P-EA-MAP-01:STAT:BlockingCallbacks -# % gui, DET.stat, statusbits, Block Callbacks, BL45P-EA-MAP-01:STAT:BlockingCallbacks_RBV - -# % gui, DET.stat, groupHeading, Counters -# % gui, DET.stat, demand, Array Counter, BL45P-EA-MAP-01:STAT:ArrayCounter -# % gui, DET.stat, readback, Array Counter, BL45P-EA-MAP-01:STAT:ArrayCounter_RBV -# % gui, DET.stat, readback, Array Rate (fps), BL45P-EA-MAP-01:STAT:ArrayRate_RBV -# % gui, DET.stat, readback, Queue Use, BL45P-EA-MAP-01:STAT:QueueUse -# % gui, DET.stat, readback, Queue Size, BL45P-EA-MAP-01:STAT:QueueSize -# % gui, DET.stat, demand, Dropped Arrays, BL45P-EA-MAP-01:STAT:DroppedArrays -# % gui, DET.stat, readback, Dropped Arrays, BL45P-EA-MAP-01:STAT:DroppedArrays_RBV - -# % gui, DET.stat, groupHeading, Array Settings -# % gui, DET.stat, readback, Num Dimensions, BL45P-EA-MAP-01:STAT:NDimensions_RBV -# % gui, DET.stat, readback, Dim 0 Size, BL45P-EA-MAP-01:STAT:ArraySize0_RBV -# % gui, DET.stat, readback, Dim 1 Size, BL45P-EA-MAP-01:STAT:ArraySize1_RBV -# % gui, DET.stat, readback, Dim 2 Size, BL45P-EA-MAP-01:STAT:ArraySize2_RBV -# % gui, DET.stat, readback, Input Data Type, BL45P-EA-MAP-01:STAT:DataType_RBV -# % gui, DET.stat, readback, Colour Mode, BL45P-EA-MAP-01:STAT:ColorMode_RBV -# % gui, DET.stat, readback, Bayer Pattern, BL45P-EA-MAP-01:STAT:BayerPattern_RBV -# % gui, DET.stat, readback, Unique id, BL45P-EA-MAP-01:STAT:UniqueId_RBV -# % gui, DET.stat, readback, Timestamp, BL45P-EA-MAP-01:STAT:TimeStamp_RBV - -# Output -# % gui, DET.stat, groupHeading, Output -# % gui, DET.stat, demand, Name, BL45P-EA-MAP-01:STAT:Name -# % gui, DET.stat, enum, Out data type, BL45P-EA-MAP-01:STAT:DataTypeOut -# % gui, DET.stat, readback, Out data type, BL45P-EA-MAP-01:STAT:DataTypeOut_RBV -# % gui, DET.stat, demand, Attributes file, BL45P-EA-MAP-01:STAT:NDAttributesFile - -# Statistics -# % gui, DET.stat, groupHeading, Statistics -# % gui, DET.stat, enum, Compute Statistics, BL45P-EA-MAP-01:STAT:ComputeStatistics -# % gui, DET.stat, statusbits, Compute Statistics, BL45P-EA-MAP-01:STAT:ComputeStatistics_RBV -# % gui, DET.stat, demand, Background Width, BL45P-EA-MAP-01:STAT:BgdWidth -# % gui, DET.stat, readback, Background Width, BL45P-EA-MAP-01:STAT:BgdWidth_RBV -# % gui, DET.stat, readback, Minimum Value, BL45P-EA-MAP-01:STAT:MinValue_RBV -# % gui, DET.stat, readback, Minimum X, BL45P-EA-MAP-01:STAT:MinX_RBV -# % gui, DET.stat, readback, Minimum Y, BL45P-EA-MAP-01:STAT:MinY_RBV -# % gui, DET.stat, readback, Maximum Value, BL45P-EA-MAP-01:STAT:MaxValue_RBV -# % gui, DET.stat, readback, Maximum X, BL45P-EA-MAP-01:STAT:MaxX_RBV -# % gui, DET.stat, readback, Maximum Y, BL45P-EA-MAP-01:STAT:MaxY_RBV -# % gui, DET.stat, readback, Mean Value, BL45P-EA-MAP-01:STAT:MeanValue_RBV -# % gui, DET.stat, readback, Total, BL45P-EA-MAP-01:STAT:Total_RBV -# % gui, DET.stat, readback, Sigma, BL45P-EA-MAP-01:STAT:Sigma_RBV -# % gui, DET.stat, readback, Net, BL45P-EA-MAP-01:STAT:Net_RBV -# Centroid -# % gui, DET.stat, groupHeading, Centroid -# % gui, DET.stat, enum, Compute Centroid, BL45P-EA-MAP-01:STAT:ComputeCentroid -# % gui, DET.stat, statusbits, Compute Centroid, BL45P-EA-MAP-01:STAT:ComputeCentroid_RBV -# % gui, DET.stat, demand, Threshold, BL45P-EA-MAP-01:STAT:CentroidThreshold -# % gui, DET.stat, readback, Threshold, BL45P-EA-MAP-01:STAT:CentroidThreshold_RBV -# % gui, DET.stat, readback, X, BL45P-EA-MAP-01:STAT:CentroidX_RBV -# % gui, DET.stat, readback, Sigma X, BL45P-EA-MAP-01:STAT:SigmaX_RBV -# % gui, DET.stat, readback, Y, BL45P-EA-MAP-01:STAT:CentroidY_RBV -# % gui, DET.stat, readback, Sigma Y, BL45P-EA-MAP-01:STAT:SigmaY_RBV -# % gui, DET.stat, readback, Sigma XY, BL45P-EA-MAP-01:STAT:SigmaXY_RBV -# Histogram -# % gui, DET.stat, groupHeading, Histogram -# % gui, DET.stat, enum, Compute Histogram, BL45P-EA-MAP-01:STAT:ComputeHistogram -# % gui, DET.stat, statusbits, Compute Histogram, BL45P-EA-MAP-01:STAT:ComputeHistogram_RBV -# % gui, DET.stat, demand, Histogram Size, BL45P-EA-MAP-01:STAT:HistSize -# % gui, DET.stat, readback, Histogram Size, BL45P-EA-MAP-01:STAT:HistSize_RBV -# % gui, DET.stat, demand, Histogram Min, BL45P-EA-MAP-01:STAT:HistMin -# % gui, DET.stat, readback, Histogram Min, BL45P-EA-MAP-01:STAT:HistMin_RBV -# % gui, DET.stat, demand, Histogram Max, BL45P-EA-MAP-01:STAT:HistMax -# % gui, DET.stat, readback, Histogram Max, BL45P-EA-MAP-01:STAT:HistMax_RBV -# % gui, DET.stat, readback, Histogram Entropy, BL45P-EA-MAP-01:STAT:HistEntropy_RBV -# Profiles -# % gui, DET.stat, groupHeading, Profiles -# % gui, DET.stat, enum, Compute Profiles, BL45P-EA-MAP-01:STAT:ComputeProfiles -# % gui, DET.stat, statusbits, Compute Profiles, BL45P-EA-MAP-01:STAT:ComputeProfiles_RBV -# % gui, DET.stat, demand, Cursor X, BL45P-EA-MAP-01:STAT:CursorX -# % gui, DET.stat, readback, Cursor X, BL45P-EA-MAP-01:STAT:CursorX_RBV -# % gui, DET.stat, demand, Cursor Y, BL45P-EA-MAP-01:STAT:CursorY -# % gui, DET.stat, readback, Cursor Y, BL45P-EA-MAP-01:STAT:CursorY_RBV -# % gui, DET.stat, readback, Size X, BL45P-EA-MAP-01:STAT:ProfileSizeX_RBV -# % gui, DET.stat, readback, Size Y, BL45P-EA-MAP-01:STAT:ProfileSizeY_RBV -# Time series -# % gui, DET.stat, groupHeading, Time Series -# % gui, DET.stat, enum, Time Control, BL45P-EA-MAP-01:STAT:TS:TSAcquire -# % gui, DET.stat, statusbits, Acquiring, BL45P-EA-MAP-01:STAT:TS:TSAcquiring -# % gui, DET.stat, readback, Current Point, BL45P-EA-MAP-01:STAT:TS:TSCurrentPoint -# % gui, DET.stat, demand, Number of Points, BL45P-EA-MAP-01:STAT:TS:TSNumPoints -# % gui, DET.stat, enum, Update, BL45P-EA-MAP-01:STAT:TS:TSRead.SCAN -# Memory -# % gui, DET.stat, groupHeading, Memory -# % gui, DET.stat, readback, Max memory, BL45P-EA-MAP-01:STAT:PoolMaxMem -# % gui, DET.stat, readback, Max buffers, BL45P-EA-MAP-01:STAT:PoolMaxBuffers -# % gui, DET.stat, readback, Used memory, BL45P-EA-MAP-01:STAT:PoolUsedMem -# % gui, DET.stat, readback, Allocated buffers, BL45P-EA-MAP-01:STAT:PoolAllocBuffers -# % gui, DET.stat, readback, Free buffers, BL45P-EA-MAP-01:STAT:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stat,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stat,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stat,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stat,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stat,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stat,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stat,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stat,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:STAT:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:STAT:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:STAT:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:STAT:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:STAT:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:STAT:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:STAT:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:STAT:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:STAT:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:STAT:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:STAT:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:STAT:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.stat,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:STAT:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.stat,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:STAT:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:STAT:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:STAT:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stat,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:STAT:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:STAT:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:STAT:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:STAT:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:STAT:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:STAT:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:STAT:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:STAT:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:STAT:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:STAT:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.stat,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:STAT:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.stat,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:STAT:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:STAT:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:STAT:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:STAT:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:STAT:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:STAT:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:STAT:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:STAT:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:STAT:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:STAT:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:STAT:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:STAT:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:STAT:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stat,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:STAT:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.stat,0,1)NDARRAY_PORT") - field(VAL, "DET.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:STAT:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stat,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:STAT:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:STAT:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:STAT:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:STAT:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:STAT:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:STAT:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:STAT:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:STAT:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:STAT:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:STAT:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:STAT:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:STAT:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:STAT:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:STAT:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:STAT:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:STAT:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:STAT:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:STAT:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:STAT:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:STAT:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:STAT:QueueSize") - field(INPB, "BL45P-EA-MAP-01:STAT:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:STAT:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:STAT:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:STAT:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:STAT:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:STAT:SortSize") - field(OUT, "BL45P-EA-MAP-01:STAT:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:STAT:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:STAT:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:STAT:AsynIO") -{ - field(PORT, "DET.stat") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records contain the basic statistics # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT:ComputeStatistics") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)COMPUTE_STATISTICS") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT:ComputeStatistics_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)COMPUTE_STATISTICS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT:BgdWidth") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)BGD_WIDTH") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT:BgdWidth_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)BGD_WIDTH") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:MinValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)MIN_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT:MinValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)MIN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:MaxValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)MAX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT:MaxValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)MAX_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:MeanValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)MEAN_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT:MeanValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)MEAN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:SigmaValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)SIGMA_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT:Sigma_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)SIGMA_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:Total") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)TOTAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT:Total_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:Net") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)NET") -} - -record(ai, "BL45P-EA-MAP-01:STAT:Net_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)NET") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:MinX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)MIN_X") -} - -record(ai, "BL45P-EA-MAP-01:STAT:MinX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:MinY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)MIN_Y") -} - -record(ai, "BL45P-EA-MAP-01:STAT:MinY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:MaxX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)MAX_X") -} - -record(ai, "BL45P-EA-MAP-01:STAT:MaxX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)MAX_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:MaxY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)MAX_Y") -} - -record(ai, "BL45P-EA-MAP-01:STAT:MaxY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)MAX_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether centroid statistics are computed # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT:ComputeCentroid") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)COMPUTE_CENTROID") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT:ComputeCentroid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)COMPUTE_CENTROID") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain the centroid statistics # -################################################################### -record(ao, "BL45P-EA-MAP-01:STAT:CentroidThreshold") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)CENTROID_THRESHOLD") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT:CentroidThreshold_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)CENTROID_THRESHOLD") - field(VAL, "0") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:CentroidTotal") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)CENTROID_TOTAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT:CentroidTotal_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)CENTROID_TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:CentroidX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)CENTROIDX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT:CentroidX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)CENTROIDX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:CentroidY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)CENTROIDY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT:CentroidY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)CENTROIDY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:SigmaX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)SIGMAX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT:SigmaX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)SIGMAX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:SigmaY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)SIGMAY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT:SigmaY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)SIGMAY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:SigmaXY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)SIGMAXY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT:SigmaXY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)SIGMAXY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:SkewX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)SKEWX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT:SkewX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)SKEWX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:SkewY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)SKEWY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT:SkewY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)SKEWY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:KurtosisX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)KURTOSISX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT:KurtosisX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)KURTOSISX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:KurtosisY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)KURTOSISY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT:KurtosisY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)KURTOSISY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:Eccentricity") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)ECCENTRICITY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT:Eccentricity_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)ECCENTRICITY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:Orientation") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)ORIENTATION_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT:Orientation_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)ORIENTATION_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control time series # -################################################################### -record(waveform, "BL45P-EA-MAP-01:STAT:TSMinValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,0,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSMinX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,1,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSMinY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,2,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSMaxValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,3,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSMaxX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,4,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSMaxY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,5,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSMeanValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,6,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSSigma") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,7,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,8,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSNet") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,9,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSCentroidTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,10,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSCentroidX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,11,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSCentroidY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,12,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSSigmaX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,13,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSSigmaY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,14,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSSigmaXY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,15,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSSkewX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,16,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSSkewY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,17,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSKurtosisX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,18,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSKurtosisY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,19,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSEccentricity") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,20,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSOrientation") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,21,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:TSTimestamp") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat_TS,22,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control profiles # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT:ComputeProfiles") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)COMPUTE_PROFILES") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT:ComputeProfiles_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)COMPUTE_PROFILES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ProfileSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)PROFILE_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT:ProfileSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)PROFILE_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT:CursorX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)CURSOR_X") - field(VAL, "256") - field(FLNK, "BL45P-EA-MAP-01:STAT:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT:CursorX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)CURSOR_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT:CursorY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)CURSOR_Y") - field(VAL, "256") - field(FLNK, "BL45P-EA-MAP-01:STAT:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT:CursorY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)CURSOR_Y") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:STAT:CursorVal") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)CURSOR_VAL") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:ProfileAverageX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat,0,1)PROFILE_AVERAGE_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:ProfileAverageY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat,0,1)PROFILE_AVERAGE_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:ProfileThresholdX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat,0,1)PROFILE_THRESHOLD_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:ProfileThresholdY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat,0,1)PROFILE_THRESHOLD_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:ProfileCentroidX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat,0,1)PROFILE_CENTROID_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:ProfileCentroidY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat,0,1)PROFILE_CENTROID_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:ProfileCursorX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat,0,1)PROFILE_CURSOR_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:ProfileCursorY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat,0,1)PROFILE_CURSOR_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These are used to define the histogram # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT:ComputeHistogram") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)COMPUTE_HISTOGRAM") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT:ComputeHistogram_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)COMPUTE_HISTOGRAM") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT:HistSize") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)HIST_SIZE") - field(VAL, "256") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT:HistSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)HIST_SIZE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:HistMin") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)HIST_MIN") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT:HistMin_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)HIST_MIN") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:HistMax") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)HIST_MAX") - field(VAL, "255") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT:HistMax_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)HIST_MAX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT:HistBelow") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)HIST_BELOW") -} - -record(longin, "BL45P-EA-MAP-01:STAT:HistBelow_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)HIST_BELOW") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT:HistAbove") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stat,0,1)HIST_ABOVE") -} - -record(longin, "BL45P-EA-MAP-01:STAT:HistAbove_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stat,0,1)HIST_ABOVE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT:HistEntropy") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stat,0,1)HIST_ENTROPY") -} - -record(ai, "BL45P-EA-MAP-01:STAT:HistEntropy_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stat,0,1)HIST_ENTROPY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:Histogram_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat,0,1)HIST_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT:HistogramX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stat,0,1)HIST_X_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records set the HOPR and LOPR values for the cursor # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:STAT:MaxSizeX") -{ - field(INP, "BL45P-EA-MAP-01:STAT:ProfileSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:STAT:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:STAT:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:STAT:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:STAT:CursorX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:STAT:MaxSizeY") -{ - field(INP, "BL45P-EA-MAP-01:STAT:ProfileSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:STAT:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:STAT:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:STAT:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:STAT:CursorY.HOPR NPP") -} - -################################################################### -# These records reset the statistics # -################################################################### -record(sseq, "BL45P-EA-MAP-01:STAT:Reset") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT:MinValue PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT:MaxValue PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT:MeanValue PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT:SigmaValue PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT:Total PP MS") - field(LNK6, "BL45P-EA-MAP-01:STAT:Net PP MS") - field(LNK7, "BL45P-EA-MAP-01:STAT:MinX PP MS") - field(LNK8, "BL45P-EA-MAP-01:STAT:MinY PP MS") - field(LNK9, "BL45P-EA-MAP-01:STAT:MaxX PP MS") - field(LNKA, "BL45P-EA-MAP-01:STAT:MaxY PP MS") - field(FLNK, "BL45P-EA-MAP-01:STAT:Reset1") -} - -record(sseq, "BL45P-EA-MAP-01:STAT:Reset1") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT:CentroidX PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT:CentroidY PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT:SigmaX PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT:SigmaY PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT:SigmaXY PP MS") - field(LNK6, "BL45P-EA-MAP-01:STAT:CentroidTotal PP MS") - field(LNK7, "BL45P-EA-MAP-01:STAT:SkewX PP MS") - field(LNK8, "BL45P-EA-MAP-01:STAT:SkewY PP MS") - field(LNK9, "BL45P-EA-MAP-01:STAT:KurtosisX PP MS") - field(LNKA, "BL45P-EA-MAP-01:STAT:KurtosisY PP MS") - field(FLNK, "BL45P-EA-MAP-01:STAT:Reset2") -} - -record(sseq, "BL45P-EA-MAP-01:STAT:Reset2") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT:Eccentricity PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT:Orientation PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT:HistBelow PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT:HistAbove PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT:HistEntropy PP MS") -} - -#=================================================================# -# Template file: NDStats.template - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, NCHANS, Number of channels -# % macro, XSIZE, x size -# % macro, YSIZE, y size -# % macro, HIST_SIZE, hist size -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Timeout -# % macro, TS_PORT, TS port - -# This associates the template with an edm screen -# % gui, DET.stats.stat1, edmtab, NDStats.edl, P=BL45P-EA-MAP-01,R=:STAT1: - -# This associates a BOY screen with the template -# % gui, DET.stats.stat1, boydetail,ADApp_opi/dls/stats_detail.opi, P=BL45P-EA-MAP-01, R=:STAT1:, DESC=Statistics -# % gui, DET.stats.stat1, boyembed, ADApp_opi/dls/stats_embed_box.opi, P=BL45P-EA-MAP-01, R=:STAT1:, DESC=Statistics -# % gui, DET.stats.stat1, boyembed, ADApp_opi/dls/stats_embed.opi, P=BL45P-EA-MAP-01, R=:STAT1:, DESC=Statistics - - -# % gui, DET.stats.stat1, groupHeading, Info -# % gui, DET.stats.stat1, readback, Port name, BL45P-EA-MAP-01:STAT1:PortName_RBV -# % gui, DET.stats.stat1, readback, Plugin type, BL45P-EA-MAP-01:STAT1:PluginType_RBV -# Input -# % gui, DET.stats.stat1, demandString, Input, BL45P-EA-MAP-01:STAT1:NDArrayPort -# % gui, DET.stats.stat1, readback, Input, BL45P-EA-MAP-01:STAT1:NDArrayPort_RBV - -# % gui, DET.stats.stat1, groupHeading, Callback -# % gui, DET.stats.stat1, enum, Callbacks, BL45P-EA-MAP-01:STAT1:EnableCallbacks -# % gui, DET.stats.stat1, statusbits, Callbacks, BL45P-EA-MAP-01:STAT1:EnableCallbacks_RBV -# % gui, DET.stats.stat1, demand, Min Callback Time, BL45P-EA-MAP-01:STAT1:MinCallbackTime -# % gui, DET.stats.stat1, readback, Min Callback Time, BL45P-EA-MAP-01:STAT1:MinCallbackTime_RBV -# % gui, DET.stats.stat1, enum, Block Callbacks, BL45P-EA-MAP-01:STAT1:BlockingCallbacks -# % gui, DET.stats.stat1, statusbits, Block Callbacks, BL45P-EA-MAP-01:STAT1:BlockingCallbacks_RBV - -# % gui, DET.stats.stat1, groupHeading, Counters -# % gui, DET.stats.stat1, demand, Array Counter, BL45P-EA-MAP-01:STAT1:ArrayCounter -# % gui, DET.stats.stat1, readback, Array Counter, BL45P-EA-MAP-01:STAT1:ArrayCounter_RBV -# % gui, DET.stats.stat1, readback, Array Rate (fps), BL45P-EA-MAP-01:STAT1:ArrayRate_RBV -# % gui, DET.stats.stat1, readback, Queue Use, BL45P-EA-MAP-01:STAT1:QueueUse -# % gui, DET.stats.stat1, readback, Queue Size, BL45P-EA-MAP-01:STAT1:QueueSize -# % gui, DET.stats.stat1, demand, Dropped Arrays, BL45P-EA-MAP-01:STAT1:DroppedArrays -# % gui, DET.stats.stat1, readback, Dropped Arrays, BL45P-EA-MAP-01:STAT1:DroppedArrays_RBV - -# % gui, DET.stats.stat1, groupHeading, Array Settings -# % gui, DET.stats.stat1, readback, Num Dimensions, BL45P-EA-MAP-01:STAT1:NDimensions_RBV -# % gui, DET.stats.stat1, readback, Dim 0 Size, BL45P-EA-MAP-01:STAT1:ArraySize0_RBV -# % gui, DET.stats.stat1, readback, Dim 1 Size, BL45P-EA-MAP-01:STAT1:ArraySize1_RBV -# % gui, DET.stats.stat1, readback, Dim 2 Size, BL45P-EA-MAP-01:STAT1:ArraySize2_RBV -# % gui, DET.stats.stat1, readback, Input Data Type, BL45P-EA-MAP-01:STAT1:DataType_RBV -# % gui, DET.stats.stat1, readback, Colour Mode, BL45P-EA-MAP-01:STAT1:ColorMode_RBV -# % gui, DET.stats.stat1, readback, Bayer Pattern, BL45P-EA-MAP-01:STAT1:BayerPattern_RBV -# % gui, DET.stats.stat1, readback, Unique id, BL45P-EA-MAP-01:STAT1:UniqueId_RBV -# % gui, DET.stats.stat1, readback, Timestamp, BL45P-EA-MAP-01:STAT1:TimeStamp_RBV - -# Output -# % gui, DET.stats.stat1, groupHeading, Output -# % gui, DET.stats.stat1, demand, Name, BL45P-EA-MAP-01:STAT1:Name -# % gui, DET.stats.stat1, enum, Out data type, BL45P-EA-MAP-01:STAT1:DataTypeOut -# % gui, DET.stats.stat1, readback, Out data type, BL45P-EA-MAP-01:STAT1:DataTypeOut_RBV -# % gui, DET.stats.stat1, demand, Attributes file, BL45P-EA-MAP-01:STAT1:NDAttributesFile - -# Statistics -# % gui, DET.stats.stat1, groupHeading, Statistics -# % gui, DET.stats.stat1, enum, Compute Statistics, BL45P-EA-MAP-01:STAT1:ComputeStatistics -# % gui, DET.stats.stat1, statusbits, Compute Statistics, BL45P-EA-MAP-01:STAT1:ComputeStatistics_RBV -# % gui, DET.stats.stat1, demand, Background Width, BL45P-EA-MAP-01:STAT1:BgdWidth -# % gui, DET.stats.stat1, readback, Background Width, BL45P-EA-MAP-01:STAT1:BgdWidth_RBV -# % gui, DET.stats.stat1, readback, Minimum Value, BL45P-EA-MAP-01:STAT1:MinValue_RBV -# % gui, DET.stats.stat1, readback, Minimum X, BL45P-EA-MAP-01:STAT1:MinX_RBV -# % gui, DET.stats.stat1, readback, Minimum Y, BL45P-EA-MAP-01:STAT1:MinY_RBV -# % gui, DET.stats.stat1, readback, Maximum Value, BL45P-EA-MAP-01:STAT1:MaxValue_RBV -# % gui, DET.stats.stat1, readback, Maximum X, BL45P-EA-MAP-01:STAT1:MaxX_RBV -# % gui, DET.stats.stat1, readback, Maximum Y, BL45P-EA-MAP-01:STAT1:MaxY_RBV -# % gui, DET.stats.stat1, readback, Mean Value, BL45P-EA-MAP-01:STAT1:MeanValue_RBV -# % gui, DET.stats.stat1, readback, Total, BL45P-EA-MAP-01:STAT1:Total_RBV -# % gui, DET.stats.stat1, readback, Sigma, BL45P-EA-MAP-01:STAT1:Sigma_RBV -# % gui, DET.stats.stat1, readback, Net, BL45P-EA-MAP-01:STAT1:Net_RBV -# Centroid -# % gui, DET.stats.stat1, groupHeading, Centroid -# % gui, DET.stats.stat1, enum, Compute Centroid, BL45P-EA-MAP-01:STAT1:ComputeCentroid -# % gui, DET.stats.stat1, statusbits, Compute Centroid, BL45P-EA-MAP-01:STAT1:ComputeCentroid_RBV -# % gui, DET.stats.stat1, demand, Threshold, BL45P-EA-MAP-01:STAT1:CentroidThreshold -# % gui, DET.stats.stat1, readback, Threshold, BL45P-EA-MAP-01:STAT1:CentroidThreshold_RBV -# % gui, DET.stats.stat1, readback, X, BL45P-EA-MAP-01:STAT1:CentroidX_RBV -# % gui, DET.stats.stat1, readback, Sigma X, BL45P-EA-MAP-01:STAT1:SigmaX_RBV -# % gui, DET.stats.stat1, readback, Y, BL45P-EA-MAP-01:STAT1:CentroidY_RBV -# % gui, DET.stats.stat1, readback, Sigma Y, BL45P-EA-MAP-01:STAT1:SigmaY_RBV -# % gui, DET.stats.stat1, readback, Sigma XY, BL45P-EA-MAP-01:STAT1:SigmaXY_RBV -# Histogram -# % gui, DET.stats.stat1, groupHeading, Histogram -# % gui, DET.stats.stat1, enum, Compute Histogram, BL45P-EA-MAP-01:STAT1:ComputeHistogram -# % gui, DET.stats.stat1, statusbits, Compute Histogram, BL45P-EA-MAP-01:STAT1:ComputeHistogram_RBV -# % gui, DET.stats.stat1, demand, Histogram Size, BL45P-EA-MAP-01:STAT1:HistSize -# % gui, DET.stats.stat1, readback, Histogram Size, BL45P-EA-MAP-01:STAT1:HistSize_RBV -# % gui, DET.stats.stat1, demand, Histogram Min, BL45P-EA-MAP-01:STAT1:HistMin -# % gui, DET.stats.stat1, readback, Histogram Min, BL45P-EA-MAP-01:STAT1:HistMin_RBV -# % gui, DET.stats.stat1, demand, Histogram Max, BL45P-EA-MAP-01:STAT1:HistMax -# % gui, DET.stats.stat1, readback, Histogram Max, BL45P-EA-MAP-01:STAT1:HistMax_RBV -# % gui, DET.stats.stat1, readback, Histogram Entropy, BL45P-EA-MAP-01:STAT1:HistEntropy_RBV -# Profiles -# % gui, DET.stats.stat1, groupHeading, Profiles -# % gui, DET.stats.stat1, enum, Compute Profiles, BL45P-EA-MAP-01:STAT1:ComputeProfiles -# % gui, DET.stats.stat1, statusbits, Compute Profiles, BL45P-EA-MAP-01:STAT1:ComputeProfiles_RBV -# % gui, DET.stats.stat1, demand, Cursor X, BL45P-EA-MAP-01:STAT1:CursorX -# % gui, DET.stats.stat1, readback, Cursor X, BL45P-EA-MAP-01:STAT1:CursorX_RBV -# % gui, DET.stats.stat1, demand, Cursor Y, BL45P-EA-MAP-01:STAT1:CursorY -# % gui, DET.stats.stat1, readback, Cursor Y, BL45P-EA-MAP-01:STAT1:CursorY_RBV -# % gui, DET.stats.stat1, readback, Size X, BL45P-EA-MAP-01:STAT1:ProfileSizeX_RBV -# % gui, DET.stats.stat1, readback, Size Y, BL45P-EA-MAP-01:STAT1:ProfileSizeY_RBV -# Time series -# % gui, DET.stats.stat1, groupHeading, Time Series -# % gui, DET.stats.stat1, enum, Time Control, BL45P-EA-MAP-01:STAT1:TS:TSAcquire -# % gui, DET.stats.stat1, statusbits, Acquiring, BL45P-EA-MAP-01:STAT1:TS:TSAcquiring -# % gui, DET.stats.stat1, readback, Current Point, BL45P-EA-MAP-01:STAT1:TS:TSCurrentPoint -# % gui, DET.stats.stat1, demand, Number of Points, BL45P-EA-MAP-01:STAT1:TS:TSNumPoints -# % gui, DET.stats.stat1, enum, Update, BL45P-EA-MAP-01:STAT1:TS:TSRead.SCAN -# Memory -# % gui, DET.stats.stat1, groupHeading, Memory -# % gui, DET.stats.stat1, readback, Max memory, BL45P-EA-MAP-01:STAT1:PoolMaxMem -# % gui, DET.stats.stat1, readback, Max buffers, BL45P-EA-MAP-01:STAT1:PoolMaxBuffers -# % gui, DET.stats.stat1, readback, Used memory, BL45P-EA-MAP-01:STAT1:PoolUsedMem -# % gui, DET.stats.stat1, readback, Allocated buffers, BL45P-EA-MAP-01:STAT1:PoolAllocBuffers -# % gui, DET.stats.stat1, readback, Free buffers, BL45P-EA-MAP-01:STAT1:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT1:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat1,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT1:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat1,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT1:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat1,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT1:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat1,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT1:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat1,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT1:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat1,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT1:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat1,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT1:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat1,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:STAT1:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT1:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:STAT1:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT1:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:STAT1:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:STAT1:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:STAT1:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:STAT1:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT1:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:STAT1:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:STAT1:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:STAT1:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:STAT1:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:STAT1:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.stats.stat1,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:STAT1:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.stats.stat1,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT1:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:STAT1:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:STAT1:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat1,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:STAT1:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT1:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:STAT1:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT1:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:STAT1:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:STAT1:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:STAT1:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:STAT1:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:STAT1:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:STAT1:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT1:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT1:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:STAT1:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.stats.stat1,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:STAT1:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.stats.stat1,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:STAT1:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:STAT1:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:STAT1:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:STAT1:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:STAT1:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:STAT1:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:STAT1:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:STAT1:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:STAT1:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT1:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat1,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:STAT1:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.stats.stat1,0,1)NDARRAY_PORT") - field(VAL, "DET.rois.roi1") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:STAT1:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat1,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT1:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT1:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT1:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:STAT1:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:STAT1:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:STAT1:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:STAT1:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:STAT1:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:STAT1:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:STAT1:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT1:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT1:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT1:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:STAT1:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT1:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:STAT1:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT1:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:STAT1:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT1:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:STAT1:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:STAT1:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:STAT1:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT1:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:STAT1:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:STAT1:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:STAT1:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT1:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:STAT1:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:STAT1:QueueSize") - field(INPB, "BL45P-EA-MAP-01:STAT1:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:STAT1:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:STAT1:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT1:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT1:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:STAT1:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT1:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:STAT1:SortSize") - field(OUT, "BL45P-EA-MAP-01:STAT1:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:STAT1:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT1:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:STAT1:AsynIO") -{ - field(PORT, "DET.stats.stat1") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records contain the basic statistics # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT1:ComputeStatistics") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)COMPUTE_STATISTICS") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT1:ComputeStatistics_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)COMPUTE_STATISTICS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT1:BgdWidth") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)BGD_WIDTH") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:BgdWidth_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)BGD_WIDTH") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:MinValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)MIN_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:MinValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)MIN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:MaxValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)MAX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:MaxValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)MAX_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:MeanValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)MEAN_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:MeanValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)MEAN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:SigmaValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)SIGMA_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:Sigma_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)SIGMA_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:Total") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)TOTAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:Total_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:Net") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)NET") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:Net_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)NET") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:MinX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)MIN_X") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:MinX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:MinY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)MIN_Y") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:MinY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:MaxX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)MAX_X") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:MaxX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)MAX_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:MaxY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)MAX_Y") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:MaxY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)MAX_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether centroid statistics are computed # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT1:ComputeCentroid") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)COMPUTE_CENTROID") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT1:ComputeCentroid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)COMPUTE_CENTROID") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain the centroid statistics # -################################################################### -record(ao, "BL45P-EA-MAP-01:STAT1:CentroidThreshold") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)CENTROID_THRESHOLD") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:CentroidThreshold_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)CENTROID_THRESHOLD") - field(VAL, "0") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:CentroidTotal") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)CENTROID_TOTAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:CentroidTotal_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)CENTROID_TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:CentroidX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)CENTROIDX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:CentroidX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)CENTROIDX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:CentroidY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)CENTROIDY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:CentroidY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)CENTROIDY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:SigmaX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)SIGMAX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:SigmaX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)SIGMAX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:SigmaY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)SIGMAY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:SigmaY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)SIGMAY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:SigmaXY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)SIGMAXY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:SigmaXY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)SIGMAXY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:SkewX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)SKEWX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:SkewX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)SKEWX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:SkewY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)SKEWY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:SkewY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)SKEWY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:KurtosisX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)KURTOSISX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:KurtosisX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)KURTOSISX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:KurtosisY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)KURTOSISY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:KurtosisY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)KURTOSISY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:Eccentricity") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)ECCENTRICITY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:Eccentricity_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)ECCENTRICITY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:Orientation") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)ORIENTATION_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:Orientation_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)ORIENTATION_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control time series # -################################################################### -record(waveform, "BL45P-EA-MAP-01:STAT1:TSMinValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,0,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSMinX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,1,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSMinY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,2,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSMaxValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,3,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSMaxX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,4,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSMaxY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,5,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSMeanValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,6,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSSigma") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,7,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,8,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSNet") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,9,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSCentroidTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,10,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSCentroidX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,11,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSCentroidY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,12,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSSigmaX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,13,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSSigmaY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,14,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSSigmaXY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,15,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSSkewX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,16,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSSkewY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,17,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSKurtosisX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,18,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSKurtosisY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,19,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSEccentricity") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,20,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSOrientation") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,21,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:TSTimestamp") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1_TS,22,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control profiles # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT1:ComputeProfiles") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)COMPUTE_PROFILES") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT1:ComputeProfiles_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)COMPUTE_PROFILES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ProfileSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)PROFILE_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:ProfileSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)PROFILE_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT1:CursorX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)CURSOR_X") - field(VAL, "256") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:CursorX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)CURSOR_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT1:CursorY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)CURSOR_Y") - field(VAL, "256") - field(FLNK, "BL45P-EA-MAP-01:STAT1:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:CursorY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)CURSOR_Y") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:CursorVal") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)CURSOR_VAL") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:ProfileAverageX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1,0,1)PROFILE_AVERAGE_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:ProfileAverageY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1,0,1)PROFILE_AVERAGE_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:ProfileThresholdX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1,0,1)PROFILE_THRESHOLD_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:ProfileThresholdY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1,0,1)PROFILE_THRESHOLD_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:ProfileCentroidX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1,0,1)PROFILE_CENTROID_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:ProfileCentroidY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1,0,1)PROFILE_CENTROID_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:ProfileCursorX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1,0,1)PROFILE_CURSOR_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:ProfileCursorY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1,0,1)PROFILE_CURSOR_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These are used to define the histogram # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT1:ComputeHistogram") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)COMPUTE_HISTOGRAM") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT1:ComputeHistogram_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)COMPUTE_HISTOGRAM") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT1:HistSize") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)HIST_SIZE") - field(VAL, "256") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:HistSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)HIST_SIZE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:HistMin") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)HIST_MIN") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:HistMin_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)HIST_MIN") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:HistMax") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)HIST_MAX") - field(VAL, "255") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:HistMax_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)HIST_MAX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT1:HistBelow") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)HIST_BELOW") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:HistBelow_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)HIST_BELOW") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT1:HistAbove") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat1,0,1)HIST_ABOVE") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:HistAbove_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat1,0,1)HIST_ABOVE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT1:HistEntropy") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat1,0,1)HIST_ENTROPY") -} - -record(ai, "BL45P-EA-MAP-01:STAT1:HistEntropy_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat1,0,1)HIST_ENTROPY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:Histogram_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1,0,1)HIST_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT1:HistogramX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat1,0,1)HIST_X_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records set the HOPR and LOPR values for the cursor # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:STAT1:MaxSizeX") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:ProfileSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:STAT1:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:STAT1:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:STAT1:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:STAT1:CursorX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:STAT1:MaxSizeY") -{ - field(INP, "BL45P-EA-MAP-01:STAT1:ProfileSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:STAT1:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:STAT1:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:STAT1:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:STAT1:CursorY.HOPR NPP") -} - -################################################################### -# These records reset the statistics # -################################################################### -record(sseq, "BL45P-EA-MAP-01:STAT1:Reset") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT1:MinValue PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT1:MaxValue PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT1:MeanValue PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT1:SigmaValue PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT1:Total PP MS") - field(LNK6, "BL45P-EA-MAP-01:STAT1:Net PP MS") - field(LNK7, "BL45P-EA-MAP-01:STAT1:MinX PP MS") - field(LNK8, "BL45P-EA-MAP-01:STAT1:MinY PP MS") - field(LNK9, "BL45P-EA-MAP-01:STAT1:MaxX PP MS") - field(LNKA, "BL45P-EA-MAP-01:STAT1:MaxY PP MS") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Reset1") -} - -record(sseq, "BL45P-EA-MAP-01:STAT1:Reset1") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT1:CentroidX PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT1:CentroidY PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT1:SigmaX PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT1:SigmaY PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT1:SigmaXY PP MS") - field(LNK6, "BL45P-EA-MAP-01:STAT1:CentroidTotal PP MS") - field(LNK7, "BL45P-EA-MAP-01:STAT1:SkewX PP MS") - field(LNK8, "BL45P-EA-MAP-01:STAT1:SkewY PP MS") - field(LNK9, "BL45P-EA-MAP-01:STAT1:KurtosisX PP MS") - field(LNKA, "BL45P-EA-MAP-01:STAT1:KurtosisY PP MS") - field(FLNK, "BL45P-EA-MAP-01:STAT1:Reset2") -} - -record(sseq, "BL45P-EA-MAP-01:STAT1:Reset2") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT1:Eccentricity PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT1:Orientation PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT1:HistBelow PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT1:HistAbove PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT1:HistEntropy PP MS") -} - -#=================================================================# -# Template file: NDStats.template - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, NCHANS, Number of channels -# % macro, XSIZE, x size -# % macro, YSIZE, y size -# % macro, HIST_SIZE, hist size -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Timeout -# % macro, TS_PORT, TS port - -# This associates the template with an edm screen -# % gui, DET.stats.stat2, edmtab, NDStats.edl, P=BL45P-EA-MAP-01,R=:STAT2: - -# This associates a BOY screen with the template -# % gui, DET.stats.stat2, boydetail,ADApp_opi/dls/stats_detail.opi, P=BL45P-EA-MAP-01, R=:STAT2:, DESC=Statistics -# % gui, DET.stats.stat2, boyembed, ADApp_opi/dls/stats_embed_box.opi, P=BL45P-EA-MAP-01, R=:STAT2:, DESC=Statistics -# % gui, DET.stats.stat2, boyembed, ADApp_opi/dls/stats_embed.opi, P=BL45P-EA-MAP-01, R=:STAT2:, DESC=Statistics - - -# % gui, DET.stats.stat2, groupHeading, Info -# % gui, DET.stats.stat2, readback, Port name, BL45P-EA-MAP-01:STAT2:PortName_RBV -# % gui, DET.stats.stat2, readback, Plugin type, BL45P-EA-MAP-01:STAT2:PluginType_RBV -# Input -# % gui, DET.stats.stat2, demandString, Input, BL45P-EA-MAP-01:STAT2:NDArrayPort -# % gui, DET.stats.stat2, readback, Input, BL45P-EA-MAP-01:STAT2:NDArrayPort_RBV - -# % gui, DET.stats.stat2, groupHeading, Callback -# % gui, DET.stats.stat2, enum, Callbacks, BL45P-EA-MAP-01:STAT2:EnableCallbacks -# % gui, DET.stats.stat2, statusbits, Callbacks, BL45P-EA-MAP-01:STAT2:EnableCallbacks_RBV -# % gui, DET.stats.stat2, demand, Min Callback Time, BL45P-EA-MAP-01:STAT2:MinCallbackTime -# % gui, DET.stats.stat2, readback, Min Callback Time, BL45P-EA-MAP-01:STAT2:MinCallbackTime_RBV -# % gui, DET.stats.stat2, enum, Block Callbacks, BL45P-EA-MAP-01:STAT2:BlockingCallbacks -# % gui, DET.stats.stat2, statusbits, Block Callbacks, BL45P-EA-MAP-01:STAT2:BlockingCallbacks_RBV - -# % gui, DET.stats.stat2, groupHeading, Counters -# % gui, DET.stats.stat2, demand, Array Counter, BL45P-EA-MAP-01:STAT2:ArrayCounter -# % gui, DET.stats.stat2, readback, Array Counter, BL45P-EA-MAP-01:STAT2:ArrayCounter_RBV -# % gui, DET.stats.stat2, readback, Array Rate (fps), BL45P-EA-MAP-01:STAT2:ArrayRate_RBV -# % gui, DET.stats.stat2, readback, Queue Use, BL45P-EA-MAP-01:STAT2:QueueUse -# % gui, DET.stats.stat2, readback, Queue Size, BL45P-EA-MAP-01:STAT2:QueueSize -# % gui, DET.stats.stat2, demand, Dropped Arrays, BL45P-EA-MAP-01:STAT2:DroppedArrays -# % gui, DET.stats.stat2, readback, Dropped Arrays, BL45P-EA-MAP-01:STAT2:DroppedArrays_RBV - -# % gui, DET.stats.stat2, groupHeading, Array Settings -# % gui, DET.stats.stat2, readback, Num Dimensions, BL45P-EA-MAP-01:STAT2:NDimensions_RBV -# % gui, DET.stats.stat2, readback, Dim 0 Size, BL45P-EA-MAP-01:STAT2:ArraySize0_RBV -# % gui, DET.stats.stat2, readback, Dim 1 Size, BL45P-EA-MAP-01:STAT2:ArraySize1_RBV -# % gui, DET.stats.stat2, readback, Dim 2 Size, BL45P-EA-MAP-01:STAT2:ArraySize2_RBV -# % gui, DET.stats.stat2, readback, Input Data Type, BL45P-EA-MAP-01:STAT2:DataType_RBV -# % gui, DET.stats.stat2, readback, Colour Mode, BL45P-EA-MAP-01:STAT2:ColorMode_RBV -# % gui, DET.stats.stat2, readback, Bayer Pattern, BL45P-EA-MAP-01:STAT2:BayerPattern_RBV -# % gui, DET.stats.stat2, readback, Unique id, BL45P-EA-MAP-01:STAT2:UniqueId_RBV -# % gui, DET.stats.stat2, readback, Timestamp, BL45P-EA-MAP-01:STAT2:TimeStamp_RBV - -# Output -# % gui, DET.stats.stat2, groupHeading, Output -# % gui, DET.stats.stat2, demand, Name, BL45P-EA-MAP-01:STAT2:Name -# % gui, DET.stats.stat2, enum, Out data type, BL45P-EA-MAP-01:STAT2:DataTypeOut -# % gui, DET.stats.stat2, readback, Out data type, BL45P-EA-MAP-01:STAT2:DataTypeOut_RBV -# % gui, DET.stats.stat2, demand, Attributes file, BL45P-EA-MAP-01:STAT2:NDAttributesFile - -# Statistics -# % gui, DET.stats.stat2, groupHeading, Statistics -# % gui, DET.stats.stat2, enum, Compute Statistics, BL45P-EA-MAP-01:STAT2:ComputeStatistics -# % gui, DET.stats.stat2, statusbits, Compute Statistics, BL45P-EA-MAP-01:STAT2:ComputeStatistics_RBV -# % gui, DET.stats.stat2, demand, Background Width, BL45P-EA-MAP-01:STAT2:BgdWidth -# % gui, DET.stats.stat2, readback, Background Width, BL45P-EA-MAP-01:STAT2:BgdWidth_RBV -# % gui, DET.stats.stat2, readback, Minimum Value, BL45P-EA-MAP-01:STAT2:MinValue_RBV -# % gui, DET.stats.stat2, readback, Minimum X, BL45P-EA-MAP-01:STAT2:MinX_RBV -# % gui, DET.stats.stat2, readback, Minimum Y, BL45P-EA-MAP-01:STAT2:MinY_RBV -# % gui, DET.stats.stat2, readback, Maximum Value, BL45P-EA-MAP-01:STAT2:MaxValue_RBV -# % gui, DET.stats.stat2, readback, Maximum X, BL45P-EA-MAP-01:STAT2:MaxX_RBV -# % gui, DET.stats.stat2, readback, Maximum Y, BL45P-EA-MAP-01:STAT2:MaxY_RBV -# % gui, DET.stats.stat2, readback, Mean Value, BL45P-EA-MAP-01:STAT2:MeanValue_RBV -# % gui, DET.stats.stat2, readback, Total, BL45P-EA-MAP-01:STAT2:Total_RBV -# % gui, DET.stats.stat2, readback, Sigma, BL45P-EA-MAP-01:STAT2:Sigma_RBV -# % gui, DET.stats.stat2, readback, Net, BL45P-EA-MAP-01:STAT2:Net_RBV -# Centroid -# % gui, DET.stats.stat2, groupHeading, Centroid -# % gui, DET.stats.stat2, enum, Compute Centroid, BL45P-EA-MAP-01:STAT2:ComputeCentroid -# % gui, DET.stats.stat2, statusbits, Compute Centroid, BL45P-EA-MAP-01:STAT2:ComputeCentroid_RBV -# % gui, DET.stats.stat2, demand, Threshold, BL45P-EA-MAP-01:STAT2:CentroidThreshold -# % gui, DET.stats.stat2, readback, Threshold, BL45P-EA-MAP-01:STAT2:CentroidThreshold_RBV -# % gui, DET.stats.stat2, readback, X, BL45P-EA-MAP-01:STAT2:CentroidX_RBV -# % gui, DET.stats.stat2, readback, Sigma X, BL45P-EA-MAP-01:STAT2:SigmaX_RBV -# % gui, DET.stats.stat2, readback, Y, BL45P-EA-MAP-01:STAT2:CentroidY_RBV -# % gui, DET.stats.stat2, readback, Sigma Y, BL45P-EA-MAP-01:STAT2:SigmaY_RBV -# % gui, DET.stats.stat2, readback, Sigma XY, BL45P-EA-MAP-01:STAT2:SigmaXY_RBV -# Histogram -# % gui, DET.stats.stat2, groupHeading, Histogram -# % gui, DET.stats.stat2, enum, Compute Histogram, BL45P-EA-MAP-01:STAT2:ComputeHistogram -# % gui, DET.stats.stat2, statusbits, Compute Histogram, BL45P-EA-MAP-01:STAT2:ComputeHistogram_RBV -# % gui, DET.stats.stat2, demand, Histogram Size, BL45P-EA-MAP-01:STAT2:HistSize -# % gui, DET.stats.stat2, readback, Histogram Size, BL45P-EA-MAP-01:STAT2:HistSize_RBV -# % gui, DET.stats.stat2, demand, Histogram Min, BL45P-EA-MAP-01:STAT2:HistMin -# % gui, DET.stats.stat2, readback, Histogram Min, BL45P-EA-MAP-01:STAT2:HistMin_RBV -# % gui, DET.stats.stat2, demand, Histogram Max, BL45P-EA-MAP-01:STAT2:HistMax -# % gui, DET.stats.stat2, readback, Histogram Max, BL45P-EA-MAP-01:STAT2:HistMax_RBV -# % gui, DET.stats.stat2, readback, Histogram Entropy, BL45P-EA-MAP-01:STAT2:HistEntropy_RBV -# Profiles -# % gui, DET.stats.stat2, groupHeading, Profiles -# % gui, DET.stats.stat2, enum, Compute Profiles, BL45P-EA-MAP-01:STAT2:ComputeProfiles -# % gui, DET.stats.stat2, statusbits, Compute Profiles, BL45P-EA-MAP-01:STAT2:ComputeProfiles_RBV -# % gui, DET.stats.stat2, demand, Cursor X, BL45P-EA-MAP-01:STAT2:CursorX -# % gui, DET.stats.stat2, readback, Cursor X, BL45P-EA-MAP-01:STAT2:CursorX_RBV -# % gui, DET.stats.stat2, demand, Cursor Y, BL45P-EA-MAP-01:STAT2:CursorY -# % gui, DET.stats.stat2, readback, Cursor Y, BL45P-EA-MAP-01:STAT2:CursorY_RBV -# % gui, DET.stats.stat2, readback, Size X, BL45P-EA-MAP-01:STAT2:ProfileSizeX_RBV -# % gui, DET.stats.stat2, readback, Size Y, BL45P-EA-MAP-01:STAT2:ProfileSizeY_RBV -# Time series -# % gui, DET.stats.stat2, groupHeading, Time Series -# % gui, DET.stats.stat2, enum, Time Control, BL45P-EA-MAP-01:STAT2:TS:TSAcquire -# % gui, DET.stats.stat2, statusbits, Acquiring, BL45P-EA-MAP-01:STAT2:TS:TSAcquiring -# % gui, DET.stats.stat2, readback, Current Point, BL45P-EA-MAP-01:STAT2:TS:TSCurrentPoint -# % gui, DET.stats.stat2, demand, Number of Points, BL45P-EA-MAP-01:STAT2:TS:TSNumPoints -# % gui, DET.stats.stat2, enum, Update, BL45P-EA-MAP-01:STAT2:TS:TSRead.SCAN -# Memory -# % gui, DET.stats.stat2, groupHeading, Memory -# % gui, DET.stats.stat2, readback, Max memory, BL45P-EA-MAP-01:STAT2:PoolMaxMem -# % gui, DET.stats.stat2, readback, Max buffers, BL45P-EA-MAP-01:STAT2:PoolMaxBuffers -# % gui, DET.stats.stat2, readback, Used memory, BL45P-EA-MAP-01:STAT2:PoolUsedMem -# % gui, DET.stats.stat2, readback, Allocated buffers, BL45P-EA-MAP-01:STAT2:PoolAllocBuffers -# % gui, DET.stats.stat2, readback, Free buffers, BL45P-EA-MAP-01:STAT2:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT2:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat2,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT2:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat2,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT2:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat2,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT2:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat2,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT2:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat2,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT2:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat2,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT2:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat2,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT2:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat2,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:STAT2:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT2:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:STAT2:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT2:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:STAT2:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:STAT2:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:STAT2:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:STAT2:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT2:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:STAT2:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:STAT2:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:STAT2:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:STAT2:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:STAT2:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.stats.stat2,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:STAT2:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.stats.stat2,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT2:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:STAT2:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:STAT2:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat2,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:STAT2:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT2:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:STAT2:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT2:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:STAT2:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:STAT2:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:STAT2:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:STAT2:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:STAT2:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:STAT2:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT2:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT2:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:STAT2:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.stats.stat2,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:STAT2:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.stats.stat2,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:STAT2:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:STAT2:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:STAT2:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:STAT2:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:STAT2:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:STAT2:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:STAT2:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:STAT2:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:STAT2:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT2:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat2,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:STAT2:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.stats.stat2,0,1)NDARRAY_PORT") - field(VAL, "DET.rois.roi1") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:STAT2:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat2,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT2:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT2:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT2:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:STAT2:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:STAT2:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:STAT2:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:STAT2:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:STAT2:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:STAT2:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:STAT2:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT2:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT2:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT2:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:STAT2:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT2:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:STAT2:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT2:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:STAT2:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT2:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:STAT2:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:STAT2:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:STAT2:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT2:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:STAT2:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:STAT2:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:STAT2:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT2:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:STAT2:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:STAT2:QueueSize") - field(INPB, "BL45P-EA-MAP-01:STAT2:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:STAT2:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:STAT2:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT2:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT2:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:STAT2:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT2:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:STAT2:SortSize") - field(OUT, "BL45P-EA-MAP-01:STAT2:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:STAT2:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT2:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:STAT2:AsynIO") -{ - field(PORT, "DET.stats.stat2") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records contain the basic statistics # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT2:ComputeStatistics") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)COMPUTE_STATISTICS") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT2:ComputeStatistics_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)COMPUTE_STATISTICS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT2:BgdWidth") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)BGD_WIDTH") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:BgdWidth_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)BGD_WIDTH") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:MinValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)MIN_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:MinValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)MIN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:MaxValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)MAX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:MaxValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)MAX_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:MeanValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)MEAN_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:MeanValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)MEAN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:SigmaValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)SIGMA_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:Sigma_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)SIGMA_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:Total") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)TOTAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:Total_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:Net") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)NET") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:Net_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)NET") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:MinX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)MIN_X") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:MinX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:MinY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)MIN_Y") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:MinY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:MaxX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)MAX_X") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:MaxX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)MAX_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:MaxY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)MAX_Y") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:MaxY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)MAX_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether centroid statistics are computed # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT2:ComputeCentroid") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)COMPUTE_CENTROID") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT2:ComputeCentroid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)COMPUTE_CENTROID") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain the centroid statistics # -################################################################### -record(ao, "BL45P-EA-MAP-01:STAT2:CentroidThreshold") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)CENTROID_THRESHOLD") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:CentroidThreshold_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)CENTROID_THRESHOLD") - field(VAL, "0") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:CentroidTotal") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)CENTROID_TOTAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:CentroidTotal_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)CENTROID_TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:CentroidX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)CENTROIDX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:CentroidX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)CENTROIDX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:CentroidY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)CENTROIDY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:CentroidY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)CENTROIDY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:SigmaX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)SIGMAX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:SigmaX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)SIGMAX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:SigmaY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)SIGMAY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:SigmaY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)SIGMAY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:SigmaXY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)SIGMAXY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:SigmaXY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)SIGMAXY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:SkewX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)SKEWX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:SkewX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)SKEWX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:SkewY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)SKEWY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:SkewY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)SKEWY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:KurtosisX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)KURTOSISX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:KurtosisX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)KURTOSISX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:KurtosisY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)KURTOSISY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:KurtosisY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)KURTOSISY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:Eccentricity") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)ECCENTRICITY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:Eccentricity_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)ECCENTRICITY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:Orientation") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)ORIENTATION_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:Orientation_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)ORIENTATION_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control time series # -################################################################### -record(waveform, "BL45P-EA-MAP-01:STAT2:TSMinValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,0,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSMinX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,1,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSMinY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,2,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSMaxValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,3,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSMaxX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,4,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSMaxY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,5,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSMeanValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,6,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSSigma") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,7,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,8,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSNet") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,9,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSCentroidTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,10,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSCentroidX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,11,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSCentroidY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,12,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSSigmaX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,13,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSSigmaY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,14,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSSigmaXY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,15,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSSkewX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,16,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSSkewY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,17,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSKurtosisX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,18,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSKurtosisY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,19,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSEccentricity") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,20,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSOrientation") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,21,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:TSTimestamp") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2_TS,22,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control profiles # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT2:ComputeProfiles") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)COMPUTE_PROFILES") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT2:ComputeProfiles_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)COMPUTE_PROFILES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ProfileSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)PROFILE_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:ProfileSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)PROFILE_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT2:CursorX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)CURSOR_X") - field(VAL, "256") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:CursorX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)CURSOR_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT2:CursorY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)CURSOR_Y") - field(VAL, "256") - field(FLNK, "BL45P-EA-MAP-01:STAT2:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:CursorY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)CURSOR_Y") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:CursorVal") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)CURSOR_VAL") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:ProfileAverageX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2,0,1)PROFILE_AVERAGE_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:ProfileAverageY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2,0,1)PROFILE_AVERAGE_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:ProfileThresholdX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2,0,1)PROFILE_THRESHOLD_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:ProfileThresholdY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2,0,1)PROFILE_THRESHOLD_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:ProfileCentroidX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2,0,1)PROFILE_CENTROID_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:ProfileCentroidY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2,0,1)PROFILE_CENTROID_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:ProfileCursorX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2,0,1)PROFILE_CURSOR_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:ProfileCursorY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2,0,1)PROFILE_CURSOR_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These are used to define the histogram # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT2:ComputeHistogram") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)COMPUTE_HISTOGRAM") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT2:ComputeHistogram_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)COMPUTE_HISTOGRAM") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT2:HistSize") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)HIST_SIZE") - field(VAL, "256") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:HistSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)HIST_SIZE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:HistMin") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)HIST_MIN") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:HistMin_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)HIST_MIN") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:HistMax") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)HIST_MAX") - field(VAL, "255") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:HistMax_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)HIST_MAX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT2:HistBelow") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)HIST_BELOW") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:HistBelow_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)HIST_BELOW") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT2:HistAbove") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat2,0,1)HIST_ABOVE") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:HistAbove_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat2,0,1)HIST_ABOVE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT2:HistEntropy") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat2,0,1)HIST_ENTROPY") -} - -record(ai, "BL45P-EA-MAP-01:STAT2:HistEntropy_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat2,0,1)HIST_ENTROPY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:Histogram_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2,0,1)HIST_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT2:HistogramX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat2,0,1)HIST_X_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records set the HOPR and LOPR values for the cursor # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:STAT2:MaxSizeX") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:ProfileSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:STAT2:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:STAT2:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:STAT2:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:STAT2:CursorX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:STAT2:MaxSizeY") -{ - field(INP, "BL45P-EA-MAP-01:STAT2:ProfileSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:STAT2:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:STAT2:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:STAT2:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:STAT2:CursorY.HOPR NPP") -} - -################################################################### -# These records reset the statistics # -################################################################### -record(sseq, "BL45P-EA-MAP-01:STAT2:Reset") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT2:MinValue PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT2:MaxValue PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT2:MeanValue PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT2:SigmaValue PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT2:Total PP MS") - field(LNK6, "BL45P-EA-MAP-01:STAT2:Net PP MS") - field(LNK7, "BL45P-EA-MAP-01:STAT2:MinX PP MS") - field(LNK8, "BL45P-EA-MAP-01:STAT2:MinY PP MS") - field(LNK9, "BL45P-EA-MAP-01:STAT2:MaxX PP MS") - field(LNKA, "BL45P-EA-MAP-01:STAT2:MaxY PP MS") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Reset1") -} - -record(sseq, "BL45P-EA-MAP-01:STAT2:Reset1") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT2:CentroidX PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT2:CentroidY PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT2:SigmaX PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT2:SigmaY PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT2:SigmaXY PP MS") - field(LNK6, "BL45P-EA-MAP-01:STAT2:CentroidTotal PP MS") - field(LNK7, "BL45P-EA-MAP-01:STAT2:SkewX PP MS") - field(LNK8, "BL45P-EA-MAP-01:STAT2:SkewY PP MS") - field(LNK9, "BL45P-EA-MAP-01:STAT2:KurtosisX PP MS") - field(LNKA, "BL45P-EA-MAP-01:STAT2:KurtosisY PP MS") - field(FLNK, "BL45P-EA-MAP-01:STAT2:Reset2") -} - -record(sseq, "BL45P-EA-MAP-01:STAT2:Reset2") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT2:Eccentricity PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT2:Orientation PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT2:HistBelow PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT2:HistAbove PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT2:HistEntropy PP MS") -} - -#=================================================================# -# Template file: NDStats.template - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, NCHANS, Number of channels -# % macro, XSIZE, x size -# % macro, YSIZE, y size -# % macro, HIST_SIZE, hist size -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Timeout -# % macro, TS_PORT, TS port - -# This associates the template with an edm screen -# % gui, DET.stats.stat3, edmtab, NDStats.edl, P=BL45P-EA-MAP-01,R=:STAT3: - -# This associates a BOY screen with the template -# % gui, DET.stats.stat3, boydetail,ADApp_opi/dls/stats_detail.opi, P=BL45P-EA-MAP-01, R=:STAT3:, DESC=Statistics -# % gui, DET.stats.stat3, boyembed, ADApp_opi/dls/stats_embed_box.opi, P=BL45P-EA-MAP-01, R=:STAT3:, DESC=Statistics -# % gui, DET.stats.stat3, boyembed, ADApp_opi/dls/stats_embed.opi, P=BL45P-EA-MAP-01, R=:STAT3:, DESC=Statistics - - -# % gui, DET.stats.stat3, groupHeading, Info -# % gui, DET.stats.stat3, readback, Port name, BL45P-EA-MAP-01:STAT3:PortName_RBV -# % gui, DET.stats.stat3, readback, Plugin type, BL45P-EA-MAP-01:STAT3:PluginType_RBV -# Input -# % gui, DET.stats.stat3, demandString, Input, BL45P-EA-MAP-01:STAT3:NDArrayPort -# % gui, DET.stats.stat3, readback, Input, BL45P-EA-MAP-01:STAT3:NDArrayPort_RBV - -# % gui, DET.stats.stat3, groupHeading, Callback -# % gui, DET.stats.stat3, enum, Callbacks, BL45P-EA-MAP-01:STAT3:EnableCallbacks -# % gui, DET.stats.stat3, statusbits, Callbacks, BL45P-EA-MAP-01:STAT3:EnableCallbacks_RBV -# % gui, DET.stats.stat3, demand, Min Callback Time, BL45P-EA-MAP-01:STAT3:MinCallbackTime -# % gui, DET.stats.stat3, readback, Min Callback Time, BL45P-EA-MAP-01:STAT3:MinCallbackTime_RBV -# % gui, DET.stats.stat3, enum, Block Callbacks, BL45P-EA-MAP-01:STAT3:BlockingCallbacks -# % gui, DET.stats.stat3, statusbits, Block Callbacks, BL45P-EA-MAP-01:STAT3:BlockingCallbacks_RBV - -# % gui, DET.stats.stat3, groupHeading, Counters -# % gui, DET.stats.stat3, demand, Array Counter, BL45P-EA-MAP-01:STAT3:ArrayCounter -# % gui, DET.stats.stat3, readback, Array Counter, BL45P-EA-MAP-01:STAT3:ArrayCounter_RBV -# % gui, DET.stats.stat3, readback, Array Rate (fps), BL45P-EA-MAP-01:STAT3:ArrayRate_RBV -# % gui, DET.stats.stat3, readback, Queue Use, BL45P-EA-MAP-01:STAT3:QueueUse -# % gui, DET.stats.stat3, readback, Queue Size, BL45P-EA-MAP-01:STAT3:QueueSize -# % gui, DET.stats.stat3, demand, Dropped Arrays, BL45P-EA-MAP-01:STAT3:DroppedArrays -# % gui, DET.stats.stat3, readback, Dropped Arrays, BL45P-EA-MAP-01:STAT3:DroppedArrays_RBV - -# % gui, DET.stats.stat3, groupHeading, Array Settings -# % gui, DET.stats.stat3, readback, Num Dimensions, BL45P-EA-MAP-01:STAT3:NDimensions_RBV -# % gui, DET.stats.stat3, readback, Dim 0 Size, BL45P-EA-MAP-01:STAT3:ArraySize0_RBV -# % gui, DET.stats.stat3, readback, Dim 1 Size, BL45P-EA-MAP-01:STAT3:ArraySize1_RBV -# % gui, DET.stats.stat3, readback, Dim 2 Size, BL45P-EA-MAP-01:STAT3:ArraySize2_RBV -# % gui, DET.stats.stat3, readback, Input Data Type, BL45P-EA-MAP-01:STAT3:DataType_RBV -# % gui, DET.stats.stat3, readback, Colour Mode, BL45P-EA-MAP-01:STAT3:ColorMode_RBV -# % gui, DET.stats.stat3, readback, Bayer Pattern, BL45P-EA-MAP-01:STAT3:BayerPattern_RBV -# % gui, DET.stats.stat3, readback, Unique id, BL45P-EA-MAP-01:STAT3:UniqueId_RBV -# % gui, DET.stats.stat3, readback, Timestamp, BL45P-EA-MAP-01:STAT3:TimeStamp_RBV - -# Output -# % gui, DET.stats.stat3, groupHeading, Output -# % gui, DET.stats.stat3, demand, Name, BL45P-EA-MAP-01:STAT3:Name -# % gui, DET.stats.stat3, enum, Out data type, BL45P-EA-MAP-01:STAT3:DataTypeOut -# % gui, DET.stats.stat3, readback, Out data type, BL45P-EA-MAP-01:STAT3:DataTypeOut_RBV -# % gui, DET.stats.stat3, demand, Attributes file, BL45P-EA-MAP-01:STAT3:NDAttributesFile - -# Statistics -# % gui, DET.stats.stat3, groupHeading, Statistics -# % gui, DET.stats.stat3, enum, Compute Statistics, BL45P-EA-MAP-01:STAT3:ComputeStatistics -# % gui, DET.stats.stat3, statusbits, Compute Statistics, BL45P-EA-MAP-01:STAT3:ComputeStatistics_RBV -# % gui, DET.stats.stat3, demand, Background Width, BL45P-EA-MAP-01:STAT3:BgdWidth -# % gui, DET.stats.stat3, readback, Background Width, BL45P-EA-MAP-01:STAT3:BgdWidth_RBV -# % gui, DET.stats.stat3, readback, Minimum Value, BL45P-EA-MAP-01:STAT3:MinValue_RBV -# % gui, DET.stats.stat3, readback, Minimum X, BL45P-EA-MAP-01:STAT3:MinX_RBV -# % gui, DET.stats.stat3, readback, Minimum Y, BL45P-EA-MAP-01:STAT3:MinY_RBV -# % gui, DET.stats.stat3, readback, Maximum Value, BL45P-EA-MAP-01:STAT3:MaxValue_RBV -# % gui, DET.stats.stat3, readback, Maximum X, BL45P-EA-MAP-01:STAT3:MaxX_RBV -# % gui, DET.stats.stat3, readback, Maximum Y, BL45P-EA-MAP-01:STAT3:MaxY_RBV -# % gui, DET.stats.stat3, readback, Mean Value, BL45P-EA-MAP-01:STAT3:MeanValue_RBV -# % gui, DET.stats.stat3, readback, Total, BL45P-EA-MAP-01:STAT3:Total_RBV -# % gui, DET.stats.stat3, readback, Sigma, BL45P-EA-MAP-01:STAT3:Sigma_RBV -# % gui, DET.stats.stat3, readback, Net, BL45P-EA-MAP-01:STAT3:Net_RBV -# Centroid -# % gui, DET.stats.stat3, groupHeading, Centroid -# % gui, DET.stats.stat3, enum, Compute Centroid, BL45P-EA-MAP-01:STAT3:ComputeCentroid -# % gui, DET.stats.stat3, statusbits, Compute Centroid, BL45P-EA-MAP-01:STAT3:ComputeCentroid_RBV -# % gui, DET.stats.stat3, demand, Threshold, BL45P-EA-MAP-01:STAT3:CentroidThreshold -# % gui, DET.stats.stat3, readback, Threshold, BL45P-EA-MAP-01:STAT3:CentroidThreshold_RBV -# % gui, DET.stats.stat3, readback, X, BL45P-EA-MAP-01:STAT3:CentroidX_RBV -# % gui, DET.stats.stat3, readback, Sigma X, BL45P-EA-MAP-01:STAT3:SigmaX_RBV -# % gui, DET.stats.stat3, readback, Y, BL45P-EA-MAP-01:STAT3:CentroidY_RBV -# % gui, DET.stats.stat3, readback, Sigma Y, BL45P-EA-MAP-01:STAT3:SigmaY_RBV -# % gui, DET.stats.stat3, readback, Sigma XY, BL45P-EA-MAP-01:STAT3:SigmaXY_RBV -# Histogram -# % gui, DET.stats.stat3, groupHeading, Histogram -# % gui, DET.stats.stat3, enum, Compute Histogram, BL45P-EA-MAP-01:STAT3:ComputeHistogram -# % gui, DET.stats.stat3, statusbits, Compute Histogram, BL45P-EA-MAP-01:STAT3:ComputeHistogram_RBV -# % gui, DET.stats.stat3, demand, Histogram Size, BL45P-EA-MAP-01:STAT3:HistSize -# % gui, DET.stats.stat3, readback, Histogram Size, BL45P-EA-MAP-01:STAT3:HistSize_RBV -# % gui, DET.stats.stat3, demand, Histogram Min, BL45P-EA-MAP-01:STAT3:HistMin -# % gui, DET.stats.stat3, readback, Histogram Min, BL45P-EA-MAP-01:STAT3:HistMin_RBV -# % gui, DET.stats.stat3, demand, Histogram Max, BL45P-EA-MAP-01:STAT3:HistMax -# % gui, DET.stats.stat3, readback, Histogram Max, BL45P-EA-MAP-01:STAT3:HistMax_RBV -# % gui, DET.stats.stat3, readback, Histogram Entropy, BL45P-EA-MAP-01:STAT3:HistEntropy_RBV -# Profiles -# % gui, DET.stats.stat3, groupHeading, Profiles -# % gui, DET.stats.stat3, enum, Compute Profiles, BL45P-EA-MAP-01:STAT3:ComputeProfiles -# % gui, DET.stats.stat3, statusbits, Compute Profiles, BL45P-EA-MAP-01:STAT3:ComputeProfiles_RBV -# % gui, DET.stats.stat3, demand, Cursor X, BL45P-EA-MAP-01:STAT3:CursorX -# % gui, DET.stats.stat3, readback, Cursor X, BL45P-EA-MAP-01:STAT3:CursorX_RBV -# % gui, DET.stats.stat3, demand, Cursor Y, BL45P-EA-MAP-01:STAT3:CursorY -# % gui, DET.stats.stat3, readback, Cursor Y, BL45P-EA-MAP-01:STAT3:CursorY_RBV -# % gui, DET.stats.stat3, readback, Size X, BL45P-EA-MAP-01:STAT3:ProfileSizeX_RBV -# % gui, DET.stats.stat3, readback, Size Y, BL45P-EA-MAP-01:STAT3:ProfileSizeY_RBV -# Time series -# % gui, DET.stats.stat3, groupHeading, Time Series -# % gui, DET.stats.stat3, enum, Time Control, BL45P-EA-MAP-01:STAT3:TS:TSAcquire -# % gui, DET.stats.stat3, statusbits, Acquiring, BL45P-EA-MAP-01:STAT3:TS:TSAcquiring -# % gui, DET.stats.stat3, readback, Current Point, BL45P-EA-MAP-01:STAT3:TS:TSCurrentPoint -# % gui, DET.stats.stat3, demand, Number of Points, BL45P-EA-MAP-01:STAT3:TS:TSNumPoints -# % gui, DET.stats.stat3, enum, Update, BL45P-EA-MAP-01:STAT3:TS:TSRead.SCAN -# Memory -# % gui, DET.stats.stat3, groupHeading, Memory -# % gui, DET.stats.stat3, readback, Max memory, BL45P-EA-MAP-01:STAT3:PoolMaxMem -# % gui, DET.stats.stat3, readback, Max buffers, BL45P-EA-MAP-01:STAT3:PoolMaxBuffers -# % gui, DET.stats.stat3, readback, Used memory, BL45P-EA-MAP-01:STAT3:PoolUsedMem -# % gui, DET.stats.stat3, readback, Allocated buffers, BL45P-EA-MAP-01:STAT3:PoolAllocBuffers -# % gui, DET.stats.stat3, readback, Free buffers, BL45P-EA-MAP-01:STAT3:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT3:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat3,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT3:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat3,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT3:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat3,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT3:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat3,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT3:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat3,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT3:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat3,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT3:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat3,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT3:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat3,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:STAT3:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT3:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:STAT3:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT3:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:STAT3:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:STAT3:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:STAT3:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:STAT3:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT3:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:STAT3:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:STAT3:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:STAT3:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:STAT3:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:STAT3:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.stats.stat3,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:STAT3:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.stats.stat3,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT3:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:STAT3:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:STAT3:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat3,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:STAT3:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT3:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:STAT3:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT3:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:STAT3:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:STAT3:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:STAT3:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:STAT3:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:STAT3:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:STAT3:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT3:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT3:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:STAT3:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.stats.stat3,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:STAT3:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.stats.stat3,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:STAT3:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:STAT3:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:STAT3:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:STAT3:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:STAT3:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:STAT3:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:STAT3:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:STAT3:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:STAT3:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT3:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat3,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:STAT3:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.stats.stat3,0,1)NDARRAY_PORT") - field(VAL, "DET.rois.roi1") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:STAT3:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat3,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT3:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT3:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT3:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:STAT3:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:STAT3:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:STAT3:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:STAT3:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:STAT3:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:STAT3:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:STAT3:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT3:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT3:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT3:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:STAT3:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT3:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:STAT3:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT3:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:STAT3:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT3:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:STAT3:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:STAT3:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:STAT3:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT3:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:STAT3:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:STAT3:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:STAT3:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT3:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:STAT3:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:STAT3:QueueSize") - field(INPB, "BL45P-EA-MAP-01:STAT3:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:STAT3:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:STAT3:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT3:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT3:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:STAT3:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT3:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:STAT3:SortSize") - field(OUT, "BL45P-EA-MAP-01:STAT3:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:STAT3:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT3:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:STAT3:AsynIO") -{ - field(PORT, "DET.stats.stat3") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records contain the basic statistics # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT3:ComputeStatistics") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)COMPUTE_STATISTICS") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT3:ComputeStatistics_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)COMPUTE_STATISTICS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT3:BgdWidth") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)BGD_WIDTH") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:BgdWidth_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)BGD_WIDTH") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:MinValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)MIN_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:MinValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)MIN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:MaxValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)MAX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:MaxValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)MAX_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:MeanValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)MEAN_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:MeanValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)MEAN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:SigmaValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)SIGMA_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:Sigma_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)SIGMA_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:Total") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)TOTAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:Total_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:Net") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)NET") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:Net_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)NET") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:MinX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)MIN_X") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:MinX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:MinY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)MIN_Y") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:MinY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:MaxX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)MAX_X") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:MaxX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)MAX_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:MaxY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)MAX_Y") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:MaxY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)MAX_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether centroid statistics are computed # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT3:ComputeCentroid") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)COMPUTE_CENTROID") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT3:ComputeCentroid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)COMPUTE_CENTROID") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain the centroid statistics # -################################################################### -record(ao, "BL45P-EA-MAP-01:STAT3:CentroidThreshold") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)CENTROID_THRESHOLD") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:CentroidThreshold_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)CENTROID_THRESHOLD") - field(VAL, "0") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:CentroidTotal") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)CENTROID_TOTAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:CentroidTotal_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)CENTROID_TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:CentroidX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)CENTROIDX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:CentroidX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)CENTROIDX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:CentroidY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)CENTROIDY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:CentroidY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)CENTROIDY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:SigmaX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)SIGMAX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:SigmaX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)SIGMAX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:SigmaY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)SIGMAY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:SigmaY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)SIGMAY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:SigmaXY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)SIGMAXY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:SigmaXY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)SIGMAXY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:SkewX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)SKEWX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:SkewX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)SKEWX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:SkewY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)SKEWY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:SkewY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)SKEWY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:KurtosisX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)KURTOSISX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:KurtosisX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)KURTOSISX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:KurtosisY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)KURTOSISY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:KurtosisY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)KURTOSISY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:Eccentricity") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)ECCENTRICITY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:Eccentricity_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)ECCENTRICITY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:Orientation") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)ORIENTATION_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:Orientation_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)ORIENTATION_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control time series # -################################################################### -record(waveform, "BL45P-EA-MAP-01:STAT3:TSMinValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,0,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSMinX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,1,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSMinY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,2,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSMaxValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,3,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSMaxX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,4,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSMaxY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,5,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSMeanValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,6,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSSigma") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,7,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,8,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSNet") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,9,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSCentroidTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,10,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSCentroidX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,11,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSCentroidY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,12,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSSigmaX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,13,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSSigmaY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,14,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSSigmaXY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,15,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSSkewX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,16,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSSkewY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,17,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSKurtosisX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,18,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSKurtosisY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,19,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSEccentricity") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,20,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSOrientation") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,21,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:TSTimestamp") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3_TS,22,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control profiles # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT3:ComputeProfiles") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)COMPUTE_PROFILES") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT3:ComputeProfiles_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)COMPUTE_PROFILES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ProfileSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)PROFILE_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:ProfileSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)PROFILE_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT3:CursorX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)CURSOR_X") - field(VAL, "256") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:CursorX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)CURSOR_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT3:CursorY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)CURSOR_Y") - field(VAL, "256") - field(FLNK, "BL45P-EA-MAP-01:STAT3:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:CursorY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)CURSOR_Y") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:CursorVal") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)CURSOR_VAL") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:ProfileAverageX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3,0,1)PROFILE_AVERAGE_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:ProfileAverageY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3,0,1)PROFILE_AVERAGE_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:ProfileThresholdX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3,0,1)PROFILE_THRESHOLD_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:ProfileThresholdY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3,0,1)PROFILE_THRESHOLD_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:ProfileCentroidX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3,0,1)PROFILE_CENTROID_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:ProfileCentroidY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3,0,1)PROFILE_CENTROID_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:ProfileCursorX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3,0,1)PROFILE_CURSOR_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:ProfileCursorY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3,0,1)PROFILE_CURSOR_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These are used to define the histogram # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT3:ComputeHistogram") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)COMPUTE_HISTOGRAM") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT3:ComputeHistogram_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)COMPUTE_HISTOGRAM") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT3:HistSize") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)HIST_SIZE") - field(VAL, "256") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:HistSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)HIST_SIZE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:HistMin") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)HIST_MIN") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:HistMin_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)HIST_MIN") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:HistMax") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)HIST_MAX") - field(VAL, "255") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:HistMax_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)HIST_MAX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT3:HistBelow") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)HIST_BELOW") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:HistBelow_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)HIST_BELOW") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT3:HistAbove") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat3,0,1)HIST_ABOVE") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:HistAbove_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat3,0,1)HIST_ABOVE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT3:HistEntropy") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat3,0,1)HIST_ENTROPY") -} - -record(ai, "BL45P-EA-MAP-01:STAT3:HistEntropy_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat3,0,1)HIST_ENTROPY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:Histogram_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3,0,1)HIST_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT3:HistogramX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat3,0,1)HIST_X_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records set the HOPR and LOPR values for the cursor # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:STAT3:MaxSizeX") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:ProfileSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:STAT3:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:STAT3:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:STAT3:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:STAT3:CursorX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:STAT3:MaxSizeY") -{ - field(INP, "BL45P-EA-MAP-01:STAT3:ProfileSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:STAT3:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:STAT3:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:STAT3:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:STAT3:CursorY.HOPR NPP") -} - -################################################################### -# These records reset the statistics # -################################################################### -record(sseq, "BL45P-EA-MAP-01:STAT3:Reset") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT3:MinValue PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT3:MaxValue PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT3:MeanValue PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT3:SigmaValue PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT3:Total PP MS") - field(LNK6, "BL45P-EA-MAP-01:STAT3:Net PP MS") - field(LNK7, "BL45P-EA-MAP-01:STAT3:MinX PP MS") - field(LNK8, "BL45P-EA-MAP-01:STAT3:MinY PP MS") - field(LNK9, "BL45P-EA-MAP-01:STAT3:MaxX PP MS") - field(LNKA, "BL45P-EA-MAP-01:STAT3:MaxY PP MS") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Reset1") -} - -record(sseq, "BL45P-EA-MAP-01:STAT3:Reset1") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT3:CentroidX PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT3:CentroidY PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT3:SigmaX PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT3:SigmaY PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT3:SigmaXY PP MS") - field(LNK6, "BL45P-EA-MAP-01:STAT3:CentroidTotal PP MS") - field(LNK7, "BL45P-EA-MAP-01:STAT3:SkewX PP MS") - field(LNK8, "BL45P-EA-MAP-01:STAT3:SkewY PP MS") - field(LNK9, "BL45P-EA-MAP-01:STAT3:KurtosisX PP MS") - field(LNKA, "BL45P-EA-MAP-01:STAT3:KurtosisY PP MS") - field(FLNK, "BL45P-EA-MAP-01:STAT3:Reset2") -} - -record(sseq, "BL45P-EA-MAP-01:STAT3:Reset2") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT3:Eccentricity PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT3:Orientation PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT3:HistBelow PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT3:HistAbove PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT3:HistEntropy PP MS") -} - -#=================================================================# -# Template file: NDStats.template - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, NCHANS, Number of channels -# % macro, XSIZE, x size -# % macro, YSIZE, y size -# % macro, HIST_SIZE, hist size -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Timeout -# % macro, TS_PORT, TS port - -# This associates the template with an edm screen -# % gui, DET.stats.stat4, edmtab, NDStats.edl, P=BL45P-EA-MAP-01,R=:STAT4: - -# This associates a BOY screen with the template -# % gui, DET.stats.stat4, boydetail,ADApp_opi/dls/stats_detail.opi, P=BL45P-EA-MAP-01, R=:STAT4:, DESC=Statistics -# % gui, DET.stats.stat4, boyembed, ADApp_opi/dls/stats_embed_box.opi, P=BL45P-EA-MAP-01, R=:STAT4:, DESC=Statistics -# % gui, DET.stats.stat4, boyembed, ADApp_opi/dls/stats_embed.opi, P=BL45P-EA-MAP-01, R=:STAT4:, DESC=Statistics - - -# % gui, DET.stats.stat4, groupHeading, Info -# % gui, DET.stats.stat4, readback, Port name, BL45P-EA-MAP-01:STAT4:PortName_RBV -# % gui, DET.stats.stat4, readback, Plugin type, BL45P-EA-MAP-01:STAT4:PluginType_RBV -# Input -# % gui, DET.stats.stat4, demandString, Input, BL45P-EA-MAP-01:STAT4:NDArrayPort -# % gui, DET.stats.stat4, readback, Input, BL45P-EA-MAP-01:STAT4:NDArrayPort_RBV - -# % gui, DET.stats.stat4, groupHeading, Callback -# % gui, DET.stats.stat4, enum, Callbacks, BL45P-EA-MAP-01:STAT4:EnableCallbacks -# % gui, DET.stats.stat4, statusbits, Callbacks, BL45P-EA-MAP-01:STAT4:EnableCallbacks_RBV -# % gui, DET.stats.stat4, demand, Min Callback Time, BL45P-EA-MAP-01:STAT4:MinCallbackTime -# % gui, DET.stats.stat4, readback, Min Callback Time, BL45P-EA-MAP-01:STAT4:MinCallbackTime_RBV -# % gui, DET.stats.stat4, enum, Block Callbacks, BL45P-EA-MAP-01:STAT4:BlockingCallbacks -# % gui, DET.stats.stat4, statusbits, Block Callbacks, BL45P-EA-MAP-01:STAT4:BlockingCallbacks_RBV - -# % gui, DET.stats.stat4, groupHeading, Counters -# % gui, DET.stats.stat4, demand, Array Counter, BL45P-EA-MAP-01:STAT4:ArrayCounter -# % gui, DET.stats.stat4, readback, Array Counter, BL45P-EA-MAP-01:STAT4:ArrayCounter_RBV -# % gui, DET.stats.stat4, readback, Array Rate (fps), BL45P-EA-MAP-01:STAT4:ArrayRate_RBV -# % gui, DET.stats.stat4, readback, Queue Use, BL45P-EA-MAP-01:STAT4:QueueUse -# % gui, DET.stats.stat4, readback, Queue Size, BL45P-EA-MAP-01:STAT4:QueueSize -# % gui, DET.stats.stat4, demand, Dropped Arrays, BL45P-EA-MAP-01:STAT4:DroppedArrays -# % gui, DET.stats.stat4, readback, Dropped Arrays, BL45P-EA-MAP-01:STAT4:DroppedArrays_RBV - -# % gui, DET.stats.stat4, groupHeading, Array Settings -# % gui, DET.stats.stat4, readback, Num Dimensions, BL45P-EA-MAP-01:STAT4:NDimensions_RBV -# % gui, DET.stats.stat4, readback, Dim 0 Size, BL45P-EA-MAP-01:STAT4:ArraySize0_RBV -# % gui, DET.stats.stat4, readback, Dim 1 Size, BL45P-EA-MAP-01:STAT4:ArraySize1_RBV -# % gui, DET.stats.stat4, readback, Dim 2 Size, BL45P-EA-MAP-01:STAT4:ArraySize2_RBV -# % gui, DET.stats.stat4, readback, Input Data Type, BL45P-EA-MAP-01:STAT4:DataType_RBV -# % gui, DET.stats.stat4, readback, Colour Mode, BL45P-EA-MAP-01:STAT4:ColorMode_RBV -# % gui, DET.stats.stat4, readback, Bayer Pattern, BL45P-EA-MAP-01:STAT4:BayerPattern_RBV -# % gui, DET.stats.stat4, readback, Unique id, BL45P-EA-MAP-01:STAT4:UniqueId_RBV -# % gui, DET.stats.stat4, readback, Timestamp, BL45P-EA-MAP-01:STAT4:TimeStamp_RBV - -# Output -# % gui, DET.stats.stat4, groupHeading, Output -# % gui, DET.stats.stat4, demand, Name, BL45P-EA-MAP-01:STAT4:Name -# % gui, DET.stats.stat4, enum, Out data type, BL45P-EA-MAP-01:STAT4:DataTypeOut -# % gui, DET.stats.stat4, readback, Out data type, BL45P-EA-MAP-01:STAT4:DataTypeOut_RBV -# % gui, DET.stats.stat4, demand, Attributes file, BL45P-EA-MAP-01:STAT4:NDAttributesFile - -# Statistics -# % gui, DET.stats.stat4, groupHeading, Statistics -# % gui, DET.stats.stat4, enum, Compute Statistics, BL45P-EA-MAP-01:STAT4:ComputeStatistics -# % gui, DET.stats.stat4, statusbits, Compute Statistics, BL45P-EA-MAP-01:STAT4:ComputeStatistics_RBV -# % gui, DET.stats.stat4, demand, Background Width, BL45P-EA-MAP-01:STAT4:BgdWidth -# % gui, DET.stats.stat4, readback, Background Width, BL45P-EA-MAP-01:STAT4:BgdWidth_RBV -# % gui, DET.stats.stat4, readback, Minimum Value, BL45P-EA-MAP-01:STAT4:MinValue_RBV -# % gui, DET.stats.stat4, readback, Minimum X, BL45P-EA-MAP-01:STAT4:MinX_RBV -# % gui, DET.stats.stat4, readback, Minimum Y, BL45P-EA-MAP-01:STAT4:MinY_RBV -# % gui, DET.stats.stat4, readback, Maximum Value, BL45P-EA-MAP-01:STAT4:MaxValue_RBV -# % gui, DET.stats.stat4, readback, Maximum X, BL45P-EA-MAP-01:STAT4:MaxX_RBV -# % gui, DET.stats.stat4, readback, Maximum Y, BL45P-EA-MAP-01:STAT4:MaxY_RBV -# % gui, DET.stats.stat4, readback, Mean Value, BL45P-EA-MAP-01:STAT4:MeanValue_RBV -# % gui, DET.stats.stat4, readback, Total, BL45P-EA-MAP-01:STAT4:Total_RBV -# % gui, DET.stats.stat4, readback, Sigma, BL45P-EA-MAP-01:STAT4:Sigma_RBV -# % gui, DET.stats.stat4, readback, Net, BL45P-EA-MAP-01:STAT4:Net_RBV -# Centroid -# % gui, DET.stats.stat4, groupHeading, Centroid -# % gui, DET.stats.stat4, enum, Compute Centroid, BL45P-EA-MAP-01:STAT4:ComputeCentroid -# % gui, DET.stats.stat4, statusbits, Compute Centroid, BL45P-EA-MAP-01:STAT4:ComputeCentroid_RBV -# % gui, DET.stats.stat4, demand, Threshold, BL45P-EA-MAP-01:STAT4:CentroidThreshold -# % gui, DET.stats.stat4, readback, Threshold, BL45P-EA-MAP-01:STAT4:CentroidThreshold_RBV -# % gui, DET.stats.stat4, readback, X, BL45P-EA-MAP-01:STAT4:CentroidX_RBV -# % gui, DET.stats.stat4, readback, Sigma X, BL45P-EA-MAP-01:STAT4:SigmaX_RBV -# % gui, DET.stats.stat4, readback, Y, BL45P-EA-MAP-01:STAT4:CentroidY_RBV -# % gui, DET.stats.stat4, readback, Sigma Y, BL45P-EA-MAP-01:STAT4:SigmaY_RBV -# % gui, DET.stats.stat4, readback, Sigma XY, BL45P-EA-MAP-01:STAT4:SigmaXY_RBV -# Histogram -# % gui, DET.stats.stat4, groupHeading, Histogram -# % gui, DET.stats.stat4, enum, Compute Histogram, BL45P-EA-MAP-01:STAT4:ComputeHistogram -# % gui, DET.stats.stat4, statusbits, Compute Histogram, BL45P-EA-MAP-01:STAT4:ComputeHistogram_RBV -# % gui, DET.stats.stat4, demand, Histogram Size, BL45P-EA-MAP-01:STAT4:HistSize -# % gui, DET.stats.stat4, readback, Histogram Size, BL45P-EA-MAP-01:STAT4:HistSize_RBV -# % gui, DET.stats.stat4, demand, Histogram Min, BL45P-EA-MAP-01:STAT4:HistMin -# % gui, DET.stats.stat4, readback, Histogram Min, BL45P-EA-MAP-01:STAT4:HistMin_RBV -# % gui, DET.stats.stat4, demand, Histogram Max, BL45P-EA-MAP-01:STAT4:HistMax -# % gui, DET.stats.stat4, readback, Histogram Max, BL45P-EA-MAP-01:STAT4:HistMax_RBV -# % gui, DET.stats.stat4, readback, Histogram Entropy, BL45P-EA-MAP-01:STAT4:HistEntropy_RBV -# Profiles -# % gui, DET.stats.stat4, groupHeading, Profiles -# % gui, DET.stats.stat4, enum, Compute Profiles, BL45P-EA-MAP-01:STAT4:ComputeProfiles -# % gui, DET.stats.stat4, statusbits, Compute Profiles, BL45P-EA-MAP-01:STAT4:ComputeProfiles_RBV -# % gui, DET.stats.stat4, demand, Cursor X, BL45P-EA-MAP-01:STAT4:CursorX -# % gui, DET.stats.stat4, readback, Cursor X, BL45P-EA-MAP-01:STAT4:CursorX_RBV -# % gui, DET.stats.stat4, demand, Cursor Y, BL45P-EA-MAP-01:STAT4:CursorY -# % gui, DET.stats.stat4, readback, Cursor Y, BL45P-EA-MAP-01:STAT4:CursorY_RBV -# % gui, DET.stats.stat4, readback, Size X, BL45P-EA-MAP-01:STAT4:ProfileSizeX_RBV -# % gui, DET.stats.stat4, readback, Size Y, BL45P-EA-MAP-01:STAT4:ProfileSizeY_RBV -# Time series -# % gui, DET.stats.stat4, groupHeading, Time Series -# % gui, DET.stats.stat4, enum, Time Control, BL45P-EA-MAP-01:STAT4:TS:TSAcquire -# % gui, DET.stats.stat4, statusbits, Acquiring, BL45P-EA-MAP-01:STAT4:TS:TSAcquiring -# % gui, DET.stats.stat4, readback, Current Point, BL45P-EA-MAP-01:STAT4:TS:TSCurrentPoint -# % gui, DET.stats.stat4, demand, Number of Points, BL45P-EA-MAP-01:STAT4:TS:TSNumPoints -# % gui, DET.stats.stat4, enum, Update, BL45P-EA-MAP-01:STAT4:TS:TSRead.SCAN -# Memory -# % gui, DET.stats.stat4, groupHeading, Memory -# % gui, DET.stats.stat4, readback, Max memory, BL45P-EA-MAP-01:STAT4:PoolMaxMem -# % gui, DET.stats.stat4, readback, Max buffers, BL45P-EA-MAP-01:STAT4:PoolMaxBuffers -# % gui, DET.stats.stat4, readback, Used memory, BL45P-EA-MAP-01:STAT4:PoolUsedMem -# % gui, DET.stats.stat4, readback, Allocated buffers, BL45P-EA-MAP-01:STAT4:PoolAllocBuffers -# % gui, DET.stats.stat4, readback, Free buffers, BL45P-EA-MAP-01:STAT4:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT4:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat4,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT4:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat4,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT4:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat4,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT4:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat4,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT4:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat4,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT4:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat4,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT4:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat4,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT4:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat4,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:STAT4:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT4:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:STAT4:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT4:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:STAT4:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:STAT4:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:STAT4:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:STAT4:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT4:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:STAT4:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:STAT4:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:STAT4:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:STAT4:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:STAT4:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.stats.stat4,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:STAT4:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.stats.stat4,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT4:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:STAT4:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:STAT4:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat4,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:STAT4:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT4:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:STAT4:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT4:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:STAT4:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:STAT4:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:STAT4:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:STAT4:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:STAT4:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:STAT4:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT4:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT4:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:STAT4:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.stats.stat4,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:STAT4:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.stats.stat4,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:STAT4:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:STAT4:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:STAT4:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:STAT4:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:STAT4:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:STAT4:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:STAT4:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:STAT4:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:STAT4:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT4:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat4,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:STAT4:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.stats.stat4,0,1)NDARRAY_PORT") - field(VAL, "DET.rois.roi1") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:STAT4:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat4,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT4:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT4:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT4:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:STAT4:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:STAT4:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:STAT4:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:STAT4:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:STAT4:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:STAT4:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:STAT4:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT4:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT4:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT4:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:STAT4:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT4:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:STAT4:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT4:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:STAT4:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT4:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:STAT4:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:STAT4:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:STAT4:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT4:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:STAT4:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:STAT4:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:STAT4:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT4:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:STAT4:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:STAT4:QueueSize") - field(INPB, "BL45P-EA-MAP-01:STAT4:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:STAT4:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:STAT4:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT4:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT4:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:STAT4:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT4:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:STAT4:SortSize") - field(OUT, "BL45P-EA-MAP-01:STAT4:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:STAT4:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT4:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:STAT4:AsynIO") -{ - field(PORT, "DET.stats.stat4") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records contain the basic statistics # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT4:ComputeStatistics") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)COMPUTE_STATISTICS") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT4:ComputeStatistics_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)COMPUTE_STATISTICS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT4:BgdWidth") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)BGD_WIDTH") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:BgdWidth_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)BGD_WIDTH") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:MinValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)MIN_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:MinValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)MIN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:MaxValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)MAX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:MaxValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)MAX_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:MeanValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)MEAN_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:MeanValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)MEAN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:SigmaValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)SIGMA_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:Sigma_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)SIGMA_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:Total") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)TOTAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:Total_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:Net") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)NET") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:Net_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)NET") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:MinX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)MIN_X") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:MinX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:MinY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)MIN_Y") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:MinY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:MaxX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)MAX_X") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:MaxX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)MAX_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:MaxY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)MAX_Y") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:MaxY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)MAX_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether centroid statistics are computed # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT4:ComputeCentroid") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)COMPUTE_CENTROID") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT4:ComputeCentroid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)COMPUTE_CENTROID") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain the centroid statistics # -################################################################### -record(ao, "BL45P-EA-MAP-01:STAT4:CentroidThreshold") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)CENTROID_THRESHOLD") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:CentroidThreshold_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)CENTROID_THRESHOLD") - field(VAL, "0") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:CentroidTotal") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)CENTROID_TOTAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:CentroidTotal_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)CENTROID_TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:CentroidX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)CENTROIDX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:CentroidX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)CENTROIDX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:CentroidY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)CENTROIDY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:CentroidY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)CENTROIDY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:SigmaX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)SIGMAX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:SigmaX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)SIGMAX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:SigmaY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)SIGMAY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:SigmaY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)SIGMAY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:SigmaXY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)SIGMAXY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:SigmaXY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)SIGMAXY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:SkewX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)SKEWX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:SkewX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)SKEWX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:SkewY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)SKEWY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:SkewY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)SKEWY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:KurtosisX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)KURTOSISX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:KurtosisX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)KURTOSISX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:KurtosisY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)KURTOSISY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:KurtosisY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)KURTOSISY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:Eccentricity") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)ECCENTRICITY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:Eccentricity_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)ECCENTRICITY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:Orientation") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)ORIENTATION_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:Orientation_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)ORIENTATION_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control time series # -################################################################### -record(waveform, "BL45P-EA-MAP-01:STAT4:TSMinValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,0,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSMinX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,1,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSMinY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,2,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSMaxValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,3,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSMaxX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,4,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSMaxY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,5,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSMeanValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,6,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSSigma") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,7,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,8,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSNet") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,9,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSCentroidTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,10,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSCentroidX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,11,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSCentroidY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,12,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSSigmaX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,13,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSSigmaY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,14,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSSigmaXY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,15,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSSkewX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,16,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSSkewY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,17,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSKurtosisX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,18,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSKurtosisY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,19,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSEccentricity") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,20,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSOrientation") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,21,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:TSTimestamp") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4_TS,22,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control profiles # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT4:ComputeProfiles") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)COMPUTE_PROFILES") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT4:ComputeProfiles_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)COMPUTE_PROFILES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ProfileSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)PROFILE_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:ProfileSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)PROFILE_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT4:CursorX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)CURSOR_X") - field(VAL, "256") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:CursorX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)CURSOR_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT4:CursorY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)CURSOR_Y") - field(VAL, "256") - field(FLNK, "BL45P-EA-MAP-01:STAT4:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:CursorY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)CURSOR_Y") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:CursorVal") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)CURSOR_VAL") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:ProfileAverageX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4,0,1)PROFILE_AVERAGE_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:ProfileAverageY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4,0,1)PROFILE_AVERAGE_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:ProfileThresholdX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4,0,1)PROFILE_THRESHOLD_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:ProfileThresholdY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4,0,1)PROFILE_THRESHOLD_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:ProfileCentroidX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4,0,1)PROFILE_CENTROID_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:ProfileCentroidY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4,0,1)PROFILE_CENTROID_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:ProfileCursorX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4,0,1)PROFILE_CURSOR_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:ProfileCursorY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4,0,1)PROFILE_CURSOR_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These are used to define the histogram # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT4:ComputeHistogram") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)COMPUTE_HISTOGRAM") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT4:ComputeHistogram_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)COMPUTE_HISTOGRAM") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT4:HistSize") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)HIST_SIZE") - field(VAL, "256") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:HistSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)HIST_SIZE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:HistMin") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)HIST_MIN") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:HistMin_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)HIST_MIN") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:HistMax") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)HIST_MAX") - field(VAL, "255") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:HistMax_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)HIST_MAX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT4:HistBelow") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)HIST_BELOW") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:HistBelow_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)HIST_BELOW") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT4:HistAbove") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat4,0,1)HIST_ABOVE") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:HistAbove_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat4,0,1)HIST_ABOVE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT4:HistEntropy") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat4,0,1)HIST_ENTROPY") -} - -record(ai, "BL45P-EA-MAP-01:STAT4:HistEntropy_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat4,0,1)HIST_ENTROPY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:Histogram_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4,0,1)HIST_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT4:HistogramX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat4,0,1)HIST_X_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records set the HOPR and LOPR values for the cursor # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:STAT4:MaxSizeX") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:ProfileSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:STAT4:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:STAT4:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:STAT4:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:STAT4:CursorX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:STAT4:MaxSizeY") -{ - field(INP, "BL45P-EA-MAP-01:STAT4:ProfileSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:STAT4:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:STAT4:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:STAT4:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:STAT4:CursorY.HOPR NPP") -} - -################################################################### -# These records reset the statistics # -################################################################### -record(sseq, "BL45P-EA-MAP-01:STAT4:Reset") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT4:MinValue PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT4:MaxValue PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT4:MeanValue PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT4:SigmaValue PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT4:Total PP MS") - field(LNK6, "BL45P-EA-MAP-01:STAT4:Net PP MS") - field(LNK7, "BL45P-EA-MAP-01:STAT4:MinX PP MS") - field(LNK8, "BL45P-EA-MAP-01:STAT4:MinY PP MS") - field(LNK9, "BL45P-EA-MAP-01:STAT4:MaxX PP MS") - field(LNKA, "BL45P-EA-MAP-01:STAT4:MaxY PP MS") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Reset1") -} - -record(sseq, "BL45P-EA-MAP-01:STAT4:Reset1") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT4:CentroidX PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT4:CentroidY PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT4:SigmaX PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT4:SigmaY PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT4:SigmaXY PP MS") - field(LNK6, "BL45P-EA-MAP-01:STAT4:CentroidTotal PP MS") - field(LNK7, "BL45P-EA-MAP-01:STAT4:SkewX PP MS") - field(LNK8, "BL45P-EA-MAP-01:STAT4:SkewY PP MS") - field(LNK9, "BL45P-EA-MAP-01:STAT4:KurtosisX PP MS") - field(LNKA, "BL45P-EA-MAP-01:STAT4:KurtosisY PP MS") - field(FLNK, "BL45P-EA-MAP-01:STAT4:Reset2") -} - -record(sseq, "BL45P-EA-MAP-01:STAT4:Reset2") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT4:Eccentricity PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT4:Orientation PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT4:HistBelow PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT4:HistAbove PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT4:HistEntropy PP MS") -} - -#=================================================================# -# Template file: NDStats.template - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, NCHANS, Number of channels -# % macro, XSIZE, x size -# % macro, YSIZE, y size -# % macro, HIST_SIZE, hist size -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Timeout -# % macro, TS_PORT, TS port - -# This associates the template with an edm screen -# % gui, DET.stats.stat5, edmtab, NDStats.edl, P=BL45P-EA-MAP-01,R=:STAT5: - -# This associates a BOY screen with the template -# % gui, DET.stats.stat5, boydetail,ADApp_opi/dls/stats_detail.opi, P=BL45P-EA-MAP-01, R=:STAT5:, DESC=Statistics -# % gui, DET.stats.stat5, boyembed, ADApp_opi/dls/stats_embed_box.opi, P=BL45P-EA-MAP-01, R=:STAT5:, DESC=Statistics -# % gui, DET.stats.stat5, boyembed, ADApp_opi/dls/stats_embed.opi, P=BL45P-EA-MAP-01, R=:STAT5:, DESC=Statistics - - -# % gui, DET.stats.stat5, groupHeading, Info -# % gui, DET.stats.stat5, readback, Port name, BL45P-EA-MAP-01:STAT5:PortName_RBV -# % gui, DET.stats.stat5, readback, Plugin type, BL45P-EA-MAP-01:STAT5:PluginType_RBV -# Input -# % gui, DET.stats.stat5, demandString, Input, BL45P-EA-MAP-01:STAT5:NDArrayPort -# % gui, DET.stats.stat5, readback, Input, BL45P-EA-MAP-01:STAT5:NDArrayPort_RBV - -# % gui, DET.stats.stat5, groupHeading, Callback -# % gui, DET.stats.stat5, enum, Callbacks, BL45P-EA-MAP-01:STAT5:EnableCallbacks -# % gui, DET.stats.stat5, statusbits, Callbacks, BL45P-EA-MAP-01:STAT5:EnableCallbacks_RBV -# % gui, DET.stats.stat5, demand, Min Callback Time, BL45P-EA-MAP-01:STAT5:MinCallbackTime -# % gui, DET.stats.stat5, readback, Min Callback Time, BL45P-EA-MAP-01:STAT5:MinCallbackTime_RBV -# % gui, DET.stats.stat5, enum, Block Callbacks, BL45P-EA-MAP-01:STAT5:BlockingCallbacks -# % gui, DET.stats.stat5, statusbits, Block Callbacks, BL45P-EA-MAP-01:STAT5:BlockingCallbacks_RBV - -# % gui, DET.stats.stat5, groupHeading, Counters -# % gui, DET.stats.stat5, demand, Array Counter, BL45P-EA-MAP-01:STAT5:ArrayCounter -# % gui, DET.stats.stat5, readback, Array Counter, BL45P-EA-MAP-01:STAT5:ArrayCounter_RBV -# % gui, DET.stats.stat5, readback, Array Rate (fps), BL45P-EA-MAP-01:STAT5:ArrayRate_RBV -# % gui, DET.stats.stat5, readback, Queue Use, BL45P-EA-MAP-01:STAT5:QueueUse -# % gui, DET.stats.stat5, readback, Queue Size, BL45P-EA-MAP-01:STAT5:QueueSize -# % gui, DET.stats.stat5, demand, Dropped Arrays, BL45P-EA-MAP-01:STAT5:DroppedArrays -# % gui, DET.stats.stat5, readback, Dropped Arrays, BL45P-EA-MAP-01:STAT5:DroppedArrays_RBV - -# % gui, DET.stats.stat5, groupHeading, Array Settings -# % gui, DET.stats.stat5, readback, Num Dimensions, BL45P-EA-MAP-01:STAT5:NDimensions_RBV -# % gui, DET.stats.stat5, readback, Dim 0 Size, BL45P-EA-MAP-01:STAT5:ArraySize0_RBV -# % gui, DET.stats.stat5, readback, Dim 1 Size, BL45P-EA-MAP-01:STAT5:ArraySize1_RBV -# % gui, DET.stats.stat5, readback, Dim 2 Size, BL45P-EA-MAP-01:STAT5:ArraySize2_RBV -# % gui, DET.stats.stat5, readback, Input Data Type, BL45P-EA-MAP-01:STAT5:DataType_RBV -# % gui, DET.stats.stat5, readback, Colour Mode, BL45P-EA-MAP-01:STAT5:ColorMode_RBV -# % gui, DET.stats.stat5, readback, Bayer Pattern, BL45P-EA-MAP-01:STAT5:BayerPattern_RBV -# % gui, DET.stats.stat5, readback, Unique id, BL45P-EA-MAP-01:STAT5:UniqueId_RBV -# % gui, DET.stats.stat5, readback, Timestamp, BL45P-EA-MAP-01:STAT5:TimeStamp_RBV - -# Output -# % gui, DET.stats.stat5, groupHeading, Output -# % gui, DET.stats.stat5, demand, Name, BL45P-EA-MAP-01:STAT5:Name -# % gui, DET.stats.stat5, enum, Out data type, BL45P-EA-MAP-01:STAT5:DataTypeOut -# % gui, DET.stats.stat5, readback, Out data type, BL45P-EA-MAP-01:STAT5:DataTypeOut_RBV -# % gui, DET.stats.stat5, demand, Attributes file, BL45P-EA-MAP-01:STAT5:NDAttributesFile - -# Statistics -# % gui, DET.stats.stat5, groupHeading, Statistics -# % gui, DET.stats.stat5, enum, Compute Statistics, BL45P-EA-MAP-01:STAT5:ComputeStatistics -# % gui, DET.stats.stat5, statusbits, Compute Statistics, BL45P-EA-MAP-01:STAT5:ComputeStatistics_RBV -# % gui, DET.stats.stat5, demand, Background Width, BL45P-EA-MAP-01:STAT5:BgdWidth -# % gui, DET.stats.stat5, readback, Background Width, BL45P-EA-MAP-01:STAT5:BgdWidth_RBV -# % gui, DET.stats.stat5, readback, Minimum Value, BL45P-EA-MAP-01:STAT5:MinValue_RBV -# % gui, DET.stats.stat5, readback, Minimum X, BL45P-EA-MAP-01:STAT5:MinX_RBV -# % gui, DET.stats.stat5, readback, Minimum Y, BL45P-EA-MAP-01:STAT5:MinY_RBV -# % gui, DET.stats.stat5, readback, Maximum Value, BL45P-EA-MAP-01:STAT5:MaxValue_RBV -# % gui, DET.stats.stat5, readback, Maximum X, BL45P-EA-MAP-01:STAT5:MaxX_RBV -# % gui, DET.stats.stat5, readback, Maximum Y, BL45P-EA-MAP-01:STAT5:MaxY_RBV -# % gui, DET.stats.stat5, readback, Mean Value, BL45P-EA-MAP-01:STAT5:MeanValue_RBV -# % gui, DET.stats.stat5, readback, Total, BL45P-EA-MAP-01:STAT5:Total_RBV -# % gui, DET.stats.stat5, readback, Sigma, BL45P-EA-MAP-01:STAT5:Sigma_RBV -# % gui, DET.stats.stat5, readback, Net, BL45P-EA-MAP-01:STAT5:Net_RBV -# Centroid -# % gui, DET.stats.stat5, groupHeading, Centroid -# % gui, DET.stats.stat5, enum, Compute Centroid, BL45P-EA-MAP-01:STAT5:ComputeCentroid -# % gui, DET.stats.stat5, statusbits, Compute Centroid, BL45P-EA-MAP-01:STAT5:ComputeCentroid_RBV -# % gui, DET.stats.stat5, demand, Threshold, BL45P-EA-MAP-01:STAT5:CentroidThreshold -# % gui, DET.stats.stat5, readback, Threshold, BL45P-EA-MAP-01:STAT5:CentroidThreshold_RBV -# % gui, DET.stats.stat5, readback, X, BL45P-EA-MAP-01:STAT5:CentroidX_RBV -# % gui, DET.stats.stat5, readback, Sigma X, BL45P-EA-MAP-01:STAT5:SigmaX_RBV -# % gui, DET.stats.stat5, readback, Y, BL45P-EA-MAP-01:STAT5:CentroidY_RBV -# % gui, DET.stats.stat5, readback, Sigma Y, BL45P-EA-MAP-01:STAT5:SigmaY_RBV -# % gui, DET.stats.stat5, readback, Sigma XY, BL45P-EA-MAP-01:STAT5:SigmaXY_RBV -# Histogram -# % gui, DET.stats.stat5, groupHeading, Histogram -# % gui, DET.stats.stat5, enum, Compute Histogram, BL45P-EA-MAP-01:STAT5:ComputeHistogram -# % gui, DET.stats.stat5, statusbits, Compute Histogram, BL45P-EA-MAP-01:STAT5:ComputeHistogram_RBV -# % gui, DET.stats.stat5, demand, Histogram Size, BL45P-EA-MAP-01:STAT5:HistSize -# % gui, DET.stats.stat5, readback, Histogram Size, BL45P-EA-MAP-01:STAT5:HistSize_RBV -# % gui, DET.stats.stat5, demand, Histogram Min, BL45P-EA-MAP-01:STAT5:HistMin -# % gui, DET.stats.stat5, readback, Histogram Min, BL45P-EA-MAP-01:STAT5:HistMin_RBV -# % gui, DET.stats.stat5, demand, Histogram Max, BL45P-EA-MAP-01:STAT5:HistMax -# % gui, DET.stats.stat5, readback, Histogram Max, BL45P-EA-MAP-01:STAT5:HistMax_RBV -# % gui, DET.stats.stat5, readback, Histogram Entropy, BL45P-EA-MAP-01:STAT5:HistEntropy_RBV -# Profiles -# % gui, DET.stats.stat5, groupHeading, Profiles -# % gui, DET.stats.stat5, enum, Compute Profiles, BL45P-EA-MAP-01:STAT5:ComputeProfiles -# % gui, DET.stats.stat5, statusbits, Compute Profiles, BL45P-EA-MAP-01:STAT5:ComputeProfiles_RBV -# % gui, DET.stats.stat5, demand, Cursor X, BL45P-EA-MAP-01:STAT5:CursorX -# % gui, DET.stats.stat5, readback, Cursor X, BL45P-EA-MAP-01:STAT5:CursorX_RBV -# % gui, DET.stats.stat5, demand, Cursor Y, BL45P-EA-MAP-01:STAT5:CursorY -# % gui, DET.stats.stat5, readback, Cursor Y, BL45P-EA-MAP-01:STAT5:CursorY_RBV -# % gui, DET.stats.stat5, readback, Size X, BL45P-EA-MAP-01:STAT5:ProfileSizeX_RBV -# % gui, DET.stats.stat5, readback, Size Y, BL45P-EA-MAP-01:STAT5:ProfileSizeY_RBV -# Time series -# % gui, DET.stats.stat5, groupHeading, Time Series -# % gui, DET.stats.stat5, enum, Time Control, BL45P-EA-MAP-01:STAT5:TS:TSAcquire -# % gui, DET.stats.stat5, statusbits, Acquiring, BL45P-EA-MAP-01:STAT5:TS:TSAcquiring -# % gui, DET.stats.stat5, readback, Current Point, BL45P-EA-MAP-01:STAT5:TS:TSCurrentPoint -# % gui, DET.stats.stat5, demand, Number of Points, BL45P-EA-MAP-01:STAT5:TS:TSNumPoints -# % gui, DET.stats.stat5, enum, Update, BL45P-EA-MAP-01:STAT5:TS:TSRead.SCAN -# Memory -# % gui, DET.stats.stat5, groupHeading, Memory -# % gui, DET.stats.stat5, readback, Max memory, BL45P-EA-MAP-01:STAT5:PoolMaxMem -# % gui, DET.stats.stat5, readback, Max buffers, BL45P-EA-MAP-01:STAT5:PoolMaxBuffers -# % gui, DET.stats.stat5, readback, Used memory, BL45P-EA-MAP-01:STAT5:PoolUsedMem -# % gui, DET.stats.stat5, readback, Allocated buffers, BL45P-EA-MAP-01:STAT5:PoolAllocBuffers -# % gui, DET.stats.stat5, readback, Free buffers, BL45P-EA-MAP-01:STAT5:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT5:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat5,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT5:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat5,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT5:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat5,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT5:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat5,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT5:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat5,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT5:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat5,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT5:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat5,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT5:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat5,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:STAT5:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT5:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:STAT5:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT5:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:STAT5:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:STAT5:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:STAT5:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:STAT5:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT5:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:STAT5:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:STAT5:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:STAT5:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:STAT5:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:STAT5:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.stats.stat5,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:STAT5:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.stats.stat5,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT5:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:STAT5:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:STAT5:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat5,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:STAT5:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT5:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:STAT5:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT5:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:STAT5:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:STAT5:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:STAT5:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:STAT5:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:STAT5:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:STAT5:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT5:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT5:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:STAT5:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.stats.stat5,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:STAT5:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.stats.stat5,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:STAT5:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:STAT5:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:STAT5:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:STAT5:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:STAT5:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:STAT5:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:STAT5:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:STAT5:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:STAT5:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT5:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat5,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:STAT5:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.stats.stat5,0,1)NDARRAY_PORT") - field(VAL, "DET.rois.roi1") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:STAT5:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat5,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT5:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT5:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT5:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:STAT5:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:STAT5:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:STAT5:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:STAT5:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:STAT5:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:STAT5:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:STAT5:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT5:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT5:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT5:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:STAT5:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT5:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:STAT5:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT5:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:STAT5:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT5:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:STAT5:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:STAT5:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:STAT5:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT5:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:STAT5:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:STAT5:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:STAT5:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT5:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:STAT5:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:STAT5:QueueSize") - field(INPB, "BL45P-EA-MAP-01:STAT5:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:STAT5:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:STAT5:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT5:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT5:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:STAT5:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT5:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:STAT5:SortSize") - field(OUT, "BL45P-EA-MAP-01:STAT5:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:STAT5:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT5:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:STAT5:AsynIO") -{ - field(PORT, "DET.stats.stat5") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records contain the basic statistics # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT5:ComputeStatistics") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)COMPUTE_STATISTICS") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT5:ComputeStatistics_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)COMPUTE_STATISTICS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT5:BgdWidth") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)BGD_WIDTH") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:BgdWidth_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)BGD_WIDTH") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:MinValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)MIN_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:MinValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)MIN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:MaxValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)MAX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:MaxValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)MAX_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:MeanValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)MEAN_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:MeanValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)MEAN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:SigmaValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)SIGMA_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:Sigma_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)SIGMA_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:Total") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)TOTAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:Total_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:Net") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)NET") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:Net_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)NET") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:MinX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)MIN_X") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:MinX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:MinY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)MIN_Y") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:MinY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:MaxX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)MAX_X") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:MaxX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)MAX_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:MaxY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)MAX_Y") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:MaxY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)MAX_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether centroid statistics are computed # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT5:ComputeCentroid") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)COMPUTE_CENTROID") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT5:ComputeCentroid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)COMPUTE_CENTROID") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain the centroid statistics # -################################################################### -record(ao, "BL45P-EA-MAP-01:STAT5:CentroidThreshold") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)CENTROID_THRESHOLD") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:CentroidThreshold_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)CENTROID_THRESHOLD") - field(VAL, "0") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:CentroidTotal") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)CENTROID_TOTAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:CentroidTotal_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)CENTROID_TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:CentroidX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)CENTROIDX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:CentroidX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)CENTROIDX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:CentroidY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)CENTROIDY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:CentroidY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)CENTROIDY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:SigmaX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)SIGMAX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:SigmaX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)SIGMAX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:SigmaY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)SIGMAY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:SigmaY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)SIGMAY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:SigmaXY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)SIGMAXY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:SigmaXY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)SIGMAXY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:SkewX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)SKEWX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:SkewX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)SKEWX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:SkewY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)SKEWY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:SkewY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)SKEWY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:KurtosisX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)KURTOSISX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:KurtosisX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)KURTOSISX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:KurtosisY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)KURTOSISY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:KurtosisY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)KURTOSISY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:Eccentricity") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)ECCENTRICITY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:Eccentricity_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)ECCENTRICITY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:Orientation") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)ORIENTATION_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:Orientation_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)ORIENTATION_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control time series # -################################################################### -record(waveform, "BL45P-EA-MAP-01:STAT5:TSMinValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,0,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSMinX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,1,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSMinY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,2,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSMaxValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,3,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSMaxX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,4,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSMaxY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,5,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSMeanValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,6,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSSigma") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,7,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,8,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSNet") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,9,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSCentroidTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,10,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSCentroidX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,11,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSCentroidY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,12,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSSigmaX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,13,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSSigmaY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,14,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSSigmaXY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,15,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSSkewX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,16,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSSkewY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,17,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSKurtosisX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,18,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSKurtosisY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,19,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSEccentricity") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,20,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSOrientation") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,21,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:TSTimestamp") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5_TS,22,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control profiles # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT5:ComputeProfiles") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)COMPUTE_PROFILES") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT5:ComputeProfiles_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)COMPUTE_PROFILES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ProfileSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)PROFILE_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:ProfileSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)PROFILE_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT5:CursorX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)CURSOR_X") - field(VAL, "256") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:CursorX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)CURSOR_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT5:CursorY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)CURSOR_Y") - field(VAL, "256") - field(FLNK, "BL45P-EA-MAP-01:STAT5:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:CursorY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)CURSOR_Y") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:CursorVal") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)CURSOR_VAL") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:ProfileAverageX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5,0,1)PROFILE_AVERAGE_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:ProfileAverageY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5,0,1)PROFILE_AVERAGE_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:ProfileThresholdX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5,0,1)PROFILE_THRESHOLD_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:ProfileThresholdY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5,0,1)PROFILE_THRESHOLD_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:ProfileCentroidX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5,0,1)PROFILE_CENTROID_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:ProfileCentroidY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5,0,1)PROFILE_CENTROID_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:ProfileCursorX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5,0,1)PROFILE_CURSOR_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:ProfileCursorY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5,0,1)PROFILE_CURSOR_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These are used to define the histogram # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT5:ComputeHistogram") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)COMPUTE_HISTOGRAM") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT5:ComputeHistogram_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)COMPUTE_HISTOGRAM") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT5:HistSize") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)HIST_SIZE") - field(VAL, "256") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:HistSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)HIST_SIZE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:HistMin") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)HIST_MIN") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:HistMin_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)HIST_MIN") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:HistMax") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)HIST_MAX") - field(VAL, "255") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:HistMax_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)HIST_MAX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT5:HistBelow") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)HIST_BELOW") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:HistBelow_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)HIST_BELOW") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT5:HistAbove") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat5,0,1)HIST_ABOVE") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:HistAbove_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat5,0,1)HIST_ABOVE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT5:HistEntropy") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat5,0,1)HIST_ENTROPY") -} - -record(ai, "BL45P-EA-MAP-01:STAT5:HistEntropy_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat5,0,1)HIST_ENTROPY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:Histogram_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5,0,1)HIST_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT5:HistogramX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat5,0,1)HIST_X_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records set the HOPR and LOPR values for the cursor # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:STAT5:MaxSizeX") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:ProfileSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:STAT5:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:STAT5:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:STAT5:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:STAT5:CursorX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:STAT5:MaxSizeY") -{ - field(INP, "BL45P-EA-MAP-01:STAT5:ProfileSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:STAT5:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:STAT5:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:STAT5:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:STAT5:CursorY.HOPR NPP") -} - -################################################################### -# These records reset the statistics # -################################################################### -record(sseq, "BL45P-EA-MAP-01:STAT5:Reset") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT5:MinValue PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT5:MaxValue PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT5:MeanValue PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT5:SigmaValue PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT5:Total PP MS") - field(LNK6, "BL45P-EA-MAP-01:STAT5:Net PP MS") - field(LNK7, "BL45P-EA-MAP-01:STAT5:MinX PP MS") - field(LNK8, "BL45P-EA-MAP-01:STAT5:MinY PP MS") - field(LNK9, "BL45P-EA-MAP-01:STAT5:MaxX PP MS") - field(LNKA, "BL45P-EA-MAP-01:STAT5:MaxY PP MS") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Reset1") -} - -record(sseq, "BL45P-EA-MAP-01:STAT5:Reset1") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT5:CentroidX PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT5:CentroidY PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT5:SigmaX PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT5:SigmaY PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT5:SigmaXY PP MS") - field(LNK6, "BL45P-EA-MAP-01:STAT5:CentroidTotal PP MS") - field(LNK7, "BL45P-EA-MAP-01:STAT5:SkewX PP MS") - field(LNK8, "BL45P-EA-MAP-01:STAT5:SkewY PP MS") - field(LNK9, "BL45P-EA-MAP-01:STAT5:KurtosisX PP MS") - field(LNKA, "BL45P-EA-MAP-01:STAT5:KurtosisY PP MS") - field(FLNK, "BL45P-EA-MAP-01:STAT5:Reset2") -} - -record(sseq, "BL45P-EA-MAP-01:STAT5:Reset2") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT5:Eccentricity PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT5:Orientation PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT5:HistBelow PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT5:HistAbove PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT5:HistEntropy PP MS") -} - -#=================================================================# -# Template file: NDStats.template - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, NCHANS, Number of channels -# % macro, XSIZE, x size -# % macro, YSIZE, y size -# % macro, HIST_SIZE, hist size -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Timeout -# % macro, TS_PORT, TS port - -# This associates the template with an edm screen -# % gui, DET.stats.stat6, edmtab, NDStats.edl, P=BL45P-EA-MAP-01,R=:STAT6: - -# This associates a BOY screen with the template -# % gui, DET.stats.stat6, boydetail,ADApp_opi/dls/stats_detail.opi, P=BL45P-EA-MAP-01, R=:STAT6:, DESC=Statistics -# % gui, DET.stats.stat6, boyembed, ADApp_opi/dls/stats_embed_box.opi, P=BL45P-EA-MAP-01, R=:STAT6:, DESC=Statistics -# % gui, DET.stats.stat6, boyembed, ADApp_opi/dls/stats_embed.opi, P=BL45P-EA-MAP-01, R=:STAT6:, DESC=Statistics - - -# % gui, DET.stats.stat6, groupHeading, Info -# % gui, DET.stats.stat6, readback, Port name, BL45P-EA-MAP-01:STAT6:PortName_RBV -# % gui, DET.stats.stat6, readback, Plugin type, BL45P-EA-MAP-01:STAT6:PluginType_RBV -# Input -# % gui, DET.stats.stat6, demandString, Input, BL45P-EA-MAP-01:STAT6:NDArrayPort -# % gui, DET.stats.stat6, readback, Input, BL45P-EA-MAP-01:STAT6:NDArrayPort_RBV - -# % gui, DET.stats.stat6, groupHeading, Callback -# % gui, DET.stats.stat6, enum, Callbacks, BL45P-EA-MAP-01:STAT6:EnableCallbacks -# % gui, DET.stats.stat6, statusbits, Callbacks, BL45P-EA-MAP-01:STAT6:EnableCallbacks_RBV -# % gui, DET.stats.stat6, demand, Min Callback Time, BL45P-EA-MAP-01:STAT6:MinCallbackTime -# % gui, DET.stats.stat6, readback, Min Callback Time, BL45P-EA-MAP-01:STAT6:MinCallbackTime_RBV -# % gui, DET.stats.stat6, enum, Block Callbacks, BL45P-EA-MAP-01:STAT6:BlockingCallbacks -# % gui, DET.stats.stat6, statusbits, Block Callbacks, BL45P-EA-MAP-01:STAT6:BlockingCallbacks_RBV - -# % gui, DET.stats.stat6, groupHeading, Counters -# % gui, DET.stats.stat6, demand, Array Counter, BL45P-EA-MAP-01:STAT6:ArrayCounter -# % gui, DET.stats.stat6, readback, Array Counter, BL45P-EA-MAP-01:STAT6:ArrayCounter_RBV -# % gui, DET.stats.stat6, readback, Array Rate (fps), BL45P-EA-MAP-01:STAT6:ArrayRate_RBV -# % gui, DET.stats.stat6, readback, Queue Use, BL45P-EA-MAP-01:STAT6:QueueUse -# % gui, DET.stats.stat6, readback, Queue Size, BL45P-EA-MAP-01:STAT6:QueueSize -# % gui, DET.stats.stat6, demand, Dropped Arrays, BL45P-EA-MAP-01:STAT6:DroppedArrays -# % gui, DET.stats.stat6, readback, Dropped Arrays, BL45P-EA-MAP-01:STAT6:DroppedArrays_RBV - -# % gui, DET.stats.stat6, groupHeading, Array Settings -# % gui, DET.stats.stat6, readback, Num Dimensions, BL45P-EA-MAP-01:STAT6:NDimensions_RBV -# % gui, DET.stats.stat6, readback, Dim 0 Size, BL45P-EA-MAP-01:STAT6:ArraySize0_RBV -# % gui, DET.stats.stat6, readback, Dim 1 Size, BL45P-EA-MAP-01:STAT6:ArraySize1_RBV -# % gui, DET.stats.stat6, readback, Dim 2 Size, BL45P-EA-MAP-01:STAT6:ArraySize2_RBV -# % gui, DET.stats.stat6, readback, Input Data Type, BL45P-EA-MAP-01:STAT6:DataType_RBV -# % gui, DET.stats.stat6, readback, Colour Mode, BL45P-EA-MAP-01:STAT6:ColorMode_RBV -# % gui, DET.stats.stat6, readback, Bayer Pattern, BL45P-EA-MAP-01:STAT6:BayerPattern_RBV -# % gui, DET.stats.stat6, readback, Unique id, BL45P-EA-MAP-01:STAT6:UniqueId_RBV -# % gui, DET.stats.stat6, readback, Timestamp, BL45P-EA-MAP-01:STAT6:TimeStamp_RBV - -# Output -# % gui, DET.stats.stat6, groupHeading, Output -# % gui, DET.stats.stat6, demand, Name, BL45P-EA-MAP-01:STAT6:Name -# % gui, DET.stats.stat6, enum, Out data type, BL45P-EA-MAP-01:STAT6:DataTypeOut -# % gui, DET.stats.stat6, readback, Out data type, BL45P-EA-MAP-01:STAT6:DataTypeOut_RBV -# % gui, DET.stats.stat6, demand, Attributes file, BL45P-EA-MAP-01:STAT6:NDAttributesFile - -# Statistics -# % gui, DET.stats.stat6, groupHeading, Statistics -# % gui, DET.stats.stat6, enum, Compute Statistics, BL45P-EA-MAP-01:STAT6:ComputeStatistics -# % gui, DET.stats.stat6, statusbits, Compute Statistics, BL45P-EA-MAP-01:STAT6:ComputeStatistics_RBV -# % gui, DET.stats.stat6, demand, Background Width, BL45P-EA-MAP-01:STAT6:BgdWidth -# % gui, DET.stats.stat6, readback, Background Width, BL45P-EA-MAP-01:STAT6:BgdWidth_RBV -# % gui, DET.stats.stat6, readback, Minimum Value, BL45P-EA-MAP-01:STAT6:MinValue_RBV -# % gui, DET.stats.stat6, readback, Minimum X, BL45P-EA-MAP-01:STAT6:MinX_RBV -# % gui, DET.stats.stat6, readback, Minimum Y, BL45P-EA-MAP-01:STAT6:MinY_RBV -# % gui, DET.stats.stat6, readback, Maximum Value, BL45P-EA-MAP-01:STAT6:MaxValue_RBV -# % gui, DET.stats.stat6, readback, Maximum X, BL45P-EA-MAP-01:STAT6:MaxX_RBV -# % gui, DET.stats.stat6, readback, Maximum Y, BL45P-EA-MAP-01:STAT6:MaxY_RBV -# % gui, DET.stats.stat6, readback, Mean Value, BL45P-EA-MAP-01:STAT6:MeanValue_RBV -# % gui, DET.stats.stat6, readback, Total, BL45P-EA-MAP-01:STAT6:Total_RBV -# % gui, DET.stats.stat6, readback, Sigma, BL45P-EA-MAP-01:STAT6:Sigma_RBV -# % gui, DET.stats.stat6, readback, Net, BL45P-EA-MAP-01:STAT6:Net_RBV -# Centroid -# % gui, DET.stats.stat6, groupHeading, Centroid -# % gui, DET.stats.stat6, enum, Compute Centroid, BL45P-EA-MAP-01:STAT6:ComputeCentroid -# % gui, DET.stats.stat6, statusbits, Compute Centroid, BL45P-EA-MAP-01:STAT6:ComputeCentroid_RBV -# % gui, DET.stats.stat6, demand, Threshold, BL45P-EA-MAP-01:STAT6:CentroidThreshold -# % gui, DET.stats.stat6, readback, Threshold, BL45P-EA-MAP-01:STAT6:CentroidThreshold_RBV -# % gui, DET.stats.stat6, readback, X, BL45P-EA-MAP-01:STAT6:CentroidX_RBV -# % gui, DET.stats.stat6, readback, Sigma X, BL45P-EA-MAP-01:STAT6:SigmaX_RBV -# % gui, DET.stats.stat6, readback, Y, BL45P-EA-MAP-01:STAT6:CentroidY_RBV -# % gui, DET.stats.stat6, readback, Sigma Y, BL45P-EA-MAP-01:STAT6:SigmaY_RBV -# % gui, DET.stats.stat6, readback, Sigma XY, BL45P-EA-MAP-01:STAT6:SigmaXY_RBV -# Histogram -# % gui, DET.stats.stat6, groupHeading, Histogram -# % gui, DET.stats.stat6, enum, Compute Histogram, BL45P-EA-MAP-01:STAT6:ComputeHistogram -# % gui, DET.stats.stat6, statusbits, Compute Histogram, BL45P-EA-MAP-01:STAT6:ComputeHistogram_RBV -# % gui, DET.stats.stat6, demand, Histogram Size, BL45P-EA-MAP-01:STAT6:HistSize -# % gui, DET.stats.stat6, readback, Histogram Size, BL45P-EA-MAP-01:STAT6:HistSize_RBV -# % gui, DET.stats.stat6, demand, Histogram Min, BL45P-EA-MAP-01:STAT6:HistMin -# % gui, DET.stats.stat6, readback, Histogram Min, BL45P-EA-MAP-01:STAT6:HistMin_RBV -# % gui, DET.stats.stat6, demand, Histogram Max, BL45P-EA-MAP-01:STAT6:HistMax -# % gui, DET.stats.stat6, readback, Histogram Max, BL45P-EA-MAP-01:STAT6:HistMax_RBV -# % gui, DET.stats.stat6, readback, Histogram Entropy, BL45P-EA-MAP-01:STAT6:HistEntropy_RBV -# Profiles -# % gui, DET.stats.stat6, groupHeading, Profiles -# % gui, DET.stats.stat6, enum, Compute Profiles, BL45P-EA-MAP-01:STAT6:ComputeProfiles -# % gui, DET.stats.stat6, statusbits, Compute Profiles, BL45P-EA-MAP-01:STAT6:ComputeProfiles_RBV -# % gui, DET.stats.stat6, demand, Cursor X, BL45P-EA-MAP-01:STAT6:CursorX -# % gui, DET.stats.stat6, readback, Cursor X, BL45P-EA-MAP-01:STAT6:CursorX_RBV -# % gui, DET.stats.stat6, demand, Cursor Y, BL45P-EA-MAP-01:STAT6:CursorY -# % gui, DET.stats.stat6, readback, Cursor Y, BL45P-EA-MAP-01:STAT6:CursorY_RBV -# % gui, DET.stats.stat6, readback, Size X, BL45P-EA-MAP-01:STAT6:ProfileSizeX_RBV -# % gui, DET.stats.stat6, readback, Size Y, BL45P-EA-MAP-01:STAT6:ProfileSizeY_RBV -# Time series -# % gui, DET.stats.stat6, groupHeading, Time Series -# % gui, DET.stats.stat6, enum, Time Control, BL45P-EA-MAP-01:STAT6:TS:TSAcquire -# % gui, DET.stats.stat6, statusbits, Acquiring, BL45P-EA-MAP-01:STAT6:TS:TSAcquiring -# % gui, DET.stats.stat6, readback, Current Point, BL45P-EA-MAP-01:STAT6:TS:TSCurrentPoint -# % gui, DET.stats.stat6, demand, Number of Points, BL45P-EA-MAP-01:STAT6:TS:TSNumPoints -# % gui, DET.stats.stat6, enum, Update, BL45P-EA-MAP-01:STAT6:TS:TSRead.SCAN -# Memory -# % gui, DET.stats.stat6, groupHeading, Memory -# % gui, DET.stats.stat6, readback, Max memory, BL45P-EA-MAP-01:STAT6:PoolMaxMem -# % gui, DET.stats.stat6, readback, Max buffers, BL45P-EA-MAP-01:STAT6:PoolMaxBuffers -# % gui, DET.stats.stat6, readback, Used memory, BL45P-EA-MAP-01:STAT6:PoolUsedMem -# % gui, DET.stats.stat6, readback, Allocated buffers, BL45P-EA-MAP-01:STAT6:PoolAllocBuffers -# % gui, DET.stats.stat6, readback, Free buffers, BL45P-EA-MAP-01:STAT6:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT6:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat6,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT6:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat6,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT6:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat6,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT6:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat6,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT6:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat6,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT6:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat6,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT6:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat6,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:STAT6:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat6,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:STAT6:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT6:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:STAT6:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT6:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:STAT6:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:STAT6:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:STAT6:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:STAT6:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT6:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:STAT6:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:STAT6:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:STAT6:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:STAT6:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:STAT6:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.stats.stat6,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:STAT6:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.stats.stat6,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:STAT6:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:STAT6:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:STAT6:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat6,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:STAT6:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT6:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:STAT6:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT6:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:STAT6:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:STAT6:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:STAT6:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:STAT6:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:STAT6:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:STAT6:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT6:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT6:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:STAT6:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.stats.stat6,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:STAT6:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.stats.stat6,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:STAT6:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:STAT6:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:STAT6:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:STAT6:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:STAT6:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:STAT6:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:STAT6:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:STAT6:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:STAT6:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:STAT6:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat6,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:STAT6:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.stats.stat6,0,1)NDARRAY_PORT") - field(VAL, "DET.rois.roi1") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:STAT6:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.stats.stat6,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT6:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT6:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT6:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:STAT6:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:STAT6:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:STAT6:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:STAT6:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:STAT6:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:STAT6:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:STAT6:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT6:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT6:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT6:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:STAT6:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT6:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:STAT6:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT6:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:STAT6:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT6:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:STAT6:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:STAT6:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:STAT6:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT6:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:STAT6:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:STAT6:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:STAT6:QueueSize") - field(OUT, "BL45P-EA-MAP-01:STAT6:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:STAT6:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:STAT6:QueueSize") - field(INPB, "BL45P-EA-MAP-01:STAT6:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:STAT6:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:STAT6:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:STAT6:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT6:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:STAT6:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:STAT6:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:STAT6:SortSize") - field(OUT, "BL45P-EA-MAP-01:STAT6:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:STAT6:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT6:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:STAT6:AsynIO") -{ - field(PORT, "DET.stats.stat6") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records contain the basic statistics # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT6:ComputeStatistics") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)COMPUTE_STATISTICS") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT6:ComputeStatistics_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)COMPUTE_STATISTICS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT6:BgdWidth") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)BGD_WIDTH") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:BgdWidth_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)BGD_WIDTH") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:MinValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)MIN_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:MinValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)MIN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:MaxValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)MAX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:MaxValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)MAX_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:MeanValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)MEAN_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:MeanValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)MEAN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:SigmaValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)SIGMA_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:Sigma_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)SIGMA_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:Total") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)TOTAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:Total_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:Net") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)NET") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:Net_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)NET") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:MinX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)MIN_X") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:MinX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:MinY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)MIN_Y") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:MinY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:MaxX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)MAX_X") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:MaxX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)MAX_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:MaxY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)MAX_Y") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:MaxY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)MAX_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether centroid statistics are computed # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT6:ComputeCentroid") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)COMPUTE_CENTROID") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT6:ComputeCentroid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)COMPUTE_CENTROID") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain the centroid statistics # -################################################################### -record(ao, "BL45P-EA-MAP-01:STAT6:CentroidThreshold") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)CENTROID_THRESHOLD") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:CentroidThreshold_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)CENTROID_THRESHOLD") - field(VAL, "0") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:CentroidTotal") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)CENTROID_TOTAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:CentroidTotal_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)CENTROID_TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:CentroidX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)CENTROIDX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:CentroidX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)CENTROIDX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:CentroidY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)CENTROIDY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:CentroidY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)CENTROIDY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:SigmaX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)SIGMAX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:SigmaX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)SIGMAX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:SigmaY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)SIGMAY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:SigmaY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)SIGMAY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:SigmaXY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)SIGMAXY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:SigmaXY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)SIGMAXY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:SkewX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)SKEWX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:SkewX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)SKEWX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:SkewY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)SKEWY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:SkewY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)SKEWY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:KurtosisX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)KURTOSISX_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:KurtosisX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)KURTOSISX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:KurtosisY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)KURTOSISY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:KurtosisY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)KURTOSISY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:Eccentricity") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)ECCENTRICITY_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:Eccentricity_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)ECCENTRICITY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:Orientation") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)ORIENTATION_VALUE") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:Orientation_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)ORIENTATION_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control time series # -################################################################### -record(waveform, "BL45P-EA-MAP-01:STAT6:TSMinValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,0,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSMinX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,1,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSMinY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,2,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSMaxValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,3,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSMaxX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,4,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSMaxY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,5,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSMeanValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,6,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSSigma") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,7,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,8,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSNet") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,9,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSCentroidTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,10,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSCentroidX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,11,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSCentroidY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,12,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSSigmaX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,13,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSSigmaY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,14,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSSigmaXY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,15,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSSkewX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,16,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSSkewY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,17,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSKurtosisX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,18,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSKurtosisY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,19,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSEccentricity") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,20,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSOrientation") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,21,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:TSTimestamp") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6_TS,22,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control profiles # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT6:ComputeProfiles") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)COMPUTE_PROFILES") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT6:ComputeProfiles_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)COMPUTE_PROFILES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ProfileSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)PROFILE_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:ProfileSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)PROFILE_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT6:CursorX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)CURSOR_X") - field(VAL, "256") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:CursorX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)CURSOR_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT6:CursorY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)CURSOR_Y") - field(VAL, "256") - field(FLNK, "BL45P-EA-MAP-01:STAT6:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:CursorY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)CURSOR_Y") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:CursorVal") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)CURSOR_VAL") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:ProfileAverageX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6,0,1)PROFILE_AVERAGE_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:ProfileAverageY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6,0,1)PROFILE_AVERAGE_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:ProfileThresholdX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6,0,1)PROFILE_THRESHOLD_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:ProfileThresholdY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6,0,1)PROFILE_THRESHOLD_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:ProfileCentroidX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6,0,1)PROFILE_CENTROID_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:ProfileCentroidY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6,0,1)PROFILE_CENTROID_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:ProfileCursorX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6,0,1)PROFILE_CURSOR_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:ProfileCursorY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6,0,1)PROFILE_CURSOR_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These are used to define the histogram # -################################################################### -record(bo, "BL45P-EA-MAP-01:STAT6:ComputeHistogram") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)COMPUTE_HISTOGRAM") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:STAT6:ComputeHistogram_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)COMPUTE_HISTOGRAM") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT6:HistSize") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)HIST_SIZE") - field(VAL, "256") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:HistSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)HIST_SIZE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:HistMin") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)HIST_MIN") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:HistMin_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)HIST_MIN") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:HistMax") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)HIST_MAX") - field(VAL, "255") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:HistMax_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)HIST_MAX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT6:HistBelow") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)HIST_BELOW") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:HistBelow_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)HIST_BELOW") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:STAT6:HistAbove") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.stats.stat6,0,1)HIST_ABOVE") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:HistAbove_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.stats.stat6,0,1)HIST_ABOVE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:STAT6:HistEntropy") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.stats.stat6,0,1)HIST_ENTROPY") -} - -record(ai, "BL45P-EA-MAP-01:STAT6:HistEntropy_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.stats.stat6,0,1)HIST_ENTROPY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:Histogram_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6,0,1)HIST_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:STAT6:HistogramX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DET.stats.stat6,0,1)HIST_X_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records set the HOPR and LOPR values for the cursor # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:STAT6:MaxSizeX") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:ProfileSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:STAT6:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:STAT6:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:STAT6:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:STAT6:CursorX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:STAT6:MaxSizeY") -{ - field(INP, "BL45P-EA-MAP-01:STAT6:ProfileSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:STAT6:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:STAT6:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:STAT6:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:STAT6:CursorY.HOPR NPP") -} - -################################################################### -# These records reset the statistics # -################################################################### -record(sseq, "BL45P-EA-MAP-01:STAT6:Reset") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT6:MinValue PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT6:MaxValue PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT6:MeanValue PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT6:SigmaValue PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT6:Total PP MS") - field(LNK6, "BL45P-EA-MAP-01:STAT6:Net PP MS") - field(LNK7, "BL45P-EA-MAP-01:STAT6:MinX PP MS") - field(LNK8, "BL45P-EA-MAP-01:STAT6:MinY PP MS") - field(LNK9, "BL45P-EA-MAP-01:STAT6:MaxX PP MS") - field(LNKA, "BL45P-EA-MAP-01:STAT6:MaxY PP MS") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Reset1") -} - -record(sseq, "BL45P-EA-MAP-01:STAT6:Reset1") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT6:CentroidX PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT6:CentroidY PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT6:SigmaX PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT6:SigmaY PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT6:SigmaXY PP MS") - field(LNK6, "BL45P-EA-MAP-01:STAT6:CentroidTotal PP MS") - field(LNK7, "BL45P-EA-MAP-01:STAT6:SkewX PP MS") - field(LNK8, "BL45P-EA-MAP-01:STAT6:SkewY PP MS") - field(LNK9, "BL45P-EA-MAP-01:STAT6:KurtosisX PP MS") - field(LNKA, "BL45P-EA-MAP-01:STAT6:KurtosisY PP MS") - field(FLNK, "BL45P-EA-MAP-01:STAT6:Reset2") -} - -record(sseq, "BL45P-EA-MAP-01:STAT6:Reset2") -{ - field(LNK1, "BL45P-EA-MAP-01:STAT6:Eccentricity PP MS") - field(LNK2, "BL45P-EA-MAP-01:STAT6:Orientation PP MS") - field(LNK3, "BL45P-EA-MAP-01:STAT6:HistBelow PP MS") - field(LNK4, "BL45P-EA-MAP-01:STAT6:HistAbove PP MS") - field(LNK5, "BL45P-EA-MAP-01:STAT6:HistEntropy PP MS") -} - -#=================================================================# -# Template file: NDStats.template - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, NCHANS, Number of channels -# % macro, XSIZE, x size -# % macro, YSIZE, y size -# % macro, HIST_SIZE, hist size -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Timeout -# % macro, TS_PORT, TS port - -# This associates the template with an edm screen -# % gui, DIFF.stat, edmtab, NDStats.edl, P=BL45P-EA-DIFF-01,R=:STAT: - -# This associates a BOY screen with the template -# % gui, DIFF.stat, boydetail,ADApp_opi/dls/stats_detail.opi, P=BL45P-EA-DIFF-01, R=:STAT:, DESC=Statistics -# % gui, DIFF.stat, boyembed, ADApp_opi/dls/stats_embed_box.opi, P=BL45P-EA-DIFF-01, R=:STAT:, DESC=Statistics -# % gui, DIFF.stat, boyembed, ADApp_opi/dls/stats_embed.opi, P=BL45P-EA-DIFF-01, R=:STAT:, DESC=Statistics - - -# % gui, DIFF.stat, groupHeading, Info -# % gui, DIFF.stat, readback, Port name, BL45P-EA-DIFF-01:STAT:PortName_RBV -# % gui, DIFF.stat, readback, Plugin type, BL45P-EA-DIFF-01:STAT:PluginType_RBV -# Input -# % gui, DIFF.stat, demandString, Input, BL45P-EA-DIFF-01:STAT:NDArrayPort -# % gui, DIFF.stat, readback, Input, BL45P-EA-DIFF-01:STAT:NDArrayPort_RBV - -# % gui, DIFF.stat, groupHeading, Callback -# % gui, DIFF.stat, enum, Callbacks, BL45P-EA-DIFF-01:STAT:EnableCallbacks -# % gui, DIFF.stat, statusbits, Callbacks, BL45P-EA-DIFF-01:STAT:EnableCallbacks_RBV -# % gui, DIFF.stat, demand, Min Callback Time, BL45P-EA-DIFF-01:STAT:MinCallbackTime -# % gui, DIFF.stat, readback, Min Callback Time, BL45P-EA-DIFF-01:STAT:MinCallbackTime_RBV -# % gui, DIFF.stat, enum, Block Callbacks, BL45P-EA-DIFF-01:STAT:BlockingCallbacks -# % gui, DIFF.stat, statusbits, Block Callbacks, BL45P-EA-DIFF-01:STAT:BlockingCallbacks_RBV - -# % gui, DIFF.stat, groupHeading, Counters -# % gui, DIFF.stat, demand, Array Counter, BL45P-EA-DIFF-01:STAT:ArrayCounter -# % gui, DIFF.stat, readback, Array Counter, BL45P-EA-DIFF-01:STAT:ArrayCounter_RBV -# % gui, DIFF.stat, readback, Array Rate (fps), BL45P-EA-DIFF-01:STAT:ArrayRate_RBV -# % gui, DIFF.stat, readback, Queue Use, BL45P-EA-DIFF-01:STAT:QueueUse -# % gui, DIFF.stat, readback, Queue Size, BL45P-EA-DIFF-01:STAT:QueueSize -# % gui, DIFF.stat, demand, Dropped Arrays, BL45P-EA-DIFF-01:STAT:DroppedArrays -# % gui, DIFF.stat, readback, Dropped Arrays, BL45P-EA-DIFF-01:STAT:DroppedArrays_RBV - -# % gui, DIFF.stat, groupHeading, Array Settings -# % gui, DIFF.stat, readback, Num Dimensions, BL45P-EA-DIFF-01:STAT:NDimensions_RBV -# % gui, DIFF.stat, readback, Dim 0 Size, BL45P-EA-DIFF-01:STAT:ArraySize0_RBV -# % gui, DIFF.stat, readback, Dim 1 Size, BL45P-EA-DIFF-01:STAT:ArraySize1_RBV -# % gui, DIFF.stat, readback, Dim 2 Size, BL45P-EA-DIFF-01:STAT:ArraySize2_RBV -# % gui, DIFF.stat, readback, Input Data Type, BL45P-EA-DIFF-01:STAT:DataType_RBV -# % gui, DIFF.stat, readback, Colour Mode, BL45P-EA-DIFF-01:STAT:ColorMode_RBV -# % gui, DIFF.stat, readback, Bayer Pattern, BL45P-EA-DIFF-01:STAT:BayerPattern_RBV -# % gui, DIFF.stat, readback, Unique id, BL45P-EA-DIFF-01:STAT:UniqueId_RBV -# % gui, DIFF.stat, readback, Timestamp, BL45P-EA-DIFF-01:STAT:TimeStamp_RBV - -# Output -# % gui, DIFF.stat, groupHeading, Output -# % gui, DIFF.stat, demand, Name, BL45P-EA-DIFF-01:STAT:Name -# % gui, DIFF.stat, enum, Out data type, BL45P-EA-DIFF-01:STAT:DataTypeOut -# % gui, DIFF.stat, readback, Out data type, BL45P-EA-DIFF-01:STAT:DataTypeOut_RBV -# % gui, DIFF.stat, demand, Attributes file, BL45P-EA-DIFF-01:STAT:NDAttributesFile - -# Statistics -# % gui, DIFF.stat, groupHeading, Statistics -# % gui, DIFF.stat, enum, Compute Statistics, BL45P-EA-DIFF-01:STAT:ComputeStatistics -# % gui, DIFF.stat, statusbits, Compute Statistics, BL45P-EA-DIFF-01:STAT:ComputeStatistics_RBV -# % gui, DIFF.stat, demand, Background Width, BL45P-EA-DIFF-01:STAT:BgdWidth -# % gui, DIFF.stat, readback, Background Width, BL45P-EA-DIFF-01:STAT:BgdWidth_RBV -# % gui, DIFF.stat, readback, Minimum Value, BL45P-EA-DIFF-01:STAT:MinValue_RBV -# % gui, DIFF.stat, readback, Minimum X, BL45P-EA-DIFF-01:STAT:MinX_RBV -# % gui, DIFF.stat, readback, Minimum Y, BL45P-EA-DIFF-01:STAT:MinY_RBV -# % gui, DIFF.stat, readback, Maximum Value, BL45P-EA-DIFF-01:STAT:MaxValue_RBV -# % gui, DIFF.stat, readback, Maximum X, BL45P-EA-DIFF-01:STAT:MaxX_RBV -# % gui, DIFF.stat, readback, Maximum Y, BL45P-EA-DIFF-01:STAT:MaxY_RBV -# % gui, DIFF.stat, readback, Mean Value, BL45P-EA-DIFF-01:STAT:MeanValue_RBV -# % gui, DIFF.stat, readback, Total, BL45P-EA-DIFF-01:STAT:Total_RBV -# % gui, DIFF.stat, readback, Sigma, BL45P-EA-DIFF-01:STAT:Sigma_RBV -# % gui, DIFF.stat, readback, Net, BL45P-EA-DIFF-01:STAT:Net_RBV -# Centroid -# % gui, DIFF.stat, groupHeading, Centroid -# % gui, DIFF.stat, enum, Compute Centroid, BL45P-EA-DIFF-01:STAT:ComputeCentroid -# % gui, DIFF.stat, statusbits, Compute Centroid, BL45P-EA-DIFF-01:STAT:ComputeCentroid_RBV -# % gui, DIFF.stat, demand, Threshold, BL45P-EA-DIFF-01:STAT:CentroidThreshold -# % gui, DIFF.stat, readback, Threshold, BL45P-EA-DIFF-01:STAT:CentroidThreshold_RBV -# % gui, DIFF.stat, readback, X, BL45P-EA-DIFF-01:STAT:CentroidX_RBV -# % gui, DIFF.stat, readback, Sigma X, BL45P-EA-DIFF-01:STAT:SigmaX_RBV -# % gui, DIFF.stat, readback, Y, BL45P-EA-DIFF-01:STAT:CentroidY_RBV -# % gui, DIFF.stat, readback, Sigma Y, BL45P-EA-DIFF-01:STAT:SigmaY_RBV -# % gui, DIFF.stat, readback, Sigma XY, BL45P-EA-DIFF-01:STAT:SigmaXY_RBV -# Histogram -# % gui, DIFF.stat, groupHeading, Histogram -# % gui, DIFF.stat, enum, Compute Histogram, BL45P-EA-DIFF-01:STAT:ComputeHistogram -# % gui, DIFF.stat, statusbits, Compute Histogram, BL45P-EA-DIFF-01:STAT:ComputeHistogram_RBV -# % gui, DIFF.stat, demand, Histogram Size, BL45P-EA-DIFF-01:STAT:HistSize -# % gui, DIFF.stat, readback, Histogram Size, BL45P-EA-DIFF-01:STAT:HistSize_RBV -# % gui, DIFF.stat, demand, Histogram Min, BL45P-EA-DIFF-01:STAT:HistMin -# % gui, DIFF.stat, readback, Histogram Min, BL45P-EA-DIFF-01:STAT:HistMin_RBV -# % gui, DIFF.stat, demand, Histogram Max, BL45P-EA-DIFF-01:STAT:HistMax -# % gui, DIFF.stat, readback, Histogram Max, BL45P-EA-DIFF-01:STAT:HistMax_RBV -# % gui, DIFF.stat, readback, Histogram Entropy, BL45P-EA-DIFF-01:STAT:HistEntropy_RBV -# Profiles -# % gui, DIFF.stat, groupHeading, Profiles -# % gui, DIFF.stat, enum, Compute Profiles, BL45P-EA-DIFF-01:STAT:ComputeProfiles -# % gui, DIFF.stat, statusbits, Compute Profiles, BL45P-EA-DIFF-01:STAT:ComputeProfiles_RBV -# % gui, DIFF.stat, demand, Cursor X, BL45P-EA-DIFF-01:STAT:CursorX -# % gui, DIFF.stat, readback, Cursor X, BL45P-EA-DIFF-01:STAT:CursorX_RBV -# % gui, DIFF.stat, demand, Cursor Y, BL45P-EA-DIFF-01:STAT:CursorY -# % gui, DIFF.stat, readback, Cursor Y, BL45P-EA-DIFF-01:STAT:CursorY_RBV -# % gui, DIFF.stat, readback, Size X, BL45P-EA-DIFF-01:STAT:ProfileSizeX_RBV -# % gui, DIFF.stat, readback, Size Y, BL45P-EA-DIFF-01:STAT:ProfileSizeY_RBV -# Time series -# % gui, DIFF.stat, groupHeading, Time Series -# % gui, DIFF.stat, enum, Time Control, BL45P-EA-DIFF-01:STAT:TS:TSAcquire -# % gui, DIFF.stat, statusbits, Acquiring, BL45P-EA-DIFF-01:STAT:TS:TSAcquiring -# % gui, DIFF.stat, readback, Current Point, BL45P-EA-DIFF-01:STAT:TS:TSCurrentPoint -# % gui, DIFF.stat, demand, Number of Points, BL45P-EA-DIFF-01:STAT:TS:TSNumPoints -# % gui, DIFF.stat, enum, Update, BL45P-EA-DIFF-01:STAT:TS:TSRead.SCAN -# Memory -# % gui, DIFF.stat, groupHeading, Memory -# % gui, DIFF.stat, readback, Max memory, BL45P-EA-DIFF-01:STAT:PoolMaxMem -# % gui, DIFF.stat, readback, Max buffers, BL45P-EA-DIFF-01:STAT:PoolMaxBuffers -# % gui, DIFF.stat, readback, Used memory, BL45P-EA-DIFF-01:STAT:PoolUsedMem -# % gui, DIFF.stat, readback, Allocated buffers, BL45P-EA-DIFF-01:STAT:PoolAllocBuffers -# % gui, DIFF.stat, readback, Free buffers, BL45P-EA-DIFF-01:STAT:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stat,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stat,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stat,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stat,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stat,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stat,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stat,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stat,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:STAT:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:STAT:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:STAT:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:STAT:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:STAT:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:STAT:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:STAT:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:STAT:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:STAT:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:STAT:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.stat,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:STAT:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.stat,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:STAT:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:STAT:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stat,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:STAT:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:STAT:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:STAT:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:STAT:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:STAT:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:STAT:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:STAT:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:STAT:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.stat,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:STAT:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.stat,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:STAT:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:STAT:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:STAT:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:STAT:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:STAT:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:STAT:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:STAT:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:STAT:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stat,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:STAT:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.stat,0,1)NDARRAY_PORT") - field(VAL, "DIFF.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stat,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:STAT:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:STAT:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:STAT:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:STAT:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:STAT:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:STAT:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:STAT:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:STAT:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:STAT:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:STAT:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:STAT:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:STAT:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:STAT:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:STAT:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:STAT:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:STAT:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:STAT:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:STAT:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:STAT:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:STAT:SortSize") - field(OUT, "BL45P-EA-DIFF-01:STAT:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:STAT:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:STAT:AsynIO") -{ - field(PORT, "DIFF.stat") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records contain the basic statistics # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT:ComputeStatistics") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)COMPUTE_STATISTICS") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT:ComputeStatistics_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)COMPUTE_STATISTICS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT:BgdWidth") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)BGD_WIDTH") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:BgdWidth_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)BGD_WIDTH") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:MinValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)MIN_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:MinValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)MIN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:MaxValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)MAX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:MaxValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)MAX_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:MeanValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)MEAN_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:MeanValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)MEAN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:SigmaValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)SIGMA_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:Sigma_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)SIGMA_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:Total") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)TOTAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:Total_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:Net") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)NET") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:Net_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)NET") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:MinX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)MIN_X") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:MinX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:MinY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)MIN_Y") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:MinY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:MaxX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)MAX_X") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:MaxX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)MAX_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:MaxY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)MAX_Y") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:MaxY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)MAX_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether centroid statistics are computed # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT:ComputeCentroid") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)COMPUTE_CENTROID") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT:ComputeCentroid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)COMPUTE_CENTROID") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain the centroid statistics # -################################################################### -record(ao, "BL45P-EA-DIFF-01:STAT:CentroidThreshold") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)CENTROID_THRESHOLD") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:CentroidThreshold_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)CENTROID_THRESHOLD") - field(VAL, "0") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:CentroidTotal") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)CENTROID_TOTAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:CentroidTotal_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)CENTROID_TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:CentroidX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)CENTROIDX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:CentroidX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)CENTROIDX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:CentroidY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)CENTROIDY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:CentroidY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)CENTROIDY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:SigmaX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)SIGMAX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:SigmaX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)SIGMAX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:SigmaY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)SIGMAY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:SigmaY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)SIGMAY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:SigmaXY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)SIGMAXY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:SigmaXY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)SIGMAXY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:SkewX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)SKEWX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:SkewX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)SKEWX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:SkewY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)SKEWY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:SkewY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)SKEWY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:KurtosisX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)KURTOSISX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:KurtosisX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)KURTOSISX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:KurtosisY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)KURTOSISY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:KurtosisY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)KURTOSISY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:Eccentricity") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)ECCENTRICITY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:Eccentricity_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)ECCENTRICITY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:Orientation") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)ORIENTATION_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:Orientation_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)ORIENTATION_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control time series # -################################################################### -record(waveform, "BL45P-EA-DIFF-01:STAT:TSMinValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,0,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSMinX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,1,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSMinY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,2,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSMaxValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,3,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSMaxX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,4,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSMaxY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,5,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSMeanValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,6,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSSigma") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,7,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,8,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSNet") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,9,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSCentroidTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,10,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSCentroidX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,11,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSCentroidY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,12,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSSigmaX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,13,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSSigmaY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,14,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSSigmaXY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,15,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSSkewX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,16,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSSkewY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,17,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSKurtosisX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,18,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSKurtosisY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,19,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSEccentricity") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,20,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSOrientation") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,21,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:TSTimestamp") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat_TS,22,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control profiles # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT:ComputeProfiles") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)COMPUTE_PROFILES") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT:ComputeProfiles_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)COMPUTE_PROFILES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ProfileSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)PROFILE_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:ProfileSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)PROFILE_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT:CursorX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)CURSOR_X") - field(VAL, "256") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:CursorX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)CURSOR_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT:CursorY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)CURSOR_Y") - field(VAL, "256") - field(FLNK, "BL45P-EA-DIFF-01:STAT:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:CursorY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)CURSOR_Y") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:CursorVal") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)CURSOR_VAL") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:ProfileAverageX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat,0,1)PROFILE_AVERAGE_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:ProfileAverageY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat,0,1)PROFILE_AVERAGE_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:ProfileThresholdX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat,0,1)PROFILE_THRESHOLD_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:ProfileThresholdY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat,0,1)PROFILE_THRESHOLD_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:ProfileCentroidX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat,0,1)PROFILE_CENTROID_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:ProfileCentroidY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat,0,1)PROFILE_CENTROID_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:ProfileCursorX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat,0,1)PROFILE_CURSOR_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:ProfileCursorY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat,0,1)PROFILE_CURSOR_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These are used to define the histogram # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT:ComputeHistogram") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)COMPUTE_HISTOGRAM") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT:ComputeHistogram_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)COMPUTE_HISTOGRAM") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT:HistSize") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)HIST_SIZE") - field(VAL, "256") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:HistSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)HIST_SIZE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:HistMin") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)HIST_MIN") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:HistMin_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)HIST_MIN") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:HistMax") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)HIST_MAX") - field(VAL, "255") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:HistMax_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)HIST_MAX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT:HistBelow") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)HIST_BELOW") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:HistBelow_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)HIST_BELOW") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT:HistAbove") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stat,0,1)HIST_ABOVE") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:HistAbove_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stat,0,1)HIST_ABOVE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT:HistEntropy") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stat,0,1)HIST_ENTROPY") -} - -record(ai, "BL45P-EA-DIFF-01:STAT:HistEntropy_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stat,0,1)HIST_ENTROPY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:Histogram_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat,0,1)HIST_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT:HistogramX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stat,0,1)HIST_X_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records set the HOPR and LOPR values for the cursor # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:STAT:MaxSizeX") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:ProfileSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:STAT:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:STAT:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:STAT:CursorX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:STAT:MaxSizeY") -{ - field(INP, "BL45P-EA-DIFF-01:STAT:ProfileSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:STAT:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:STAT:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:STAT:CursorY.HOPR NPP") -} - -################################################################### -# These records reset the statistics # -################################################################### -record(sseq, "BL45P-EA-DIFF-01:STAT:Reset") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT:MinValue PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT:MaxValue PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT:MeanValue PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT:SigmaValue PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT:Total PP MS") - field(LNK6, "BL45P-EA-DIFF-01:STAT:Net PP MS") - field(LNK7, "BL45P-EA-DIFF-01:STAT:MinX PP MS") - field(LNK8, "BL45P-EA-DIFF-01:STAT:MinY PP MS") - field(LNK9, "BL45P-EA-DIFF-01:STAT:MaxX PP MS") - field(LNKA, "BL45P-EA-DIFF-01:STAT:MaxY PP MS") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Reset1") -} - -record(sseq, "BL45P-EA-DIFF-01:STAT:Reset1") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT:CentroidX PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT:CentroidY PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT:SigmaX PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT:SigmaY PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT:SigmaXY PP MS") - field(LNK6, "BL45P-EA-DIFF-01:STAT:CentroidTotal PP MS") - field(LNK7, "BL45P-EA-DIFF-01:STAT:SkewX PP MS") - field(LNK8, "BL45P-EA-DIFF-01:STAT:SkewY PP MS") - field(LNK9, "BL45P-EA-DIFF-01:STAT:KurtosisX PP MS") - field(LNKA, "BL45P-EA-DIFF-01:STAT:KurtosisY PP MS") - field(FLNK, "BL45P-EA-DIFF-01:STAT:Reset2") -} - -record(sseq, "BL45P-EA-DIFF-01:STAT:Reset2") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT:Eccentricity PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT:Orientation PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT:HistBelow PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT:HistAbove PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT:HistEntropy PP MS") -} - -#=================================================================# -# Template file: NDStats.template - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, NCHANS, Number of channels -# % macro, XSIZE, x size -# % macro, YSIZE, y size -# % macro, HIST_SIZE, hist size -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Timeout -# % macro, TS_PORT, TS port - -# This associates the template with an edm screen -# % gui, DIFF.stats.stat1, edmtab, NDStats.edl, P=BL45P-EA-DIFF-01,R=:STAT1: - -# This associates a BOY screen with the template -# % gui, DIFF.stats.stat1, boydetail,ADApp_opi/dls/stats_detail.opi, P=BL45P-EA-DIFF-01, R=:STAT1:, DESC=Statistics -# % gui, DIFF.stats.stat1, boyembed, ADApp_opi/dls/stats_embed_box.opi, P=BL45P-EA-DIFF-01, R=:STAT1:, DESC=Statistics -# % gui, DIFF.stats.stat1, boyembed, ADApp_opi/dls/stats_embed.opi, P=BL45P-EA-DIFF-01, R=:STAT1:, DESC=Statistics - - -# % gui, DIFF.stats.stat1, groupHeading, Info -# % gui, DIFF.stats.stat1, readback, Port name, BL45P-EA-DIFF-01:STAT1:PortName_RBV -# % gui, DIFF.stats.stat1, readback, Plugin type, BL45P-EA-DIFF-01:STAT1:PluginType_RBV -# Input -# % gui, DIFF.stats.stat1, demandString, Input, BL45P-EA-DIFF-01:STAT1:NDArrayPort -# % gui, DIFF.stats.stat1, readback, Input, BL45P-EA-DIFF-01:STAT1:NDArrayPort_RBV - -# % gui, DIFF.stats.stat1, groupHeading, Callback -# % gui, DIFF.stats.stat1, enum, Callbacks, BL45P-EA-DIFF-01:STAT1:EnableCallbacks -# % gui, DIFF.stats.stat1, statusbits, Callbacks, BL45P-EA-DIFF-01:STAT1:EnableCallbacks_RBV -# % gui, DIFF.stats.stat1, demand, Min Callback Time, BL45P-EA-DIFF-01:STAT1:MinCallbackTime -# % gui, DIFF.stats.stat1, readback, Min Callback Time, BL45P-EA-DIFF-01:STAT1:MinCallbackTime_RBV -# % gui, DIFF.stats.stat1, enum, Block Callbacks, BL45P-EA-DIFF-01:STAT1:BlockingCallbacks -# % gui, DIFF.stats.stat1, statusbits, Block Callbacks, BL45P-EA-DIFF-01:STAT1:BlockingCallbacks_RBV - -# % gui, DIFF.stats.stat1, groupHeading, Counters -# % gui, DIFF.stats.stat1, demand, Array Counter, BL45P-EA-DIFF-01:STAT1:ArrayCounter -# % gui, DIFF.stats.stat1, readback, Array Counter, BL45P-EA-DIFF-01:STAT1:ArrayCounter_RBV -# % gui, DIFF.stats.stat1, readback, Array Rate (fps), BL45P-EA-DIFF-01:STAT1:ArrayRate_RBV -# % gui, DIFF.stats.stat1, readback, Queue Use, BL45P-EA-DIFF-01:STAT1:QueueUse -# % gui, DIFF.stats.stat1, readback, Queue Size, BL45P-EA-DIFF-01:STAT1:QueueSize -# % gui, DIFF.stats.stat1, demand, Dropped Arrays, BL45P-EA-DIFF-01:STAT1:DroppedArrays -# % gui, DIFF.stats.stat1, readback, Dropped Arrays, BL45P-EA-DIFF-01:STAT1:DroppedArrays_RBV - -# % gui, DIFF.stats.stat1, groupHeading, Array Settings -# % gui, DIFF.stats.stat1, readback, Num Dimensions, BL45P-EA-DIFF-01:STAT1:NDimensions_RBV -# % gui, DIFF.stats.stat1, readback, Dim 0 Size, BL45P-EA-DIFF-01:STAT1:ArraySize0_RBV -# % gui, DIFF.stats.stat1, readback, Dim 1 Size, BL45P-EA-DIFF-01:STAT1:ArraySize1_RBV -# % gui, DIFF.stats.stat1, readback, Dim 2 Size, BL45P-EA-DIFF-01:STAT1:ArraySize2_RBV -# % gui, DIFF.stats.stat1, readback, Input Data Type, BL45P-EA-DIFF-01:STAT1:DataType_RBV -# % gui, DIFF.stats.stat1, readback, Colour Mode, BL45P-EA-DIFF-01:STAT1:ColorMode_RBV -# % gui, DIFF.stats.stat1, readback, Bayer Pattern, BL45P-EA-DIFF-01:STAT1:BayerPattern_RBV -# % gui, DIFF.stats.stat1, readback, Unique id, BL45P-EA-DIFF-01:STAT1:UniqueId_RBV -# % gui, DIFF.stats.stat1, readback, Timestamp, BL45P-EA-DIFF-01:STAT1:TimeStamp_RBV - -# Output -# % gui, DIFF.stats.stat1, groupHeading, Output -# % gui, DIFF.stats.stat1, demand, Name, BL45P-EA-DIFF-01:STAT1:Name -# % gui, DIFF.stats.stat1, enum, Out data type, BL45P-EA-DIFF-01:STAT1:DataTypeOut -# % gui, DIFF.stats.stat1, readback, Out data type, BL45P-EA-DIFF-01:STAT1:DataTypeOut_RBV -# % gui, DIFF.stats.stat1, demand, Attributes file, BL45P-EA-DIFF-01:STAT1:NDAttributesFile - -# Statistics -# % gui, DIFF.stats.stat1, groupHeading, Statistics -# % gui, DIFF.stats.stat1, enum, Compute Statistics, BL45P-EA-DIFF-01:STAT1:ComputeStatistics -# % gui, DIFF.stats.stat1, statusbits, Compute Statistics, BL45P-EA-DIFF-01:STAT1:ComputeStatistics_RBV -# % gui, DIFF.stats.stat1, demand, Background Width, BL45P-EA-DIFF-01:STAT1:BgdWidth -# % gui, DIFF.stats.stat1, readback, Background Width, BL45P-EA-DIFF-01:STAT1:BgdWidth_RBV -# % gui, DIFF.stats.stat1, readback, Minimum Value, BL45P-EA-DIFF-01:STAT1:MinValue_RBV -# % gui, DIFF.stats.stat1, readback, Minimum X, BL45P-EA-DIFF-01:STAT1:MinX_RBV -# % gui, DIFF.stats.stat1, readback, Minimum Y, BL45P-EA-DIFF-01:STAT1:MinY_RBV -# % gui, DIFF.stats.stat1, readback, Maximum Value, BL45P-EA-DIFF-01:STAT1:MaxValue_RBV -# % gui, DIFF.stats.stat1, readback, Maximum X, BL45P-EA-DIFF-01:STAT1:MaxX_RBV -# % gui, DIFF.stats.stat1, readback, Maximum Y, BL45P-EA-DIFF-01:STAT1:MaxY_RBV -# % gui, DIFF.stats.stat1, readback, Mean Value, BL45P-EA-DIFF-01:STAT1:MeanValue_RBV -# % gui, DIFF.stats.stat1, readback, Total, BL45P-EA-DIFF-01:STAT1:Total_RBV -# % gui, DIFF.stats.stat1, readback, Sigma, BL45P-EA-DIFF-01:STAT1:Sigma_RBV -# % gui, DIFF.stats.stat1, readback, Net, BL45P-EA-DIFF-01:STAT1:Net_RBV -# Centroid -# % gui, DIFF.stats.stat1, groupHeading, Centroid -# % gui, DIFF.stats.stat1, enum, Compute Centroid, BL45P-EA-DIFF-01:STAT1:ComputeCentroid -# % gui, DIFF.stats.stat1, statusbits, Compute Centroid, BL45P-EA-DIFF-01:STAT1:ComputeCentroid_RBV -# % gui, DIFF.stats.stat1, demand, Threshold, BL45P-EA-DIFF-01:STAT1:CentroidThreshold -# % gui, DIFF.stats.stat1, readback, Threshold, BL45P-EA-DIFF-01:STAT1:CentroidThreshold_RBV -# % gui, DIFF.stats.stat1, readback, X, BL45P-EA-DIFF-01:STAT1:CentroidX_RBV -# % gui, DIFF.stats.stat1, readback, Sigma X, BL45P-EA-DIFF-01:STAT1:SigmaX_RBV -# % gui, DIFF.stats.stat1, readback, Y, BL45P-EA-DIFF-01:STAT1:CentroidY_RBV -# % gui, DIFF.stats.stat1, readback, Sigma Y, BL45P-EA-DIFF-01:STAT1:SigmaY_RBV -# % gui, DIFF.stats.stat1, readback, Sigma XY, BL45P-EA-DIFF-01:STAT1:SigmaXY_RBV -# Histogram -# % gui, DIFF.stats.stat1, groupHeading, Histogram -# % gui, DIFF.stats.stat1, enum, Compute Histogram, BL45P-EA-DIFF-01:STAT1:ComputeHistogram -# % gui, DIFF.stats.stat1, statusbits, Compute Histogram, BL45P-EA-DIFF-01:STAT1:ComputeHistogram_RBV -# % gui, DIFF.stats.stat1, demand, Histogram Size, BL45P-EA-DIFF-01:STAT1:HistSize -# % gui, DIFF.stats.stat1, readback, Histogram Size, BL45P-EA-DIFF-01:STAT1:HistSize_RBV -# % gui, DIFF.stats.stat1, demand, Histogram Min, BL45P-EA-DIFF-01:STAT1:HistMin -# % gui, DIFF.stats.stat1, readback, Histogram Min, BL45P-EA-DIFF-01:STAT1:HistMin_RBV -# % gui, DIFF.stats.stat1, demand, Histogram Max, BL45P-EA-DIFF-01:STAT1:HistMax -# % gui, DIFF.stats.stat1, readback, Histogram Max, BL45P-EA-DIFF-01:STAT1:HistMax_RBV -# % gui, DIFF.stats.stat1, readback, Histogram Entropy, BL45P-EA-DIFF-01:STAT1:HistEntropy_RBV -# Profiles -# % gui, DIFF.stats.stat1, groupHeading, Profiles -# % gui, DIFF.stats.stat1, enum, Compute Profiles, BL45P-EA-DIFF-01:STAT1:ComputeProfiles -# % gui, DIFF.stats.stat1, statusbits, Compute Profiles, BL45P-EA-DIFF-01:STAT1:ComputeProfiles_RBV -# % gui, DIFF.stats.stat1, demand, Cursor X, BL45P-EA-DIFF-01:STAT1:CursorX -# % gui, DIFF.stats.stat1, readback, Cursor X, BL45P-EA-DIFF-01:STAT1:CursorX_RBV -# % gui, DIFF.stats.stat1, demand, Cursor Y, BL45P-EA-DIFF-01:STAT1:CursorY -# % gui, DIFF.stats.stat1, readback, Cursor Y, BL45P-EA-DIFF-01:STAT1:CursorY_RBV -# % gui, DIFF.stats.stat1, readback, Size X, BL45P-EA-DIFF-01:STAT1:ProfileSizeX_RBV -# % gui, DIFF.stats.stat1, readback, Size Y, BL45P-EA-DIFF-01:STAT1:ProfileSizeY_RBV -# Time series -# % gui, DIFF.stats.stat1, groupHeading, Time Series -# % gui, DIFF.stats.stat1, enum, Time Control, BL45P-EA-DIFF-01:STAT1:TS:TSAcquire -# % gui, DIFF.stats.stat1, statusbits, Acquiring, BL45P-EA-DIFF-01:STAT1:TS:TSAcquiring -# % gui, DIFF.stats.stat1, readback, Current Point, BL45P-EA-DIFF-01:STAT1:TS:TSCurrentPoint -# % gui, DIFF.stats.stat1, demand, Number of Points, BL45P-EA-DIFF-01:STAT1:TS:TSNumPoints -# % gui, DIFF.stats.stat1, enum, Update, BL45P-EA-DIFF-01:STAT1:TS:TSRead.SCAN -# Memory -# % gui, DIFF.stats.stat1, groupHeading, Memory -# % gui, DIFF.stats.stat1, readback, Max memory, BL45P-EA-DIFF-01:STAT1:PoolMaxMem -# % gui, DIFF.stats.stat1, readback, Max buffers, BL45P-EA-DIFF-01:STAT1:PoolMaxBuffers -# % gui, DIFF.stats.stat1, readback, Used memory, BL45P-EA-DIFF-01:STAT1:PoolUsedMem -# % gui, DIFF.stats.stat1, readback, Allocated buffers, BL45P-EA-DIFF-01:STAT1:PoolAllocBuffers -# % gui, DIFF.stats.stat1, readback, Free buffers, BL45P-EA-DIFF-01:STAT1:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT1:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT1:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat1,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT1:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat1,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT1:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat1,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT1:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat1,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT1:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat1,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT1:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat1,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT1:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat1,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:STAT1:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:STAT1:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT1:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT1:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:STAT1:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:STAT1:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:STAT1:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT1:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:STAT1:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:STAT1:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:STAT1:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:STAT1:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:STAT1:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:STAT1:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT1:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:STAT1:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:STAT1:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat1,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:STAT1:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT1:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:STAT1:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT1:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:STAT1:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:STAT1:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:STAT1:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT1:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:STAT1:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:STAT1:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT1:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT1:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:STAT1:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:STAT1:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:STAT1:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:STAT1:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:STAT1:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT1:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:STAT1:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:STAT1:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT1:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat1,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:STAT1:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)NDARRAY_PORT") - field(VAL, "DIFF.rois.roi1") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT1:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat1,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT1:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT1:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT1:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:STAT1:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT1:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT1:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:STAT1:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:STAT1:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT1:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:STAT1:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT1:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT1:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT1:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:STAT1:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT1:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT1:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:STAT1:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT1:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:STAT1:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:STAT1:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT1:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:STAT1:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:STAT1:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT1:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:STAT1:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:STAT1:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:STAT1:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:STAT1:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:STAT1:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT1:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT1:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT1:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:STAT1:SortSize") - field(OUT, "BL45P-EA-DIFF-01:STAT1:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:STAT1:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT1:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:STAT1:AsynIO") -{ - field(PORT, "DIFF.stats.stat1") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records contain the basic statistics # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT1:ComputeStatistics") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)COMPUTE_STATISTICS") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT1:ComputeStatistics_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)COMPUTE_STATISTICS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT1:BgdWidth") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)BGD_WIDTH") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:BgdWidth_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)BGD_WIDTH") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:MinValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)MIN_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:MinValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)MIN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:MaxValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)MAX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:MaxValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)MAX_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:MeanValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)MEAN_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:MeanValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)MEAN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:SigmaValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)SIGMA_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:Sigma_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)SIGMA_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:Total") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)TOTAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:Total_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:Net") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)NET") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:Net_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)NET") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:MinX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)MIN_X") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:MinX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:MinY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)MIN_Y") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:MinY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:MaxX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)MAX_X") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:MaxX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)MAX_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:MaxY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)MAX_Y") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:MaxY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)MAX_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether centroid statistics are computed # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT1:ComputeCentroid") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)COMPUTE_CENTROID") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT1:ComputeCentroid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)COMPUTE_CENTROID") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain the centroid statistics # -################################################################### -record(ao, "BL45P-EA-DIFF-01:STAT1:CentroidThreshold") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)CENTROID_THRESHOLD") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:CentroidThreshold_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)CENTROID_THRESHOLD") - field(VAL, "0") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:CentroidTotal") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)CENTROID_TOTAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:CentroidTotal_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)CENTROID_TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:CentroidX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)CENTROIDX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:CentroidX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)CENTROIDX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:CentroidY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)CENTROIDY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:CentroidY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)CENTROIDY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:SigmaX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)SIGMAX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:SigmaX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)SIGMAX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:SigmaY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)SIGMAY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:SigmaY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)SIGMAY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:SigmaXY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)SIGMAXY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:SigmaXY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)SIGMAXY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:SkewX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)SKEWX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:SkewX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)SKEWX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:SkewY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)SKEWY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:SkewY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)SKEWY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:KurtosisX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)KURTOSISX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:KurtosisX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)KURTOSISX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:KurtosisY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)KURTOSISY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:KurtosisY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)KURTOSISY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:Eccentricity") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)ECCENTRICITY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:Eccentricity_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ECCENTRICITY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:Orientation") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)ORIENTATION_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:Orientation_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)ORIENTATION_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control time series # -################################################################### -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSMinValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,0,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSMinX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,1,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSMinY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,2,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSMaxValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,3,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSMaxX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,4,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSMaxY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,5,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSMeanValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,6,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSSigma") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,7,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,8,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSNet") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,9,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSCentroidTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,10,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSCentroidX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,11,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSCentroidY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,12,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSSigmaX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,13,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSSigmaY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,14,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSSigmaXY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,15,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSSkewX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,16,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSSkewY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,17,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSKurtosisX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,18,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSKurtosisY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,19,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSEccentricity") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,20,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSOrientation") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,21,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:TSTimestamp") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1_TS,22,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control profiles # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT1:ComputeProfiles") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)COMPUTE_PROFILES") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT1:ComputeProfiles_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)COMPUTE_PROFILES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ProfileSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)PROFILE_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:ProfileSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)PROFILE_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT1:CursorX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)CURSOR_X") - field(VAL, "256") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:CursorX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)CURSOR_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT1:CursorY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)CURSOR_Y") - field(VAL, "256") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:CursorY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)CURSOR_Y") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:CursorVal") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)CURSOR_VAL") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:ProfileAverageX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1,0,1)PROFILE_AVERAGE_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:ProfileAverageY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1,0,1)PROFILE_AVERAGE_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:ProfileThresholdX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1,0,1)PROFILE_THRESHOLD_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:ProfileThresholdY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1,0,1)PROFILE_THRESHOLD_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:ProfileCentroidX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1,0,1)PROFILE_CENTROID_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:ProfileCentroidY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1,0,1)PROFILE_CENTROID_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:ProfileCursorX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1,0,1)PROFILE_CURSOR_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:ProfileCursorY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1,0,1)PROFILE_CURSOR_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These are used to define the histogram # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT1:ComputeHistogram") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)COMPUTE_HISTOGRAM") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT1:ComputeHistogram_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)COMPUTE_HISTOGRAM") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT1:HistSize") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)HIST_SIZE") - field(VAL, "256") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:HistSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)HIST_SIZE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:HistMin") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)HIST_MIN") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:HistMin_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)HIST_MIN") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:HistMax") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)HIST_MAX") - field(VAL, "255") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:HistMax_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)HIST_MAX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT1:HistBelow") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)HIST_BELOW") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:HistBelow_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)HIST_BELOW") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT1:HistAbove") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)HIST_ABOVE") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:HistAbove_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat1,0,1)HIST_ABOVE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT1:HistEntropy") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat1,0,1)HIST_ENTROPY") -} - -record(ai, "BL45P-EA-DIFF-01:STAT1:HistEntropy_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat1,0,1)HIST_ENTROPY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:Histogram_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1,0,1)HIST_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT1:HistogramX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat1,0,1)HIST_X_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records set the HOPR and LOPR values for the cursor # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:STAT1:MaxSizeX") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:ProfileSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:STAT1:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT1:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:STAT1:CursorX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:STAT1:MaxSizeY") -{ - field(INP, "BL45P-EA-DIFF-01:STAT1:ProfileSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:STAT1:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT1:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:STAT1:CursorY.HOPR NPP") -} - -################################################################### -# These records reset the statistics # -################################################################### -record(sseq, "BL45P-EA-DIFF-01:STAT1:Reset") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT1:MinValue PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT1:MaxValue PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT1:MeanValue PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT1:SigmaValue PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT1:Total PP MS") - field(LNK6, "BL45P-EA-DIFF-01:STAT1:Net PP MS") - field(LNK7, "BL45P-EA-DIFF-01:STAT1:MinX PP MS") - field(LNK8, "BL45P-EA-DIFF-01:STAT1:MinY PP MS") - field(LNK9, "BL45P-EA-DIFF-01:STAT1:MaxX PP MS") - field(LNKA, "BL45P-EA-DIFF-01:STAT1:MaxY PP MS") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Reset1") -} - -record(sseq, "BL45P-EA-DIFF-01:STAT1:Reset1") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT1:CentroidX PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT1:CentroidY PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT1:SigmaX PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT1:SigmaY PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT1:SigmaXY PP MS") - field(LNK6, "BL45P-EA-DIFF-01:STAT1:CentroidTotal PP MS") - field(LNK7, "BL45P-EA-DIFF-01:STAT1:SkewX PP MS") - field(LNK8, "BL45P-EA-DIFF-01:STAT1:SkewY PP MS") - field(LNK9, "BL45P-EA-DIFF-01:STAT1:KurtosisX PP MS") - field(LNKA, "BL45P-EA-DIFF-01:STAT1:KurtosisY PP MS") - field(FLNK, "BL45P-EA-DIFF-01:STAT1:Reset2") -} - -record(sseq, "BL45P-EA-DIFF-01:STAT1:Reset2") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT1:Eccentricity PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT1:Orientation PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT1:HistBelow PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT1:HistAbove PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT1:HistEntropy PP MS") -} - -#=================================================================# -# Template file: NDStats.template - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, NCHANS, Number of channels -# % macro, XSIZE, x size -# % macro, YSIZE, y size -# % macro, HIST_SIZE, hist size -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Timeout -# % macro, TS_PORT, TS port - -# This associates the template with an edm screen -# % gui, DIFF.stats.stat2, edmtab, NDStats.edl, P=BL45P-EA-DIFF-01,R=:STAT2: - -# This associates a BOY screen with the template -# % gui, DIFF.stats.stat2, boydetail,ADApp_opi/dls/stats_detail.opi, P=BL45P-EA-DIFF-01, R=:STAT2:, DESC=Statistics -# % gui, DIFF.stats.stat2, boyembed, ADApp_opi/dls/stats_embed_box.opi, P=BL45P-EA-DIFF-01, R=:STAT2:, DESC=Statistics -# % gui, DIFF.stats.stat2, boyembed, ADApp_opi/dls/stats_embed.opi, P=BL45P-EA-DIFF-01, R=:STAT2:, DESC=Statistics - - -# % gui, DIFF.stats.stat2, groupHeading, Info -# % gui, DIFF.stats.stat2, readback, Port name, BL45P-EA-DIFF-01:STAT2:PortName_RBV -# % gui, DIFF.stats.stat2, readback, Plugin type, BL45P-EA-DIFF-01:STAT2:PluginType_RBV -# Input -# % gui, DIFF.stats.stat2, demandString, Input, BL45P-EA-DIFF-01:STAT2:NDArrayPort -# % gui, DIFF.stats.stat2, readback, Input, BL45P-EA-DIFF-01:STAT2:NDArrayPort_RBV - -# % gui, DIFF.stats.stat2, groupHeading, Callback -# % gui, DIFF.stats.stat2, enum, Callbacks, BL45P-EA-DIFF-01:STAT2:EnableCallbacks -# % gui, DIFF.stats.stat2, statusbits, Callbacks, BL45P-EA-DIFF-01:STAT2:EnableCallbacks_RBV -# % gui, DIFF.stats.stat2, demand, Min Callback Time, BL45P-EA-DIFF-01:STAT2:MinCallbackTime -# % gui, DIFF.stats.stat2, readback, Min Callback Time, BL45P-EA-DIFF-01:STAT2:MinCallbackTime_RBV -# % gui, DIFF.stats.stat2, enum, Block Callbacks, BL45P-EA-DIFF-01:STAT2:BlockingCallbacks -# % gui, DIFF.stats.stat2, statusbits, Block Callbacks, BL45P-EA-DIFF-01:STAT2:BlockingCallbacks_RBV - -# % gui, DIFF.stats.stat2, groupHeading, Counters -# % gui, DIFF.stats.stat2, demand, Array Counter, BL45P-EA-DIFF-01:STAT2:ArrayCounter -# % gui, DIFF.stats.stat2, readback, Array Counter, BL45P-EA-DIFF-01:STAT2:ArrayCounter_RBV -# % gui, DIFF.stats.stat2, readback, Array Rate (fps), BL45P-EA-DIFF-01:STAT2:ArrayRate_RBV -# % gui, DIFF.stats.stat2, readback, Queue Use, BL45P-EA-DIFF-01:STAT2:QueueUse -# % gui, DIFF.stats.stat2, readback, Queue Size, BL45P-EA-DIFF-01:STAT2:QueueSize -# % gui, DIFF.stats.stat2, demand, Dropped Arrays, BL45P-EA-DIFF-01:STAT2:DroppedArrays -# % gui, DIFF.stats.stat2, readback, Dropped Arrays, BL45P-EA-DIFF-01:STAT2:DroppedArrays_RBV - -# % gui, DIFF.stats.stat2, groupHeading, Array Settings -# % gui, DIFF.stats.stat2, readback, Num Dimensions, BL45P-EA-DIFF-01:STAT2:NDimensions_RBV -# % gui, DIFF.stats.stat2, readback, Dim 0 Size, BL45P-EA-DIFF-01:STAT2:ArraySize0_RBV -# % gui, DIFF.stats.stat2, readback, Dim 1 Size, BL45P-EA-DIFF-01:STAT2:ArraySize1_RBV -# % gui, DIFF.stats.stat2, readback, Dim 2 Size, BL45P-EA-DIFF-01:STAT2:ArraySize2_RBV -# % gui, DIFF.stats.stat2, readback, Input Data Type, BL45P-EA-DIFF-01:STAT2:DataType_RBV -# % gui, DIFF.stats.stat2, readback, Colour Mode, BL45P-EA-DIFF-01:STAT2:ColorMode_RBV -# % gui, DIFF.stats.stat2, readback, Bayer Pattern, BL45P-EA-DIFF-01:STAT2:BayerPattern_RBV -# % gui, DIFF.stats.stat2, readback, Unique id, BL45P-EA-DIFF-01:STAT2:UniqueId_RBV -# % gui, DIFF.stats.stat2, readback, Timestamp, BL45P-EA-DIFF-01:STAT2:TimeStamp_RBV - -# Output -# % gui, DIFF.stats.stat2, groupHeading, Output -# % gui, DIFF.stats.stat2, demand, Name, BL45P-EA-DIFF-01:STAT2:Name -# % gui, DIFF.stats.stat2, enum, Out data type, BL45P-EA-DIFF-01:STAT2:DataTypeOut -# % gui, DIFF.stats.stat2, readback, Out data type, BL45P-EA-DIFF-01:STAT2:DataTypeOut_RBV -# % gui, DIFF.stats.stat2, demand, Attributes file, BL45P-EA-DIFF-01:STAT2:NDAttributesFile - -# Statistics -# % gui, DIFF.stats.stat2, groupHeading, Statistics -# % gui, DIFF.stats.stat2, enum, Compute Statistics, BL45P-EA-DIFF-01:STAT2:ComputeStatistics -# % gui, DIFF.stats.stat2, statusbits, Compute Statistics, BL45P-EA-DIFF-01:STAT2:ComputeStatistics_RBV -# % gui, DIFF.stats.stat2, demand, Background Width, BL45P-EA-DIFF-01:STAT2:BgdWidth -# % gui, DIFF.stats.stat2, readback, Background Width, BL45P-EA-DIFF-01:STAT2:BgdWidth_RBV -# % gui, DIFF.stats.stat2, readback, Minimum Value, BL45P-EA-DIFF-01:STAT2:MinValue_RBV -# % gui, DIFF.stats.stat2, readback, Minimum X, BL45P-EA-DIFF-01:STAT2:MinX_RBV -# % gui, DIFF.stats.stat2, readback, Minimum Y, BL45P-EA-DIFF-01:STAT2:MinY_RBV -# % gui, DIFF.stats.stat2, readback, Maximum Value, BL45P-EA-DIFF-01:STAT2:MaxValue_RBV -# % gui, DIFF.stats.stat2, readback, Maximum X, BL45P-EA-DIFF-01:STAT2:MaxX_RBV -# % gui, DIFF.stats.stat2, readback, Maximum Y, BL45P-EA-DIFF-01:STAT2:MaxY_RBV -# % gui, DIFF.stats.stat2, readback, Mean Value, BL45P-EA-DIFF-01:STAT2:MeanValue_RBV -# % gui, DIFF.stats.stat2, readback, Total, BL45P-EA-DIFF-01:STAT2:Total_RBV -# % gui, DIFF.stats.stat2, readback, Sigma, BL45P-EA-DIFF-01:STAT2:Sigma_RBV -# % gui, DIFF.stats.stat2, readback, Net, BL45P-EA-DIFF-01:STAT2:Net_RBV -# Centroid -# % gui, DIFF.stats.stat2, groupHeading, Centroid -# % gui, DIFF.stats.stat2, enum, Compute Centroid, BL45P-EA-DIFF-01:STAT2:ComputeCentroid -# % gui, DIFF.stats.stat2, statusbits, Compute Centroid, BL45P-EA-DIFF-01:STAT2:ComputeCentroid_RBV -# % gui, DIFF.stats.stat2, demand, Threshold, BL45P-EA-DIFF-01:STAT2:CentroidThreshold -# % gui, DIFF.stats.stat2, readback, Threshold, BL45P-EA-DIFF-01:STAT2:CentroidThreshold_RBV -# % gui, DIFF.stats.stat2, readback, X, BL45P-EA-DIFF-01:STAT2:CentroidX_RBV -# % gui, DIFF.stats.stat2, readback, Sigma X, BL45P-EA-DIFF-01:STAT2:SigmaX_RBV -# % gui, DIFF.stats.stat2, readback, Y, BL45P-EA-DIFF-01:STAT2:CentroidY_RBV -# % gui, DIFF.stats.stat2, readback, Sigma Y, BL45P-EA-DIFF-01:STAT2:SigmaY_RBV -# % gui, DIFF.stats.stat2, readback, Sigma XY, BL45P-EA-DIFF-01:STAT2:SigmaXY_RBV -# Histogram -# % gui, DIFF.stats.stat2, groupHeading, Histogram -# % gui, DIFF.stats.stat2, enum, Compute Histogram, BL45P-EA-DIFF-01:STAT2:ComputeHistogram -# % gui, DIFF.stats.stat2, statusbits, Compute Histogram, BL45P-EA-DIFF-01:STAT2:ComputeHistogram_RBV -# % gui, DIFF.stats.stat2, demand, Histogram Size, BL45P-EA-DIFF-01:STAT2:HistSize -# % gui, DIFF.stats.stat2, readback, Histogram Size, BL45P-EA-DIFF-01:STAT2:HistSize_RBV -# % gui, DIFF.stats.stat2, demand, Histogram Min, BL45P-EA-DIFF-01:STAT2:HistMin -# % gui, DIFF.stats.stat2, readback, Histogram Min, BL45P-EA-DIFF-01:STAT2:HistMin_RBV -# % gui, DIFF.stats.stat2, demand, Histogram Max, BL45P-EA-DIFF-01:STAT2:HistMax -# % gui, DIFF.stats.stat2, readback, Histogram Max, BL45P-EA-DIFF-01:STAT2:HistMax_RBV -# % gui, DIFF.stats.stat2, readback, Histogram Entropy, BL45P-EA-DIFF-01:STAT2:HistEntropy_RBV -# Profiles -# % gui, DIFF.stats.stat2, groupHeading, Profiles -# % gui, DIFF.stats.stat2, enum, Compute Profiles, BL45P-EA-DIFF-01:STAT2:ComputeProfiles -# % gui, DIFF.stats.stat2, statusbits, Compute Profiles, BL45P-EA-DIFF-01:STAT2:ComputeProfiles_RBV -# % gui, DIFF.stats.stat2, demand, Cursor X, BL45P-EA-DIFF-01:STAT2:CursorX -# % gui, DIFF.stats.stat2, readback, Cursor X, BL45P-EA-DIFF-01:STAT2:CursorX_RBV -# % gui, DIFF.stats.stat2, demand, Cursor Y, BL45P-EA-DIFF-01:STAT2:CursorY -# % gui, DIFF.stats.stat2, readback, Cursor Y, BL45P-EA-DIFF-01:STAT2:CursorY_RBV -# % gui, DIFF.stats.stat2, readback, Size X, BL45P-EA-DIFF-01:STAT2:ProfileSizeX_RBV -# % gui, DIFF.stats.stat2, readback, Size Y, BL45P-EA-DIFF-01:STAT2:ProfileSizeY_RBV -# Time series -# % gui, DIFF.stats.stat2, groupHeading, Time Series -# % gui, DIFF.stats.stat2, enum, Time Control, BL45P-EA-DIFF-01:STAT2:TS:TSAcquire -# % gui, DIFF.stats.stat2, statusbits, Acquiring, BL45P-EA-DIFF-01:STAT2:TS:TSAcquiring -# % gui, DIFF.stats.stat2, readback, Current Point, BL45P-EA-DIFF-01:STAT2:TS:TSCurrentPoint -# % gui, DIFF.stats.stat2, demand, Number of Points, BL45P-EA-DIFF-01:STAT2:TS:TSNumPoints -# % gui, DIFF.stats.stat2, enum, Update, BL45P-EA-DIFF-01:STAT2:TS:TSRead.SCAN -# Memory -# % gui, DIFF.stats.stat2, groupHeading, Memory -# % gui, DIFF.stats.stat2, readback, Max memory, BL45P-EA-DIFF-01:STAT2:PoolMaxMem -# % gui, DIFF.stats.stat2, readback, Max buffers, BL45P-EA-DIFF-01:STAT2:PoolMaxBuffers -# % gui, DIFF.stats.stat2, readback, Used memory, BL45P-EA-DIFF-01:STAT2:PoolUsedMem -# % gui, DIFF.stats.stat2, readback, Allocated buffers, BL45P-EA-DIFF-01:STAT2:PoolAllocBuffers -# % gui, DIFF.stats.stat2, readback, Free buffers, BL45P-EA-DIFF-01:STAT2:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT2:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT2:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat2,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT2:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat2,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT2:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat2,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT2:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat2,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT2:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat2,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT2:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat2,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT2:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat2,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:STAT2:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:STAT2:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT2:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT2:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:STAT2:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:STAT2:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:STAT2:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT2:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:STAT2:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:STAT2:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:STAT2:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:STAT2:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:STAT2:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:STAT2:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT2:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:STAT2:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:STAT2:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat2,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:STAT2:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT2:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:STAT2:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT2:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:STAT2:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:STAT2:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:STAT2:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT2:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:STAT2:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:STAT2:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT2:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT2:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:STAT2:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:STAT2:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:STAT2:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:STAT2:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:STAT2:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT2:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:STAT2:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:STAT2:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT2:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat2,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:STAT2:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)NDARRAY_PORT") - field(VAL, "DIFF.rois.roi1") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT2:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat2,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT2:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT2:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT2:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:STAT2:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT2:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT2:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:STAT2:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:STAT2:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT2:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:STAT2:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT2:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT2:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT2:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:STAT2:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT2:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT2:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:STAT2:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT2:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:STAT2:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:STAT2:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT2:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:STAT2:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:STAT2:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT2:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:STAT2:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:STAT2:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:STAT2:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:STAT2:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:STAT2:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT2:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT2:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT2:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:STAT2:SortSize") - field(OUT, "BL45P-EA-DIFF-01:STAT2:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:STAT2:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT2:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:STAT2:AsynIO") -{ - field(PORT, "DIFF.stats.stat2") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records contain the basic statistics # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT2:ComputeStatistics") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)COMPUTE_STATISTICS") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT2:ComputeStatistics_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)COMPUTE_STATISTICS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT2:BgdWidth") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)BGD_WIDTH") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:BgdWidth_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)BGD_WIDTH") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:MinValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)MIN_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:MinValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)MIN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:MaxValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)MAX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:MaxValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)MAX_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:MeanValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)MEAN_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:MeanValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)MEAN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:SigmaValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)SIGMA_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:Sigma_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)SIGMA_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:Total") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)TOTAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:Total_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:Net") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)NET") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:Net_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)NET") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:MinX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)MIN_X") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:MinX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:MinY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)MIN_Y") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:MinY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:MaxX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)MAX_X") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:MaxX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)MAX_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:MaxY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)MAX_Y") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:MaxY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)MAX_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether centroid statistics are computed # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT2:ComputeCentroid") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)COMPUTE_CENTROID") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT2:ComputeCentroid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)COMPUTE_CENTROID") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain the centroid statistics # -################################################################### -record(ao, "BL45P-EA-DIFF-01:STAT2:CentroidThreshold") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)CENTROID_THRESHOLD") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:CentroidThreshold_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)CENTROID_THRESHOLD") - field(VAL, "0") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:CentroidTotal") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)CENTROID_TOTAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:CentroidTotal_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)CENTROID_TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:CentroidX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)CENTROIDX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:CentroidX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)CENTROIDX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:CentroidY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)CENTROIDY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:CentroidY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)CENTROIDY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:SigmaX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)SIGMAX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:SigmaX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)SIGMAX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:SigmaY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)SIGMAY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:SigmaY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)SIGMAY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:SigmaXY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)SIGMAXY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:SigmaXY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)SIGMAXY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:SkewX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)SKEWX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:SkewX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)SKEWX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:SkewY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)SKEWY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:SkewY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)SKEWY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:KurtosisX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)KURTOSISX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:KurtosisX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)KURTOSISX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:KurtosisY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)KURTOSISY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:KurtosisY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)KURTOSISY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:Eccentricity") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)ECCENTRICITY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:Eccentricity_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ECCENTRICITY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:Orientation") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)ORIENTATION_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:Orientation_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)ORIENTATION_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control time series # -################################################################### -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSMinValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,0,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSMinX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,1,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSMinY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,2,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSMaxValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,3,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSMaxX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,4,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSMaxY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,5,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSMeanValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,6,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSSigma") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,7,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,8,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSNet") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,9,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSCentroidTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,10,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSCentroidX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,11,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSCentroidY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,12,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSSigmaX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,13,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSSigmaY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,14,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSSigmaXY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,15,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSSkewX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,16,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSSkewY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,17,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSKurtosisX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,18,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSKurtosisY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,19,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSEccentricity") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,20,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSOrientation") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,21,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:TSTimestamp") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2_TS,22,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control profiles # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT2:ComputeProfiles") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)COMPUTE_PROFILES") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT2:ComputeProfiles_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)COMPUTE_PROFILES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ProfileSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)PROFILE_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:ProfileSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)PROFILE_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT2:CursorX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)CURSOR_X") - field(VAL, "256") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:CursorX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)CURSOR_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT2:CursorY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)CURSOR_Y") - field(VAL, "256") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:CursorY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)CURSOR_Y") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:CursorVal") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)CURSOR_VAL") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:ProfileAverageX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2,0,1)PROFILE_AVERAGE_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:ProfileAverageY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2,0,1)PROFILE_AVERAGE_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:ProfileThresholdX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2,0,1)PROFILE_THRESHOLD_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:ProfileThresholdY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2,0,1)PROFILE_THRESHOLD_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:ProfileCentroidX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2,0,1)PROFILE_CENTROID_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:ProfileCentroidY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2,0,1)PROFILE_CENTROID_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:ProfileCursorX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2,0,1)PROFILE_CURSOR_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:ProfileCursorY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2,0,1)PROFILE_CURSOR_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These are used to define the histogram # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT2:ComputeHistogram") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)COMPUTE_HISTOGRAM") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT2:ComputeHistogram_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)COMPUTE_HISTOGRAM") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT2:HistSize") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)HIST_SIZE") - field(VAL, "256") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:HistSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)HIST_SIZE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:HistMin") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)HIST_MIN") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:HistMin_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)HIST_MIN") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:HistMax") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)HIST_MAX") - field(VAL, "255") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:HistMax_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)HIST_MAX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT2:HistBelow") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)HIST_BELOW") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:HistBelow_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)HIST_BELOW") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT2:HistAbove") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)HIST_ABOVE") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:HistAbove_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat2,0,1)HIST_ABOVE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT2:HistEntropy") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat2,0,1)HIST_ENTROPY") -} - -record(ai, "BL45P-EA-DIFF-01:STAT2:HistEntropy_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat2,0,1)HIST_ENTROPY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:Histogram_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2,0,1)HIST_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT2:HistogramX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat2,0,1)HIST_X_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records set the HOPR and LOPR values for the cursor # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:STAT2:MaxSizeX") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:ProfileSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:STAT2:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT2:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:STAT2:CursorX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:STAT2:MaxSizeY") -{ - field(INP, "BL45P-EA-DIFF-01:STAT2:ProfileSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:STAT2:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT2:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:STAT2:CursorY.HOPR NPP") -} - -################################################################### -# These records reset the statistics # -################################################################### -record(sseq, "BL45P-EA-DIFF-01:STAT2:Reset") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT2:MinValue PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT2:MaxValue PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT2:MeanValue PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT2:SigmaValue PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT2:Total PP MS") - field(LNK6, "BL45P-EA-DIFF-01:STAT2:Net PP MS") - field(LNK7, "BL45P-EA-DIFF-01:STAT2:MinX PP MS") - field(LNK8, "BL45P-EA-DIFF-01:STAT2:MinY PP MS") - field(LNK9, "BL45P-EA-DIFF-01:STAT2:MaxX PP MS") - field(LNKA, "BL45P-EA-DIFF-01:STAT2:MaxY PP MS") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Reset1") -} - -record(sseq, "BL45P-EA-DIFF-01:STAT2:Reset1") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT2:CentroidX PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT2:CentroidY PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT2:SigmaX PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT2:SigmaY PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT2:SigmaXY PP MS") - field(LNK6, "BL45P-EA-DIFF-01:STAT2:CentroidTotal PP MS") - field(LNK7, "BL45P-EA-DIFF-01:STAT2:SkewX PP MS") - field(LNK8, "BL45P-EA-DIFF-01:STAT2:SkewY PP MS") - field(LNK9, "BL45P-EA-DIFF-01:STAT2:KurtosisX PP MS") - field(LNKA, "BL45P-EA-DIFF-01:STAT2:KurtosisY PP MS") - field(FLNK, "BL45P-EA-DIFF-01:STAT2:Reset2") -} - -record(sseq, "BL45P-EA-DIFF-01:STAT2:Reset2") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT2:Eccentricity PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT2:Orientation PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT2:HistBelow PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT2:HistAbove PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT2:HistEntropy PP MS") -} - -#=================================================================# -# Template file: NDStats.template - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, NCHANS, Number of channels -# % macro, XSIZE, x size -# % macro, YSIZE, y size -# % macro, HIST_SIZE, hist size -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Timeout -# % macro, TS_PORT, TS port - -# This associates the template with an edm screen -# % gui, DIFF.stats.stat3, edmtab, NDStats.edl, P=BL45P-EA-DIFF-01,R=:STAT3: - -# This associates a BOY screen with the template -# % gui, DIFF.stats.stat3, boydetail,ADApp_opi/dls/stats_detail.opi, P=BL45P-EA-DIFF-01, R=:STAT3:, DESC=Statistics -# % gui, DIFF.stats.stat3, boyembed, ADApp_opi/dls/stats_embed_box.opi, P=BL45P-EA-DIFF-01, R=:STAT3:, DESC=Statistics -# % gui, DIFF.stats.stat3, boyembed, ADApp_opi/dls/stats_embed.opi, P=BL45P-EA-DIFF-01, R=:STAT3:, DESC=Statistics - - -# % gui, DIFF.stats.stat3, groupHeading, Info -# % gui, DIFF.stats.stat3, readback, Port name, BL45P-EA-DIFF-01:STAT3:PortName_RBV -# % gui, DIFF.stats.stat3, readback, Plugin type, BL45P-EA-DIFF-01:STAT3:PluginType_RBV -# Input -# % gui, DIFF.stats.stat3, demandString, Input, BL45P-EA-DIFF-01:STAT3:NDArrayPort -# % gui, DIFF.stats.stat3, readback, Input, BL45P-EA-DIFF-01:STAT3:NDArrayPort_RBV - -# % gui, DIFF.stats.stat3, groupHeading, Callback -# % gui, DIFF.stats.stat3, enum, Callbacks, BL45P-EA-DIFF-01:STAT3:EnableCallbacks -# % gui, DIFF.stats.stat3, statusbits, Callbacks, BL45P-EA-DIFF-01:STAT3:EnableCallbacks_RBV -# % gui, DIFF.stats.stat3, demand, Min Callback Time, BL45P-EA-DIFF-01:STAT3:MinCallbackTime -# % gui, DIFF.stats.stat3, readback, Min Callback Time, BL45P-EA-DIFF-01:STAT3:MinCallbackTime_RBV -# % gui, DIFF.stats.stat3, enum, Block Callbacks, BL45P-EA-DIFF-01:STAT3:BlockingCallbacks -# % gui, DIFF.stats.stat3, statusbits, Block Callbacks, BL45P-EA-DIFF-01:STAT3:BlockingCallbacks_RBV - -# % gui, DIFF.stats.stat3, groupHeading, Counters -# % gui, DIFF.stats.stat3, demand, Array Counter, BL45P-EA-DIFF-01:STAT3:ArrayCounter -# % gui, DIFF.stats.stat3, readback, Array Counter, BL45P-EA-DIFF-01:STAT3:ArrayCounter_RBV -# % gui, DIFF.stats.stat3, readback, Array Rate (fps), BL45P-EA-DIFF-01:STAT3:ArrayRate_RBV -# % gui, DIFF.stats.stat3, readback, Queue Use, BL45P-EA-DIFF-01:STAT3:QueueUse -# % gui, DIFF.stats.stat3, readback, Queue Size, BL45P-EA-DIFF-01:STAT3:QueueSize -# % gui, DIFF.stats.stat3, demand, Dropped Arrays, BL45P-EA-DIFF-01:STAT3:DroppedArrays -# % gui, DIFF.stats.stat3, readback, Dropped Arrays, BL45P-EA-DIFF-01:STAT3:DroppedArrays_RBV - -# % gui, DIFF.stats.stat3, groupHeading, Array Settings -# % gui, DIFF.stats.stat3, readback, Num Dimensions, BL45P-EA-DIFF-01:STAT3:NDimensions_RBV -# % gui, DIFF.stats.stat3, readback, Dim 0 Size, BL45P-EA-DIFF-01:STAT3:ArraySize0_RBV -# % gui, DIFF.stats.stat3, readback, Dim 1 Size, BL45P-EA-DIFF-01:STAT3:ArraySize1_RBV -# % gui, DIFF.stats.stat3, readback, Dim 2 Size, BL45P-EA-DIFF-01:STAT3:ArraySize2_RBV -# % gui, DIFF.stats.stat3, readback, Input Data Type, BL45P-EA-DIFF-01:STAT3:DataType_RBV -# % gui, DIFF.stats.stat3, readback, Colour Mode, BL45P-EA-DIFF-01:STAT3:ColorMode_RBV -# % gui, DIFF.stats.stat3, readback, Bayer Pattern, BL45P-EA-DIFF-01:STAT3:BayerPattern_RBV -# % gui, DIFF.stats.stat3, readback, Unique id, BL45P-EA-DIFF-01:STAT3:UniqueId_RBV -# % gui, DIFF.stats.stat3, readback, Timestamp, BL45P-EA-DIFF-01:STAT3:TimeStamp_RBV - -# Output -# % gui, DIFF.stats.stat3, groupHeading, Output -# % gui, DIFF.stats.stat3, demand, Name, BL45P-EA-DIFF-01:STAT3:Name -# % gui, DIFF.stats.stat3, enum, Out data type, BL45P-EA-DIFF-01:STAT3:DataTypeOut -# % gui, DIFF.stats.stat3, readback, Out data type, BL45P-EA-DIFF-01:STAT3:DataTypeOut_RBV -# % gui, DIFF.stats.stat3, demand, Attributes file, BL45P-EA-DIFF-01:STAT3:NDAttributesFile - -# Statistics -# % gui, DIFF.stats.stat3, groupHeading, Statistics -# % gui, DIFF.stats.stat3, enum, Compute Statistics, BL45P-EA-DIFF-01:STAT3:ComputeStatistics -# % gui, DIFF.stats.stat3, statusbits, Compute Statistics, BL45P-EA-DIFF-01:STAT3:ComputeStatistics_RBV -# % gui, DIFF.stats.stat3, demand, Background Width, BL45P-EA-DIFF-01:STAT3:BgdWidth -# % gui, DIFF.stats.stat3, readback, Background Width, BL45P-EA-DIFF-01:STAT3:BgdWidth_RBV -# % gui, DIFF.stats.stat3, readback, Minimum Value, BL45P-EA-DIFF-01:STAT3:MinValue_RBV -# % gui, DIFF.stats.stat3, readback, Minimum X, BL45P-EA-DIFF-01:STAT3:MinX_RBV -# % gui, DIFF.stats.stat3, readback, Minimum Y, BL45P-EA-DIFF-01:STAT3:MinY_RBV -# % gui, DIFF.stats.stat3, readback, Maximum Value, BL45P-EA-DIFF-01:STAT3:MaxValue_RBV -# % gui, DIFF.stats.stat3, readback, Maximum X, BL45P-EA-DIFF-01:STAT3:MaxX_RBV -# % gui, DIFF.stats.stat3, readback, Maximum Y, BL45P-EA-DIFF-01:STAT3:MaxY_RBV -# % gui, DIFF.stats.stat3, readback, Mean Value, BL45P-EA-DIFF-01:STAT3:MeanValue_RBV -# % gui, DIFF.stats.stat3, readback, Total, BL45P-EA-DIFF-01:STAT3:Total_RBV -# % gui, DIFF.stats.stat3, readback, Sigma, BL45P-EA-DIFF-01:STAT3:Sigma_RBV -# % gui, DIFF.stats.stat3, readback, Net, BL45P-EA-DIFF-01:STAT3:Net_RBV -# Centroid -# % gui, DIFF.stats.stat3, groupHeading, Centroid -# % gui, DIFF.stats.stat3, enum, Compute Centroid, BL45P-EA-DIFF-01:STAT3:ComputeCentroid -# % gui, DIFF.stats.stat3, statusbits, Compute Centroid, BL45P-EA-DIFF-01:STAT3:ComputeCentroid_RBV -# % gui, DIFF.stats.stat3, demand, Threshold, BL45P-EA-DIFF-01:STAT3:CentroidThreshold -# % gui, DIFF.stats.stat3, readback, Threshold, BL45P-EA-DIFF-01:STAT3:CentroidThreshold_RBV -# % gui, DIFF.stats.stat3, readback, X, BL45P-EA-DIFF-01:STAT3:CentroidX_RBV -# % gui, DIFF.stats.stat3, readback, Sigma X, BL45P-EA-DIFF-01:STAT3:SigmaX_RBV -# % gui, DIFF.stats.stat3, readback, Y, BL45P-EA-DIFF-01:STAT3:CentroidY_RBV -# % gui, DIFF.stats.stat3, readback, Sigma Y, BL45P-EA-DIFF-01:STAT3:SigmaY_RBV -# % gui, DIFF.stats.stat3, readback, Sigma XY, BL45P-EA-DIFF-01:STAT3:SigmaXY_RBV -# Histogram -# % gui, DIFF.stats.stat3, groupHeading, Histogram -# % gui, DIFF.stats.stat3, enum, Compute Histogram, BL45P-EA-DIFF-01:STAT3:ComputeHistogram -# % gui, DIFF.stats.stat3, statusbits, Compute Histogram, BL45P-EA-DIFF-01:STAT3:ComputeHistogram_RBV -# % gui, DIFF.stats.stat3, demand, Histogram Size, BL45P-EA-DIFF-01:STAT3:HistSize -# % gui, DIFF.stats.stat3, readback, Histogram Size, BL45P-EA-DIFF-01:STAT3:HistSize_RBV -# % gui, DIFF.stats.stat3, demand, Histogram Min, BL45P-EA-DIFF-01:STAT3:HistMin -# % gui, DIFF.stats.stat3, readback, Histogram Min, BL45P-EA-DIFF-01:STAT3:HistMin_RBV -# % gui, DIFF.stats.stat3, demand, Histogram Max, BL45P-EA-DIFF-01:STAT3:HistMax -# % gui, DIFF.stats.stat3, readback, Histogram Max, BL45P-EA-DIFF-01:STAT3:HistMax_RBV -# % gui, DIFF.stats.stat3, readback, Histogram Entropy, BL45P-EA-DIFF-01:STAT3:HistEntropy_RBV -# Profiles -# % gui, DIFF.stats.stat3, groupHeading, Profiles -# % gui, DIFF.stats.stat3, enum, Compute Profiles, BL45P-EA-DIFF-01:STAT3:ComputeProfiles -# % gui, DIFF.stats.stat3, statusbits, Compute Profiles, BL45P-EA-DIFF-01:STAT3:ComputeProfiles_RBV -# % gui, DIFF.stats.stat3, demand, Cursor X, BL45P-EA-DIFF-01:STAT3:CursorX -# % gui, DIFF.stats.stat3, readback, Cursor X, BL45P-EA-DIFF-01:STAT3:CursorX_RBV -# % gui, DIFF.stats.stat3, demand, Cursor Y, BL45P-EA-DIFF-01:STAT3:CursorY -# % gui, DIFF.stats.stat3, readback, Cursor Y, BL45P-EA-DIFF-01:STAT3:CursorY_RBV -# % gui, DIFF.stats.stat3, readback, Size X, BL45P-EA-DIFF-01:STAT3:ProfileSizeX_RBV -# % gui, DIFF.stats.stat3, readback, Size Y, BL45P-EA-DIFF-01:STAT3:ProfileSizeY_RBV -# Time series -# % gui, DIFF.stats.stat3, groupHeading, Time Series -# % gui, DIFF.stats.stat3, enum, Time Control, BL45P-EA-DIFF-01:STAT3:TS:TSAcquire -# % gui, DIFF.stats.stat3, statusbits, Acquiring, BL45P-EA-DIFF-01:STAT3:TS:TSAcquiring -# % gui, DIFF.stats.stat3, readback, Current Point, BL45P-EA-DIFF-01:STAT3:TS:TSCurrentPoint -# % gui, DIFF.stats.stat3, demand, Number of Points, BL45P-EA-DIFF-01:STAT3:TS:TSNumPoints -# % gui, DIFF.stats.stat3, enum, Update, BL45P-EA-DIFF-01:STAT3:TS:TSRead.SCAN -# Memory -# % gui, DIFF.stats.stat3, groupHeading, Memory -# % gui, DIFF.stats.stat3, readback, Max memory, BL45P-EA-DIFF-01:STAT3:PoolMaxMem -# % gui, DIFF.stats.stat3, readback, Max buffers, BL45P-EA-DIFF-01:STAT3:PoolMaxBuffers -# % gui, DIFF.stats.stat3, readback, Used memory, BL45P-EA-DIFF-01:STAT3:PoolUsedMem -# % gui, DIFF.stats.stat3, readback, Allocated buffers, BL45P-EA-DIFF-01:STAT3:PoolAllocBuffers -# % gui, DIFF.stats.stat3, readback, Free buffers, BL45P-EA-DIFF-01:STAT3:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT3:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT3:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat3,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT3:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat3,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT3:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat3,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT3:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat3,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT3:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat3,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT3:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat3,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT3:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat3,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:STAT3:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:STAT3:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT3:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT3:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:STAT3:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:STAT3:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:STAT3:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT3:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:STAT3:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:STAT3:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:STAT3:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:STAT3:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:STAT3:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:STAT3:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT3:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:STAT3:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:STAT3:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat3,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:STAT3:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT3:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:STAT3:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT3:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:STAT3:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:STAT3:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:STAT3:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT3:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:STAT3:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:STAT3:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT3:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT3:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:STAT3:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:STAT3:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:STAT3:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:STAT3:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:STAT3:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT3:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:STAT3:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:STAT3:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT3:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat3,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:STAT3:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)NDARRAY_PORT") - field(VAL, "DIFF.rois.roi1") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT3:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat3,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT3:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT3:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT3:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:STAT3:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT3:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT3:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:STAT3:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:STAT3:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT3:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:STAT3:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT3:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT3:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT3:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:STAT3:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT3:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT3:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:STAT3:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT3:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:STAT3:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:STAT3:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT3:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:STAT3:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:STAT3:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT3:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:STAT3:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:STAT3:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:STAT3:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:STAT3:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:STAT3:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT3:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT3:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT3:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:STAT3:SortSize") - field(OUT, "BL45P-EA-DIFF-01:STAT3:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:STAT3:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT3:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:STAT3:AsynIO") -{ - field(PORT, "DIFF.stats.stat3") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records contain the basic statistics # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT3:ComputeStatistics") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)COMPUTE_STATISTICS") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT3:ComputeStatistics_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)COMPUTE_STATISTICS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT3:BgdWidth") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)BGD_WIDTH") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:BgdWidth_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)BGD_WIDTH") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:MinValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)MIN_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:MinValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)MIN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:MaxValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)MAX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:MaxValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)MAX_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:MeanValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)MEAN_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:MeanValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)MEAN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:SigmaValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)SIGMA_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:Sigma_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)SIGMA_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:Total") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)TOTAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:Total_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:Net") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)NET") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:Net_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)NET") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:MinX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)MIN_X") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:MinX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:MinY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)MIN_Y") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:MinY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:MaxX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)MAX_X") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:MaxX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)MAX_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:MaxY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)MAX_Y") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:MaxY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)MAX_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether centroid statistics are computed # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT3:ComputeCentroid") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)COMPUTE_CENTROID") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT3:ComputeCentroid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)COMPUTE_CENTROID") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain the centroid statistics # -################################################################### -record(ao, "BL45P-EA-DIFF-01:STAT3:CentroidThreshold") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)CENTROID_THRESHOLD") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:CentroidThreshold_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)CENTROID_THRESHOLD") - field(VAL, "0") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:CentroidTotal") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)CENTROID_TOTAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:CentroidTotal_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)CENTROID_TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:CentroidX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)CENTROIDX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:CentroidX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)CENTROIDX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:CentroidY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)CENTROIDY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:CentroidY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)CENTROIDY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:SigmaX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)SIGMAX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:SigmaX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)SIGMAX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:SigmaY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)SIGMAY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:SigmaY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)SIGMAY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:SigmaXY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)SIGMAXY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:SigmaXY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)SIGMAXY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:SkewX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)SKEWX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:SkewX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)SKEWX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:SkewY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)SKEWY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:SkewY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)SKEWY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:KurtosisX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)KURTOSISX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:KurtosisX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)KURTOSISX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:KurtosisY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)KURTOSISY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:KurtosisY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)KURTOSISY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:Eccentricity") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)ECCENTRICITY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:Eccentricity_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ECCENTRICITY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:Orientation") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)ORIENTATION_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:Orientation_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)ORIENTATION_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control time series # -################################################################### -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSMinValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,0,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSMinX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,1,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSMinY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,2,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSMaxValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,3,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSMaxX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,4,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSMaxY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,5,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSMeanValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,6,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSSigma") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,7,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,8,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSNet") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,9,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSCentroidTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,10,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSCentroidX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,11,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSCentroidY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,12,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSSigmaX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,13,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSSigmaY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,14,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSSigmaXY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,15,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSSkewX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,16,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSSkewY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,17,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSKurtosisX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,18,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSKurtosisY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,19,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSEccentricity") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,20,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSOrientation") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,21,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:TSTimestamp") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3_TS,22,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control profiles # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT3:ComputeProfiles") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)COMPUTE_PROFILES") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT3:ComputeProfiles_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)COMPUTE_PROFILES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ProfileSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)PROFILE_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:ProfileSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)PROFILE_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT3:CursorX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)CURSOR_X") - field(VAL, "256") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:CursorX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)CURSOR_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT3:CursorY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)CURSOR_Y") - field(VAL, "256") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:CursorY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)CURSOR_Y") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:CursorVal") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)CURSOR_VAL") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:ProfileAverageX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3,0,1)PROFILE_AVERAGE_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:ProfileAverageY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3,0,1)PROFILE_AVERAGE_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:ProfileThresholdX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3,0,1)PROFILE_THRESHOLD_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:ProfileThresholdY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3,0,1)PROFILE_THRESHOLD_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:ProfileCentroidX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3,0,1)PROFILE_CENTROID_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:ProfileCentroidY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3,0,1)PROFILE_CENTROID_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:ProfileCursorX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3,0,1)PROFILE_CURSOR_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:ProfileCursorY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3,0,1)PROFILE_CURSOR_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These are used to define the histogram # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT3:ComputeHistogram") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)COMPUTE_HISTOGRAM") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT3:ComputeHistogram_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)COMPUTE_HISTOGRAM") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT3:HistSize") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)HIST_SIZE") - field(VAL, "256") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:HistSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)HIST_SIZE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:HistMin") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)HIST_MIN") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:HistMin_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)HIST_MIN") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:HistMax") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)HIST_MAX") - field(VAL, "255") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:HistMax_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)HIST_MAX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT3:HistBelow") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)HIST_BELOW") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:HistBelow_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)HIST_BELOW") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT3:HistAbove") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)HIST_ABOVE") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:HistAbove_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat3,0,1)HIST_ABOVE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT3:HistEntropy") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat3,0,1)HIST_ENTROPY") -} - -record(ai, "BL45P-EA-DIFF-01:STAT3:HistEntropy_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat3,0,1)HIST_ENTROPY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:Histogram_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3,0,1)HIST_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT3:HistogramX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat3,0,1)HIST_X_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records set the HOPR and LOPR values for the cursor # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:STAT3:MaxSizeX") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:ProfileSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:STAT3:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT3:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:STAT3:CursorX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:STAT3:MaxSizeY") -{ - field(INP, "BL45P-EA-DIFF-01:STAT3:ProfileSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:STAT3:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT3:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:STAT3:CursorY.HOPR NPP") -} - -################################################################### -# These records reset the statistics # -################################################################### -record(sseq, "BL45P-EA-DIFF-01:STAT3:Reset") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT3:MinValue PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT3:MaxValue PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT3:MeanValue PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT3:SigmaValue PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT3:Total PP MS") - field(LNK6, "BL45P-EA-DIFF-01:STAT3:Net PP MS") - field(LNK7, "BL45P-EA-DIFF-01:STAT3:MinX PP MS") - field(LNK8, "BL45P-EA-DIFF-01:STAT3:MinY PP MS") - field(LNK9, "BL45P-EA-DIFF-01:STAT3:MaxX PP MS") - field(LNKA, "BL45P-EA-DIFF-01:STAT3:MaxY PP MS") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Reset1") -} - -record(sseq, "BL45P-EA-DIFF-01:STAT3:Reset1") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT3:CentroidX PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT3:CentroidY PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT3:SigmaX PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT3:SigmaY PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT3:SigmaXY PP MS") - field(LNK6, "BL45P-EA-DIFF-01:STAT3:CentroidTotal PP MS") - field(LNK7, "BL45P-EA-DIFF-01:STAT3:SkewX PP MS") - field(LNK8, "BL45P-EA-DIFF-01:STAT3:SkewY PP MS") - field(LNK9, "BL45P-EA-DIFF-01:STAT3:KurtosisX PP MS") - field(LNKA, "BL45P-EA-DIFF-01:STAT3:KurtosisY PP MS") - field(FLNK, "BL45P-EA-DIFF-01:STAT3:Reset2") -} - -record(sseq, "BL45P-EA-DIFF-01:STAT3:Reset2") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT3:Eccentricity PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT3:Orientation PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT3:HistBelow PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT3:HistAbove PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT3:HistEntropy PP MS") -} - -#=================================================================# -# Template file: NDStats.template - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, NCHANS, Number of channels -# % macro, XSIZE, x size -# % macro, YSIZE, y size -# % macro, HIST_SIZE, hist size -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Timeout -# % macro, TS_PORT, TS port - -# This associates the template with an edm screen -# % gui, DIFF.stats.stat4, edmtab, NDStats.edl, P=BL45P-EA-DIFF-01,R=:STAT4: - -# This associates a BOY screen with the template -# % gui, DIFF.stats.stat4, boydetail,ADApp_opi/dls/stats_detail.opi, P=BL45P-EA-DIFF-01, R=:STAT4:, DESC=Statistics -# % gui, DIFF.stats.stat4, boyembed, ADApp_opi/dls/stats_embed_box.opi, P=BL45P-EA-DIFF-01, R=:STAT4:, DESC=Statistics -# % gui, DIFF.stats.stat4, boyembed, ADApp_opi/dls/stats_embed.opi, P=BL45P-EA-DIFF-01, R=:STAT4:, DESC=Statistics - - -# % gui, DIFF.stats.stat4, groupHeading, Info -# % gui, DIFF.stats.stat4, readback, Port name, BL45P-EA-DIFF-01:STAT4:PortName_RBV -# % gui, DIFF.stats.stat4, readback, Plugin type, BL45P-EA-DIFF-01:STAT4:PluginType_RBV -# Input -# % gui, DIFF.stats.stat4, demandString, Input, BL45P-EA-DIFF-01:STAT4:NDArrayPort -# % gui, DIFF.stats.stat4, readback, Input, BL45P-EA-DIFF-01:STAT4:NDArrayPort_RBV - -# % gui, DIFF.stats.stat4, groupHeading, Callback -# % gui, DIFF.stats.stat4, enum, Callbacks, BL45P-EA-DIFF-01:STAT4:EnableCallbacks -# % gui, DIFF.stats.stat4, statusbits, Callbacks, BL45P-EA-DIFF-01:STAT4:EnableCallbacks_RBV -# % gui, DIFF.stats.stat4, demand, Min Callback Time, BL45P-EA-DIFF-01:STAT4:MinCallbackTime -# % gui, DIFF.stats.stat4, readback, Min Callback Time, BL45P-EA-DIFF-01:STAT4:MinCallbackTime_RBV -# % gui, DIFF.stats.stat4, enum, Block Callbacks, BL45P-EA-DIFF-01:STAT4:BlockingCallbacks -# % gui, DIFF.stats.stat4, statusbits, Block Callbacks, BL45P-EA-DIFF-01:STAT4:BlockingCallbacks_RBV - -# % gui, DIFF.stats.stat4, groupHeading, Counters -# % gui, DIFF.stats.stat4, demand, Array Counter, BL45P-EA-DIFF-01:STAT4:ArrayCounter -# % gui, DIFF.stats.stat4, readback, Array Counter, BL45P-EA-DIFF-01:STAT4:ArrayCounter_RBV -# % gui, DIFF.stats.stat4, readback, Array Rate (fps), BL45P-EA-DIFF-01:STAT4:ArrayRate_RBV -# % gui, DIFF.stats.stat4, readback, Queue Use, BL45P-EA-DIFF-01:STAT4:QueueUse -# % gui, DIFF.stats.stat4, readback, Queue Size, BL45P-EA-DIFF-01:STAT4:QueueSize -# % gui, DIFF.stats.stat4, demand, Dropped Arrays, BL45P-EA-DIFF-01:STAT4:DroppedArrays -# % gui, DIFF.stats.stat4, readback, Dropped Arrays, BL45P-EA-DIFF-01:STAT4:DroppedArrays_RBV - -# % gui, DIFF.stats.stat4, groupHeading, Array Settings -# % gui, DIFF.stats.stat4, readback, Num Dimensions, BL45P-EA-DIFF-01:STAT4:NDimensions_RBV -# % gui, DIFF.stats.stat4, readback, Dim 0 Size, BL45P-EA-DIFF-01:STAT4:ArraySize0_RBV -# % gui, DIFF.stats.stat4, readback, Dim 1 Size, BL45P-EA-DIFF-01:STAT4:ArraySize1_RBV -# % gui, DIFF.stats.stat4, readback, Dim 2 Size, BL45P-EA-DIFF-01:STAT4:ArraySize2_RBV -# % gui, DIFF.stats.stat4, readback, Input Data Type, BL45P-EA-DIFF-01:STAT4:DataType_RBV -# % gui, DIFF.stats.stat4, readback, Colour Mode, BL45P-EA-DIFF-01:STAT4:ColorMode_RBV -# % gui, DIFF.stats.stat4, readback, Bayer Pattern, BL45P-EA-DIFF-01:STAT4:BayerPattern_RBV -# % gui, DIFF.stats.stat4, readback, Unique id, BL45P-EA-DIFF-01:STAT4:UniqueId_RBV -# % gui, DIFF.stats.stat4, readback, Timestamp, BL45P-EA-DIFF-01:STAT4:TimeStamp_RBV - -# Output -# % gui, DIFF.stats.stat4, groupHeading, Output -# % gui, DIFF.stats.stat4, demand, Name, BL45P-EA-DIFF-01:STAT4:Name -# % gui, DIFF.stats.stat4, enum, Out data type, BL45P-EA-DIFF-01:STAT4:DataTypeOut -# % gui, DIFF.stats.stat4, readback, Out data type, BL45P-EA-DIFF-01:STAT4:DataTypeOut_RBV -# % gui, DIFF.stats.stat4, demand, Attributes file, BL45P-EA-DIFF-01:STAT4:NDAttributesFile - -# Statistics -# % gui, DIFF.stats.stat4, groupHeading, Statistics -# % gui, DIFF.stats.stat4, enum, Compute Statistics, BL45P-EA-DIFF-01:STAT4:ComputeStatistics -# % gui, DIFF.stats.stat4, statusbits, Compute Statistics, BL45P-EA-DIFF-01:STAT4:ComputeStatistics_RBV -# % gui, DIFF.stats.stat4, demand, Background Width, BL45P-EA-DIFF-01:STAT4:BgdWidth -# % gui, DIFF.stats.stat4, readback, Background Width, BL45P-EA-DIFF-01:STAT4:BgdWidth_RBV -# % gui, DIFF.stats.stat4, readback, Minimum Value, BL45P-EA-DIFF-01:STAT4:MinValue_RBV -# % gui, DIFF.stats.stat4, readback, Minimum X, BL45P-EA-DIFF-01:STAT4:MinX_RBV -# % gui, DIFF.stats.stat4, readback, Minimum Y, BL45P-EA-DIFF-01:STAT4:MinY_RBV -# % gui, DIFF.stats.stat4, readback, Maximum Value, BL45P-EA-DIFF-01:STAT4:MaxValue_RBV -# % gui, DIFF.stats.stat4, readback, Maximum X, BL45P-EA-DIFF-01:STAT4:MaxX_RBV -# % gui, DIFF.stats.stat4, readback, Maximum Y, BL45P-EA-DIFF-01:STAT4:MaxY_RBV -# % gui, DIFF.stats.stat4, readback, Mean Value, BL45P-EA-DIFF-01:STAT4:MeanValue_RBV -# % gui, DIFF.stats.stat4, readback, Total, BL45P-EA-DIFF-01:STAT4:Total_RBV -# % gui, DIFF.stats.stat4, readback, Sigma, BL45P-EA-DIFF-01:STAT4:Sigma_RBV -# % gui, DIFF.stats.stat4, readback, Net, BL45P-EA-DIFF-01:STAT4:Net_RBV -# Centroid -# % gui, DIFF.stats.stat4, groupHeading, Centroid -# % gui, DIFF.stats.stat4, enum, Compute Centroid, BL45P-EA-DIFF-01:STAT4:ComputeCentroid -# % gui, DIFF.stats.stat4, statusbits, Compute Centroid, BL45P-EA-DIFF-01:STAT4:ComputeCentroid_RBV -# % gui, DIFF.stats.stat4, demand, Threshold, BL45P-EA-DIFF-01:STAT4:CentroidThreshold -# % gui, DIFF.stats.stat4, readback, Threshold, BL45P-EA-DIFF-01:STAT4:CentroidThreshold_RBV -# % gui, DIFF.stats.stat4, readback, X, BL45P-EA-DIFF-01:STAT4:CentroidX_RBV -# % gui, DIFF.stats.stat4, readback, Sigma X, BL45P-EA-DIFF-01:STAT4:SigmaX_RBV -# % gui, DIFF.stats.stat4, readback, Y, BL45P-EA-DIFF-01:STAT4:CentroidY_RBV -# % gui, DIFF.stats.stat4, readback, Sigma Y, BL45P-EA-DIFF-01:STAT4:SigmaY_RBV -# % gui, DIFF.stats.stat4, readback, Sigma XY, BL45P-EA-DIFF-01:STAT4:SigmaXY_RBV -# Histogram -# % gui, DIFF.stats.stat4, groupHeading, Histogram -# % gui, DIFF.stats.stat4, enum, Compute Histogram, BL45P-EA-DIFF-01:STAT4:ComputeHistogram -# % gui, DIFF.stats.stat4, statusbits, Compute Histogram, BL45P-EA-DIFF-01:STAT4:ComputeHistogram_RBV -# % gui, DIFF.stats.stat4, demand, Histogram Size, BL45P-EA-DIFF-01:STAT4:HistSize -# % gui, DIFF.stats.stat4, readback, Histogram Size, BL45P-EA-DIFF-01:STAT4:HistSize_RBV -# % gui, DIFF.stats.stat4, demand, Histogram Min, BL45P-EA-DIFF-01:STAT4:HistMin -# % gui, DIFF.stats.stat4, readback, Histogram Min, BL45P-EA-DIFF-01:STAT4:HistMin_RBV -# % gui, DIFF.stats.stat4, demand, Histogram Max, BL45P-EA-DIFF-01:STAT4:HistMax -# % gui, DIFF.stats.stat4, readback, Histogram Max, BL45P-EA-DIFF-01:STAT4:HistMax_RBV -# % gui, DIFF.stats.stat4, readback, Histogram Entropy, BL45P-EA-DIFF-01:STAT4:HistEntropy_RBV -# Profiles -# % gui, DIFF.stats.stat4, groupHeading, Profiles -# % gui, DIFF.stats.stat4, enum, Compute Profiles, BL45P-EA-DIFF-01:STAT4:ComputeProfiles -# % gui, DIFF.stats.stat4, statusbits, Compute Profiles, BL45P-EA-DIFF-01:STAT4:ComputeProfiles_RBV -# % gui, DIFF.stats.stat4, demand, Cursor X, BL45P-EA-DIFF-01:STAT4:CursorX -# % gui, DIFF.stats.stat4, readback, Cursor X, BL45P-EA-DIFF-01:STAT4:CursorX_RBV -# % gui, DIFF.stats.stat4, demand, Cursor Y, BL45P-EA-DIFF-01:STAT4:CursorY -# % gui, DIFF.stats.stat4, readback, Cursor Y, BL45P-EA-DIFF-01:STAT4:CursorY_RBV -# % gui, DIFF.stats.stat4, readback, Size X, BL45P-EA-DIFF-01:STAT4:ProfileSizeX_RBV -# % gui, DIFF.stats.stat4, readback, Size Y, BL45P-EA-DIFF-01:STAT4:ProfileSizeY_RBV -# Time series -# % gui, DIFF.stats.stat4, groupHeading, Time Series -# % gui, DIFF.stats.stat4, enum, Time Control, BL45P-EA-DIFF-01:STAT4:TS:TSAcquire -# % gui, DIFF.stats.stat4, statusbits, Acquiring, BL45P-EA-DIFF-01:STAT4:TS:TSAcquiring -# % gui, DIFF.stats.stat4, readback, Current Point, BL45P-EA-DIFF-01:STAT4:TS:TSCurrentPoint -# % gui, DIFF.stats.stat4, demand, Number of Points, BL45P-EA-DIFF-01:STAT4:TS:TSNumPoints -# % gui, DIFF.stats.stat4, enum, Update, BL45P-EA-DIFF-01:STAT4:TS:TSRead.SCAN -# Memory -# % gui, DIFF.stats.stat4, groupHeading, Memory -# % gui, DIFF.stats.stat4, readback, Max memory, BL45P-EA-DIFF-01:STAT4:PoolMaxMem -# % gui, DIFF.stats.stat4, readback, Max buffers, BL45P-EA-DIFF-01:STAT4:PoolMaxBuffers -# % gui, DIFF.stats.stat4, readback, Used memory, BL45P-EA-DIFF-01:STAT4:PoolUsedMem -# % gui, DIFF.stats.stat4, readback, Allocated buffers, BL45P-EA-DIFF-01:STAT4:PoolAllocBuffers -# % gui, DIFF.stats.stat4, readback, Free buffers, BL45P-EA-DIFF-01:STAT4:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT4:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT4:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat4,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT4:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat4,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT4:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat4,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT4:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat4,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT4:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat4,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT4:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat4,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT4:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat4,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:STAT4:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:STAT4:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT4:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT4:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:STAT4:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:STAT4:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:STAT4:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT4:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:STAT4:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:STAT4:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:STAT4:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:STAT4:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:STAT4:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:STAT4:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT4:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:STAT4:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:STAT4:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat4,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:STAT4:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT4:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:STAT4:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT4:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:STAT4:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:STAT4:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:STAT4:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT4:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:STAT4:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:STAT4:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT4:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT4:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:STAT4:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:STAT4:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:STAT4:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:STAT4:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:STAT4:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT4:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:STAT4:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:STAT4:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT4:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat4,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:STAT4:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)NDARRAY_PORT") - field(VAL, "DIFF.rois.roi1") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT4:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat4,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT4:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT4:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT4:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:STAT4:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT4:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT4:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:STAT4:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:STAT4:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT4:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:STAT4:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT4:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT4:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT4:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:STAT4:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT4:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT4:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:STAT4:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT4:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:STAT4:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:STAT4:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT4:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:STAT4:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:STAT4:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT4:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:STAT4:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:STAT4:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:STAT4:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:STAT4:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:STAT4:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT4:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT4:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT4:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:STAT4:SortSize") - field(OUT, "BL45P-EA-DIFF-01:STAT4:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:STAT4:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT4:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:STAT4:AsynIO") -{ - field(PORT, "DIFF.stats.stat4") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records contain the basic statistics # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT4:ComputeStatistics") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)COMPUTE_STATISTICS") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT4:ComputeStatistics_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)COMPUTE_STATISTICS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT4:BgdWidth") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)BGD_WIDTH") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:BgdWidth_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)BGD_WIDTH") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:MinValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)MIN_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:MinValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)MIN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:MaxValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)MAX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:MaxValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)MAX_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:MeanValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)MEAN_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:MeanValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)MEAN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:SigmaValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)SIGMA_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:Sigma_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)SIGMA_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:Total") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)TOTAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:Total_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:Net") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)NET") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:Net_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)NET") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:MinX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)MIN_X") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:MinX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:MinY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)MIN_Y") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:MinY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:MaxX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)MAX_X") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:MaxX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)MAX_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:MaxY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)MAX_Y") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:MaxY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)MAX_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether centroid statistics are computed # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT4:ComputeCentroid") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)COMPUTE_CENTROID") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT4:ComputeCentroid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)COMPUTE_CENTROID") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain the centroid statistics # -################################################################### -record(ao, "BL45P-EA-DIFF-01:STAT4:CentroidThreshold") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)CENTROID_THRESHOLD") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:CentroidThreshold_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)CENTROID_THRESHOLD") - field(VAL, "0") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:CentroidTotal") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)CENTROID_TOTAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:CentroidTotal_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)CENTROID_TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:CentroidX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)CENTROIDX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:CentroidX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)CENTROIDX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:CentroidY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)CENTROIDY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:CentroidY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)CENTROIDY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:SigmaX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)SIGMAX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:SigmaX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)SIGMAX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:SigmaY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)SIGMAY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:SigmaY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)SIGMAY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:SigmaXY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)SIGMAXY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:SigmaXY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)SIGMAXY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:SkewX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)SKEWX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:SkewX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)SKEWX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:SkewY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)SKEWY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:SkewY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)SKEWY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:KurtosisX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)KURTOSISX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:KurtosisX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)KURTOSISX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:KurtosisY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)KURTOSISY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:KurtosisY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)KURTOSISY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:Eccentricity") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)ECCENTRICITY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:Eccentricity_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ECCENTRICITY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:Orientation") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)ORIENTATION_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:Orientation_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)ORIENTATION_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control time series # -################################################################### -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSMinValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,0,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSMinX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,1,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSMinY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,2,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSMaxValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,3,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSMaxX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,4,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSMaxY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,5,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSMeanValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,6,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSSigma") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,7,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,8,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSNet") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,9,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSCentroidTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,10,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSCentroidX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,11,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSCentroidY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,12,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSSigmaX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,13,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSSigmaY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,14,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSSigmaXY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,15,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSSkewX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,16,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSSkewY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,17,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSKurtosisX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,18,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSKurtosisY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,19,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSEccentricity") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,20,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSOrientation") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,21,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:TSTimestamp") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4_TS,22,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control profiles # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT4:ComputeProfiles") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)COMPUTE_PROFILES") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT4:ComputeProfiles_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)COMPUTE_PROFILES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ProfileSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)PROFILE_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:ProfileSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)PROFILE_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT4:CursorX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)CURSOR_X") - field(VAL, "256") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:CursorX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)CURSOR_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT4:CursorY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)CURSOR_Y") - field(VAL, "256") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:CursorY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)CURSOR_Y") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:CursorVal") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)CURSOR_VAL") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:ProfileAverageX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4,0,1)PROFILE_AVERAGE_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:ProfileAverageY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4,0,1)PROFILE_AVERAGE_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:ProfileThresholdX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4,0,1)PROFILE_THRESHOLD_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:ProfileThresholdY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4,0,1)PROFILE_THRESHOLD_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:ProfileCentroidX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4,0,1)PROFILE_CENTROID_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:ProfileCentroidY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4,0,1)PROFILE_CENTROID_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:ProfileCursorX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4,0,1)PROFILE_CURSOR_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:ProfileCursorY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4,0,1)PROFILE_CURSOR_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These are used to define the histogram # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT4:ComputeHistogram") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)COMPUTE_HISTOGRAM") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT4:ComputeHistogram_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)COMPUTE_HISTOGRAM") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT4:HistSize") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)HIST_SIZE") - field(VAL, "256") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:HistSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)HIST_SIZE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:HistMin") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)HIST_MIN") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:HistMin_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)HIST_MIN") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:HistMax") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)HIST_MAX") - field(VAL, "255") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:HistMax_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)HIST_MAX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT4:HistBelow") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)HIST_BELOW") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:HistBelow_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)HIST_BELOW") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT4:HistAbove") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)HIST_ABOVE") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:HistAbove_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat4,0,1)HIST_ABOVE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT4:HistEntropy") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat4,0,1)HIST_ENTROPY") -} - -record(ai, "BL45P-EA-DIFF-01:STAT4:HistEntropy_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat4,0,1)HIST_ENTROPY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:Histogram_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4,0,1)HIST_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT4:HistogramX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat4,0,1)HIST_X_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records set the HOPR and LOPR values for the cursor # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:STAT4:MaxSizeX") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:ProfileSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:STAT4:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT4:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:STAT4:CursorX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:STAT4:MaxSizeY") -{ - field(INP, "BL45P-EA-DIFF-01:STAT4:ProfileSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:STAT4:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT4:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:STAT4:CursorY.HOPR NPP") -} - -################################################################### -# These records reset the statistics # -################################################################### -record(sseq, "BL45P-EA-DIFF-01:STAT4:Reset") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT4:MinValue PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT4:MaxValue PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT4:MeanValue PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT4:SigmaValue PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT4:Total PP MS") - field(LNK6, "BL45P-EA-DIFF-01:STAT4:Net PP MS") - field(LNK7, "BL45P-EA-DIFF-01:STAT4:MinX PP MS") - field(LNK8, "BL45P-EA-DIFF-01:STAT4:MinY PP MS") - field(LNK9, "BL45P-EA-DIFF-01:STAT4:MaxX PP MS") - field(LNKA, "BL45P-EA-DIFF-01:STAT4:MaxY PP MS") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Reset1") -} - -record(sseq, "BL45P-EA-DIFF-01:STAT4:Reset1") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT4:CentroidX PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT4:CentroidY PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT4:SigmaX PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT4:SigmaY PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT4:SigmaXY PP MS") - field(LNK6, "BL45P-EA-DIFF-01:STAT4:CentroidTotal PP MS") - field(LNK7, "BL45P-EA-DIFF-01:STAT4:SkewX PP MS") - field(LNK8, "BL45P-EA-DIFF-01:STAT4:SkewY PP MS") - field(LNK9, "BL45P-EA-DIFF-01:STAT4:KurtosisX PP MS") - field(LNKA, "BL45P-EA-DIFF-01:STAT4:KurtosisY PP MS") - field(FLNK, "BL45P-EA-DIFF-01:STAT4:Reset2") -} - -record(sseq, "BL45P-EA-DIFF-01:STAT4:Reset2") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT4:Eccentricity PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT4:Orientation PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT4:HistBelow PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT4:HistAbove PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT4:HistEntropy PP MS") -} - -#=================================================================# -# Template file: NDStats.template - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, NCHANS, Number of channels -# % macro, XSIZE, x size -# % macro, YSIZE, y size -# % macro, HIST_SIZE, hist size -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Timeout -# % macro, TS_PORT, TS port - -# This associates the template with an edm screen -# % gui, DIFF.stats.stat5, edmtab, NDStats.edl, P=BL45P-EA-DIFF-01,R=:STAT5: - -# This associates a BOY screen with the template -# % gui, DIFF.stats.stat5, boydetail,ADApp_opi/dls/stats_detail.opi, P=BL45P-EA-DIFF-01, R=:STAT5:, DESC=Statistics -# % gui, DIFF.stats.stat5, boyembed, ADApp_opi/dls/stats_embed_box.opi, P=BL45P-EA-DIFF-01, R=:STAT5:, DESC=Statistics -# % gui, DIFF.stats.stat5, boyembed, ADApp_opi/dls/stats_embed.opi, P=BL45P-EA-DIFF-01, R=:STAT5:, DESC=Statistics - - -# % gui, DIFF.stats.stat5, groupHeading, Info -# % gui, DIFF.stats.stat5, readback, Port name, BL45P-EA-DIFF-01:STAT5:PortName_RBV -# % gui, DIFF.stats.stat5, readback, Plugin type, BL45P-EA-DIFF-01:STAT5:PluginType_RBV -# Input -# % gui, DIFF.stats.stat5, demandString, Input, BL45P-EA-DIFF-01:STAT5:NDArrayPort -# % gui, DIFF.stats.stat5, readback, Input, BL45P-EA-DIFF-01:STAT5:NDArrayPort_RBV - -# % gui, DIFF.stats.stat5, groupHeading, Callback -# % gui, DIFF.stats.stat5, enum, Callbacks, BL45P-EA-DIFF-01:STAT5:EnableCallbacks -# % gui, DIFF.stats.stat5, statusbits, Callbacks, BL45P-EA-DIFF-01:STAT5:EnableCallbacks_RBV -# % gui, DIFF.stats.stat5, demand, Min Callback Time, BL45P-EA-DIFF-01:STAT5:MinCallbackTime -# % gui, DIFF.stats.stat5, readback, Min Callback Time, BL45P-EA-DIFF-01:STAT5:MinCallbackTime_RBV -# % gui, DIFF.stats.stat5, enum, Block Callbacks, BL45P-EA-DIFF-01:STAT5:BlockingCallbacks -# % gui, DIFF.stats.stat5, statusbits, Block Callbacks, BL45P-EA-DIFF-01:STAT5:BlockingCallbacks_RBV - -# % gui, DIFF.stats.stat5, groupHeading, Counters -# % gui, DIFF.stats.stat5, demand, Array Counter, BL45P-EA-DIFF-01:STAT5:ArrayCounter -# % gui, DIFF.stats.stat5, readback, Array Counter, BL45P-EA-DIFF-01:STAT5:ArrayCounter_RBV -# % gui, DIFF.stats.stat5, readback, Array Rate (fps), BL45P-EA-DIFF-01:STAT5:ArrayRate_RBV -# % gui, DIFF.stats.stat5, readback, Queue Use, BL45P-EA-DIFF-01:STAT5:QueueUse -# % gui, DIFF.stats.stat5, readback, Queue Size, BL45P-EA-DIFF-01:STAT5:QueueSize -# % gui, DIFF.stats.stat5, demand, Dropped Arrays, BL45P-EA-DIFF-01:STAT5:DroppedArrays -# % gui, DIFF.stats.stat5, readback, Dropped Arrays, BL45P-EA-DIFF-01:STAT5:DroppedArrays_RBV - -# % gui, DIFF.stats.stat5, groupHeading, Array Settings -# % gui, DIFF.stats.stat5, readback, Num Dimensions, BL45P-EA-DIFF-01:STAT5:NDimensions_RBV -# % gui, DIFF.stats.stat5, readback, Dim 0 Size, BL45P-EA-DIFF-01:STAT5:ArraySize0_RBV -# % gui, DIFF.stats.stat5, readback, Dim 1 Size, BL45P-EA-DIFF-01:STAT5:ArraySize1_RBV -# % gui, DIFF.stats.stat5, readback, Dim 2 Size, BL45P-EA-DIFF-01:STAT5:ArraySize2_RBV -# % gui, DIFF.stats.stat5, readback, Input Data Type, BL45P-EA-DIFF-01:STAT5:DataType_RBV -# % gui, DIFF.stats.stat5, readback, Colour Mode, BL45P-EA-DIFF-01:STAT5:ColorMode_RBV -# % gui, DIFF.stats.stat5, readback, Bayer Pattern, BL45P-EA-DIFF-01:STAT5:BayerPattern_RBV -# % gui, DIFF.stats.stat5, readback, Unique id, BL45P-EA-DIFF-01:STAT5:UniqueId_RBV -# % gui, DIFF.stats.stat5, readback, Timestamp, BL45P-EA-DIFF-01:STAT5:TimeStamp_RBV - -# Output -# % gui, DIFF.stats.stat5, groupHeading, Output -# % gui, DIFF.stats.stat5, demand, Name, BL45P-EA-DIFF-01:STAT5:Name -# % gui, DIFF.stats.stat5, enum, Out data type, BL45P-EA-DIFF-01:STAT5:DataTypeOut -# % gui, DIFF.stats.stat5, readback, Out data type, BL45P-EA-DIFF-01:STAT5:DataTypeOut_RBV -# % gui, DIFF.stats.stat5, demand, Attributes file, BL45P-EA-DIFF-01:STAT5:NDAttributesFile - -# Statistics -# % gui, DIFF.stats.stat5, groupHeading, Statistics -# % gui, DIFF.stats.stat5, enum, Compute Statistics, BL45P-EA-DIFF-01:STAT5:ComputeStatistics -# % gui, DIFF.stats.stat5, statusbits, Compute Statistics, BL45P-EA-DIFF-01:STAT5:ComputeStatistics_RBV -# % gui, DIFF.stats.stat5, demand, Background Width, BL45P-EA-DIFF-01:STAT5:BgdWidth -# % gui, DIFF.stats.stat5, readback, Background Width, BL45P-EA-DIFF-01:STAT5:BgdWidth_RBV -# % gui, DIFF.stats.stat5, readback, Minimum Value, BL45P-EA-DIFF-01:STAT5:MinValue_RBV -# % gui, DIFF.stats.stat5, readback, Minimum X, BL45P-EA-DIFF-01:STAT5:MinX_RBV -# % gui, DIFF.stats.stat5, readback, Minimum Y, BL45P-EA-DIFF-01:STAT5:MinY_RBV -# % gui, DIFF.stats.stat5, readback, Maximum Value, BL45P-EA-DIFF-01:STAT5:MaxValue_RBV -# % gui, DIFF.stats.stat5, readback, Maximum X, BL45P-EA-DIFF-01:STAT5:MaxX_RBV -# % gui, DIFF.stats.stat5, readback, Maximum Y, BL45P-EA-DIFF-01:STAT5:MaxY_RBV -# % gui, DIFF.stats.stat5, readback, Mean Value, BL45P-EA-DIFF-01:STAT5:MeanValue_RBV -# % gui, DIFF.stats.stat5, readback, Total, BL45P-EA-DIFF-01:STAT5:Total_RBV -# % gui, DIFF.stats.stat5, readback, Sigma, BL45P-EA-DIFF-01:STAT5:Sigma_RBV -# % gui, DIFF.stats.stat5, readback, Net, BL45P-EA-DIFF-01:STAT5:Net_RBV -# Centroid -# % gui, DIFF.stats.stat5, groupHeading, Centroid -# % gui, DIFF.stats.stat5, enum, Compute Centroid, BL45P-EA-DIFF-01:STAT5:ComputeCentroid -# % gui, DIFF.stats.stat5, statusbits, Compute Centroid, BL45P-EA-DIFF-01:STAT5:ComputeCentroid_RBV -# % gui, DIFF.stats.stat5, demand, Threshold, BL45P-EA-DIFF-01:STAT5:CentroidThreshold -# % gui, DIFF.stats.stat5, readback, Threshold, BL45P-EA-DIFF-01:STAT5:CentroidThreshold_RBV -# % gui, DIFF.stats.stat5, readback, X, BL45P-EA-DIFF-01:STAT5:CentroidX_RBV -# % gui, DIFF.stats.stat5, readback, Sigma X, BL45P-EA-DIFF-01:STAT5:SigmaX_RBV -# % gui, DIFF.stats.stat5, readback, Y, BL45P-EA-DIFF-01:STAT5:CentroidY_RBV -# % gui, DIFF.stats.stat5, readback, Sigma Y, BL45P-EA-DIFF-01:STAT5:SigmaY_RBV -# % gui, DIFF.stats.stat5, readback, Sigma XY, BL45P-EA-DIFF-01:STAT5:SigmaXY_RBV -# Histogram -# % gui, DIFF.stats.stat5, groupHeading, Histogram -# % gui, DIFF.stats.stat5, enum, Compute Histogram, BL45P-EA-DIFF-01:STAT5:ComputeHistogram -# % gui, DIFF.stats.stat5, statusbits, Compute Histogram, BL45P-EA-DIFF-01:STAT5:ComputeHistogram_RBV -# % gui, DIFF.stats.stat5, demand, Histogram Size, BL45P-EA-DIFF-01:STAT5:HistSize -# % gui, DIFF.stats.stat5, readback, Histogram Size, BL45P-EA-DIFF-01:STAT5:HistSize_RBV -# % gui, DIFF.stats.stat5, demand, Histogram Min, BL45P-EA-DIFF-01:STAT5:HistMin -# % gui, DIFF.stats.stat5, readback, Histogram Min, BL45P-EA-DIFF-01:STAT5:HistMin_RBV -# % gui, DIFF.stats.stat5, demand, Histogram Max, BL45P-EA-DIFF-01:STAT5:HistMax -# % gui, DIFF.stats.stat5, readback, Histogram Max, BL45P-EA-DIFF-01:STAT5:HistMax_RBV -# % gui, DIFF.stats.stat5, readback, Histogram Entropy, BL45P-EA-DIFF-01:STAT5:HistEntropy_RBV -# Profiles -# % gui, DIFF.stats.stat5, groupHeading, Profiles -# % gui, DIFF.stats.stat5, enum, Compute Profiles, BL45P-EA-DIFF-01:STAT5:ComputeProfiles -# % gui, DIFF.stats.stat5, statusbits, Compute Profiles, BL45P-EA-DIFF-01:STAT5:ComputeProfiles_RBV -# % gui, DIFF.stats.stat5, demand, Cursor X, BL45P-EA-DIFF-01:STAT5:CursorX -# % gui, DIFF.stats.stat5, readback, Cursor X, BL45P-EA-DIFF-01:STAT5:CursorX_RBV -# % gui, DIFF.stats.stat5, demand, Cursor Y, BL45P-EA-DIFF-01:STAT5:CursorY -# % gui, DIFF.stats.stat5, readback, Cursor Y, BL45P-EA-DIFF-01:STAT5:CursorY_RBV -# % gui, DIFF.stats.stat5, readback, Size X, BL45P-EA-DIFF-01:STAT5:ProfileSizeX_RBV -# % gui, DIFF.stats.stat5, readback, Size Y, BL45P-EA-DIFF-01:STAT5:ProfileSizeY_RBV -# Time series -# % gui, DIFF.stats.stat5, groupHeading, Time Series -# % gui, DIFF.stats.stat5, enum, Time Control, BL45P-EA-DIFF-01:STAT5:TS:TSAcquire -# % gui, DIFF.stats.stat5, statusbits, Acquiring, BL45P-EA-DIFF-01:STAT5:TS:TSAcquiring -# % gui, DIFF.stats.stat5, readback, Current Point, BL45P-EA-DIFF-01:STAT5:TS:TSCurrentPoint -# % gui, DIFF.stats.stat5, demand, Number of Points, BL45P-EA-DIFF-01:STAT5:TS:TSNumPoints -# % gui, DIFF.stats.stat5, enum, Update, BL45P-EA-DIFF-01:STAT5:TS:TSRead.SCAN -# Memory -# % gui, DIFF.stats.stat5, groupHeading, Memory -# % gui, DIFF.stats.stat5, readback, Max memory, BL45P-EA-DIFF-01:STAT5:PoolMaxMem -# % gui, DIFF.stats.stat5, readback, Max buffers, BL45P-EA-DIFF-01:STAT5:PoolMaxBuffers -# % gui, DIFF.stats.stat5, readback, Used memory, BL45P-EA-DIFF-01:STAT5:PoolUsedMem -# % gui, DIFF.stats.stat5, readback, Allocated buffers, BL45P-EA-DIFF-01:STAT5:PoolAllocBuffers -# % gui, DIFF.stats.stat5, readback, Free buffers, BL45P-EA-DIFF-01:STAT5:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT5:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT5:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat5,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT5:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat5,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT5:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat5,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT5:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat5,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT5:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat5,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT5:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat5,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT5:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat5,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:STAT5:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:STAT5:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT5:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT5:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:STAT5:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:STAT5:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:STAT5:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT5:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:STAT5:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:STAT5:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:STAT5:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:STAT5:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:STAT5:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:STAT5:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT5:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:STAT5:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:STAT5:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat5,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:STAT5:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT5:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:STAT5:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT5:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:STAT5:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:STAT5:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:STAT5:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT5:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:STAT5:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:STAT5:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT5:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT5:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:STAT5:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:STAT5:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:STAT5:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:STAT5:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:STAT5:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT5:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:STAT5:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:STAT5:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT5:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat5,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:STAT5:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)NDARRAY_PORT") - field(VAL, "DIFF.rois.roi1") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT5:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat5,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT5:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT5:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT5:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:STAT5:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT5:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT5:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:STAT5:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:STAT5:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT5:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:STAT5:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT5:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT5:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT5:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:STAT5:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT5:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT5:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:STAT5:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT5:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:STAT5:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:STAT5:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT5:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:STAT5:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:STAT5:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT5:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:STAT5:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:STAT5:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:STAT5:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:STAT5:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:STAT5:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT5:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT5:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT5:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:STAT5:SortSize") - field(OUT, "BL45P-EA-DIFF-01:STAT5:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:STAT5:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT5:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:STAT5:AsynIO") -{ - field(PORT, "DIFF.stats.stat5") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records contain the basic statistics # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT5:ComputeStatistics") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)COMPUTE_STATISTICS") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT5:ComputeStatistics_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)COMPUTE_STATISTICS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT5:BgdWidth") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)BGD_WIDTH") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:BgdWidth_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)BGD_WIDTH") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:MinValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)MIN_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:MinValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)MIN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:MaxValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)MAX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:MaxValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)MAX_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:MeanValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)MEAN_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:MeanValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)MEAN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:SigmaValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)SIGMA_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:Sigma_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)SIGMA_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:Total") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)TOTAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:Total_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:Net") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)NET") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:Net_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)NET") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:MinX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)MIN_X") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:MinX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:MinY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)MIN_Y") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:MinY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:MaxX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)MAX_X") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:MaxX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)MAX_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:MaxY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)MAX_Y") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:MaxY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)MAX_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether centroid statistics are computed # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT5:ComputeCentroid") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)COMPUTE_CENTROID") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT5:ComputeCentroid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)COMPUTE_CENTROID") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain the centroid statistics # -################################################################### -record(ao, "BL45P-EA-DIFF-01:STAT5:CentroidThreshold") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)CENTROID_THRESHOLD") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:CentroidThreshold_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)CENTROID_THRESHOLD") - field(VAL, "0") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:CentroidTotal") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)CENTROID_TOTAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:CentroidTotal_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)CENTROID_TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:CentroidX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)CENTROIDX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:CentroidX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)CENTROIDX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:CentroidY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)CENTROIDY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:CentroidY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)CENTROIDY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:SigmaX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)SIGMAX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:SigmaX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)SIGMAX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:SigmaY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)SIGMAY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:SigmaY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)SIGMAY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:SigmaXY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)SIGMAXY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:SigmaXY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)SIGMAXY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:SkewX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)SKEWX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:SkewX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)SKEWX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:SkewY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)SKEWY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:SkewY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)SKEWY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:KurtosisX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)KURTOSISX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:KurtosisX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)KURTOSISX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:KurtosisY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)KURTOSISY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:KurtosisY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)KURTOSISY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:Eccentricity") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)ECCENTRICITY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:Eccentricity_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ECCENTRICITY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:Orientation") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)ORIENTATION_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:Orientation_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)ORIENTATION_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control time series # -################################################################### -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSMinValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,0,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSMinX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,1,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSMinY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,2,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSMaxValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,3,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSMaxX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,4,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSMaxY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,5,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSMeanValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,6,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSSigma") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,7,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,8,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSNet") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,9,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSCentroidTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,10,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSCentroidX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,11,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSCentroidY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,12,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSSigmaX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,13,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSSigmaY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,14,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSSigmaXY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,15,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSSkewX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,16,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSSkewY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,17,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSKurtosisX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,18,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSKurtosisY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,19,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSEccentricity") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,20,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSOrientation") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,21,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:TSTimestamp") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5_TS,22,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control profiles # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT5:ComputeProfiles") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)COMPUTE_PROFILES") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT5:ComputeProfiles_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)COMPUTE_PROFILES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ProfileSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)PROFILE_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:ProfileSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)PROFILE_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT5:CursorX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)CURSOR_X") - field(VAL, "256") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:CursorX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)CURSOR_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT5:CursorY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)CURSOR_Y") - field(VAL, "256") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:CursorY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)CURSOR_Y") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:CursorVal") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)CURSOR_VAL") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:ProfileAverageX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5,0,1)PROFILE_AVERAGE_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:ProfileAverageY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5,0,1)PROFILE_AVERAGE_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:ProfileThresholdX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5,0,1)PROFILE_THRESHOLD_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:ProfileThresholdY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5,0,1)PROFILE_THRESHOLD_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:ProfileCentroidX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5,0,1)PROFILE_CENTROID_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:ProfileCentroidY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5,0,1)PROFILE_CENTROID_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:ProfileCursorX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5,0,1)PROFILE_CURSOR_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:ProfileCursorY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5,0,1)PROFILE_CURSOR_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These are used to define the histogram # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT5:ComputeHistogram") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)COMPUTE_HISTOGRAM") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT5:ComputeHistogram_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)COMPUTE_HISTOGRAM") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT5:HistSize") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)HIST_SIZE") - field(VAL, "256") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:HistSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)HIST_SIZE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:HistMin") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)HIST_MIN") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:HistMin_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)HIST_MIN") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:HistMax") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)HIST_MAX") - field(VAL, "255") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:HistMax_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)HIST_MAX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT5:HistBelow") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)HIST_BELOW") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:HistBelow_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)HIST_BELOW") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT5:HistAbove") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)HIST_ABOVE") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:HistAbove_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat5,0,1)HIST_ABOVE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT5:HistEntropy") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat5,0,1)HIST_ENTROPY") -} - -record(ai, "BL45P-EA-DIFF-01:STAT5:HistEntropy_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat5,0,1)HIST_ENTROPY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:Histogram_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5,0,1)HIST_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT5:HistogramX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat5,0,1)HIST_X_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records set the HOPR and LOPR values for the cursor # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:STAT5:MaxSizeX") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:ProfileSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:STAT5:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT5:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:STAT5:CursorX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:STAT5:MaxSizeY") -{ - field(INP, "BL45P-EA-DIFF-01:STAT5:ProfileSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:STAT5:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT5:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:STAT5:CursorY.HOPR NPP") -} - -################################################################### -# These records reset the statistics # -################################################################### -record(sseq, "BL45P-EA-DIFF-01:STAT5:Reset") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT5:MinValue PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT5:MaxValue PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT5:MeanValue PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT5:SigmaValue PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT5:Total PP MS") - field(LNK6, "BL45P-EA-DIFF-01:STAT5:Net PP MS") - field(LNK7, "BL45P-EA-DIFF-01:STAT5:MinX PP MS") - field(LNK8, "BL45P-EA-DIFF-01:STAT5:MinY PP MS") - field(LNK9, "BL45P-EA-DIFF-01:STAT5:MaxX PP MS") - field(LNKA, "BL45P-EA-DIFF-01:STAT5:MaxY PP MS") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Reset1") -} - -record(sseq, "BL45P-EA-DIFF-01:STAT5:Reset1") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT5:CentroidX PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT5:CentroidY PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT5:SigmaX PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT5:SigmaY PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT5:SigmaXY PP MS") - field(LNK6, "BL45P-EA-DIFF-01:STAT5:CentroidTotal PP MS") - field(LNK7, "BL45P-EA-DIFF-01:STAT5:SkewX PP MS") - field(LNK8, "BL45P-EA-DIFF-01:STAT5:SkewY PP MS") - field(LNK9, "BL45P-EA-DIFF-01:STAT5:KurtosisX PP MS") - field(LNKA, "BL45P-EA-DIFF-01:STAT5:KurtosisY PP MS") - field(FLNK, "BL45P-EA-DIFF-01:STAT5:Reset2") -} - -record(sseq, "BL45P-EA-DIFF-01:STAT5:Reset2") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT5:Eccentricity PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT5:Orientation PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT5:HistBelow PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT5:HistAbove PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT5:HistEntropy PP MS") -} - -#=================================================================# -# Template file: NDStats.template - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, NCHANS, Number of channels -# % macro, XSIZE, x size -# % macro, YSIZE, y size -# % macro, HIST_SIZE, hist size -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Timeout -# % macro, TS_PORT, TS port - -# This associates the template with an edm screen -# % gui, DIFF.stats.stat6, edmtab, NDStats.edl, P=BL45P-EA-DIFF-01,R=:STAT6: - -# This associates a BOY screen with the template -# % gui, DIFF.stats.stat6, boydetail,ADApp_opi/dls/stats_detail.opi, P=BL45P-EA-DIFF-01, R=:STAT6:, DESC=Statistics -# % gui, DIFF.stats.stat6, boyembed, ADApp_opi/dls/stats_embed_box.opi, P=BL45P-EA-DIFF-01, R=:STAT6:, DESC=Statistics -# % gui, DIFF.stats.stat6, boyembed, ADApp_opi/dls/stats_embed.opi, P=BL45P-EA-DIFF-01, R=:STAT6:, DESC=Statistics - - -# % gui, DIFF.stats.stat6, groupHeading, Info -# % gui, DIFF.stats.stat6, readback, Port name, BL45P-EA-DIFF-01:STAT6:PortName_RBV -# % gui, DIFF.stats.stat6, readback, Plugin type, BL45P-EA-DIFF-01:STAT6:PluginType_RBV -# Input -# % gui, DIFF.stats.stat6, demandString, Input, BL45P-EA-DIFF-01:STAT6:NDArrayPort -# % gui, DIFF.stats.stat6, readback, Input, BL45P-EA-DIFF-01:STAT6:NDArrayPort_RBV - -# % gui, DIFF.stats.stat6, groupHeading, Callback -# % gui, DIFF.stats.stat6, enum, Callbacks, BL45P-EA-DIFF-01:STAT6:EnableCallbacks -# % gui, DIFF.stats.stat6, statusbits, Callbacks, BL45P-EA-DIFF-01:STAT6:EnableCallbacks_RBV -# % gui, DIFF.stats.stat6, demand, Min Callback Time, BL45P-EA-DIFF-01:STAT6:MinCallbackTime -# % gui, DIFF.stats.stat6, readback, Min Callback Time, BL45P-EA-DIFF-01:STAT6:MinCallbackTime_RBV -# % gui, DIFF.stats.stat6, enum, Block Callbacks, BL45P-EA-DIFF-01:STAT6:BlockingCallbacks -# % gui, DIFF.stats.stat6, statusbits, Block Callbacks, BL45P-EA-DIFF-01:STAT6:BlockingCallbacks_RBV - -# % gui, DIFF.stats.stat6, groupHeading, Counters -# % gui, DIFF.stats.stat6, demand, Array Counter, BL45P-EA-DIFF-01:STAT6:ArrayCounter -# % gui, DIFF.stats.stat6, readback, Array Counter, BL45P-EA-DIFF-01:STAT6:ArrayCounter_RBV -# % gui, DIFF.stats.stat6, readback, Array Rate (fps), BL45P-EA-DIFF-01:STAT6:ArrayRate_RBV -# % gui, DIFF.stats.stat6, readback, Queue Use, BL45P-EA-DIFF-01:STAT6:QueueUse -# % gui, DIFF.stats.stat6, readback, Queue Size, BL45P-EA-DIFF-01:STAT6:QueueSize -# % gui, DIFF.stats.stat6, demand, Dropped Arrays, BL45P-EA-DIFF-01:STAT6:DroppedArrays -# % gui, DIFF.stats.stat6, readback, Dropped Arrays, BL45P-EA-DIFF-01:STAT6:DroppedArrays_RBV - -# % gui, DIFF.stats.stat6, groupHeading, Array Settings -# % gui, DIFF.stats.stat6, readback, Num Dimensions, BL45P-EA-DIFF-01:STAT6:NDimensions_RBV -# % gui, DIFF.stats.stat6, readback, Dim 0 Size, BL45P-EA-DIFF-01:STAT6:ArraySize0_RBV -# % gui, DIFF.stats.stat6, readback, Dim 1 Size, BL45P-EA-DIFF-01:STAT6:ArraySize1_RBV -# % gui, DIFF.stats.stat6, readback, Dim 2 Size, BL45P-EA-DIFF-01:STAT6:ArraySize2_RBV -# % gui, DIFF.stats.stat6, readback, Input Data Type, BL45P-EA-DIFF-01:STAT6:DataType_RBV -# % gui, DIFF.stats.stat6, readback, Colour Mode, BL45P-EA-DIFF-01:STAT6:ColorMode_RBV -# % gui, DIFF.stats.stat6, readback, Bayer Pattern, BL45P-EA-DIFF-01:STAT6:BayerPattern_RBV -# % gui, DIFF.stats.stat6, readback, Unique id, BL45P-EA-DIFF-01:STAT6:UniqueId_RBV -# % gui, DIFF.stats.stat6, readback, Timestamp, BL45P-EA-DIFF-01:STAT6:TimeStamp_RBV - -# Output -# % gui, DIFF.stats.stat6, groupHeading, Output -# % gui, DIFF.stats.stat6, demand, Name, BL45P-EA-DIFF-01:STAT6:Name -# % gui, DIFF.stats.stat6, enum, Out data type, BL45P-EA-DIFF-01:STAT6:DataTypeOut -# % gui, DIFF.stats.stat6, readback, Out data type, BL45P-EA-DIFF-01:STAT6:DataTypeOut_RBV -# % gui, DIFF.stats.stat6, demand, Attributes file, BL45P-EA-DIFF-01:STAT6:NDAttributesFile - -# Statistics -# % gui, DIFF.stats.stat6, groupHeading, Statistics -# % gui, DIFF.stats.stat6, enum, Compute Statistics, BL45P-EA-DIFF-01:STAT6:ComputeStatistics -# % gui, DIFF.stats.stat6, statusbits, Compute Statistics, BL45P-EA-DIFF-01:STAT6:ComputeStatistics_RBV -# % gui, DIFF.stats.stat6, demand, Background Width, BL45P-EA-DIFF-01:STAT6:BgdWidth -# % gui, DIFF.stats.stat6, readback, Background Width, BL45P-EA-DIFF-01:STAT6:BgdWidth_RBV -# % gui, DIFF.stats.stat6, readback, Minimum Value, BL45P-EA-DIFF-01:STAT6:MinValue_RBV -# % gui, DIFF.stats.stat6, readback, Minimum X, BL45P-EA-DIFF-01:STAT6:MinX_RBV -# % gui, DIFF.stats.stat6, readback, Minimum Y, BL45P-EA-DIFF-01:STAT6:MinY_RBV -# % gui, DIFF.stats.stat6, readback, Maximum Value, BL45P-EA-DIFF-01:STAT6:MaxValue_RBV -# % gui, DIFF.stats.stat6, readback, Maximum X, BL45P-EA-DIFF-01:STAT6:MaxX_RBV -# % gui, DIFF.stats.stat6, readback, Maximum Y, BL45P-EA-DIFF-01:STAT6:MaxY_RBV -# % gui, DIFF.stats.stat6, readback, Mean Value, BL45P-EA-DIFF-01:STAT6:MeanValue_RBV -# % gui, DIFF.stats.stat6, readback, Total, BL45P-EA-DIFF-01:STAT6:Total_RBV -# % gui, DIFF.stats.stat6, readback, Sigma, BL45P-EA-DIFF-01:STAT6:Sigma_RBV -# % gui, DIFF.stats.stat6, readback, Net, BL45P-EA-DIFF-01:STAT6:Net_RBV -# Centroid -# % gui, DIFF.stats.stat6, groupHeading, Centroid -# % gui, DIFF.stats.stat6, enum, Compute Centroid, BL45P-EA-DIFF-01:STAT6:ComputeCentroid -# % gui, DIFF.stats.stat6, statusbits, Compute Centroid, BL45P-EA-DIFF-01:STAT6:ComputeCentroid_RBV -# % gui, DIFF.stats.stat6, demand, Threshold, BL45P-EA-DIFF-01:STAT6:CentroidThreshold -# % gui, DIFF.stats.stat6, readback, Threshold, BL45P-EA-DIFF-01:STAT6:CentroidThreshold_RBV -# % gui, DIFF.stats.stat6, readback, X, BL45P-EA-DIFF-01:STAT6:CentroidX_RBV -# % gui, DIFF.stats.stat6, readback, Sigma X, BL45P-EA-DIFF-01:STAT6:SigmaX_RBV -# % gui, DIFF.stats.stat6, readback, Y, BL45P-EA-DIFF-01:STAT6:CentroidY_RBV -# % gui, DIFF.stats.stat6, readback, Sigma Y, BL45P-EA-DIFF-01:STAT6:SigmaY_RBV -# % gui, DIFF.stats.stat6, readback, Sigma XY, BL45P-EA-DIFF-01:STAT6:SigmaXY_RBV -# Histogram -# % gui, DIFF.stats.stat6, groupHeading, Histogram -# % gui, DIFF.stats.stat6, enum, Compute Histogram, BL45P-EA-DIFF-01:STAT6:ComputeHistogram -# % gui, DIFF.stats.stat6, statusbits, Compute Histogram, BL45P-EA-DIFF-01:STAT6:ComputeHistogram_RBV -# % gui, DIFF.stats.stat6, demand, Histogram Size, BL45P-EA-DIFF-01:STAT6:HistSize -# % gui, DIFF.stats.stat6, readback, Histogram Size, BL45P-EA-DIFF-01:STAT6:HistSize_RBV -# % gui, DIFF.stats.stat6, demand, Histogram Min, BL45P-EA-DIFF-01:STAT6:HistMin -# % gui, DIFF.stats.stat6, readback, Histogram Min, BL45P-EA-DIFF-01:STAT6:HistMin_RBV -# % gui, DIFF.stats.stat6, demand, Histogram Max, BL45P-EA-DIFF-01:STAT6:HistMax -# % gui, DIFF.stats.stat6, readback, Histogram Max, BL45P-EA-DIFF-01:STAT6:HistMax_RBV -# % gui, DIFF.stats.stat6, readback, Histogram Entropy, BL45P-EA-DIFF-01:STAT6:HistEntropy_RBV -# Profiles -# % gui, DIFF.stats.stat6, groupHeading, Profiles -# % gui, DIFF.stats.stat6, enum, Compute Profiles, BL45P-EA-DIFF-01:STAT6:ComputeProfiles -# % gui, DIFF.stats.stat6, statusbits, Compute Profiles, BL45P-EA-DIFF-01:STAT6:ComputeProfiles_RBV -# % gui, DIFF.stats.stat6, demand, Cursor X, BL45P-EA-DIFF-01:STAT6:CursorX -# % gui, DIFF.stats.stat6, readback, Cursor X, BL45P-EA-DIFF-01:STAT6:CursorX_RBV -# % gui, DIFF.stats.stat6, demand, Cursor Y, BL45P-EA-DIFF-01:STAT6:CursorY -# % gui, DIFF.stats.stat6, readback, Cursor Y, BL45P-EA-DIFF-01:STAT6:CursorY_RBV -# % gui, DIFF.stats.stat6, readback, Size X, BL45P-EA-DIFF-01:STAT6:ProfileSizeX_RBV -# % gui, DIFF.stats.stat6, readback, Size Y, BL45P-EA-DIFF-01:STAT6:ProfileSizeY_RBV -# Time series -# % gui, DIFF.stats.stat6, groupHeading, Time Series -# % gui, DIFF.stats.stat6, enum, Time Control, BL45P-EA-DIFF-01:STAT6:TS:TSAcquire -# % gui, DIFF.stats.stat6, statusbits, Acquiring, BL45P-EA-DIFF-01:STAT6:TS:TSAcquiring -# % gui, DIFF.stats.stat6, readback, Current Point, BL45P-EA-DIFF-01:STAT6:TS:TSCurrentPoint -# % gui, DIFF.stats.stat6, demand, Number of Points, BL45P-EA-DIFF-01:STAT6:TS:TSNumPoints -# % gui, DIFF.stats.stat6, enum, Update, BL45P-EA-DIFF-01:STAT6:TS:TSRead.SCAN -# Memory -# % gui, DIFF.stats.stat6, groupHeading, Memory -# % gui, DIFF.stats.stat6, readback, Max memory, BL45P-EA-DIFF-01:STAT6:PoolMaxMem -# % gui, DIFF.stats.stat6, readback, Max buffers, BL45P-EA-DIFF-01:STAT6:PoolMaxBuffers -# % gui, DIFF.stats.stat6, readback, Used memory, BL45P-EA-DIFF-01:STAT6:PoolUsedMem -# % gui, DIFF.stats.stat6, readback, Allocated buffers, BL45P-EA-DIFF-01:STAT6:PoolAllocBuffers -# % gui, DIFF.stats.stat6, readback, Free buffers, BL45P-EA-DIFF-01:STAT6:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT6:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT6:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat6,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT6:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat6,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT6:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat6,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT6:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat6,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT6:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat6,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT6:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat6,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT6:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat6,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:STAT6:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:STAT6:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT6:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT6:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:STAT6:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:STAT6:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:STAT6:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT6:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:STAT6:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:STAT6:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:STAT6:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:STAT6:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:STAT6:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:STAT6:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:STAT6:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:STAT6:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:STAT6:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat6,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:STAT6:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT6:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:STAT6:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT6:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:STAT6:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:STAT6:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:STAT6:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT6:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:STAT6:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:STAT6:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT6:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT6:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:STAT6:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:STAT6:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:STAT6:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:STAT6:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:STAT6:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT6:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:STAT6:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:STAT6:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:STAT6:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat6,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:STAT6:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)NDARRAY_PORT") - field(VAL, "DIFF.rois.roi1") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:STAT6:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.stats.stat6,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT6:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT6:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT6:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:STAT6:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT6:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT6:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:STAT6:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:STAT6:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:STAT6:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:STAT6:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT6:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT6:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT6:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:STAT6:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT6:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT6:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:STAT6:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT6:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:STAT6:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:STAT6:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT6:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:STAT6:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:STAT6:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:STAT6:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:STAT6:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:STAT6:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:STAT6:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:STAT6:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:STAT6:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:STAT6:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT6:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:STAT6:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:STAT6:SortSize") - field(OUT, "BL45P-EA-DIFF-01:STAT6:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:STAT6:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT6:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:STAT6:AsynIO") -{ - field(PORT, "DIFF.stats.stat6") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records contain the basic statistics # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT6:ComputeStatistics") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)COMPUTE_STATISTICS") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT6:ComputeStatistics_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)COMPUTE_STATISTICS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT6:BgdWidth") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)BGD_WIDTH") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:BgdWidth_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)BGD_WIDTH") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:MinValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)MIN_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:MinValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)MIN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:MaxValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)MAX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:MaxValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)MAX_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:MeanValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)MEAN_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:MeanValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)MEAN_VALUE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:SigmaValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)SIGMA_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:Sigma_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)SIGMA_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:Total") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)TOTAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:Total_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:Net") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)NET") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:Net_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)NET") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:MinX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)MIN_X") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:MinX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:MinY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)MIN_Y") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:MinY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:MaxX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)MAX_X") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:MaxX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)MAX_X") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:MaxY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)MAX_Y") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:MaxY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)MAX_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether centroid statistics are computed # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT6:ComputeCentroid") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)COMPUTE_CENTROID") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT6:ComputeCentroid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)COMPUTE_CENTROID") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain the centroid statistics # -################################################################### -record(ao, "BL45P-EA-DIFF-01:STAT6:CentroidThreshold") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)CENTROID_THRESHOLD") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:CentroidThreshold_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)CENTROID_THRESHOLD") - field(VAL, "0") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:CentroidTotal") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)CENTROID_TOTAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:CentroidTotal_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)CENTROID_TOTAL") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:CentroidX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)CENTROIDX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:CentroidX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)CENTROIDX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:CentroidY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)CENTROIDY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:CentroidY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)CENTROIDY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:SigmaX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)SIGMAX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:SigmaX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)SIGMAX_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:SigmaY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)SIGMAY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:SigmaY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)SIGMAY_VALUE") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:SigmaXY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)SIGMAXY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:SigmaXY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)SIGMAXY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:SkewX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)SKEWX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:SkewX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)SKEWX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:SkewY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)SKEWY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:SkewY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)SKEWY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:KurtosisX") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)KURTOSISX_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:KurtosisX_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)KURTOSISX_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:KurtosisY") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)KURTOSISY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:KurtosisY_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)KURTOSISY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:Eccentricity") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)ECCENTRICITY_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:Eccentricity_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ECCENTRICITY_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:Orientation") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)ORIENTATION_VALUE") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:Orientation_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)ORIENTATION_VALUE") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control time series # -################################################################### -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSMinValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,0,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSMinX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,1,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSMinY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,2,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSMaxValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,3,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSMaxX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,4,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSMaxY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,5,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSMeanValue") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,6,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSSigma") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,7,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,8,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSNet") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,9,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSCentroidTotal") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,10,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSCentroidX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,11,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSCentroidY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,12,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSSigmaX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,13,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSSigmaY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,14,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSSigmaXY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,15,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSSkewX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,16,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSSkewY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,17,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSKurtosisX") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,18,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSKurtosisY") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,19,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSEccentricity") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,20,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSOrientation") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,21,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:TSTimestamp") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6_TS,22,1)TS_TIME_SERIES") - field(NELM, "1024") - field(FTVL, "DOUBLE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control profiles # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT6:ComputeProfiles") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)COMPUTE_PROFILES") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT6:ComputeProfiles_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)COMPUTE_PROFILES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ProfileSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)PROFILE_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:ProfileSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)PROFILE_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT6:CursorX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)CURSOR_X") - field(VAL, "256") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:CursorX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)CURSOR_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT6:CursorY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)CURSOR_Y") - field(VAL, "256") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:ProcessPlugin") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:CursorY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)CURSOR_Y") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:CursorVal") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)CURSOR_VAL") - field(PREC, "1") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:ProfileAverageX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6,0,1)PROFILE_AVERAGE_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:ProfileAverageY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6,0,1)PROFILE_AVERAGE_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:ProfileThresholdX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6,0,1)PROFILE_THRESHOLD_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:ProfileThresholdY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6,0,1)PROFILE_THRESHOLD_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:ProfileCentroidX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6,0,1)PROFILE_CENTROID_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:ProfileCentroidY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6,0,1)PROFILE_CENTROID_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:ProfileCursorX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6,0,1)PROFILE_CURSOR_X") - field(FTVL, "DOUBLE") - field(NELM, "1936") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:ProfileCursorY_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6,0,1)PROFILE_CURSOR_Y") - field(FTVL, "DOUBLE") - field(NELM, "1216") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These are used to define the histogram # -################################################################### -record(bo, "BL45P-EA-DIFF-01:STAT6:ComputeHistogram") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)COMPUTE_HISTOGRAM") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:STAT6:ComputeHistogram_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)COMPUTE_HISTOGRAM") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT6:HistSize") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)HIST_SIZE") - field(VAL, "256") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:HistSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)HIST_SIZE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:HistMin") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)HIST_MIN") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:HistMin_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)HIST_MIN") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:HistMax") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)HIST_MAX") - field(VAL, "255") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:HistMax_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)HIST_MAX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT6:HistBelow") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)HIST_BELOW") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:HistBelow_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)HIST_BELOW") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:STAT6:HistAbove") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)HIST_ABOVE") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:HistAbove_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.stats.stat6,0,1)HIST_ABOVE") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:STAT6:HistEntropy") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.stats.stat6,0,1)HIST_ENTROPY") -} - -record(ai, "BL45P-EA-DIFF-01:STAT6:HistEntropy_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.stats.stat6,0,1)HIST_ENTROPY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:Histogram_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6,0,1)HIST_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:STAT6:HistogramX_RBV") -{ - field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn(DIFF.stats.stat6,0,1)HIST_X_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records set the HOPR and LOPR values for the cursor # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:STAT6:MaxSizeX") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:ProfileSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:STAT6:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT6:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:STAT6:CursorX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:STAT6:MaxSizeY") -{ - field(INP, "BL45P-EA-DIFF-01:STAT6:ProfileSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:STAT6:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:STAT6:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:STAT6:CursorY.HOPR NPP") -} - -################################################################### -# These records reset the statistics # -################################################################### -record(sseq, "BL45P-EA-DIFF-01:STAT6:Reset") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT6:MinValue PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT6:MaxValue PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT6:MeanValue PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT6:SigmaValue PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT6:Total PP MS") - field(LNK6, "BL45P-EA-DIFF-01:STAT6:Net PP MS") - field(LNK7, "BL45P-EA-DIFF-01:STAT6:MinX PP MS") - field(LNK8, "BL45P-EA-DIFF-01:STAT6:MinY PP MS") - field(LNK9, "BL45P-EA-DIFF-01:STAT6:MaxX PP MS") - field(LNKA, "BL45P-EA-DIFF-01:STAT6:MaxY PP MS") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Reset1") -} - -record(sseq, "BL45P-EA-DIFF-01:STAT6:Reset1") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT6:CentroidX PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT6:CentroidY PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT6:SigmaX PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT6:SigmaY PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT6:SigmaXY PP MS") - field(LNK6, "BL45P-EA-DIFF-01:STAT6:CentroidTotal PP MS") - field(LNK7, "BL45P-EA-DIFF-01:STAT6:SkewX PP MS") - field(LNK8, "BL45P-EA-DIFF-01:STAT6:SkewY PP MS") - field(LNK9, "BL45P-EA-DIFF-01:STAT6:KurtosisX PP MS") - field(LNKA, "BL45P-EA-DIFF-01:STAT6:KurtosisY PP MS") - field(FLNK, "BL45P-EA-DIFF-01:STAT6:Reset2") -} - -record(sseq, "BL45P-EA-DIFF-01:STAT6:Reset2") -{ - field(LNK1, "BL45P-EA-DIFF-01:STAT6:Eccentricity PP MS") - field(LNK2, "BL45P-EA-DIFF-01:STAT6:Orientation PP MS") - field(LNK3, "BL45P-EA-DIFF-01:STAT6:HistBelow PP MS") - field(LNK4, "BL45P-EA-DIFF-01:STAT6:HistAbove PP MS") - field(LNK5, "BL45P-EA-DIFF-01:STAT6:HistEntropy PP MS") -} - -#=================================================================# -# Template file: NDStdArrays.template -# Database for NDStdArrays asyn driver and standard asyn device support -# Mark Rivers -# April 14, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, TYPE, Asyn Type e.g. Int32 -# % macro, FTVL, Format, e.g. Int -# % macro, NELEMENTS, Number of elements - -# This associates the template with an edm screen -# % gui, DET.arr, edmtab, NDStdArrays.edl, P=BL45P-EA-MAP-01,R=:ARR: - -# This associates a BOY screen with the template -# % gui, DET.arr, boydetail,ADApp_opi/dls/array_detail.opi, P=BL45P-EA-MAP-01, R=:ARR:, DESC=Array -# % gui, DET.arr, boyembed, ADApp_opi/dls/array_embed_box.opi, P=BL45P-EA-MAP-01, R=:ARR:, DESC=Array -# % gui, DET.arr, boyembed, ADApp_opi/dls/array_embed.opi, P=BL45P-EA-MAP-01, R=:ARR:, DESC=Array - -# Info -# % gui, DET.arr, groupHeading, Info -# % gui, DET.arr, readback, Port name, BL45P-EA-MAP-01:ARR:PortName_RBV -# % gui, DET.arr, readback, Plugin type, BL45P-EA-MAP-01:ARR:PluginType_RBV -# Input -# % gui, DET.arr, demandString, Input, BL45P-EA-MAP-01:ARR:NDArrayPort -# % gui, DET.arr, readback, Input, BL45P-EA-MAP-01:ARR:NDArrayPort_RBV - -# % gui, DET.arr, groupHeading, Callback -# % gui, DET.arr, enum, Callbacks, BL45P-EA-MAP-01:ARR:EnableCallbacks -# % gui, DET.arr, statusbits, Callbacks, BL45P-EA-MAP-01:ARR:EnableCallbacks_RBV -# % gui, DET.arr, demand, Min Callback Time, BL45P-EA-MAP-01:ARR:MinCallbackTime -# % gui, DET.arr, readback, Min Callback Time, BL45P-EA-MAP-01:ARR:MinCallbackTime_RBV -# % gui, DET.arr, enum, Block Callbacks, BL45P-EA-MAP-01:ARR:BlockingCallbacks -# % gui, DET.arr, statusbits, Block Callbacks, BL45P-EA-MAP-01:ARR:BlockingCallbacks_RBV - -# % gui, DET.arr, groupHeading, Counters -# % gui, DET.arr, demand, Array Counter, BL45P-EA-MAP-01:ARR:ArrayCounter -# % gui, DET.arr, readback, Array Counter, BL45P-EA-MAP-01:ARR:ArrayCounter_RBV -# % gui, DET.arr, readback, Array Rate (fps), BL45P-EA-MAP-01:ARR:ArrayRate_RBV -# % gui, DET.arr, readback, Queue Use, BL45P-EA-MAP-01:ARR:QueueUse -# % gui, DET.arr, readback, Queue Size, BL45P-EA-MAP-01:ARR:QueueSize -# % gui, DET.arr, demand, Dropped Arrays, BL45P-EA-MAP-01:ARR:DroppedArrays -# % gui, DET.arr, readback, Dropped Arrays, BL45P-EA-MAP-01:ARR:DroppedArrays_RBV - -# % gui, DET.arr, groupHeading, Array Settings -# % gui, DET.arr, readback, Num Dimensions, BL45P-EA-MAP-01:ARR:NDimensions_RBV -# % gui, DET.arr, readback, Dim 0 Size, BL45P-EA-MAP-01:ARR:ArraySize0_RBV -# % gui, DET.arr, readback, Dim 1 Size, BL45P-EA-MAP-01:ARR:ArraySize1_RBV -# % gui, DET.arr, readback, Dim 2 Size, BL45P-EA-MAP-01:ARR:ArraySize2_RBV -# % gui, DET.arr, readback, Input Data Type, BL45P-EA-MAP-01:ARR:DataType_RBV -# % gui, DET.arr, readback, Colour Mode, BL45P-EA-MAP-01:ARR:ColorMode_RBV -# % gui, DET.arr, readback, Bayer Pattern, BL45P-EA-MAP-01:ARR:BayerPattern_RBV -# % gui, DET.arr, readback, Unique id, BL45P-EA-MAP-01:ARR:UniqueId_RBV -# % gui, DET.arr, readback, Timestamp, BL45P-EA-MAP-01:ARR:TimeStamp_RBV - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ARR:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.arr,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ARR:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.arr,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ARR:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.arr,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ARR:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.arr,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ARR:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.arr,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ARR:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.arr,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ARR:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.arr,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:ARR:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.arr,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:ARR:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:ARR:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:ARR:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ARR:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:ARR:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:ARR:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:ARR:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:ARR:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ARR:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:ARR:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:ARR:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:ARR:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:ARR:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:ARR:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:ARR:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.arr,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:ARR:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.arr,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:ARR:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:ARR:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:ARR:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:ARR:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:ARR:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:ARR:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.arr,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ARR:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ARR:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ARR:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:ARR:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:ARR:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:ARR:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:ARR:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.arr,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ARR:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ARR:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:ARR:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:ARR:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:ARR:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ARR:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:ARR:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:ARR:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ARR:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ARR:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ARR:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.arr,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:ARR:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.arr,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:ARR:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:ARR:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.arr,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:ARR:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.arr,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:ARR:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:ARR:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ARR:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:ARR:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:ARR:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:ARR:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:ARR:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:ARR:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:ARR:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:ARR:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:ARR:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.arr,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:ARR:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.arr,0,1)NDARRAY_PORT") - field(VAL, "DET.roi") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:ARR:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.arr,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ARR:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:ARR:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:ARR:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ARR:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ARR:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.arr,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ARR:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.arr,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ARR:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:ARR:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:ARR:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:ARR:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:ARR:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:ARR:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:ARR:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:ARR:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.arr,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:ARR:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.arr,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:ARR:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.arr,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:ARR:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:ARR:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:ARR:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:ARR:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ARR:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ARR:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ARR:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ARR:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ARR:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ARR:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ARR:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:ARR:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:ARR:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:ARR:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ARR:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:ARR:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:ARR:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:ARR:QueueSize") - field(OUT, "BL45P-EA-MAP-01:ARR:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:ARR:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:ARR:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:ARR:QueueSize") - field(INPB, "BL45P-EA-MAP-01:ARR:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:ARR:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ARR:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ARR:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:ARR:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:ARR:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:ARR:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.arr,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:ARR:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.arr,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ARR:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ARR:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:ARR:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:ARR:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:ARR:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:ARR:SortSize") - field(OUT, "BL45P-EA-MAP-01:ARR:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:ARR:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:ARR:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:ARR:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.arr,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:ARR:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.arr,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:ARR:AsynIO") -{ - field(PORT, "DET.arr") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# This record is the array waveform data # -################################################################### -record(waveform, "BL45P-EA-MAP-01:ARR:ArrayData") -{ - field(DTYP, "asynInt8ArrayIn") - field(INP, "@asyn(DET.arr,0,1)STD_ARRAY_DATA") - field(FTVL, "UCHAR") - field(NELM, "2354176") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDStdArrays.template -# Database for NDStdArrays asyn driver and standard asyn device support -# Mark Rivers -# April 14, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, TYPE, Asyn Type e.g. Int32 -# % macro, FTVL, Format, e.g. Int -# % macro, NELEMENTS, Number of elements - -# This associates the template with an edm screen -# % gui, DIFF.arr, edmtab, NDStdArrays.edl, P=BL45P-EA-DIFF-01,R=:ARR: - -# This associates a BOY screen with the template -# % gui, DIFF.arr, boydetail,ADApp_opi/dls/array_detail.opi, P=BL45P-EA-DIFF-01, R=:ARR:, DESC=Array -# % gui, DIFF.arr, boyembed, ADApp_opi/dls/array_embed_box.opi, P=BL45P-EA-DIFF-01, R=:ARR:, DESC=Array -# % gui, DIFF.arr, boyembed, ADApp_opi/dls/array_embed.opi, P=BL45P-EA-DIFF-01, R=:ARR:, DESC=Array - -# Info -# % gui, DIFF.arr, groupHeading, Info -# % gui, DIFF.arr, readback, Port name, BL45P-EA-DIFF-01:ARR:PortName_RBV -# % gui, DIFF.arr, readback, Plugin type, BL45P-EA-DIFF-01:ARR:PluginType_RBV -# Input -# % gui, DIFF.arr, demandString, Input, BL45P-EA-DIFF-01:ARR:NDArrayPort -# % gui, DIFF.arr, readback, Input, BL45P-EA-DIFF-01:ARR:NDArrayPort_RBV - -# % gui, DIFF.arr, groupHeading, Callback -# % gui, DIFF.arr, enum, Callbacks, BL45P-EA-DIFF-01:ARR:EnableCallbacks -# % gui, DIFF.arr, statusbits, Callbacks, BL45P-EA-DIFF-01:ARR:EnableCallbacks_RBV -# % gui, DIFF.arr, demand, Min Callback Time, BL45P-EA-DIFF-01:ARR:MinCallbackTime -# % gui, DIFF.arr, readback, Min Callback Time, BL45P-EA-DIFF-01:ARR:MinCallbackTime_RBV -# % gui, DIFF.arr, enum, Block Callbacks, BL45P-EA-DIFF-01:ARR:BlockingCallbacks -# % gui, DIFF.arr, statusbits, Block Callbacks, BL45P-EA-DIFF-01:ARR:BlockingCallbacks_RBV - -# % gui, DIFF.arr, groupHeading, Counters -# % gui, DIFF.arr, demand, Array Counter, BL45P-EA-DIFF-01:ARR:ArrayCounter -# % gui, DIFF.arr, readback, Array Counter, BL45P-EA-DIFF-01:ARR:ArrayCounter_RBV -# % gui, DIFF.arr, readback, Array Rate (fps), BL45P-EA-DIFF-01:ARR:ArrayRate_RBV -# % gui, DIFF.arr, readback, Queue Use, BL45P-EA-DIFF-01:ARR:QueueUse -# % gui, DIFF.arr, readback, Queue Size, BL45P-EA-DIFF-01:ARR:QueueSize -# % gui, DIFF.arr, demand, Dropped Arrays, BL45P-EA-DIFF-01:ARR:DroppedArrays -# % gui, DIFF.arr, readback, Dropped Arrays, BL45P-EA-DIFF-01:ARR:DroppedArrays_RBV - -# % gui, DIFF.arr, groupHeading, Array Settings -# % gui, DIFF.arr, readback, Num Dimensions, BL45P-EA-DIFF-01:ARR:NDimensions_RBV -# % gui, DIFF.arr, readback, Dim 0 Size, BL45P-EA-DIFF-01:ARR:ArraySize0_RBV -# % gui, DIFF.arr, readback, Dim 1 Size, BL45P-EA-DIFF-01:ARR:ArraySize1_RBV -# % gui, DIFF.arr, readback, Dim 2 Size, BL45P-EA-DIFF-01:ARR:ArraySize2_RBV -# % gui, DIFF.arr, readback, Input Data Type, BL45P-EA-DIFF-01:ARR:DataType_RBV -# % gui, DIFF.arr, readback, Colour Mode, BL45P-EA-DIFF-01:ARR:ColorMode_RBV -# % gui, DIFF.arr, readback, Bayer Pattern, BL45P-EA-DIFF-01:ARR:BayerPattern_RBV -# % gui, DIFF.arr, readback, Unique id, BL45P-EA-DIFF-01:ARR:UniqueId_RBV -# % gui, DIFF.arr, readback, Timestamp, BL45P-EA-DIFF-01:ARR:TimeStamp_RBV - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ARR:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.arr,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ARR:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.arr,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ARR:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.arr,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ARR:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.arr,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ARR:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.arr,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ARR:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.arr,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ARR:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.arr,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:ARR:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.arr,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:ARR:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:ARR:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:ARR:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ARR:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:ARR:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:ARR:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:ARR:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:ARR:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ARR:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:ARR:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:ARR:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:ARR:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:ARR:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:ARR:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.arr,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:ARR:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.arr,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:ARR:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:ARR:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:ARR:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:ARR:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:ARR:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:ARR:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.arr,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ARR:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ARR:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:ARR:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:ARR:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:ARR:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:ARR:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.arr,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:ARR:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:ARR:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ARR:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:ARR:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:ARR:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ARR:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ARR:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ARR:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.arr,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:ARR:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.arr,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:ARR:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:ARR:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.arr,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:ARR:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.arr,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:ARR:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ARR:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:ARR:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:ARR:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:ARR:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:ARR:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:ARR:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:ARR:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.arr,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:ARR:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.arr,0,1)NDARRAY_PORT") - field(VAL, "DIFF.roi") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:ARR:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.arr,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ARR:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ARR:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ARR:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ARR:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.arr,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ARR:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.arr,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ARR:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:ARR:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:ARR:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:ARR:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:ARR:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:ARR:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:ARR:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:ARR:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.arr,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:ARR:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.arr,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:ARR:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.arr,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ARR:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:ARR:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:ARR:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:ARR:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ARR:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ARR:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ARR:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ARR:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ARR:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:ARR:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:ARR:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:ARR:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ARR:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:ARR:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:ARR:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:ARR:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:ARR:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:ARR:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:ARR:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:ARR:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:ARR:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:ARR:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:ARR:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:ARR:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.arr,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:ARR:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.arr,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ARR:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:ARR:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:ARR:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:ARR:SortSize") - field(OUT, "BL45P-EA-DIFF-01:ARR:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:ARR:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:ARR:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.arr,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:ARR:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.arr,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:ARR:AsynIO") -{ - field(PORT, "DIFF.arr") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# This record is the array waveform data # -################################################################### -record(waveform, "BL45P-EA-DIFF-01:ARR:ArrayData") -{ - field(DTYP, "asynInt8ArrayIn") - field(INP, "@asyn(DIFF.arr,0,1)STD_ARRAY_DATA") - field(FTVL, "UCHAR") - field(NELM, "2354176") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDProcess.template -# Database for ND PluginProcess -# Mark Rivers -# March 14, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DET.proc, edmtab, NDProcess.edl, P=BL45P-EA-MAP-01,R=:PROC: - -# This associates a BOY screen with the template -# % gui, DET.proc, boydetail,ADApp_opi/dls/proc_detail.opi, P=BL45P-EA-MAP-01, R=:PROC:, DESC=Process -# % gui, DET.proc, boyembed, ADApp_opi/dls/proc_embed_box.opi, P=BL45P-EA-MAP-01, R=:PROC:, DESC=Process -# % gui, DET.proc, boyembed, ADApp_opi/dls/proc_embed.opi, P=BL45P-EA-MAP-01, R=:PROC:, DESC=Process - -# % gui, DET.proc, groupHeading, Info -# % gui, DET.proc, readback, Port name, BL45P-EA-MAP-01:PROC:PortName_RBV -# % gui, DET.proc, readback, Plugin type, BL45P-EA-MAP-01:PROC:PluginType_RBV -# Input -# % gui, DET.proc, demandString, Input, BL45P-EA-MAP-01:PROC:NDArrayPort -# % gui, DET.proc, readback, Input, BL45P-EA-MAP-01:PROC:NDArrayPort_RBV - -# % gui, DET.proc, groupHeading, Callback -# % gui, DET.proc, enum, Callbacks, BL45P-EA-MAP-01:PROC:EnableCallbacks -# % gui, DET.proc, statusbits, Callbacks, BL45P-EA-MAP-01:PROC:EnableCallbacks_RBV -# % gui, DET.proc, demand, Min Callback Time, BL45P-EA-MAP-01:PROC:MinCallbackTime -# % gui, DET.proc, readback, Min Callback Time, BL45P-EA-MAP-01:PROC:MinCallbackTime_RBV -# % gui, DET.proc, enum, Block Callbacks, BL45P-EA-MAP-01:PROC:BlockingCallbacks -# % gui, DET.proc, statusbits, Block Callbacks, BL45P-EA-MAP-01:PROC:BlockingCallbacks_RBV - -# % gui, DET.proc, groupHeading, Counters -# % gui, DET.proc, demand, Array Counter, BL45P-EA-MAP-01:PROC:ArrayCounter -# % gui, DET.proc, readback, Array Counter, BL45P-EA-MAP-01:PROC:ArrayCounter_RBV -# % gui, DET.proc, readback, Array Rate (fps), BL45P-EA-MAP-01:PROC:ArrayRate_RBV -# % gui, DET.proc, readback, Queue Use, BL45P-EA-MAP-01:PROC:QueueUse -# % gui, DET.proc, readback, Queue Size, BL45P-EA-MAP-01:PROC:QueueSize -# % gui, DET.proc, demand, Dropped Arrays, BL45P-EA-MAP-01:PROC:DroppedArrays -# % gui, DET.proc, readback, Dropped Arrays, BL45P-EA-MAP-01:PROC:DroppedArrays_RBV - -# % gui, DET.proc, groupHeading, Array Settings -# % gui, DET.proc, readback, Num Dimensions, BL45P-EA-MAP-01:PROC:NDimensions_RBV -# % gui, DET.proc, readback, Dim 0 Size, BL45P-EA-MAP-01:PROC:ArraySize0_RBV -# % gui, DET.proc, readback, Dim 1 Size, BL45P-EA-MAP-01:PROC:ArraySize1_RBV -# % gui, DET.proc, readback, Dim 2 Size, BL45P-EA-MAP-01:PROC:ArraySize2_RBV -# % gui, DET.proc, readback, Input Data Type, BL45P-EA-MAP-01:PROC:DataType_RBV -# % gui, DET.proc, readback, Colour Mode, BL45P-EA-MAP-01:PROC:ColorMode_RBV -# % gui, DET.proc, readback, Bayer Pattern, BL45P-EA-MAP-01:PROC:BayerPattern_RBV -# % gui, DET.proc, readback, Unique id, BL45P-EA-MAP-01:PROC:UniqueId_RBV -# % gui, DET.proc, readback, Timestamp, BL45P-EA-MAP-01:PROC:TimeStamp_RBV - -# Output -# % gui, DET.proc, groupHeading, Output -# % gui, DET.proc, demand, Name, BL45P-EA-MAP-01:PROC:Name -# % gui, DET.proc, enum, Out data type, BL45P-EA-MAP-01:PROC:DataTypeOut -# % gui, DET.proc, readback, Out data type, BL45P-EA-MAP-01:PROC:DataTypeOut_RBV -# % gui, DET.proc, demand, Attributes file, BL45P-EA-MAP-01:PROC:NDAttributesFile - -# Background subtraction -# % gui, DET.proc, groupHeading, Background Subtraction -# % gui, DET.proc, enum, Enable Subtraction, BL45P-EA-MAP-01:PROC:EnableBackground -# % gui, DET.proc, readback, Enable Subtraction, BL45P-EA-MAP-01:PROC:EnableBackground_RBV -# % gui, DET.proc, command, Save Background, BL45P-EA-MAP-01:PROC:SaveBackground -# % gui, DET.proc, readback, Save Background, BL45P-EA-MAP-01:PROC:SaveBackground_RBV -# Flat field -# % gui, DET.proc, groupHeading, Flat Field -# % gui, DET.proc, enum, Enable Flat Field, BL45P-EA-MAP-01:PROC:EnableFlatField -# % gui, DET.proc, readback, Enable Flat Field, BL45P-EA-MAP-01:PROC:EnableFlatField_RBV -# % gui, DET.proc, command, Save Flat Field, BL45P-EA-MAP-01:PROC:SaveFlatField -# % gui, DET.proc, readback, Save Flat Field, BL45P-EA-MAP-01:PROC:SaveFlatField_RBV -# % gui, DET.proc, demand, Scale Flat Field, BL45P-EA-MAP-01:PROC:ScaleFlatField -# % gui, DET.proc, readback, Scale Flat Field, BL45P-EA-MAP-01:PROC:ScaleFlatField_RBV -# Scale and offset -# % gui, DET.proc, groupHeading, Scale and Offset -# % gui, DET.proc, enum, Enable Scale and Offset, BL45P-EA-MAP-01:PROC:EnableOffsetScale -# % gui, DET.proc, readback, Enable Scale and Offset, BL45P-EA-MAP-01:PROC:EnableOffsetScale_RBV -# % gui, DET.proc, demand, Offset, BL45P-EA-MAP-01:PROC:Offset -# % gui, DET.proc, readback, Offset, BL45P-EA-MAP-01:PROC:Offset_RBV -# % gui, DET.proc, demand, Scale, BL45P-EA-MAP-01:PROC:Scale -# % gui, DET.proc, readback, Scale, BL45P-EA-MAP-01:PROC:Scale_RBV -# % gui, DET.proc, enum, Enable Low Clip, BL45P-EA-MAP-01:PROC:EnableLowClip -# % gui, DET.proc, readback, Enable Low Clip, BL45P-EA-MAP-01:PROC:EnableLowClip_RBV -# % gui, DET.proc, demand, Low Clip, BL45P-EA-MAP-01:PROC:LowClip -# % gui, DET.proc, readback, Low Clip, BL45P-EA-MAP-01:PROC:LowClip_RBV -# % gui, DET.proc, enum, Enable High Clip, BL45P-EA-MAP-01:PROC:EnableHighClip -# % gui, DET.proc, readback, Enable High Clip, BL45P-EA-MAP-01:PROC:EnableHighClip_RBV -# % gui, DET.proc, demand, High Clip, BL45P-EA-MAP-01:PROC:HighClip -# % gui, DET.proc, readback, High Clip, BL45P-EA-MAP-01:PROC:HighClip_RBV -# Recursive filter -# % gui, DET.proc, groupHeading, Recursive Filter -# % gui, DET.proc, enum, Enable Filter, BL45P-EA-MAP-01:PROC:EnableFilter -# % gui, DET.proc, readback, Enable Filter, BL45P-EA-MAP-01:PROC:EnableFilter_RBV -# % gui, DET.proc, enum, Filter Type, BL45P-EA-MAP-01:PROC:FilterType -# % gui, DET.proc, demand, N Filter, BL45P-EA-MAP-01:PROC:NumFilter -# % gui, DET.proc, readback, N Filter, BL45P-EA-MAP-01:PROC:NumFilter_RBV -# % gui, DET.proc, readback, N Filtered, BL45P-EA-MAP-01:PROC:NumFiltered_RBV -# % gui, DET.proc, enum, Filter Callbacks, BL45P-EA-MAP-01:PROC:FilterCallbacks -# % gui, DET.proc, readback, Filter Callbacks, BL45P-EA-MAP-01:PROC:FilterCallbacks_RBV -# % gui, DET.proc, command, Reset, BL45P-EA-MAP-01:PROC:ResetFilter -# % gui, DET.proc, readback, Reset, BL45P-EA-MAP-01:PROC:ResetFilter -# % gui, DET.proc, enum, Auto Reset, BL45P-EA-MAP-01:PROC:AutoResetFilter -# % gui, DET.proc, readback, Auto Reset, BL45P-EA-MAP-01:PROC:AutoResetFilter_RBV -# % gui, DET.proc, demand, Output Scale, BL45P-EA-MAP-01:PROC:OScale -# % gui, DET.proc, readback, Output Scale, BL45P-EA-MAP-01:PROC:OScale_RBV -# % gui, DET.proc, demand, Output Offset, BL45P-EA-MAP-01:PROC:OOffset -# % gui, DET.proc, readback, Output Offset, BL45P-EA-MAP-01:PROC:OOffset_RBV -# % gui, DET.proc, demand, Filter Scale, BL45P-EA-MAP-01:PROC:FScale -# % gui, DET.proc, readback, Filter Scale, BL45P-EA-MAP-01:PROC:FScale_RBV -# % gui, DET.proc, demand, Filter Offset, BL45P-EA-MAP-01:PROC:FOffset -# % gui, DET.proc, readback, Filter Offset, BL45P-EA-MAP-01:PROC:FOffset_RBV -# Memory -# % gui, DET.proc, groupHeading, Memory -# % gui, DET.proc, readback, Max memory, BL45P-EA-MAP-01:PROC:PoolMaxMem -# % gui, DET.proc, readback, Max buffers, BL45P-EA-MAP-01:PROC:PoolMaxBuffers -# % gui, DET.proc, readback, Used memory, BL45P-EA-MAP-01:PROC:PoolUsedMem -# % gui, DET.proc, readback, Allocated buffers, BL45P-EA-MAP-01:PROC:PoolAllocBuffers -# % gui, DET.proc, readback, Free buffers, BL45P-EA-MAP-01:PROC:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:PROC:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.proc,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:PROC:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.proc,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:PROC:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.proc,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:PROC:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.proc,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:PROC:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.proc,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:PROC:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.proc,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:PROC:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.proc,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:PROC:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.proc,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:PROC:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:PROC:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:PROC:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:PROC:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:PROC:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:PROC:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:PROC:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:PROC:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:PROC:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:PROC:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:PROC:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:PROC:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:PROC:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:PROC:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:PROC:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.proc,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:PROC:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.proc,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PROC:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PROC:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:PROC:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PROC:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:PROC:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:PROC:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.proc,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PROC:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:PROC:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:PROC:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:PROC:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:PROC:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:PROC:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:PROC:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PROC:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PROC:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:PROC:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:PROC:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:PROC:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:PROC:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:PROC:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:PROC:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:PROC:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:PROC:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:PROC:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.proc,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:PROC:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.proc,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:PROC:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:PROC:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:PROC:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:PROC:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:PROC:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:PROC:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:PROC:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:PROC:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:PROC:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:PROC:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:PROC:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:PROC:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:PROC:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:PROC:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.proc,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:PROC:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.proc,0,1)NDARRAY_PORT") - field(VAL, "DET.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:PROC:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.proc,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:PROC:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:PROC:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:PROC:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:PROC:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:PROC:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:PROC:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:PROC:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:PROC:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:PROC:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:PROC:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:PROC:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:PROC:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:PROC:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:PROC:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:PROC:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:PROC:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:PROC:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:PROC:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:PROC:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:PROC:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:PROC:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:PROC:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:PROC:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:PROC:QueueSize") - field(OUT, "BL45P-EA-MAP-01:PROC:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:PROC:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:PROC:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:PROC:QueueSize") - field(OUT, "BL45P-EA-MAP-01:PROC:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:PROC:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:PROC:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:PROC:QueueSize") - field(OUT, "BL45P-EA-MAP-01:PROC:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:PROC:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:PROC:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:PROC:QueueSize") - field(INPB, "BL45P-EA-MAP-01:PROC:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:PROC:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:PROC:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PROC:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:PROC:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:PROC:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:PROC:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:PROC:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:PROC:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:PROC:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PROC:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:PROC:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:PROC:SortSize") - field(OUT, "BL45P-EA-MAP-01:PROC:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:PROC:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:PROC:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:PROC:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:PROC:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:PROC:AsynIO") -{ - field(PORT, "DET.proc") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:PROC:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)PROCESS_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:PROC:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)PROCESS_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the background array processing # -################################################################### -record(bo, "BL45P-EA-MAP-01:PROC:SaveBackground") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)SAVE_BACKGROUND") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(bi, "BL45P-EA-MAP-01:PROC:SaveBackground_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)SAVE_BACKGROUND") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:PROC:EnableBackground") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)ENABLE_BACKGROUND") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:PROC:EnableBackground_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ENABLE_BACKGROUND") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-MAP-01:PROC:ValidBackground_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)VALID_BACKGROUND") - field(ZNAM, "Invalid") - field(ONAM, "Valid") - field(SCAN, "I/O Intr") -} - -record(sseq, "BL45P-EA-MAP-01:PROC:ReadBackgroundTIFFSeq") -{ - # Make a backup copy of the NDArrayPort field - field(DOL1, "BL45P-EA-MAP-01:PROC:NDArrayPort") - field(LNK1, "BL45P-EA-MAP-01:PROC:PortBackup PP MS") - # Set the NDArrayPort field to the TIFF plugin - field(DOL2, "BL45P-EA-MAP-01:PROC:TIFF:PortName_RBV") - field(LNK2, "BL45P-EA-MAP-01:PROC:NDArrayPort PP MS") - # Enable array callbacks in the TIFF plugin - field(STR3, "Enable") - field(LNK3, "BL45P-EA-MAP-01:PROC:TIFF:ArrayCallbacks PP MS") - # Read the TIFF file - field(DLY4, "0.1") - field(DO4, "1") - field(LNK4, "BL45P-EA-MAP-01:PROC:TIFF:ReadFile PP MS") - # Save background TIFF - field(DLY5, "0.5") - field(DO5, "1") - field(LNK5, "BL45P-EA-MAP-01:PROC:SaveBackground PP MS") - # Restore the NDArrayPort field - field(DOL6, "BL45P-EA-MAP-01:PROC:PortBackup") - field(LNK6, "BL45P-EA-MAP-01:PROC:NDArrayPort PP MS") -} - -record(stringout, "BL45P-EA-MAP-01:PROC:PortBackup") -{ -} - -################################################################### -# These records control the flat field array processing # -################################################################### -record(bo, "BL45P-EA-MAP-01:PROC:SaveFlatField") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)SAVE_FLAT_FIELD") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(bi, "BL45P-EA-MAP-01:PROC:SaveFlatField_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)SAVE_FLAT_FIELD") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:PROC:EnableFlatField") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)ENABLE_FLAT_FIELD") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:PROC:EnableFlatField_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ENABLE_FLAT_FIELD") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-MAP-01:PROC:ValidFlatField_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)VALID_FLAT_FIELD") - field(ZNAM, "Invalid") - field(ONAM, "Valid") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:ScaleFlatField") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)SCALE_FLAT_FIELD") - field(VAL, "255.") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:PROC:ScaleFlatField_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)SCALE_FLAT_FIELD") - field(SCAN, "I/O Intr") -} - -record(sseq, "BL45P-EA-MAP-01:PROC:ReadFlatFieldTIFFSeq") -{ - # Make a backup copy of the NDArrayPort field - field(DOL1, "BL45P-EA-MAP-01:PROC:NDArrayPort") - field(LNK1, "BL45P-EA-MAP-01:PROC:PortBackup PP MS") - # Set the NDArrayPort field to the TIFF plugin - field(DOL2, "BL45P-EA-MAP-01:PROC:TIFF:PortName_RBV") - field(LNK2, "BL45P-EA-MAP-01:PROC:NDArrayPort PP MS") - # Enable array callbacks in the TIFF plugin - field(STR3, "Enable") - field(LNK3, "BL45P-EA-MAP-01:PROC:TIFF:ArrayCallbacks PP MS") - # Read the TIFF file - field(DLY4, "0.1") - field(DO4, "1") - field(LNK4, "BL45P-EA-MAP-01:PROC:TIFF:ReadFile PP MS") - # Save background TIFF - field(DLY5, "0.5") - field(DO5, "1") - field(LNK5, "BL45P-EA-MAP-01:PROC:SaveFlatField PP MS") - # Restore the NDArrayPort field - field(DOL6, "BL45P-EA-MAP-01:PROC:PortBackup") - field(LNK6, "BL45P-EA-MAP-01:PROC:NDArrayPort PP MS") -} - -################################################################### -# These records control the offset and scale # -################################################################### -record(bo, "BL45P-EA-MAP-01:PROC:EnableOffsetScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)ENABLE_OFFSET_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -# Oneshot record for calculating scale and offset -record(busy, "BL45P-EA-MAP-01:PROC:AutoOffsetScale") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)AUTO_OFFSET_SCALE") - field(ZNAM, "Done") - field(ONAM, "Calculating") -} - -record(bi, "BL45P-EA-MAP-01:PROC:EnableOffsetScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ENABLE_OFFSET_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:Offset") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)OFFSET") - field(PREC, "2") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:PROC:Offset_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)OFFSET") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)SCALE") - field(PREC, "2") - field(VAL, "1.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:PROC:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)SCALE") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the high and low clipping # -################################################################### -record(bo, "BL45P-EA-MAP-01:PROC:EnableLowClip") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)ENABLE_LOW_CLIP") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:PROC:EnableLowClip_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ENABLE_LOW_CLIP") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:LowClip") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)LOW_CLIP") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:PROC:LowClip_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)LOW_CLIP") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:PROC:EnableHighClip") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)ENABLE_HIGH_CLIP") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:PROC:EnableHighClip_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ENABLE_HIGH_CLIP") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:HighClip") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)HIGH_CLIP") - field(VAL, "100.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:PROC:HighClip_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)HIGH_CLIP") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control frame filtering # -################################################################### -record(bo, "BL45P-EA-MAP-01:PROC:EnableFilter") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)ENABLE_FILTER") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:PROC:EnableFilter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)ENABLE_FILTER") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:PROC:ResetFilter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)RESET_FILTER") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(bi, "BL45P-EA-MAP-01:PROC:ResetFilter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)RESET_FILTER") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:PROC:AutoResetFilter") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)AUTO_RESET_FILTER") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:PROC:AutoResetFilter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)AUTO_RESET_FILTER") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:PROC:FilterCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)FILTER_CALLBACKS") - field(ZNAM, "Every array") - field(ONAM, "Array N only") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:PROC:FilterCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)FILTER_CALLBACKS") - field(ZNAM, "Every array") - field(ONAM, "Array N only") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:PROC:NumFilter") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.proc,0,1)NUM_FILTER") - field(VAL, "1") - field(FLNK, "BL45P-EA-MAP-01:PROC:NumFilterRecip.PROC PP") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:PROC:NumFilter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)NUM_FILTER") - field(SCAN, "I/O Intr") -} - -# This is 1/NumFilter, used in RecursiveSum filter -# If this value changes we need to process FilterType to make it update filter coefficients -record(calc, "BL45P-EA-MAP-01:PROC:NumFilterRecip") -{ - field(INPA, "BL45P-EA-MAP-01:PROC:NumFilter.VAL NPP") - field(CALC, "1./A") - field(FLNK, "BL45P-EA-MAP-01:PROC:FilterType.PROC PP") -} - -record(longin, "BL45P-EA-MAP-01:PROC:NumFiltered_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.proc,0,1)NUM_FILTERED") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:OOffset") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)FILTER_OOFFSET") - field(VAL, "0.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-MAP-01:PROC:OOffset_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)FILTER_OOFFSET") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:OScale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)FILTER_OSCALE") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-MAP-01:PROC:OScale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)FILTER_OSCALE") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:OC1") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)FILTER_OC1") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-MAP-01:PROC:OC1_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)FILTER_OC1") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:OC2") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)FILTER_OC2") - field(VAL, "-1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-MAP-01:PROC:OC2_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)FILTER_OC2") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:OC3") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)FILTER_OC3") - field(VAL, "0.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-MAP-01:PROC:OC3_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)FILTER_OC3") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:OC4") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)FILTER_OC4") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-MAP-01:PROC:OC4_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)FILTER_OC4") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:FOffset") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)FILTER_FOFFSET") - field(VAL, "0.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-MAP-01:PROC:FOffset_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)FILTER_FOFFSET") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:FScale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)FILTER_FSCALE") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-MAP-01:PROC:FScale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)FILTER_FSCALE") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:FC1") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)FILTER_FC1") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-MAP-01:PROC:FC1_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)FILTER_FC1") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:FC2") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)FILTER_FC2") - field(VAL, "-1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-MAP-01:PROC:FC2_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)FILTER_FC2") - field(PREC, "2") - field(SCAN, "I/O Intr") -} -record(ao, "BL45P-EA-MAP-01:PROC:FC3") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)FILTER_FC3") - field(VAL, "0.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-MAP-01:PROC:FC3_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)FILTER_FC3") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:FC4") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)FILTER_FC4") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-MAP-01:PROC:FC4_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)FILTER_FC4") - field(PREC, "2") - field(SCAN, "I/O Intr") -} -record(ao, "BL45P-EA-MAP-01:PROC:ROffset") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)FILTER_ROFFSET") - field(VAL, "0.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-MAP-01:PROC:ROffset_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)FILTER_ROFFSET") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:RC1") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)FILTER_RC1") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-MAP-01:PROC:RC1_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)FILTER_RC1") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PROC:RC2") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.proc,0,1)FILTER_RC2") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-MAP-01:PROC:RC2_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.proc,0,1)FILTER_RC2") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -# We don't see PINI=YES for FilterType because we want to restore the actual coefficients -# We do restore this record, but we don't process it -record(mbbo, "BL45P-EA-MAP-01:PROC:FilterType") -{ - field(ZRST, "RecursiveAve") - field(ZRVL, "1") - field(ONST, "Average") - field(ONVL, "2") - field(TWST, "Sum") - field(TWVL, "3") - field(THST, "Difference") - field(THVL, "4") - field(FRST, "RecursiveAveDiff") - field(FRVL, "5") - field(FVST, "CopyToFilter") - field(FVVL, "6") - field(FLNK, "BL45P-EA-MAP-01:PROC:FilterTypeSeq PP MS") - info(autosaveFields, "VAL") -} - -record(seq, "BL45P-EA-MAP-01:PROC:FilterTypeSeq") -{ - field(SELL, "BL45P-EA-MAP-01:PROC:FilterType.RVAL NPP") - field(SELM, "Specified") - field(DOL1, "1") - field(LNK1, "BL45P-EA-MAP-01:PROC:RecursiveAveSeq.PROC PP MS") - field(DOL2, "1") - field(LNK2, "BL45P-EA-MAP-01:PROC:AverageSeq.PROC PP MS") - field(DOL3, "1") - field(LNK3, "BL45P-EA-MAP-01:PROC:SumSeq.PROC PP MS") - field(DOL4, "1") - field(LNK4, "BL45P-EA-MAP-01:PROC:DifferenceSeq.PROC PP MS") - field(DOL5, "1") - field(LNK5, "BL45P-EA-MAP-01:PROC:RecursiveAveDiffSeq.PROC PP MS") - field(DOL6, "1") - field(LNK6, "BL45P-EA-MAP-01:PROC:CopyToFilterSeq.PROC PP MS") -} - -record(seq, "BL45P-EA-MAP-01:PROC:RecursiveAveSeq") -{ - field(DOL1, "1") - field(LNK1, "BL45P-EA-MAP-01:PROC:OC1 PP MS") - field(DOL2, "-1") - field(LNK2, "BL45P-EA-MAP-01:PROC:OC2 PP MS") - field(DOL3, "0") - field(LNK3, "BL45P-EA-MAP-01:PROC:OC3 PP MS") - field(DOL4, "1") - field(LNK4, "BL45P-EA-MAP-01:PROC:OC4 PP MS") - field(DOL5, "1") - field(LNK5, "BL45P-EA-MAP-01:PROC:FC1 PP MS") - field(DOL6, "-1") - field(LNK6, "BL45P-EA-MAP-01:PROC:FC2 PP MS") - field(DOL7, "0") - field(LNK7, "BL45P-EA-MAP-01:PROC:FC3 PP MS") - field(DOL8, "1") - field(LNK8, "BL45P-EA-MAP-01:PROC:FC4 PP MS") - field(DOL9, "0") - field(LNK9, "BL45P-EA-MAP-01:PROC:RC1 PP MS") - field(DOLA, "1") - field(LNKA, "BL45P-EA-MAP-01:PROC:RC2 PP MS") -} - -record(seq, "BL45P-EA-MAP-01:PROC:AverageSeq") -{ - field(DOL1, "1") - field(LNK1, "BL45P-EA-MAP-01:PROC:OC1 PP MS") - field(DOL2, "0") - field(LNK2, "BL45P-EA-MAP-01:PROC:OC2 PP MS") - field(DOL3, "BL45P-EA-MAP-01:PROC:NumFilterRecip NPP") - field(LNK3, "BL45P-EA-MAP-01:PROC:OC3 PP MS") - field(DOL4, "0") - field(LNK4, "BL45P-EA-MAP-01:PROC:OC4 PP MS") - field(DOL5, "1") - field(LNK5, "BL45P-EA-MAP-01:PROC:FC1 PP MS") - field(DOL6, "0") - field(LNK6, "BL45P-EA-MAP-01:PROC:FC2 PP MS") - field(DOL7, "BL45P-EA-MAP-01:PROC:NumFilterRecip NPP") - field(LNK7, "BL45P-EA-MAP-01:PROC:FC3 PP MS") - field(DOL8, "0") - field(LNK8, "BL45P-EA-MAP-01:PROC:FC4 PP MS") - field(DOL9, "0") - field(LNK9, "BL45P-EA-MAP-01:PROC:RC1 PP MS") - field(DOLA, "0") - field(LNKA, "BL45P-EA-MAP-01:PROC:RC2 PP MS") -} - -record(seq, "BL45P-EA-MAP-01:PROC:SumSeq") -{ - field(DOL1, "1") - field(LNK1, "BL45P-EA-MAP-01:PROC:OC1 PP MS") - field(DOL2, "0") - field(LNK2, "BL45P-EA-MAP-01:PROC:OC2 PP MS") - field(DOL3, "1") - field(LNK3, "BL45P-EA-MAP-01:PROC:OC3 PP MS") - field(DOL4, "0") - field(LNK4, "BL45P-EA-MAP-01:PROC:OC4 PP MS") - field(DOL5, "1") - field(LNK5, "BL45P-EA-MAP-01:PROC:FC1 PP MS") - field(DOL6, "0") - field(LNK6, "BL45P-EA-MAP-01:PROC:FC2 PP MS") - field(DOL7, "1") - field(LNK7, "BL45P-EA-MAP-01:PROC:FC3 PP MS") - field(DOL8, "0") - field(LNK8, "BL45P-EA-MAP-01:PROC:FC4 PP MS") - field(DOL9, "0") - field(LNK9, "BL45P-EA-MAP-01:PROC:RC1 PP MS") - field(DOLA, "0") - field(LNKA, "BL45P-EA-MAP-01:PROC:RC2 PP MS") -} - -record(seq, "BL45P-EA-MAP-01:PROC:DifferenceSeq") -{ - field(DOL1, "-1") - field(LNK1, "BL45P-EA-MAP-01:PROC:OC1 PP MS") - field(DOL2, "0") - field(LNK2, "BL45P-EA-MAP-01:PROC:OC2 PP MS") - field(DOL3, "1") - field(LNK3, "BL45P-EA-MAP-01:PROC:OC3 PP MS") - field(DOL4, "0") - field(LNK4, "BL45P-EA-MAP-01:PROC:OC4 PP MS") - field(DOL5, "0") - field(LNK5, "BL45P-EA-MAP-01:PROC:FC1 PP MS") - field(DOL6, "0") - field(LNK6, "BL45P-EA-MAP-01:PROC:FC2 PP MS") - field(DOL7, "1") - field(LNK7, "BL45P-EA-MAP-01:PROC:FC3 PP MS") - field(DOL8, "0") - field(LNK8, "BL45P-EA-MAP-01:PROC:FC4 PP MS") - field(DOL9, "0") - field(LNK9, "BL45P-EA-MAP-01:PROC:RC1 PP MS") - field(DOLA, "1") - field(LNKA, "BL45P-EA-MAP-01:PROC:RC2 PP MS") -} - -record(seq, "BL45P-EA-MAP-01:PROC:RecursiveAveDiffSeq") -{ - field(DOL1, "-1") - field(LNK1, "BL45P-EA-MAP-01:PROC:OC1 PP MS") - field(DOL2, "0") - field(LNK2, "BL45P-EA-MAP-01:PROC:OC2 PP MS") - field(DOL3, "1") - field(LNK3, "BL45P-EA-MAP-01:PROC:OC3 PP MS") - field(DOL4, "0") - field(LNK4, "BL45P-EA-MAP-01:PROC:OC4 PP MS") - field(DOL5, "1") - field(LNK5, "BL45P-EA-MAP-01:PROC:FC1 PP MS") - field(DOL6, "-1") - field(LNK6, "BL45P-EA-MAP-01:PROC:FC2 PP MS") - field(DOL7, "0") - field(LNK7, "BL45P-EA-MAP-01:PROC:FC3 PP MS") - field(DOL8, "1") - field(LNK8, "BL45P-EA-MAP-01:PROC:FC4 PP MS") - field(DOL9, "0") - field(LNK9, "BL45P-EA-MAP-01:PROC:RC1 PP MS") - field(DOLA, "1") - field(LNKA, "BL45P-EA-MAP-01:PROC:RC2 PP MS") -} - -record(seq, "BL45P-EA-MAP-01:PROC:CopyToFilterSeq") -{ - field(DOL1, "0") - field(LNK1, "BL45P-EA-MAP-01:PROC:OC1 PP MS") - field(DOL2, "0") - field(LNK2, "BL45P-EA-MAP-01:PROC:OC2 PP MS") - field(DOL3, "1") - field(LNK3, "BL45P-EA-MAP-01:PROC:OC3 PP MS") - field(DOL4, "0") - field(LNK4, "BL45P-EA-MAP-01:PROC:OC4 PP MS") - field(DOL5, "0") - field(LNK5, "BL45P-EA-MAP-01:PROC:FC1 PP MS") - field(DOL6, "0") - field(LNK6, "BL45P-EA-MAP-01:PROC:FC2 PP MS") - field(DOL7, "1") - field(LNK7, "BL45P-EA-MAP-01:PROC:FC3 PP MS") - field(DOL8, "0") - field(LNK8, "BL45P-EA-MAP-01:PROC:FC4 PP MS") - field(DOL9, "0") - field(LNK9, "BL45P-EA-MAP-01:PROC:RC1 PP MS") - field(DOLA, "1") - field(LNKA, "BL45P-EA-MAP-01:PROC:RC2 PP MS") -} -#=================================================================# -# Template file: NDProcess.template -# Database for ND PluginProcess -# Mark Rivers -# March 14, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DIFF.proc, edmtab, NDProcess.edl, P=BL45P-EA-DIFF-01,R=:PROC: - -# This associates a BOY screen with the template -# % gui, DIFF.proc, boydetail,ADApp_opi/dls/proc_detail.opi, P=BL45P-EA-DIFF-01, R=:PROC:, DESC=Process -# % gui, DIFF.proc, boyembed, ADApp_opi/dls/proc_embed_box.opi, P=BL45P-EA-DIFF-01, R=:PROC:, DESC=Process -# % gui, DIFF.proc, boyembed, ADApp_opi/dls/proc_embed.opi, P=BL45P-EA-DIFF-01, R=:PROC:, DESC=Process - -# % gui, DIFF.proc, groupHeading, Info -# % gui, DIFF.proc, readback, Port name, BL45P-EA-DIFF-01:PROC:PortName_RBV -# % gui, DIFF.proc, readback, Plugin type, BL45P-EA-DIFF-01:PROC:PluginType_RBV -# Input -# % gui, DIFF.proc, demandString, Input, BL45P-EA-DIFF-01:PROC:NDArrayPort -# % gui, DIFF.proc, readback, Input, BL45P-EA-DIFF-01:PROC:NDArrayPort_RBV - -# % gui, DIFF.proc, groupHeading, Callback -# % gui, DIFF.proc, enum, Callbacks, BL45P-EA-DIFF-01:PROC:EnableCallbacks -# % gui, DIFF.proc, statusbits, Callbacks, BL45P-EA-DIFF-01:PROC:EnableCallbacks_RBV -# % gui, DIFF.proc, demand, Min Callback Time, BL45P-EA-DIFF-01:PROC:MinCallbackTime -# % gui, DIFF.proc, readback, Min Callback Time, BL45P-EA-DIFF-01:PROC:MinCallbackTime_RBV -# % gui, DIFF.proc, enum, Block Callbacks, BL45P-EA-DIFF-01:PROC:BlockingCallbacks -# % gui, DIFF.proc, statusbits, Block Callbacks, BL45P-EA-DIFF-01:PROC:BlockingCallbacks_RBV - -# % gui, DIFF.proc, groupHeading, Counters -# % gui, DIFF.proc, demand, Array Counter, BL45P-EA-DIFF-01:PROC:ArrayCounter -# % gui, DIFF.proc, readback, Array Counter, BL45P-EA-DIFF-01:PROC:ArrayCounter_RBV -# % gui, DIFF.proc, readback, Array Rate (fps), BL45P-EA-DIFF-01:PROC:ArrayRate_RBV -# % gui, DIFF.proc, readback, Queue Use, BL45P-EA-DIFF-01:PROC:QueueUse -# % gui, DIFF.proc, readback, Queue Size, BL45P-EA-DIFF-01:PROC:QueueSize -# % gui, DIFF.proc, demand, Dropped Arrays, BL45P-EA-DIFF-01:PROC:DroppedArrays -# % gui, DIFF.proc, readback, Dropped Arrays, BL45P-EA-DIFF-01:PROC:DroppedArrays_RBV - -# % gui, DIFF.proc, groupHeading, Array Settings -# % gui, DIFF.proc, readback, Num Dimensions, BL45P-EA-DIFF-01:PROC:NDimensions_RBV -# % gui, DIFF.proc, readback, Dim 0 Size, BL45P-EA-DIFF-01:PROC:ArraySize0_RBV -# % gui, DIFF.proc, readback, Dim 1 Size, BL45P-EA-DIFF-01:PROC:ArraySize1_RBV -# % gui, DIFF.proc, readback, Dim 2 Size, BL45P-EA-DIFF-01:PROC:ArraySize2_RBV -# % gui, DIFF.proc, readback, Input Data Type, BL45P-EA-DIFF-01:PROC:DataType_RBV -# % gui, DIFF.proc, readback, Colour Mode, BL45P-EA-DIFF-01:PROC:ColorMode_RBV -# % gui, DIFF.proc, readback, Bayer Pattern, BL45P-EA-DIFF-01:PROC:BayerPattern_RBV -# % gui, DIFF.proc, readback, Unique id, BL45P-EA-DIFF-01:PROC:UniqueId_RBV -# % gui, DIFF.proc, readback, Timestamp, BL45P-EA-DIFF-01:PROC:TimeStamp_RBV - -# Output -# % gui, DIFF.proc, groupHeading, Output -# % gui, DIFF.proc, demand, Name, BL45P-EA-DIFF-01:PROC:Name -# % gui, DIFF.proc, enum, Out data type, BL45P-EA-DIFF-01:PROC:DataTypeOut -# % gui, DIFF.proc, readback, Out data type, BL45P-EA-DIFF-01:PROC:DataTypeOut_RBV -# % gui, DIFF.proc, demand, Attributes file, BL45P-EA-DIFF-01:PROC:NDAttributesFile - -# Background subtraction -# % gui, DIFF.proc, groupHeading, Background Subtraction -# % gui, DIFF.proc, enum, Enable Subtraction, BL45P-EA-DIFF-01:PROC:EnableBackground -# % gui, DIFF.proc, readback, Enable Subtraction, BL45P-EA-DIFF-01:PROC:EnableBackground_RBV -# % gui, DIFF.proc, command, Save Background, BL45P-EA-DIFF-01:PROC:SaveBackground -# % gui, DIFF.proc, readback, Save Background, BL45P-EA-DIFF-01:PROC:SaveBackground_RBV -# Flat field -# % gui, DIFF.proc, groupHeading, Flat Field -# % gui, DIFF.proc, enum, Enable Flat Field, BL45P-EA-DIFF-01:PROC:EnableFlatField -# % gui, DIFF.proc, readback, Enable Flat Field, BL45P-EA-DIFF-01:PROC:EnableFlatField_RBV -# % gui, DIFF.proc, command, Save Flat Field, BL45P-EA-DIFF-01:PROC:SaveFlatField -# % gui, DIFF.proc, readback, Save Flat Field, BL45P-EA-DIFF-01:PROC:SaveFlatField_RBV -# % gui, DIFF.proc, demand, Scale Flat Field, BL45P-EA-DIFF-01:PROC:ScaleFlatField -# % gui, DIFF.proc, readback, Scale Flat Field, BL45P-EA-DIFF-01:PROC:ScaleFlatField_RBV -# Scale and offset -# % gui, DIFF.proc, groupHeading, Scale and Offset -# % gui, DIFF.proc, enum, Enable Scale and Offset, BL45P-EA-DIFF-01:PROC:EnableOffsetScale -# % gui, DIFF.proc, readback, Enable Scale and Offset, BL45P-EA-DIFF-01:PROC:EnableOffsetScale_RBV -# % gui, DIFF.proc, demand, Offset, BL45P-EA-DIFF-01:PROC:Offset -# % gui, DIFF.proc, readback, Offset, BL45P-EA-DIFF-01:PROC:Offset_RBV -# % gui, DIFF.proc, demand, Scale, BL45P-EA-DIFF-01:PROC:Scale -# % gui, DIFF.proc, readback, Scale, BL45P-EA-DIFF-01:PROC:Scale_RBV -# % gui, DIFF.proc, enum, Enable Low Clip, BL45P-EA-DIFF-01:PROC:EnableLowClip -# % gui, DIFF.proc, readback, Enable Low Clip, BL45P-EA-DIFF-01:PROC:EnableLowClip_RBV -# % gui, DIFF.proc, demand, Low Clip, BL45P-EA-DIFF-01:PROC:LowClip -# % gui, DIFF.proc, readback, Low Clip, BL45P-EA-DIFF-01:PROC:LowClip_RBV -# % gui, DIFF.proc, enum, Enable High Clip, BL45P-EA-DIFF-01:PROC:EnableHighClip -# % gui, DIFF.proc, readback, Enable High Clip, BL45P-EA-DIFF-01:PROC:EnableHighClip_RBV -# % gui, DIFF.proc, demand, High Clip, BL45P-EA-DIFF-01:PROC:HighClip -# % gui, DIFF.proc, readback, High Clip, BL45P-EA-DIFF-01:PROC:HighClip_RBV -# Recursive filter -# % gui, DIFF.proc, groupHeading, Recursive Filter -# % gui, DIFF.proc, enum, Enable Filter, BL45P-EA-DIFF-01:PROC:EnableFilter -# % gui, DIFF.proc, readback, Enable Filter, BL45P-EA-DIFF-01:PROC:EnableFilter_RBV -# % gui, DIFF.proc, enum, Filter Type, BL45P-EA-DIFF-01:PROC:FilterType -# % gui, DIFF.proc, demand, N Filter, BL45P-EA-DIFF-01:PROC:NumFilter -# % gui, DIFF.proc, readback, N Filter, BL45P-EA-DIFF-01:PROC:NumFilter_RBV -# % gui, DIFF.proc, readback, N Filtered, BL45P-EA-DIFF-01:PROC:NumFiltered_RBV -# % gui, DIFF.proc, enum, Filter Callbacks, BL45P-EA-DIFF-01:PROC:FilterCallbacks -# % gui, DIFF.proc, readback, Filter Callbacks, BL45P-EA-DIFF-01:PROC:FilterCallbacks_RBV -# % gui, DIFF.proc, command, Reset, BL45P-EA-DIFF-01:PROC:ResetFilter -# % gui, DIFF.proc, readback, Reset, BL45P-EA-DIFF-01:PROC:ResetFilter -# % gui, DIFF.proc, enum, Auto Reset, BL45P-EA-DIFF-01:PROC:AutoResetFilter -# % gui, DIFF.proc, readback, Auto Reset, BL45P-EA-DIFF-01:PROC:AutoResetFilter_RBV -# % gui, DIFF.proc, demand, Output Scale, BL45P-EA-DIFF-01:PROC:OScale -# % gui, DIFF.proc, readback, Output Scale, BL45P-EA-DIFF-01:PROC:OScale_RBV -# % gui, DIFF.proc, demand, Output Offset, BL45P-EA-DIFF-01:PROC:OOffset -# % gui, DIFF.proc, readback, Output Offset, BL45P-EA-DIFF-01:PROC:OOffset_RBV -# % gui, DIFF.proc, demand, Filter Scale, BL45P-EA-DIFF-01:PROC:FScale -# % gui, DIFF.proc, readback, Filter Scale, BL45P-EA-DIFF-01:PROC:FScale_RBV -# % gui, DIFF.proc, demand, Filter Offset, BL45P-EA-DIFF-01:PROC:FOffset -# % gui, DIFF.proc, readback, Filter Offset, BL45P-EA-DIFF-01:PROC:FOffset_RBV -# Memory -# % gui, DIFF.proc, groupHeading, Memory -# % gui, DIFF.proc, readback, Max memory, BL45P-EA-DIFF-01:PROC:PoolMaxMem -# % gui, DIFF.proc, readback, Max buffers, BL45P-EA-DIFF-01:PROC:PoolMaxBuffers -# % gui, DIFF.proc, readback, Used memory, BL45P-EA-DIFF-01:PROC:PoolUsedMem -# % gui, DIFF.proc, readback, Allocated buffers, BL45P-EA-DIFF-01:PROC:PoolAllocBuffers -# % gui, DIFF.proc, readback, Free buffers, BL45P-EA-DIFF-01:PROC:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:PROC:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.proc,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:PROC:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.proc,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:PROC:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.proc,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:PROC:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.proc,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:PROC:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.proc,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:PROC:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.proc,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:PROC:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.proc,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:PROC:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.proc,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:PROC:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:PROC:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:PROC:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:PROC:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:PROC:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:PROC:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:PROC:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:PROC:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:PROC:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:PROC:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:PROC:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:PROC:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.proc,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:PROC:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.proc,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PROC:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PROC:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:PROC:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PROC:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:PROC:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:PROC:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.proc,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:PROC:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:PROC:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:PROC:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:PROC:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:PROC:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:PROC:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:PROC:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:PROC:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:PROC:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:PROC:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:PROC:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:PROC:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:PROC:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.proc,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:PROC:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.proc,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:PROC:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:PROC:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:PROC:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:PROC:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:PROC:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:PROC:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:PROC:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:PROC:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:PROC:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:PROC:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:PROC:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.proc,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:PROC:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.proc,0,1)NDARRAY_PORT") - field(VAL, "DIFF.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:PROC:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.proc,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:PROC:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:PROC:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:PROC:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:PROC:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:PROC:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:PROC:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:PROC:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:PROC:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:PROC:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:PROC:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:PROC:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:PROC:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:PROC:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:PROC:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:PROC:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:PROC:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:PROC:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:PROC:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:PROC:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:PROC:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:PROC:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:PROC:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:PROC:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:PROC:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:PROC:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:PROC:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:PROC:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:PROC:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:PROC:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:PROC:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:PROC:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:PROC:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:PROC:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:PROC:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:PROC:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:PROC:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:PROC:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:PROC:SortSize") - field(OUT, "BL45P-EA-DIFF-01:PROC:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:PROC:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:PROC:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:PROC:AsynIO") -{ - field(PORT, "DIFF.proc") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -################################################################### -# These records control the data type of the array data # -# The last entry is "Automatic" meaning preserve the data type # -# of the input array. # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:PROC:DataTypeOut") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)PROCESS_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(VAL, "10") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:PROC:DataTypeOut_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)PROCESS_DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(TEST, "Automatic") - field(TEVL, "-1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the background array processing # -################################################################### -record(bo, "BL45P-EA-DIFF-01:PROC:SaveBackground") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)SAVE_BACKGROUND") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:SaveBackground_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)SAVE_BACKGROUND") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:PROC:EnableBackground") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)ENABLE_BACKGROUND") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:EnableBackground_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ENABLE_BACKGROUND") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:ValidBackground_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)VALID_BACKGROUND") - field(ZNAM, "Invalid") - field(ONAM, "Valid") - field(SCAN, "I/O Intr") -} - -record(sseq, "BL45P-EA-DIFF-01:PROC:ReadBackgroundTIFFSeq") -{ - # Make a backup copy of the NDArrayPort field - field(DOL1, "BL45P-EA-DIFF-01:PROC:NDArrayPort") - field(LNK1, "BL45P-EA-DIFF-01:PROC:PortBackup PP MS") - # Set the NDArrayPort field to the TIFF plugin - field(DOL2, "BL45P-EA-DIFF-01:PROC:TIFF:PortName_RBV") - field(LNK2, "BL45P-EA-DIFF-01:PROC:NDArrayPort PP MS") - # Enable array callbacks in the TIFF plugin - field(STR3, "Enable") - field(LNK3, "BL45P-EA-DIFF-01:PROC:TIFF:ArrayCallbacks PP MS") - # Read the TIFF file - field(DLY4, "0.1") - field(DO4, "1") - field(LNK4, "BL45P-EA-DIFF-01:PROC:TIFF:ReadFile PP MS") - # Save background TIFF - field(DLY5, "0.5") - field(DO5, "1") - field(LNK5, "BL45P-EA-DIFF-01:PROC:SaveBackground PP MS") - # Restore the NDArrayPort field - field(DOL6, "BL45P-EA-DIFF-01:PROC:PortBackup") - field(LNK6, "BL45P-EA-DIFF-01:PROC:NDArrayPort PP MS") -} - -record(stringout, "BL45P-EA-DIFF-01:PROC:PortBackup") -{ -} - -################################################################### -# These records control the flat field array processing # -################################################################### -record(bo, "BL45P-EA-DIFF-01:PROC:SaveFlatField") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)SAVE_FLAT_FIELD") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:SaveFlatField_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)SAVE_FLAT_FIELD") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:PROC:EnableFlatField") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)ENABLE_FLAT_FIELD") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:EnableFlatField_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ENABLE_FLAT_FIELD") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:ValidFlatField_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)VALID_FLAT_FIELD") - field(ZNAM, "Invalid") - field(ONAM, "Valid") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:ScaleFlatField") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)SCALE_FLAT_FIELD") - field(VAL, "255.") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:PROC:ScaleFlatField_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)SCALE_FLAT_FIELD") - field(SCAN, "I/O Intr") -} - -record(sseq, "BL45P-EA-DIFF-01:PROC:ReadFlatFieldTIFFSeq") -{ - # Make a backup copy of the NDArrayPort field - field(DOL1, "BL45P-EA-DIFF-01:PROC:NDArrayPort") - field(LNK1, "BL45P-EA-DIFF-01:PROC:PortBackup PP MS") - # Set the NDArrayPort field to the TIFF plugin - field(DOL2, "BL45P-EA-DIFF-01:PROC:TIFF:PortName_RBV") - field(LNK2, "BL45P-EA-DIFF-01:PROC:NDArrayPort PP MS") - # Enable array callbacks in the TIFF plugin - field(STR3, "Enable") - field(LNK3, "BL45P-EA-DIFF-01:PROC:TIFF:ArrayCallbacks PP MS") - # Read the TIFF file - field(DLY4, "0.1") - field(DO4, "1") - field(LNK4, "BL45P-EA-DIFF-01:PROC:TIFF:ReadFile PP MS") - # Save background TIFF - field(DLY5, "0.5") - field(DO5, "1") - field(LNK5, "BL45P-EA-DIFF-01:PROC:SaveFlatField PP MS") - # Restore the NDArrayPort field - field(DOL6, "BL45P-EA-DIFF-01:PROC:PortBackup") - field(LNK6, "BL45P-EA-DIFF-01:PROC:NDArrayPort PP MS") -} - -################################################################### -# These records control the offset and scale # -################################################################### -record(bo, "BL45P-EA-DIFF-01:PROC:EnableOffsetScale") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)ENABLE_OFFSET_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -# Oneshot record for calculating scale and offset -record(busy, "BL45P-EA-DIFF-01:PROC:AutoOffsetScale") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)AUTO_OFFSET_SCALE") - field(ZNAM, "Done") - field(ONAM, "Calculating") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:EnableOffsetScale_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ENABLE_OFFSET_SCALE") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:Offset") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)OFFSET") - field(PREC, "2") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:PROC:Offset_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)OFFSET") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:Scale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)SCALE") - field(PREC, "2") - field(VAL, "1.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:PROC:Scale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)SCALE") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the high and low clipping # -################################################################### -record(bo, "BL45P-EA-DIFF-01:PROC:EnableLowClip") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)ENABLE_LOW_CLIP") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:EnableLowClip_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ENABLE_LOW_CLIP") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:LowClip") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)LOW_CLIP") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:PROC:LowClip_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)LOW_CLIP") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:PROC:EnableHighClip") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)ENABLE_HIGH_CLIP") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:EnableHighClip_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ENABLE_HIGH_CLIP") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:HighClip") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)HIGH_CLIP") - field(VAL, "100.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:PROC:HighClip_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)HIGH_CLIP") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control frame filtering # -################################################################### -record(bo, "BL45P-EA-DIFF-01:PROC:EnableFilter") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)ENABLE_FILTER") - field(ZNAM, "Disable") - field(ONAM, "Enable") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:EnableFilter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)ENABLE_FILTER") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:PROC:ResetFilter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)RESET_FILTER") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:ResetFilter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)RESET_FILTER") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:PROC:AutoResetFilter") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)AUTO_RESET_FILTER") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:AutoResetFilter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)AUTO_RESET_FILTER") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:PROC:FilterCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_CALLBACKS") - field(ZNAM, "Every array") - field(ONAM, "Array N only") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:PROC:FilterCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_CALLBACKS") - field(ZNAM, "Every array") - field(ONAM, "Array N only") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:PROC:NumFilter") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.proc,0,1)NUM_FILTER") - field(VAL, "1") - field(FLNK, "BL45P-EA-DIFF-01:PROC:NumFilterRecip.PROC PP") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:NumFilter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)NUM_FILTER") - field(SCAN, "I/O Intr") -} - -# This is 1/NumFilter, used in RecursiveSum filter -# If this value changes we need to process FilterType to make it update filter coefficients -record(calc, "BL45P-EA-DIFF-01:PROC:NumFilterRecip") -{ - field(INPA, "BL45P-EA-DIFF-01:PROC:NumFilter.VAL NPP") - field(CALC, "1./A") - field(FLNK, "BL45P-EA-DIFF-01:PROC:FilterType.PROC PP") -} - -record(longin, "BL45P-EA-DIFF-01:PROC:NumFiltered_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.proc,0,1)NUM_FILTERED") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:OOffset") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_OOFFSET") - field(VAL, "0.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-DIFF-01:PROC:OOffset_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_OOFFSET") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:OScale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_OSCALE") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-DIFF-01:PROC:OScale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_OSCALE") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:OC1") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_OC1") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-DIFF-01:PROC:OC1_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_OC1") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:OC2") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_OC2") - field(VAL, "-1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-DIFF-01:PROC:OC2_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_OC2") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:OC3") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_OC3") - field(VAL, "0.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-DIFF-01:PROC:OC3_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_OC3") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:OC4") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_OC4") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-DIFF-01:PROC:OC4_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_OC4") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:FOffset") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_FOFFSET") - field(VAL, "0.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-DIFF-01:PROC:FOffset_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_FOFFSET") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:FScale") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_FSCALE") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-DIFF-01:PROC:FScale_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_FSCALE") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:FC1") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_FC1") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-DIFF-01:PROC:FC1_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_FC1") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:FC2") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_FC2") - field(VAL, "-1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-DIFF-01:PROC:FC2_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_FC2") - field(PREC, "2") - field(SCAN, "I/O Intr") -} -record(ao, "BL45P-EA-DIFF-01:PROC:FC3") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_FC3") - field(VAL, "0.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-DIFF-01:PROC:FC3_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_FC3") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:FC4") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_FC4") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-DIFF-01:PROC:FC4_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_FC4") - field(PREC, "2") - field(SCAN, "I/O Intr") -} -record(ao, "BL45P-EA-DIFF-01:PROC:ROffset") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_ROFFSET") - field(VAL, "0.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-DIFF-01:PROC:ROffset_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_ROFFSET") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:RC1") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_RC1") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-DIFF-01:PROC:RC1_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_RC1") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PROC:RC2") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.proc,0,1)FILTER_RC2") - field(VAL, "1.0") - field(PREC, "2") - info(autosaveFields, "VAL") -} -record(ai, "BL45P-EA-DIFF-01:PROC:RC2_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.proc,0,1)FILTER_RC2") - field(PREC, "2") - field(SCAN, "I/O Intr") -} - -# We don't see PINI=YES for FilterType because we want to restore the actual coefficients -# We do restore this record, but we don't process it -record(mbbo, "BL45P-EA-DIFF-01:PROC:FilterType") -{ - field(ZRST, "RecursiveAve") - field(ZRVL, "1") - field(ONST, "Average") - field(ONVL, "2") - field(TWST, "Sum") - field(TWVL, "3") - field(THST, "Difference") - field(THVL, "4") - field(FRST, "RecursiveAveDiff") - field(FRVL, "5") - field(FVST, "CopyToFilter") - field(FVVL, "6") - field(FLNK, "BL45P-EA-DIFF-01:PROC:FilterTypeSeq PP MS") - info(autosaveFields, "VAL") -} - -record(seq, "BL45P-EA-DIFF-01:PROC:FilterTypeSeq") -{ - field(SELL, "BL45P-EA-DIFF-01:PROC:FilterType.RVAL NPP") - field(SELM, "Specified") - field(DOL1, "1") - field(LNK1, "BL45P-EA-DIFF-01:PROC:RecursiveAveSeq.PROC PP MS") - field(DOL2, "1") - field(LNK2, "BL45P-EA-DIFF-01:PROC:AverageSeq.PROC PP MS") - field(DOL3, "1") - field(LNK3, "BL45P-EA-DIFF-01:PROC:SumSeq.PROC PP MS") - field(DOL4, "1") - field(LNK4, "BL45P-EA-DIFF-01:PROC:DifferenceSeq.PROC PP MS") - field(DOL5, "1") - field(LNK5, "BL45P-EA-DIFF-01:PROC:RecursiveAveDiffSeq.PROC PP MS") - field(DOL6, "1") - field(LNK6, "BL45P-EA-DIFF-01:PROC:CopyToFilterSeq.PROC PP MS") -} - -record(seq, "BL45P-EA-DIFF-01:PROC:RecursiveAveSeq") -{ - field(DOL1, "1") - field(LNK1, "BL45P-EA-DIFF-01:PROC:OC1 PP MS") - field(DOL2, "-1") - field(LNK2, "BL45P-EA-DIFF-01:PROC:OC2 PP MS") - field(DOL3, "0") - field(LNK3, "BL45P-EA-DIFF-01:PROC:OC3 PP MS") - field(DOL4, "1") - field(LNK4, "BL45P-EA-DIFF-01:PROC:OC4 PP MS") - field(DOL5, "1") - field(LNK5, "BL45P-EA-DIFF-01:PROC:FC1 PP MS") - field(DOL6, "-1") - field(LNK6, "BL45P-EA-DIFF-01:PROC:FC2 PP MS") - field(DOL7, "0") - field(LNK7, "BL45P-EA-DIFF-01:PROC:FC3 PP MS") - field(DOL8, "1") - field(LNK8, "BL45P-EA-DIFF-01:PROC:FC4 PP MS") - field(DOL9, "0") - field(LNK9, "BL45P-EA-DIFF-01:PROC:RC1 PP MS") - field(DOLA, "1") - field(LNKA, "BL45P-EA-DIFF-01:PROC:RC2 PP MS") -} - -record(seq, "BL45P-EA-DIFF-01:PROC:AverageSeq") -{ - field(DOL1, "1") - field(LNK1, "BL45P-EA-DIFF-01:PROC:OC1 PP MS") - field(DOL2, "0") - field(LNK2, "BL45P-EA-DIFF-01:PROC:OC2 PP MS") - field(DOL3, "BL45P-EA-DIFF-01:PROC:NumFilterRecip NPP") - field(LNK3, "BL45P-EA-DIFF-01:PROC:OC3 PP MS") - field(DOL4, "0") - field(LNK4, "BL45P-EA-DIFF-01:PROC:OC4 PP MS") - field(DOL5, "1") - field(LNK5, "BL45P-EA-DIFF-01:PROC:FC1 PP MS") - field(DOL6, "0") - field(LNK6, "BL45P-EA-DIFF-01:PROC:FC2 PP MS") - field(DOL7, "BL45P-EA-DIFF-01:PROC:NumFilterRecip NPP") - field(LNK7, "BL45P-EA-DIFF-01:PROC:FC3 PP MS") - field(DOL8, "0") - field(LNK8, "BL45P-EA-DIFF-01:PROC:FC4 PP MS") - field(DOL9, "0") - field(LNK9, "BL45P-EA-DIFF-01:PROC:RC1 PP MS") - field(DOLA, "0") - field(LNKA, "BL45P-EA-DIFF-01:PROC:RC2 PP MS") -} - -record(seq, "BL45P-EA-DIFF-01:PROC:SumSeq") -{ - field(DOL1, "1") - field(LNK1, "BL45P-EA-DIFF-01:PROC:OC1 PP MS") - field(DOL2, "0") - field(LNK2, "BL45P-EA-DIFF-01:PROC:OC2 PP MS") - field(DOL3, "1") - field(LNK3, "BL45P-EA-DIFF-01:PROC:OC3 PP MS") - field(DOL4, "0") - field(LNK4, "BL45P-EA-DIFF-01:PROC:OC4 PP MS") - field(DOL5, "1") - field(LNK5, "BL45P-EA-DIFF-01:PROC:FC1 PP MS") - field(DOL6, "0") - field(LNK6, "BL45P-EA-DIFF-01:PROC:FC2 PP MS") - field(DOL7, "1") - field(LNK7, "BL45P-EA-DIFF-01:PROC:FC3 PP MS") - field(DOL8, "0") - field(LNK8, "BL45P-EA-DIFF-01:PROC:FC4 PP MS") - field(DOL9, "0") - field(LNK9, "BL45P-EA-DIFF-01:PROC:RC1 PP MS") - field(DOLA, "0") - field(LNKA, "BL45P-EA-DIFF-01:PROC:RC2 PP MS") -} - -record(seq, "BL45P-EA-DIFF-01:PROC:DifferenceSeq") -{ - field(DOL1, "-1") - field(LNK1, "BL45P-EA-DIFF-01:PROC:OC1 PP MS") - field(DOL2, "0") - field(LNK2, "BL45P-EA-DIFF-01:PROC:OC2 PP MS") - field(DOL3, "1") - field(LNK3, "BL45P-EA-DIFF-01:PROC:OC3 PP MS") - field(DOL4, "0") - field(LNK4, "BL45P-EA-DIFF-01:PROC:OC4 PP MS") - field(DOL5, "0") - field(LNK5, "BL45P-EA-DIFF-01:PROC:FC1 PP MS") - field(DOL6, "0") - field(LNK6, "BL45P-EA-DIFF-01:PROC:FC2 PP MS") - field(DOL7, "1") - field(LNK7, "BL45P-EA-DIFF-01:PROC:FC3 PP MS") - field(DOL8, "0") - field(LNK8, "BL45P-EA-DIFF-01:PROC:FC4 PP MS") - field(DOL9, "0") - field(LNK9, "BL45P-EA-DIFF-01:PROC:RC1 PP MS") - field(DOLA, "1") - field(LNKA, "BL45P-EA-DIFF-01:PROC:RC2 PP MS") -} - -record(seq, "BL45P-EA-DIFF-01:PROC:RecursiveAveDiffSeq") -{ - field(DOL1, "-1") - field(LNK1, "BL45P-EA-DIFF-01:PROC:OC1 PP MS") - field(DOL2, "0") - field(LNK2, "BL45P-EA-DIFF-01:PROC:OC2 PP MS") - field(DOL3, "1") - field(LNK3, "BL45P-EA-DIFF-01:PROC:OC3 PP MS") - field(DOL4, "0") - field(LNK4, "BL45P-EA-DIFF-01:PROC:OC4 PP MS") - field(DOL5, "1") - field(LNK5, "BL45P-EA-DIFF-01:PROC:FC1 PP MS") - field(DOL6, "-1") - field(LNK6, "BL45P-EA-DIFF-01:PROC:FC2 PP MS") - field(DOL7, "0") - field(LNK7, "BL45P-EA-DIFF-01:PROC:FC3 PP MS") - field(DOL8, "1") - field(LNK8, "BL45P-EA-DIFF-01:PROC:FC4 PP MS") - field(DOL9, "0") - field(LNK9, "BL45P-EA-DIFF-01:PROC:RC1 PP MS") - field(DOLA, "1") - field(LNKA, "BL45P-EA-DIFF-01:PROC:RC2 PP MS") -} - -record(seq, "BL45P-EA-DIFF-01:PROC:CopyToFilterSeq") -{ - field(DOL1, "0") - field(LNK1, "BL45P-EA-DIFF-01:PROC:OC1 PP MS") - field(DOL2, "0") - field(LNK2, "BL45P-EA-DIFF-01:PROC:OC2 PP MS") - field(DOL3, "1") - field(LNK3, "BL45P-EA-DIFF-01:PROC:OC3 PP MS") - field(DOL4, "0") - field(LNK4, "BL45P-EA-DIFF-01:PROC:OC4 PP MS") - field(DOL5, "0") - field(LNK5, "BL45P-EA-DIFF-01:PROC:FC1 PP MS") - field(DOL6, "0") - field(LNK6, "BL45P-EA-DIFF-01:PROC:FC2 PP MS") - field(DOL7, "1") - field(LNK7, "BL45P-EA-DIFF-01:PROC:FC3 PP MS") - field(DOL8, "0") - field(LNK8, "BL45P-EA-DIFF-01:PROC:FC4 PP MS") - field(DOL9, "0") - field(LNK9, "BL45P-EA-DIFF-01:PROC:RC1 PP MS") - field(DOLA, "1") - field(LNKA, "BL45P-EA-DIFF-01:PROC:RC2 PP MS") -} -#=================================================================# -# Template file: NDOverlay.template -# Database for NDPluginOverlay asyn driver and standard asyn device support -# Mark Rivers -# March 25, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DET.over, edmtab, NDOverlay.edl, P=BL45P-EA-MAP-01,R=:OVER: - -# This associates a BOY screen with the template -# % gui, DET.over, boydetail,ADApp_opi/dls/over_detail.opi, P=BL45P-EA-MAP-01, R=:OVER:, DESC=Overlay -# % gui, DET.over, boyembed, ADApp_opi/dls/over_embed_box.opi, P=BL45P-EA-MAP-01, R=:OVER:, DESC=Overlay -# % gui, DET.over, boyembed, ADApp_opi/dls/over_embed.opi, P=BL45P-EA-MAP-01, R=:OVER:, DESC=Overlay - - -# % gui, DET.over, groupHeading, Info -# % gui, DET.over, readback, Port name, BL45P-EA-MAP-01:OVER:PortName_RBV -# % gui, DET.over, readback, Plugin type, BL45P-EA-MAP-01:OVER:PluginType_RBV -# Input -# % gui, DET.over, demandString, Input, BL45P-EA-MAP-01:OVER:NDArrayPort -# % gui, DET.over, readback, Input, BL45P-EA-MAP-01:OVER:NDArrayPort_RBV - -# % gui, DET.over, groupHeading, Callback -# % gui, DET.over, enum, Callbacks, BL45P-EA-MAP-01:OVER:EnableCallbacks -# % gui, DET.over, statusbits, Callbacks, BL45P-EA-MAP-01:OVER:EnableCallbacks_RBV -# % gui, DET.over, demand, Min Callback Time, BL45P-EA-MAP-01:OVER:MinCallbackTime -# % gui, DET.over, readback, Min Callback Time, BL45P-EA-MAP-01:OVER:MinCallbackTime_RBV -# % gui, DET.over, enum, Block Callbacks, BL45P-EA-MAP-01:OVER:BlockingCallbacks -# % gui, DET.over, statusbits, Block Callbacks, BL45P-EA-MAP-01:OVER:BlockingCallbacks_RBV - -# % gui, DET.over, groupHeading, Counters -# % gui, DET.over, demand, Array Counter, BL45P-EA-MAP-01:OVER:ArrayCounter -# % gui, DET.over, readback, Array Counter, BL45P-EA-MAP-01:OVER:ArrayCounter_RBV -# % gui, DET.over, readback, Array Rate (fps), BL45P-EA-MAP-01:OVER:ArrayRate_RBV -# % gui, DET.over, readback, Queue Use, BL45P-EA-MAP-01:OVER:QueueUse -# % gui, DET.over, readback, Queue Size, BL45P-EA-MAP-01:OVER:QueueSize -# % gui, DET.over, demand, Dropped Arrays, BL45P-EA-MAP-01:OVER:DroppedArrays -# % gui, DET.over, readback, Dropped Arrays, BL45P-EA-MAP-01:OVER:DroppedArrays_RBV - -# % gui, DET.over, groupHeading, Array Settings -# % gui, DET.over, readback, Num Dimensions, BL45P-EA-MAP-01:OVER:NDimensions_RBV -# % gui, DET.over, readback, Dim 0 Size, BL45P-EA-MAP-01:OVER:ArraySize0_RBV -# % gui, DET.over, readback, Dim 1 Size, BL45P-EA-MAP-01:OVER:ArraySize1_RBV -# % gui, DET.over, readback, Dim 2 Size, BL45P-EA-MAP-01:OVER:ArraySize2_RBV -# % gui, DET.over, readback, Input Data Type, BL45P-EA-MAP-01:OVER:DataType_RBV -# % gui, DET.over, readback, Colour Mode, BL45P-EA-MAP-01:OVER:ColorMode_RBV -# % gui, DET.over, readback, Bayer Pattern, BL45P-EA-MAP-01:OVER:BayerPattern_RBV -# % gui, DET.over, readback, Unique id, BL45P-EA-MAP-01:OVER:UniqueId_RBV -# % gui, DET.over, readback, Timestamp, BL45P-EA-MAP-01:OVER:TimeStamp_RBV - -# Output -# % gui, DET.over, groupHeading, Output -# % gui, DET.over, demand, Name, BL45P-EA-MAP-01:OVER:Name -# % gui, DET.over, enum, Out data type, BL45P-EA-MAP-01:OVER:DataTypeOut -# % gui, DET.over, readback, Out data type, BL45P-EA-MAP-01:OVER:DataTypeOut_RBV -# % gui, DET.over, demand, Attributes file, BL45P-EA-MAP-01:OVER:NDAttributesFile - -# Overlay 1 -# % gui, DET.over, groupHeading, Overlay 1 Settings -# % gui, DET.over, demand, Overlay 1, BL45P-EA-MAP-01:OVER:1:Name -# % gui, DET.over, enum, Use 1, BL45P-EA-MAP-01:OVER:1:Use -# % gui, DET.over, readback, Use 1, BL45P-EA-MAP-01:OVER:1:Use_RBV -# % gui, DET.over, enum, Shape 1, BL45P-EA-MAP-01:OVER:1:Shape -# % gui, DET.over, readback, Shape 1, BL45P-EA-MAP-01:OVER:1:Shape_RBV -# % gui, DET.over, enum, Mode 1, BL45P-EA-MAP-01:OVER:1:DrawMode -# % gui, DET.over, readback, Mode 1, BL45P-EA-MAP-01:OVER:1:DrawMode_RBV -# % gui, DET.over, demand, Red 1, BL45P-EA-MAP-01:OVER:1:Red -# % gui, DET.over, readback, Red 1, BL45P-EA-MAP-01:OVER:1:Red_RBV -# % gui, DET.over, demand, Green 1, BL45P-EA-MAP-01:OVER:1:Green -# % gui, DET.over, readback, Green 1, BL45P-EA-MAP-01:OVER:1:Green_RBV -# % gui, DET.over, demand, Blue 1, BL45P-EA-MAP-01:OVER:1:Blue -# % gui, DET.over, readback, Blue 1, BL45P-EA-MAP-01:OVER:1:Blue_RBV -# % gui, DET.over, demand, X Position 1, BL45P-EA-MAP-01:OVER:1:PositionX -# % gui, DET.over, readback, X Position 1, BL45P-EA-MAP-01:OVER:1:PositionX_RBV -# % gui, DET.over, demand, X Position Link 1, BL45P-EA-MAP-01:OVER:1:PositionXLink.DOL -# % gui, DET.over, demand, X Center 1, BL45P-EA-MAP-01:OVER:1:CenterX -# % gui, DET.over, readback, X Center 1, BL45P-EA-MAP-01:OVER:1:CenterX_RBV -# % gui, DET.over, demand, X Center Link 1, BL45P-EA-MAP-01:OVER:1:CenterXLink.DOL -# % gui, DET.over, demand, X Size 1, BL45P-EA-MAP-01:OVER:1:SizeX -# % gui, DET.over, readback, X Size 1, BL45P-EA-MAP-01:OVER:1:SizeX_RBV -# % gui, DET.over, demand, X Size Link 1, BL45P-EA-MAP-01:OVER:1:SizeXLink.DOL -# % gui, DET.over, demand, Y Position 1, BL45P-EA-MAP-01:OVER:1:PositionY -# % gui, DET.over, readback, Y Position 1, BL45P-EA-MAP-01:OVER:1:PositionY_RBV -# % gui, DET.over, demand, Y Position Link 1, BL45P-EA-MAP-01:OVER:1:PositionYLink.DOL -# % gui, DET.over, demand, Y Center 1, BL45P-EA-MAP-01:OVER:1:CenterY -# % gui, DET.over, readback, Y Center 1, BL45P-EA-MAP-01:OVER:1:CenterY_RBV -# % gui, DET.over, demand, Y Center Link 1, BL45P-EA-MAP-01:OVER:1:CenterYLink.DOL -# % gui, DET.over, demand, Y Size 1, BL45P-EA-MAP-01:OVER:1:SizeY -# % gui, DET.over, readback, Y Size 1, BL45P-EA-MAP-01:OVER:1:SizeY_RBV -# % gui, DET.over, demand, Y Size Link 1, BL45P-EA-MAP-01:OVER:1:SizeYLink.DOL -# Overlay 2 -# % gui, DET.over, groupHeading, Overlay 2 Settings -# % gui, DET.over, demand, Overlay 2, BL45P-EA-MAP-01:OVER:2:Name -# % gui, DET.over, enum, Use 2, BL45P-EA-MAP-01:OVER:2:Use -# % gui, DET.over, readback, Use 2, BL45P-EA-MAP-01:OVER:2:Use_RBV -# % gui, DET.over, enum, Shape 2, BL45P-EA-MAP-01:OVER:2:Shape -# % gui, DET.over, readback, Shape 2, BL45P-EA-MAP-01:OVER:2:Shape_RBV -# % gui, DET.over, enum, Mode 2, BL45P-EA-MAP-01:OVER:2:DrawMode -# % gui, DET.over, readback, Mode 2, BL45P-EA-MAP-01:OVER:2:DrawMode_RBV -# % gui, DET.over, demand, Red 2, BL45P-EA-MAP-01:OVER:2:Red -# % gui, DET.over, readback, Red 2, BL45P-EA-MAP-01:OVER:2:Red_RBV -# % gui, DET.over, demand, Green 2, BL45P-EA-MAP-01:OVER:2:Green -# % gui, DET.over, readback, Green 2, BL45P-EA-MAP-01:OVER:2:Green_RBV -# % gui, DET.over, demand, Blue 2, BL45P-EA-MAP-01:OVER:2:Blue -# % gui, DET.over, readback, Blue 2, BL45P-EA-MAP-01:OVER:2:Blue_RBV -# % gui, DET.over, demand, X Position 2, BL45P-EA-MAP-01:OVER:2:PositionX -# % gui, DET.over, readback, X Position 2, BL45P-EA-MAP-01:OVER:2:PositionX_RBV -# % gui, DET.over, demand, X Position Link 2, BL45P-EA-MAP-01:OVER:2:PositionXLink.DOL -# % gui, DET.over, demand, X Center 2, BL45P-EA-MAP-01:OVER:2:CenterX -# % gui, DET.over, readback, X Center 2, BL45P-EA-MAP-01:OVER:2:CenterX_RBV -# % gui, DET.over, demand, X Center Link 2, BL45P-EA-MAP-01:OVER:2:CenterXLink.DOL -# % gui, DET.over, demand, X Size 2, BL45P-EA-MAP-01:OVER:2:SizeX -# % gui, DET.over, readback, X Size 2, BL45P-EA-MAP-01:OVER:2:SizeX_RBV -# % gui, DET.over, demand, X Size Link 2, BL45P-EA-MAP-01:OVER:2:SizeXLink.DOL -# % gui, DET.over, demand, Y Position 2, BL45P-EA-MAP-01:OVER:2:PositionY -# % gui, DET.over, readback, Y Position 2, BL45P-EA-MAP-01:OVER:2:PositionY_RBV -# % gui, DET.over, demand, Y Position Link 2, BL45P-EA-MAP-01:OVER:2:PositionYLink.DOL -# % gui, DET.over, demand, Y Center 2, BL45P-EA-MAP-01:OVER:2:CenterY -# % gui, DET.over, readback, Y Center 2, BL45P-EA-MAP-01:OVER:2:CenterY_RBV -# % gui, DET.over, demand, Y Center Link 2, BL45P-EA-MAP-01:OVER:2:CenterYLink.DOL -# % gui, DET.over, demand, Y Size 2, BL45P-EA-MAP-01:OVER:2:SizeY -# % gui, DET.over, readback, Y Size 2, BL45P-EA-MAP-01:OVER:2:SizeY_RBV -# % gui, DET.over, demand, Y Size Link 2, BL45P-EA-MAP-01:OVER:2:SizeYLink.DOL -# Overlay 3 -# % gui, DET.over, groupHeading, Overlay 3 Settings -# % gui, DET.over, demand, Overlay 3, BL45P-EA-MAP-01:OVER:3:Name -# % gui, DET.over, enum, Use 3, BL45P-EA-MAP-01:OVER:3:Use -# % gui, DET.over, readback, Use 3, BL45P-EA-MAP-01:OVER:3:Use_RBV -# % gui, DET.over, enum, Shape 3, BL45P-EA-MAP-01:OVER:3:Shape -# % gui, DET.over, readback, Shape 3, BL45P-EA-MAP-01:OVER:3:Shape_RBV -# % gui, DET.over, enum, Mode 3, BL45P-EA-MAP-01:OVER:3:DrawMode -# % gui, DET.over, readback, Mode 3, BL45P-EA-MAP-01:OVER:3:DrawMode_RBV -# % gui, DET.over, demand, Red 3, BL45P-EA-MAP-01:OVER:3:Red -# % gui, DET.over, readback, Red 3, BL45P-EA-MAP-01:OVER:3:Red_RBV -# % gui, DET.over, demand, Green 3, BL45P-EA-MAP-01:OVER:3:Green -# % gui, DET.over, readback, Green 3, BL45P-EA-MAP-01:OVER:3:Green_RBV -# % gui, DET.over, demand, Blue 3, BL45P-EA-MAP-01:OVER:3:Blue -# % gui, DET.over, readback, Blue 3, BL45P-EA-MAP-01:OVER:3:Blue_RBV -# % gui, DET.over, demand, X Position 3, BL45P-EA-MAP-01:OVER:3:PositionX -# % gui, DET.over, readback, X Position 3, BL45P-EA-MAP-01:OVER:3:PositionX_RBV -# % gui, DET.over, demand, X Position Link 3, BL45P-EA-MAP-01:OVER:3:PositionXLink.DOL -# % gui, DET.over, demand, X Center 3, BL45P-EA-MAP-01:OVER:3:CenterX -# % gui, DET.over, readback, X Center 3, BL45P-EA-MAP-01:OVER:3:CenterX_RBV -# % gui, DET.over, demand, X Center Link 3, BL45P-EA-MAP-01:OVER:3:CenterXLink.DOL -# % gui, DET.over, demand, X Size 3, BL45P-EA-MAP-01:OVER:3:SizeX -# % gui, DET.over, readback, X Size 3, BL45P-EA-MAP-01:OVER:3:SizeX_RBV -# % gui, DET.over, demand, X Size Link 3, BL45P-EA-MAP-01:OVER:3:SizeXLink.DOL -# % gui, DET.over, demand, Y Position 3, BL45P-EA-MAP-01:OVER:3:PositionY -# % gui, DET.over, readback, Y Position 3, BL45P-EA-MAP-01:OVER:3:PositionY_RBV -# % gui, DET.over, demand, Y Position Link 3, BL45P-EA-MAP-01:OVER:3:PositionYLink.DOL -# % gui, DET.over, demand, Y Center 3, BL45P-EA-MAP-01:OVER:3:CenterY -# % gui, DET.over, readback, Y Center 3, BL45P-EA-MAP-01:OVER:3:CenterY_RBV -# % gui, DET.over, demand, Y Center Link 3, BL45P-EA-MAP-01:OVER:3:CenterYLink.DOL -# % gui, DET.over, demand, Y Size 3, BL45P-EA-MAP-01:OVER:3:SizeY -# % gui, DET.over, readback, Y Size 3, BL45P-EA-MAP-01:OVER:3:SizeY_RBV -# % gui, DET.over, demand, Y Size Link 3, BL45P-EA-MAP-01:OVER:3:SizeYLink.DOL -# Overlay 4 -# % gui, DET.over, groupHeading, Overlay 4 Settings -# % gui, DET.over, demand, Overlay 4, BL45P-EA-MAP-01:OVER:4:Name -# % gui, DET.over, enum, Use 4, BL45P-EA-MAP-01:OVER:4:Use -# % gui, DET.over, readback, Use 4, BL45P-EA-MAP-01:OVER:4:Use_RBV -# % gui, DET.over, enum, Shape 4, BL45P-EA-MAP-01:OVER:4:Shape -# % gui, DET.over, readback, Shape 4, BL45P-EA-MAP-01:OVER:4:Shape_RBV -# % gui, DET.over, enum, Mode 4, BL45P-EA-MAP-01:OVER:4:DrawMode -# % gui, DET.over, readback, Mode 4, BL45P-EA-MAP-01:OVER:4:DrawMode_RBV -# % gui, DET.over, demand, Red 4, BL45P-EA-MAP-01:OVER:4:Red -# % gui, DET.over, readback, Red 4, BL45P-EA-MAP-01:OVER:4:Red_RBV -# % gui, DET.over, demand, Green 4, BL45P-EA-MAP-01:OVER:4:Green -# % gui, DET.over, readback, Green 4, BL45P-EA-MAP-01:OVER:4:Green_RBV -# % gui, DET.over, demand, Blue 4, BL45P-EA-MAP-01:OVER:4:Blue -# % gui, DET.over, readback, Blue 4, BL45P-EA-MAP-01:OVER:4:Blue_RBV -# % gui, DET.over, demand, X Position 4, BL45P-EA-MAP-01:OVER:4:PositionX -# % gui, DET.over, readback, X Position 4, BL45P-EA-MAP-01:OVER:4:PositionX_RBV -# % gui, DET.over, demand, X Position Link 4, BL45P-EA-MAP-01:OVER:4:PositionXLink.DOL -# % gui, DET.over, demand, X Center 4, BL45P-EA-MAP-01:OVER:4:CenterX -# % gui, DET.over, readback, X Center 4, BL45P-EA-MAP-01:OVER:4:CenterX_RBV -# % gui, DET.over, demand, X Center Link 4, BL45P-EA-MAP-01:OVER:4:CenterXLink.DOL -# % gui, DET.over, demand, X Size 4, BL45P-EA-MAP-01:OVER:4:SizeX -# % gui, DET.over, readback, X Size 4, BL45P-EA-MAP-01:OVER:4:SizeX_RBV -# % gui, DET.over, demand, X Size Link 4, BL45P-EA-MAP-01:OVER:4:SizeXLink.DOL -# % gui, DET.over, demand, Y Position 4, BL45P-EA-MAP-01:OVER:4:PositionY -# % gui, DET.over, readback, Y Position 4, BL45P-EA-MAP-01:OVER:4:PositionY_RBV -# % gui, DET.over, demand, Y Position Link 4, BL45P-EA-MAP-01:OVER:4:PositionYLink.DOL -# % gui, DET.over, demand, Y Center 4, BL45P-EA-MAP-01:OVER:4:CenterY -# % gui, DET.over, readback, Y Center 4, BL45P-EA-MAP-01:OVER:4:CenterY_RBV -# % gui, DET.over, demand, Y Center Link 4, BL45P-EA-MAP-01:OVER:4:CenterYLink.DOL -# % gui, DET.over, demand, Y Size 4, BL45P-EA-MAP-01:OVER:4:SizeY -# % gui, DET.over, readback, Y Size 4, BL45P-EA-MAP-01:OVER:4:SizeY_RBV -# % gui, DET.over, demand, Y Size Link 4, BL45P-EA-MAP-01:OVER:4:SizeYLink.DOL -# Overlay 5 -# % gui, DET.over, groupHeading, Overlay 5 Settings -# % gui, DET.over, demand, Overlay 5, BL45P-EA-MAP-01:OVER:5:Name -# % gui, DET.over, enum, Use 5, BL45P-EA-MAP-01:OVER:5:Use -# % gui, DET.over, readback, Use 5, BL45P-EA-MAP-01:OVER:5:Use_RBV -# % gui, DET.over, enum, Shape 5, BL45P-EA-MAP-01:OVER:5:Shape -# % gui, DET.over, readback, Shape 5, BL45P-EA-MAP-01:OVER:5:Shape_RBV -# % gui, DET.over, enum, Mode 5, BL45P-EA-MAP-01:OVER:5:DrawMode -# % gui, DET.over, readback, Mode 5, BL45P-EA-MAP-01:OVER:5:DrawMode_RBV -# % gui, DET.over, demand, Red 5, BL45P-EA-MAP-01:OVER:5:Red -# % gui, DET.over, readback, Red 5, BL45P-EA-MAP-01:OVER:5:Red_RBV -# % gui, DET.over, demand, Green 5, BL45P-EA-MAP-01:OVER:5:Green -# % gui, DET.over, readback, Green 5, BL45P-EA-MAP-01:OVER:5:Green_RBV -# % gui, DET.over, demand, Blue 5, BL45P-EA-MAP-01:OVER:5:Blue -# % gui, DET.over, readback, Blue 5, BL45P-EA-MAP-01:OVER:5:Blue_RBV -# % gui, DET.over, demand, X Position 5, BL45P-EA-MAP-01:OVER:5:PositionX -# % gui, DET.over, readback, X Position 5, BL45P-EA-MAP-01:OVER:5:PositionX_RBV -# % gui, DET.over, demand, X Position Link 5, BL45P-EA-MAP-01:OVER:5:PositionXLink.DOL -# % gui, DET.over, demand, X Center 5, BL45P-EA-MAP-01:OVER:5:CenterX -# % gui, DET.over, readback, X Center 5, BL45P-EA-MAP-01:OVER:5:CenterX_RBV -# % gui, DET.over, demand, X Center Link 5, BL45P-EA-MAP-01:OVER:5:CenterXLink.DOL -# % gui, DET.over, demand, X Size 5, BL45P-EA-MAP-01:OVER:5:SizeX -# % gui, DET.over, readback, X Size 5, BL45P-EA-MAP-01:OVER:5:SizeX_RBV -# % gui, DET.over, demand, X Size Link 5, BL45P-EA-MAP-01:OVER:5:SizeXLink.DOL -# % gui, DET.over, demand, Y Position 5, BL45P-EA-MAP-01:OVER:5:PositionY -# % gui, DET.over, readback, Y Position 5, BL45P-EA-MAP-01:OVER:5:PositionY_RBV -# % gui, DET.over, demand, Y Position Link 5, BL45P-EA-MAP-01:OVER:5:PositionYLink.DOL -# % gui, DET.over, demand, Y Center 5, BL45P-EA-MAP-01:OVER:5:CenterY -# % gui, DET.over, readback, Y Center 5, BL45P-EA-MAP-01:OVER:5:CenterY_RBV -# % gui, DET.over, demand, Y Center Link 5, BL45P-EA-MAP-01:OVER:5:CenterYLink.DOL -# % gui, DET.over, demand, Y Size 5, BL45P-EA-MAP-01:OVER:5:SizeY -# % gui, DET.over, readback, Y Size 5, BL45P-EA-MAP-01:OVER:5:SizeY_RBV -# % gui, DET.over, demand, Y Size Link 5, BL45P-EA-MAP-01:OVER:5:SizeYLink.DOL -# Overlay 6 -# % gui, DET.over, groupHeading, Overlay 6 Settings -# % gui, DET.over, demand, Overlay 6, BL45P-EA-MAP-01:OVER:6:Name -# % gui, DET.over, enum, Use 6, BL45P-EA-MAP-01:OVER:6:Use -# % gui, DET.over, readback, Use 6, BL45P-EA-MAP-01:OVER:6:Use_RBV -# % gui, DET.over, enum, Shape 6, BL45P-EA-MAP-01:OVER:6:Shape -# % gui, DET.over, readback, Shape 6, BL45P-EA-MAP-01:OVER:6:Shape_RBV -# % gui, DET.over, enum, Mode 6, BL45P-EA-MAP-01:OVER:6:DrawMode -# % gui, DET.over, readback, Mode 6, BL45P-EA-MAP-01:OVER:6:DrawMode_RBV -# % gui, DET.over, demand, Red 6, BL45P-EA-MAP-01:OVER:6:Red -# % gui, DET.over, readback, Red 6, BL45P-EA-MAP-01:OVER:6:Red_RBV -# % gui, DET.over, demand, Green 6, BL45P-EA-MAP-01:OVER:6:Green -# % gui, DET.over, readback, Green 6, BL45P-EA-MAP-01:OVER:6:Green_RBV -# % gui, DET.over, demand, Blue 6, BL45P-EA-MAP-01:OVER:6:Blue -# % gui, DET.over, readback, Blue 6, BL45P-EA-MAP-01:OVER:6:Blue_RBV -# % gui, DET.over, demand, X Position 6, BL45P-EA-MAP-01:OVER:6:PositionX -# % gui, DET.over, readback, X Position 6, BL45P-EA-MAP-01:OVER:6:PositionX_RBV -# % gui, DET.over, demand, X Position Link 6, BL45P-EA-MAP-01:OVER:6:PositionXLink.DOL -# % gui, DET.over, demand, X Center 6, BL45P-EA-MAP-01:OVER:6:CenterX -# % gui, DET.over, readback, X Center 6, BL45P-EA-MAP-01:OVER:6:CenterX_RBV -# % gui, DET.over, demand, X Center Link 6, BL45P-EA-MAP-01:OVER:6:CenterXLink.DOL -# % gui, DET.over, demand, X Size 6, BL45P-EA-MAP-01:OVER:6:SizeX -# % gui, DET.over, readback, X Size 6, BL45P-EA-MAP-01:OVER:6:SizeX_RBV -# % gui, DET.over, demand, X Size Link 6, BL45P-EA-MAP-01:OVER:6:SizeXLink.DOL -# % gui, DET.over, demand, Y Position 6, BL45P-EA-MAP-01:OVER:6:PositionY -# % gui, DET.over, readback, Y Position 6, BL45P-EA-MAP-01:OVER:6:PositionY_RBV -# % gui, DET.over, demand, Y Position Link 6, BL45P-EA-MAP-01:OVER:6:PositionYLink.DOL -# % gui, DET.over, demand, Y Center 6, BL45P-EA-MAP-01:OVER:6:CenterY -# % gui, DET.over, readback, Y Center 6, BL45P-EA-MAP-01:OVER:6:CenterY_RBV -# % gui, DET.over, demand, Y Center Link 6, BL45P-EA-MAP-01:OVER:6:CenterYLink.DOL -# % gui, DET.over, demand, Y Size 6, BL45P-EA-MAP-01:OVER:6:SizeY -# % gui, DET.over, readback, Y Size 6, BL45P-EA-MAP-01:OVER:6:SizeY_RBV -# % gui, DET.over, demand, Y Size Link 6, BL45P-EA-MAP-01:OVER:6:SizeYLink.DOL -# Overlay 7 -# % gui, DET.over, groupHeading, Overlay 7 Settings -# % gui, DET.over, demand, Overlay 7, BL45P-EA-MAP-01:OVER:7:Name -# % gui, DET.over, enum, Use 7, BL45P-EA-MAP-01:OVER:7:Use -# % gui, DET.over, readback, Use 7, BL45P-EA-MAP-01:OVER:7:Use_RBV -# % gui, DET.over, enum, Shape 7, BL45P-EA-MAP-01:OVER:7:Shape -# % gui, DET.over, readback, Shape 7, BL45P-EA-MAP-01:OVER:7:Shape_RBV -# % gui, DET.over, enum, Mode 7, BL45P-EA-MAP-01:OVER:7:DrawMode -# % gui, DET.over, readback, Mode 7, BL45P-EA-MAP-01:OVER:7:DrawMode_RBV -# % gui, DET.over, demand, Red 7, BL45P-EA-MAP-01:OVER:7:Red -# % gui, DET.over, readback, Red 7, BL45P-EA-MAP-01:OVER:7:Red_RBV -# % gui, DET.over, demand, Green 7, BL45P-EA-MAP-01:OVER:7:Green -# % gui, DET.over, readback, Green 7, BL45P-EA-MAP-01:OVER:7:Green_RBV -# % gui, DET.over, demand, Blue 7, BL45P-EA-MAP-01:OVER:7:Blue -# % gui, DET.over, readback, Blue 7, BL45P-EA-MAP-01:OVER:7:Blue_RBV -# % gui, DET.over, demand, X Position 7, BL45P-EA-MAP-01:OVER:7:PositionX -# % gui, DET.over, readback, X Position 7, BL45P-EA-MAP-01:OVER:7:PositionX_RBV -# % gui, DET.over, demand, X Position Link 7, BL45P-EA-MAP-01:OVER:7:PositionXLink.DOL -# % gui, DET.over, demand, X Center 7, BL45P-EA-MAP-01:OVER:7:CenterX -# % gui, DET.over, readback, X Center 7, BL45P-EA-MAP-01:OVER:7:CenterX_RBV -# % gui, DET.over, demand, X Center Link 7, BL45P-EA-MAP-01:OVER:7:CenterXLink.DOL -# % gui, DET.over, demand, X Size 7, BL45P-EA-MAP-01:OVER:7:SizeX -# % gui, DET.over, readback, X Size 7, BL45P-EA-MAP-01:OVER:7:SizeX_RBV -# % gui, DET.over, demand, X Size Link 7, BL45P-EA-MAP-01:OVER:7:SizeXLink.DOL -# % gui, DET.over, demand, Y Position 7, BL45P-EA-MAP-01:OVER:7:PositionY -# % gui, DET.over, readback, Y Position 7, BL45P-EA-MAP-01:OVER:7:PositionY_RBV -# % gui, DET.over, demand, Y Position Link 7, BL45P-EA-MAP-01:OVER:7:PositionYLink.DOL -# % gui, DET.over, demand, Y Center 7, BL45P-EA-MAP-01:OVER:7:CenterY -# % gui, DET.over, readback, Y Center 7, BL45P-EA-MAP-01:OVER:7:CenterY_RBV -# % gui, DET.over, demand, Y Center Link 7, BL45P-EA-MAP-01:OVER:7:CenterYLink.DOL -# % gui, DET.over, demand, Y Size 7, BL45P-EA-MAP-01:OVER:7:SizeY -# % gui, DET.over, readback, Y Size 7, BL45P-EA-MAP-01:OVER:7:SizeY_RBV -# % gui, DET.over, demand, Y Size Link 7, BL45P-EA-MAP-01:OVER:7:SizeYLink.DOL -# Overlay 8 -# % gui, DET.over, groupHeading, Overlay 8 Settings -# % gui, DET.over, demand, Overlay 8, BL45P-EA-MAP-01:OVER:8:Name -# % gui, DET.over, enum, Use 8, BL45P-EA-MAP-01:OVER:8:Use -# % gui, DET.over, readback, Use 8, BL45P-EA-MAP-01:OVER:8:Use_RBV -# % gui, DET.over, enum, Shape 8, BL45P-EA-MAP-01:OVER:8:Shape -# % gui, DET.over, readback, Shape 8, BL45P-EA-MAP-01:OVER:8:Shape_RBV -# % gui, DET.over, enum, Mode 8, BL45P-EA-MAP-01:OVER:8:DrawMode -# % gui, DET.over, readback, Mode 8, BL45P-EA-MAP-01:OVER:8:DrawMode_RBV -# % gui, DET.over, demand, Red 8, BL45P-EA-MAP-01:OVER:8:Red -# % gui, DET.over, readback, Red 8, BL45P-EA-MAP-01:OVER:8:Red_RBV -# % gui, DET.over, demand, Green 8, BL45P-EA-MAP-01:OVER:8:Green -# % gui, DET.over, readback, Green 8, BL45P-EA-MAP-01:OVER:8:Green_RBV -# % gui, DET.over, demand, Blue 8, BL45P-EA-MAP-01:OVER:8:Blue -# % gui, DET.over, readback, Blue 8, BL45P-EA-MAP-01:OVER:8:Blue_RBV -# % gui, DET.over, demand, X Position 8, BL45P-EA-MAP-01:OVER:8:PositionX -# % gui, DET.over, readback, X Position 8, BL45P-EA-MAP-01:OVER:8:PositionX_RBV -# % gui, DET.over, demand, X Position Link 8, BL45P-EA-MAP-01:OVER:8:PositionXLink.DOL -# % gui, DET.over, demand, X Center 8, BL45P-EA-MAP-01:OVER:8:CenterX -# % gui, DET.over, readback, X Center 8, BL45P-EA-MAP-01:OVER:8:CenterX_RBV -# % gui, DET.over, demand, X Center Link 8, BL45P-EA-MAP-01:OVER:8:CenterXLink.DOL -# % gui, DET.over, demand, X Size 8, BL45P-EA-MAP-01:OVER:8:SizeX -# % gui, DET.over, readback, X Size 8, BL45P-EA-MAP-01:OVER:8:SizeX_RBV -# % gui, DET.over, demand, X Size Link 8, BL45P-EA-MAP-01:OVER:8:SizeXLink.DOL -# % gui, DET.over, demand, Y Position 8, BL45P-EA-MAP-01:OVER:8:PositionY -# % gui, DET.over, readback, Y Position 8, BL45P-EA-MAP-01:OVER:8:PositionY_RBV -# % gui, DET.over, demand, Y Position Link 8, BL45P-EA-MAP-01:OVER:8:PositionYLink.DOL -# % gui, DET.over, demand, Y Center 8, BL45P-EA-MAP-01:OVER:8:CenterY -# % gui, DET.over, readback, Y Center 8, BL45P-EA-MAP-01:OVER:8:CenterY_RBV -# % gui, DET.over, demand, Y Center Link 8, BL45P-EA-MAP-01:OVER:8:CenterYLink.DOL -# % gui, DET.over, demand, Y Size 8, BL45P-EA-MAP-01:OVER:8:SizeY -# % gui, DET.over, readback, Y Size 8, BL45P-EA-MAP-01:OVER:8:SizeY_RBV -# % gui, DET.over, demand, Y Size Link 8, BL45P-EA-MAP-01:OVER:8:SizeYLink.DOL -# Memory -# % gui, DET.over, groupHeading, Memory -# % gui, DET.over, readback, Max memory, BL45P-EA-MAP-01:OVER:PoolMaxMem -# % gui, DET.over, readback, Max buffers, BL45P-EA-MAP-01:OVER:PoolMaxBuffers -# % gui, DET.over, readback, Used memory, BL45P-EA-MAP-01:OVER:PoolUsedMem -# % gui, DET.over, readback, Allocated buffers, BL45P-EA-MAP-01:OVER:PoolAllocBuffers -# % gui, DET.over, readback, Free buffers, BL45P-EA-MAP-01:OVER:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:OVER:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:OVER:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:OVER:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:OVER:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:OVER:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:OVER:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:OVER:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:OVER:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:OVER:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:OVER:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:OVER:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:OVER:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:OVER:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:OVER:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:OVER:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:OVER:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:OVER:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:OVER:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:OVER:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.over,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:OVER:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.over,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:OVER:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:OVER:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:OVER:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:OVER:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:OVER:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:OVER:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:OVER:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:OVER:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:OVER:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:OVER:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:OVER:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.over,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:OVER:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:OVER:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:OVER:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:OVER:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:OVER:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:OVER:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:OVER:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:OVER:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:OVER:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:OVER:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:OVER:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.over,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:OVER:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.over,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:OVER:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:OVER:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.over,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:OVER:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.over,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:OVER:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:OVER:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:OVER:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:OVER:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:OVER:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:OVER:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:OVER:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:OVER:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:OVER:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:OVER:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:OVER:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:OVER:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,0,1)NDARRAY_PORT") - field(VAL, "DET.proc") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:OVER:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:OVER:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:OVER:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.over,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:OVER:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.over,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:OVER:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:OVER:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:OVER:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:OVER:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:OVER:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:OVER:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:OVER:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:OVER:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.over,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:OVER:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.over,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:OVER:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.over,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:OVER:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:OVER:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:OVER:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:OVER:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:OVER:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:OVER:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:OVER:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:OVER:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:OVER:QueueSize") - field(OUT, "BL45P-EA-MAP-01:OVER:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:OVER:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:OVER:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:OVER:QueueSize") - field(OUT, "BL45P-EA-MAP-01:OVER:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:OVER:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:OVER:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:OVER:QueueSize") - field(OUT, "BL45P-EA-MAP-01:OVER:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:OVER:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:OVER:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:OVER:QueueSize") - field(INPB, "BL45P-EA-MAP-01:OVER:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:OVER:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:OVER:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:OVER:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:OVER:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:OVER:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.over,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:OVER:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.over,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:OVER:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:OVER:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:OVER:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:OVER:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:OVER:SortSize") - field(OUT, "BL45P-EA-MAP-01:OVER:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:OVER:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:OVER:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:OVER:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:OVER:AsynIO") -{ - field(PORT, "DET.over") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# These are the array dimensions in X, Y order. Used for setting HOPR on sliders -record(longin, "BL45P-EA-MAP-01:OVER:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)MAX_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:OVER:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)MAX_SIZE_Y") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlay.template -# Database for NDPluginOverlay asyn driver and standard asyn device support -# Mark Rivers -# March 25, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address - -# This associates the template with an edm screen -# % gui, DIFF.over, edmtab, NDOverlay.edl, P=BL45P-EA-DIFF-01,R=:OVER: - -# This associates a BOY screen with the template -# % gui, DIFF.over, boydetail,ADApp_opi/dls/over_detail.opi, P=BL45P-EA-DIFF-01, R=:OVER:, DESC=Overlay -# % gui, DIFF.over, boyembed, ADApp_opi/dls/over_embed_box.opi, P=BL45P-EA-DIFF-01, R=:OVER:, DESC=Overlay -# % gui, DIFF.over, boyembed, ADApp_opi/dls/over_embed.opi, P=BL45P-EA-DIFF-01, R=:OVER:, DESC=Overlay - - -# % gui, DIFF.over, groupHeading, Info -# % gui, DIFF.over, readback, Port name, BL45P-EA-DIFF-01:OVER:PortName_RBV -# % gui, DIFF.over, readback, Plugin type, BL45P-EA-DIFF-01:OVER:PluginType_RBV -# Input -# % gui, DIFF.over, demandString, Input, BL45P-EA-DIFF-01:OVER:NDArrayPort -# % gui, DIFF.over, readback, Input, BL45P-EA-DIFF-01:OVER:NDArrayPort_RBV - -# % gui, DIFF.over, groupHeading, Callback -# % gui, DIFF.over, enum, Callbacks, BL45P-EA-DIFF-01:OVER:EnableCallbacks -# % gui, DIFF.over, statusbits, Callbacks, BL45P-EA-DIFF-01:OVER:EnableCallbacks_RBV -# % gui, DIFF.over, demand, Min Callback Time, BL45P-EA-DIFF-01:OVER:MinCallbackTime -# % gui, DIFF.over, readback, Min Callback Time, BL45P-EA-DIFF-01:OVER:MinCallbackTime_RBV -# % gui, DIFF.over, enum, Block Callbacks, BL45P-EA-DIFF-01:OVER:BlockingCallbacks -# % gui, DIFF.over, statusbits, Block Callbacks, BL45P-EA-DIFF-01:OVER:BlockingCallbacks_RBV - -# % gui, DIFF.over, groupHeading, Counters -# % gui, DIFF.over, demand, Array Counter, BL45P-EA-DIFF-01:OVER:ArrayCounter -# % gui, DIFF.over, readback, Array Counter, BL45P-EA-DIFF-01:OVER:ArrayCounter_RBV -# % gui, DIFF.over, readback, Array Rate (fps), BL45P-EA-DIFF-01:OVER:ArrayRate_RBV -# % gui, DIFF.over, readback, Queue Use, BL45P-EA-DIFF-01:OVER:QueueUse -# % gui, DIFF.over, readback, Queue Size, BL45P-EA-DIFF-01:OVER:QueueSize -# % gui, DIFF.over, demand, Dropped Arrays, BL45P-EA-DIFF-01:OVER:DroppedArrays -# % gui, DIFF.over, readback, Dropped Arrays, BL45P-EA-DIFF-01:OVER:DroppedArrays_RBV - -# % gui, DIFF.over, groupHeading, Array Settings -# % gui, DIFF.over, readback, Num Dimensions, BL45P-EA-DIFF-01:OVER:NDimensions_RBV -# % gui, DIFF.over, readback, Dim 0 Size, BL45P-EA-DIFF-01:OVER:ArraySize0_RBV -# % gui, DIFF.over, readback, Dim 1 Size, BL45P-EA-DIFF-01:OVER:ArraySize1_RBV -# % gui, DIFF.over, readback, Dim 2 Size, BL45P-EA-DIFF-01:OVER:ArraySize2_RBV -# % gui, DIFF.over, readback, Input Data Type, BL45P-EA-DIFF-01:OVER:DataType_RBV -# % gui, DIFF.over, readback, Colour Mode, BL45P-EA-DIFF-01:OVER:ColorMode_RBV -# % gui, DIFF.over, readback, Bayer Pattern, BL45P-EA-DIFF-01:OVER:BayerPattern_RBV -# % gui, DIFF.over, readback, Unique id, BL45P-EA-DIFF-01:OVER:UniqueId_RBV -# % gui, DIFF.over, readback, Timestamp, BL45P-EA-DIFF-01:OVER:TimeStamp_RBV - -# Output -# % gui, DIFF.over, groupHeading, Output -# % gui, DIFF.over, demand, Name, BL45P-EA-DIFF-01:OVER:Name -# % gui, DIFF.over, enum, Out data type, BL45P-EA-DIFF-01:OVER:DataTypeOut -# % gui, DIFF.over, readback, Out data type, BL45P-EA-DIFF-01:OVER:DataTypeOut_RBV -# % gui, DIFF.over, demand, Attributes file, BL45P-EA-DIFF-01:OVER:NDAttributesFile - -# Overlay 1 -# % gui, DIFF.over, groupHeading, Overlay 1 Settings -# % gui, DIFF.over, demand, Overlay 1, BL45P-EA-DIFF-01:OVER:1:Name -# % gui, DIFF.over, enum, Use 1, BL45P-EA-DIFF-01:OVER:1:Use -# % gui, DIFF.over, readback, Use 1, BL45P-EA-DIFF-01:OVER:1:Use_RBV -# % gui, DIFF.over, enum, Shape 1, BL45P-EA-DIFF-01:OVER:1:Shape -# % gui, DIFF.over, readback, Shape 1, BL45P-EA-DIFF-01:OVER:1:Shape_RBV -# % gui, DIFF.over, enum, Mode 1, BL45P-EA-DIFF-01:OVER:1:DrawMode -# % gui, DIFF.over, readback, Mode 1, BL45P-EA-DIFF-01:OVER:1:DrawMode_RBV -# % gui, DIFF.over, demand, Red 1, BL45P-EA-DIFF-01:OVER:1:Red -# % gui, DIFF.over, readback, Red 1, BL45P-EA-DIFF-01:OVER:1:Red_RBV -# % gui, DIFF.over, demand, Green 1, BL45P-EA-DIFF-01:OVER:1:Green -# % gui, DIFF.over, readback, Green 1, BL45P-EA-DIFF-01:OVER:1:Green_RBV -# % gui, DIFF.over, demand, Blue 1, BL45P-EA-DIFF-01:OVER:1:Blue -# % gui, DIFF.over, readback, Blue 1, BL45P-EA-DIFF-01:OVER:1:Blue_RBV -# % gui, DIFF.over, demand, X Position 1, BL45P-EA-DIFF-01:OVER:1:PositionX -# % gui, DIFF.over, readback, X Position 1, BL45P-EA-DIFF-01:OVER:1:PositionX_RBV -# % gui, DIFF.over, demand, X Position Link 1, BL45P-EA-DIFF-01:OVER:1:PositionXLink.DOL -# % gui, DIFF.over, demand, X Center 1, BL45P-EA-DIFF-01:OVER:1:CenterX -# % gui, DIFF.over, readback, X Center 1, BL45P-EA-DIFF-01:OVER:1:CenterX_RBV -# % gui, DIFF.over, demand, X Center Link 1, BL45P-EA-DIFF-01:OVER:1:CenterXLink.DOL -# % gui, DIFF.over, demand, X Size 1, BL45P-EA-DIFF-01:OVER:1:SizeX -# % gui, DIFF.over, readback, X Size 1, BL45P-EA-DIFF-01:OVER:1:SizeX_RBV -# % gui, DIFF.over, demand, X Size Link 1, BL45P-EA-DIFF-01:OVER:1:SizeXLink.DOL -# % gui, DIFF.over, demand, Y Position 1, BL45P-EA-DIFF-01:OVER:1:PositionY -# % gui, DIFF.over, readback, Y Position 1, BL45P-EA-DIFF-01:OVER:1:PositionY_RBV -# % gui, DIFF.over, demand, Y Position Link 1, BL45P-EA-DIFF-01:OVER:1:PositionYLink.DOL -# % gui, DIFF.over, demand, Y Center 1, BL45P-EA-DIFF-01:OVER:1:CenterY -# % gui, DIFF.over, readback, Y Center 1, BL45P-EA-DIFF-01:OVER:1:CenterY_RBV -# % gui, DIFF.over, demand, Y Center Link 1, BL45P-EA-DIFF-01:OVER:1:CenterYLink.DOL -# % gui, DIFF.over, demand, Y Size 1, BL45P-EA-DIFF-01:OVER:1:SizeY -# % gui, DIFF.over, readback, Y Size 1, BL45P-EA-DIFF-01:OVER:1:SizeY_RBV -# % gui, DIFF.over, demand, Y Size Link 1, BL45P-EA-DIFF-01:OVER:1:SizeYLink.DOL -# Overlay 2 -# % gui, DIFF.over, groupHeading, Overlay 2 Settings -# % gui, DIFF.over, demand, Overlay 2, BL45P-EA-DIFF-01:OVER:2:Name -# % gui, DIFF.over, enum, Use 2, BL45P-EA-DIFF-01:OVER:2:Use -# % gui, DIFF.over, readback, Use 2, BL45P-EA-DIFF-01:OVER:2:Use_RBV -# % gui, DIFF.over, enum, Shape 2, BL45P-EA-DIFF-01:OVER:2:Shape -# % gui, DIFF.over, readback, Shape 2, BL45P-EA-DIFF-01:OVER:2:Shape_RBV -# % gui, DIFF.over, enum, Mode 2, BL45P-EA-DIFF-01:OVER:2:DrawMode -# % gui, DIFF.over, readback, Mode 2, BL45P-EA-DIFF-01:OVER:2:DrawMode_RBV -# % gui, DIFF.over, demand, Red 2, BL45P-EA-DIFF-01:OVER:2:Red -# % gui, DIFF.over, readback, Red 2, BL45P-EA-DIFF-01:OVER:2:Red_RBV -# % gui, DIFF.over, demand, Green 2, BL45P-EA-DIFF-01:OVER:2:Green -# % gui, DIFF.over, readback, Green 2, BL45P-EA-DIFF-01:OVER:2:Green_RBV -# % gui, DIFF.over, demand, Blue 2, BL45P-EA-DIFF-01:OVER:2:Blue -# % gui, DIFF.over, readback, Blue 2, BL45P-EA-DIFF-01:OVER:2:Blue_RBV -# % gui, DIFF.over, demand, X Position 2, BL45P-EA-DIFF-01:OVER:2:PositionX -# % gui, DIFF.over, readback, X Position 2, BL45P-EA-DIFF-01:OVER:2:PositionX_RBV -# % gui, DIFF.over, demand, X Position Link 2, BL45P-EA-DIFF-01:OVER:2:PositionXLink.DOL -# % gui, DIFF.over, demand, X Center 2, BL45P-EA-DIFF-01:OVER:2:CenterX -# % gui, DIFF.over, readback, X Center 2, BL45P-EA-DIFF-01:OVER:2:CenterX_RBV -# % gui, DIFF.over, demand, X Center Link 2, BL45P-EA-DIFF-01:OVER:2:CenterXLink.DOL -# % gui, DIFF.over, demand, X Size 2, BL45P-EA-DIFF-01:OVER:2:SizeX -# % gui, DIFF.over, readback, X Size 2, BL45P-EA-DIFF-01:OVER:2:SizeX_RBV -# % gui, DIFF.over, demand, X Size Link 2, BL45P-EA-DIFF-01:OVER:2:SizeXLink.DOL -# % gui, DIFF.over, demand, Y Position 2, BL45P-EA-DIFF-01:OVER:2:PositionY -# % gui, DIFF.over, readback, Y Position 2, BL45P-EA-DIFF-01:OVER:2:PositionY_RBV -# % gui, DIFF.over, demand, Y Position Link 2, BL45P-EA-DIFF-01:OVER:2:PositionYLink.DOL -# % gui, DIFF.over, demand, Y Center 2, BL45P-EA-DIFF-01:OVER:2:CenterY -# % gui, DIFF.over, readback, Y Center 2, BL45P-EA-DIFF-01:OVER:2:CenterY_RBV -# % gui, DIFF.over, demand, Y Center Link 2, BL45P-EA-DIFF-01:OVER:2:CenterYLink.DOL -# % gui, DIFF.over, demand, Y Size 2, BL45P-EA-DIFF-01:OVER:2:SizeY -# % gui, DIFF.over, readback, Y Size 2, BL45P-EA-DIFF-01:OVER:2:SizeY_RBV -# % gui, DIFF.over, demand, Y Size Link 2, BL45P-EA-DIFF-01:OVER:2:SizeYLink.DOL -# Overlay 3 -# % gui, DIFF.over, groupHeading, Overlay 3 Settings -# % gui, DIFF.over, demand, Overlay 3, BL45P-EA-DIFF-01:OVER:3:Name -# % gui, DIFF.over, enum, Use 3, BL45P-EA-DIFF-01:OVER:3:Use -# % gui, DIFF.over, readback, Use 3, BL45P-EA-DIFF-01:OVER:3:Use_RBV -# % gui, DIFF.over, enum, Shape 3, BL45P-EA-DIFF-01:OVER:3:Shape -# % gui, DIFF.over, readback, Shape 3, BL45P-EA-DIFF-01:OVER:3:Shape_RBV -# % gui, DIFF.over, enum, Mode 3, BL45P-EA-DIFF-01:OVER:3:DrawMode -# % gui, DIFF.over, readback, Mode 3, BL45P-EA-DIFF-01:OVER:3:DrawMode_RBV -# % gui, DIFF.over, demand, Red 3, BL45P-EA-DIFF-01:OVER:3:Red -# % gui, DIFF.over, readback, Red 3, BL45P-EA-DIFF-01:OVER:3:Red_RBV -# % gui, DIFF.over, demand, Green 3, BL45P-EA-DIFF-01:OVER:3:Green -# % gui, DIFF.over, readback, Green 3, BL45P-EA-DIFF-01:OVER:3:Green_RBV -# % gui, DIFF.over, demand, Blue 3, BL45P-EA-DIFF-01:OVER:3:Blue -# % gui, DIFF.over, readback, Blue 3, BL45P-EA-DIFF-01:OVER:3:Blue_RBV -# % gui, DIFF.over, demand, X Position 3, BL45P-EA-DIFF-01:OVER:3:PositionX -# % gui, DIFF.over, readback, X Position 3, BL45P-EA-DIFF-01:OVER:3:PositionX_RBV -# % gui, DIFF.over, demand, X Position Link 3, BL45P-EA-DIFF-01:OVER:3:PositionXLink.DOL -# % gui, DIFF.over, demand, X Center 3, BL45P-EA-DIFF-01:OVER:3:CenterX -# % gui, DIFF.over, readback, X Center 3, BL45P-EA-DIFF-01:OVER:3:CenterX_RBV -# % gui, DIFF.over, demand, X Center Link 3, BL45P-EA-DIFF-01:OVER:3:CenterXLink.DOL -# % gui, DIFF.over, demand, X Size 3, BL45P-EA-DIFF-01:OVER:3:SizeX -# % gui, DIFF.over, readback, X Size 3, BL45P-EA-DIFF-01:OVER:3:SizeX_RBV -# % gui, DIFF.over, demand, X Size Link 3, BL45P-EA-DIFF-01:OVER:3:SizeXLink.DOL -# % gui, DIFF.over, demand, Y Position 3, BL45P-EA-DIFF-01:OVER:3:PositionY -# % gui, DIFF.over, readback, Y Position 3, BL45P-EA-DIFF-01:OVER:3:PositionY_RBV -# % gui, DIFF.over, demand, Y Position Link 3, BL45P-EA-DIFF-01:OVER:3:PositionYLink.DOL -# % gui, DIFF.over, demand, Y Center 3, BL45P-EA-DIFF-01:OVER:3:CenterY -# % gui, DIFF.over, readback, Y Center 3, BL45P-EA-DIFF-01:OVER:3:CenterY_RBV -# % gui, DIFF.over, demand, Y Center Link 3, BL45P-EA-DIFF-01:OVER:3:CenterYLink.DOL -# % gui, DIFF.over, demand, Y Size 3, BL45P-EA-DIFF-01:OVER:3:SizeY -# % gui, DIFF.over, readback, Y Size 3, BL45P-EA-DIFF-01:OVER:3:SizeY_RBV -# % gui, DIFF.over, demand, Y Size Link 3, BL45P-EA-DIFF-01:OVER:3:SizeYLink.DOL -# Overlay 4 -# % gui, DIFF.over, groupHeading, Overlay 4 Settings -# % gui, DIFF.over, demand, Overlay 4, BL45P-EA-DIFF-01:OVER:4:Name -# % gui, DIFF.over, enum, Use 4, BL45P-EA-DIFF-01:OVER:4:Use -# % gui, DIFF.over, readback, Use 4, BL45P-EA-DIFF-01:OVER:4:Use_RBV -# % gui, DIFF.over, enum, Shape 4, BL45P-EA-DIFF-01:OVER:4:Shape -# % gui, DIFF.over, readback, Shape 4, BL45P-EA-DIFF-01:OVER:4:Shape_RBV -# % gui, DIFF.over, enum, Mode 4, BL45P-EA-DIFF-01:OVER:4:DrawMode -# % gui, DIFF.over, readback, Mode 4, BL45P-EA-DIFF-01:OVER:4:DrawMode_RBV -# % gui, DIFF.over, demand, Red 4, BL45P-EA-DIFF-01:OVER:4:Red -# % gui, DIFF.over, readback, Red 4, BL45P-EA-DIFF-01:OVER:4:Red_RBV -# % gui, DIFF.over, demand, Green 4, BL45P-EA-DIFF-01:OVER:4:Green -# % gui, DIFF.over, readback, Green 4, BL45P-EA-DIFF-01:OVER:4:Green_RBV -# % gui, DIFF.over, demand, Blue 4, BL45P-EA-DIFF-01:OVER:4:Blue -# % gui, DIFF.over, readback, Blue 4, BL45P-EA-DIFF-01:OVER:4:Blue_RBV -# % gui, DIFF.over, demand, X Position 4, BL45P-EA-DIFF-01:OVER:4:PositionX -# % gui, DIFF.over, readback, X Position 4, BL45P-EA-DIFF-01:OVER:4:PositionX_RBV -# % gui, DIFF.over, demand, X Position Link 4, BL45P-EA-DIFF-01:OVER:4:PositionXLink.DOL -# % gui, DIFF.over, demand, X Center 4, BL45P-EA-DIFF-01:OVER:4:CenterX -# % gui, DIFF.over, readback, X Center 4, BL45P-EA-DIFF-01:OVER:4:CenterX_RBV -# % gui, DIFF.over, demand, X Center Link 4, BL45P-EA-DIFF-01:OVER:4:CenterXLink.DOL -# % gui, DIFF.over, demand, X Size 4, BL45P-EA-DIFF-01:OVER:4:SizeX -# % gui, DIFF.over, readback, X Size 4, BL45P-EA-DIFF-01:OVER:4:SizeX_RBV -# % gui, DIFF.over, demand, X Size Link 4, BL45P-EA-DIFF-01:OVER:4:SizeXLink.DOL -# % gui, DIFF.over, demand, Y Position 4, BL45P-EA-DIFF-01:OVER:4:PositionY -# % gui, DIFF.over, readback, Y Position 4, BL45P-EA-DIFF-01:OVER:4:PositionY_RBV -# % gui, DIFF.over, demand, Y Position Link 4, BL45P-EA-DIFF-01:OVER:4:PositionYLink.DOL -# % gui, DIFF.over, demand, Y Center 4, BL45P-EA-DIFF-01:OVER:4:CenterY -# % gui, DIFF.over, readback, Y Center 4, BL45P-EA-DIFF-01:OVER:4:CenterY_RBV -# % gui, DIFF.over, demand, Y Center Link 4, BL45P-EA-DIFF-01:OVER:4:CenterYLink.DOL -# % gui, DIFF.over, demand, Y Size 4, BL45P-EA-DIFF-01:OVER:4:SizeY -# % gui, DIFF.over, readback, Y Size 4, BL45P-EA-DIFF-01:OVER:4:SizeY_RBV -# % gui, DIFF.over, demand, Y Size Link 4, BL45P-EA-DIFF-01:OVER:4:SizeYLink.DOL -# Overlay 5 -# % gui, DIFF.over, groupHeading, Overlay 5 Settings -# % gui, DIFF.over, demand, Overlay 5, BL45P-EA-DIFF-01:OVER:5:Name -# % gui, DIFF.over, enum, Use 5, BL45P-EA-DIFF-01:OVER:5:Use -# % gui, DIFF.over, readback, Use 5, BL45P-EA-DIFF-01:OVER:5:Use_RBV -# % gui, DIFF.over, enum, Shape 5, BL45P-EA-DIFF-01:OVER:5:Shape -# % gui, DIFF.over, readback, Shape 5, BL45P-EA-DIFF-01:OVER:5:Shape_RBV -# % gui, DIFF.over, enum, Mode 5, BL45P-EA-DIFF-01:OVER:5:DrawMode -# % gui, DIFF.over, readback, Mode 5, BL45P-EA-DIFF-01:OVER:5:DrawMode_RBV -# % gui, DIFF.over, demand, Red 5, BL45P-EA-DIFF-01:OVER:5:Red -# % gui, DIFF.over, readback, Red 5, BL45P-EA-DIFF-01:OVER:5:Red_RBV -# % gui, DIFF.over, demand, Green 5, BL45P-EA-DIFF-01:OVER:5:Green -# % gui, DIFF.over, readback, Green 5, BL45P-EA-DIFF-01:OVER:5:Green_RBV -# % gui, DIFF.over, demand, Blue 5, BL45P-EA-DIFF-01:OVER:5:Blue -# % gui, DIFF.over, readback, Blue 5, BL45P-EA-DIFF-01:OVER:5:Blue_RBV -# % gui, DIFF.over, demand, X Position 5, BL45P-EA-DIFF-01:OVER:5:PositionX -# % gui, DIFF.over, readback, X Position 5, BL45P-EA-DIFF-01:OVER:5:PositionX_RBV -# % gui, DIFF.over, demand, X Position Link 5, BL45P-EA-DIFF-01:OVER:5:PositionXLink.DOL -# % gui, DIFF.over, demand, X Center 5, BL45P-EA-DIFF-01:OVER:5:CenterX -# % gui, DIFF.over, readback, X Center 5, BL45P-EA-DIFF-01:OVER:5:CenterX_RBV -# % gui, DIFF.over, demand, X Center Link 5, BL45P-EA-DIFF-01:OVER:5:CenterXLink.DOL -# % gui, DIFF.over, demand, X Size 5, BL45P-EA-DIFF-01:OVER:5:SizeX -# % gui, DIFF.over, readback, X Size 5, BL45P-EA-DIFF-01:OVER:5:SizeX_RBV -# % gui, DIFF.over, demand, X Size Link 5, BL45P-EA-DIFF-01:OVER:5:SizeXLink.DOL -# % gui, DIFF.over, demand, Y Position 5, BL45P-EA-DIFF-01:OVER:5:PositionY -# % gui, DIFF.over, readback, Y Position 5, BL45P-EA-DIFF-01:OVER:5:PositionY_RBV -# % gui, DIFF.over, demand, Y Position Link 5, BL45P-EA-DIFF-01:OVER:5:PositionYLink.DOL -# % gui, DIFF.over, demand, Y Center 5, BL45P-EA-DIFF-01:OVER:5:CenterY -# % gui, DIFF.over, readback, Y Center 5, BL45P-EA-DIFF-01:OVER:5:CenterY_RBV -# % gui, DIFF.over, demand, Y Center Link 5, BL45P-EA-DIFF-01:OVER:5:CenterYLink.DOL -# % gui, DIFF.over, demand, Y Size 5, BL45P-EA-DIFF-01:OVER:5:SizeY -# % gui, DIFF.over, readback, Y Size 5, BL45P-EA-DIFF-01:OVER:5:SizeY_RBV -# % gui, DIFF.over, demand, Y Size Link 5, BL45P-EA-DIFF-01:OVER:5:SizeYLink.DOL -# Overlay 6 -# % gui, DIFF.over, groupHeading, Overlay 6 Settings -# % gui, DIFF.over, demand, Overlay 6, BL45P-EA-DIFF-01:OVER:6:Name -# % gui, DIFF.over, enum, Use 6, BL45P-EA-DIFF-01:OVER:6:Use -# % gui, DIFF.over, readback, Use 6, BL45P-EA-DIFF-01:OVER:6:Use_RBV -# % gui, DIFF.over, enum, Shape 6, BL45P-EA-DIFF-01:OVER:6:Shape -# % gui, DIFF.over, readback, Shape 6, BL45P-EA-DIFF-01:OVER:6:Shape_RBV -# % gui, DIFF.over, enum, Mode 6, BL45P-EA-DIFF-01:OVER:6:DrawMode -# % gui, DIFF.over, readback, Mode 6, BL45P-EA-DIFF-01:OVER:6:DrawMode_RBV -# % gui, DIFF.over, demand, Red 6, BL45P-EA-DIFF-01:OVER:6:Red -# % gui, DIFF.over, readback, Red 6, BL45P-EA-DIFF-01:OVER:6:Red_RBV -# % gui, DIFF.over, demand, Green 6, BL45P-EA-DIFF-01:OVER:6:Green -# % gui, DIFF.over, readback, Green 6, BL45P-EA-DIFF-01:OVER:6:Green_RBV -# % gui, DIFF.over, demand, Blue 6, BL45P-EA-DIFF-01:OVER:6:Blue -# % gui, DIFF.over, readback, Blue 6, BL45P-EA-DIFF-01:OVER:6:Blue_RBV -# % gui, DIFF.over, demand, X Position 6, BL45P-EA-DIFF-01:OVER:6:PositionX -# % gui, DIFF.over, readback, X Position 6, BL45P-EA-DIFF-01:OVER:6:PositionX_RBV -# % gui, DIFF.over, demand, X Position Link 6, BL45P-EA-DIFF-01:OVER:6:PositionXLink.DOL -# % gui, DIFF.over, demand, X Center 6, BL45P-EA-DIFF-01:OVER:6:CenterX -# % gui, DIFF.over, readback, X Center 6, BL45P-EA-DIFF-01:OVER:6:CenterX_RBV -# % gui, DIFF.over, demand, X Center Link 6, BL45P-EA-DIFF-01:OVER:6:CenterXLink.DOL -# % gui, DIFF.over, demand, X Size 6, BL45P-EA-DIFF-01:OVER:6:SizeX -# % gui, DIFF.over, readback, X Size 6, BL45P-EA-DIFF-01:OVER:6:SizeX_RBV -# % gui, DIFF.over, demand, X Size Link 6, BL45P-EA-DIFF-01:OVER:6:SizeXLink.DOL -# % gui, DIFF.over, demand, Y Position 6, BL45P-EA-DIFF-01:OVER:6:PositionY -# % gui, DIFF.over, readback, Y Position 6, BL45P-EA-DIFF-01:OVER:6:PositionY_RBV -# % gui, DIFF.over, demand, Y Position Link 6, BL45P-EA-DIFF-01:OVER:6:PositionYLink.DOL -# % gui, DIFF.over, demand, Y Center 6, BL45P-EA-DIFF-01:OVER:6:CenterY -# % gui, DIFF.over, readback, Y Center 6, BL45P-EA-DIFF-01:OVER:6:CenterY_RBV -# % gui, DIFF.over, demand, Y Center Link 6, BL45P-EA-DIFF-01:OVER:6:CenterYLink.DOL -# % gui, DIFF.over, demand, Y Size 6, BL45P-EA-DIFF-01:OVER:6:SizeY -# % gui, DIFF.over, readback, Y Size 6, BL45P-EA-DIFF-01:OVER:6:SizeY_RBV -# % gui, DIFF.over, demand, Y Size Link 6, BL45P-EA-DIFF-01:OVER:6:SizeYLink.DOL -# Overlay 7 -# % gui, DIFF.over, groupHeading, Overlay 7 Settings -# % gui, DIFF.over, demand, Overlay 7, BL45P-EA-DIFF-01:OVER:7:Name -# % gui, DIFF.over, enum, Use 7, BL45P-EA-DIFF-01:OVER:7:Use -# % gui, DIFF.over, readback, Use 7, BL45P-EA-DIFF-01:OVER:7:Use_RBV -# % gui, DIFF.over, enum, Shape 7, BL45P-EA-DIFF-01:OVER:7:Shape -# % gui, DIFF.over, readback, Shape 7, BL45P-EA-DIFF-01:OVER:7:Shape_RBV -# % gui, DIFF.over, enum, Mode 7, BL45P-EA-DIFF-01:OVER:7:DrawMode -# % gui, DIFF.over, readback, Mode 7, BL45P-EA-DIFF-01:OVER:7:DrawMode_RBV -# % gui, DIFF.over, demand, Red 7, BL45P-EA-DIFF-01:OVER:7:Red -# % gui, DIFF.over, readback, Red 7, BL45P-EA-DIFF-01:OVER:7:Red_RBV -# % gui, DIFF.over, demand, Green 7, BL45P-EA-DIFF-01:OVER:7:Green -# % gui, DIFF.over, readback, Green 7, BL45P-EA-DIFF-01:OVER:7:Green_RBV -# % gui, DIFF.over, demand, Blue 7, BL45P-EA-DIFF-01:OVER:7:Blue -# % gui, DIFF.over, readback, Blue 7, BL45P-EA-DIFF-01:OVER:7:Blue_RBV -# % gui, DIFF.over, demand, X Position 7, BL45P-EA-DIFF-01:OVER:7:PositionX -# % gui, DIFF.over, readback, X Position 7, BL45P-EA-DIFF-01:OVER:7:PositionX_RBV -# % gui, DIFF.over, demand, X Position Link 7, BL45P-EA-DIFF-01:OVER:7:PositionXLink.DOL -# % gui, DIFF.over, demand, X Center 7, BL45P-EA-DIFF-01:OVER:7:CenterX -# % gui, DIFF.over, readback, X Center 7, BL45P-EA-DIFF-01:OVER:7:CenterX_RBV -# % gui, DIFF.over, demand, X Center Link 7, BL45P-EA-DIFF-01:OVER:7:CenterXLink.DOL -# % gui, DIFF.over, demand, X Size 7, BL45P-EA-DIFF-01:OVER:7:SizeX -# % gui, DIFF.over, readback, X Size 7, BL45P-EA-DIFF-01:OVER:7:SizeX_RBV -# % gui, DIFF.over, demand, X Size Link 7, BL45P-EA-DIFF-01:OVER:7:SizeXLink.DOL -# % gui, DIFF.over, demand, Y Position 7, BL45P-EA-DIFF-01:OVER:7:PositionY -# % gui, DIFF.over, readback, Y Position 7, BL45P-EA-DIFF-01:OVER:7:PositionY_RBV -# % gui, DIFF.over, demand, Y Position Link 7, BL45P-EA-DIFF-01:OVER:7:PositionYLink.DOL -# % gui, DIFF.over, demand, Y Center 7, BL45P-EA-DIFF-01:OVER:7:CenterY -# % gui, DIFF.over, readback, Y Center 7, BL45P-EA-DIFF-01:OVER:7:CenterY_RBV -# % gui, DIFF.over, demand, Y Center Link 7, BL45P-EA-DIFF-01:OVER:7:CenterYLink.DOL -# % gui, DIFF.over, demand, Y Size 7, BL45P-EA-DIFF-01:OVER:7:SizeY -# % gui, DIFF.over, readback, Y Size 7, BL45P-EA-DIFF-01:OVER:7:SizeY_RBV -# % gui, DIFF.over, demand, Y Size Link 7, BL45P-EA-DIFF-01:OVER:7:SizeYLink.DOL -# Overlay 8 -# % gui, DIFF.over, groupHeading, Overlay 8 Settings -# % gui, DIFF.over, demand, Overlay 8, BL45P-EA-DIFF-01:OVER:8:Name -# % gui, DIFF.over, enum, Use 8, BL45P-EA-DIFF-01:OVER:8:Use -# % gui, DIFF.over, readback, Use 8, BL45P-EA-DIFF-01:OVER:8:Use_RBV -# % gui, DIFF.over, enum, Shape 8, BL45P-EA-DIFF-01:OVER:8:Shape -# % gui, DIFF.over, readback, Shape 8, BL45P-EA-DIFF-01:OVER:8:Shape_RBV -# % gui, DIFF.over, enum, Mode 8, BL45P-EA-DIFF-01:OVER:8:DrawMode -# % gui, DIFF.over, readback, Mode 8, BL45P-EA-DIFF-01:OVER:8:DrawMode_RBV -# % gui, DIFF.over, demand, Red 8, BL45P-EA-DIFF-01:OVER:8:Red -# % gui, DIFF.over, readback, Red 8, BL45P-EA-DIFF-01:OVER:8:Red_RBV -# % gui, DIFF.over, demand, Green 8, BL45P-EA-DIFF-01:OVER:8:Green -# % gui, DIFF.over, readback, Green 8, BL45P-EA-DIFF-01:OVER:8:Green_RBV -# % gui, DIFF.over, demand, Blue 8, BL45P-EA-DIFF-01:OVER:8:Blue -# % gui, DIFF.over, readback, Blue 8, BL45P-EA-DIFF-01:OVER:8:Blue_RBV -# % gui, DIFF.over, demand, X Position 8, BL45P-EA-DIFF-01:OVER:8:PositionX -# % gui, DIFF.over, readback, X Position 8, BL45P-EA-DIFF-01:OVER:8:PositionX_RBV -# % gui, DIFF.over, demand, X Position Link 8, BL45P-EA-DIFF-01:OVER:8:PositionXLink.DOL -# % gui, DIFF.over, demand, X Center 8, BL45P-EA-DIFF-01:OVER:8:CenterX -# % gui, DIFF.over, readback, X Center 8, BL45P-EA-DIFF-01:OVER:8:CenterX_RBV -# % gui, DIFF.over, demand, X Center Link 8, BL45P-EA-DIFF-01:OVER:8:CenterXLink.DOL -# % gui, DIFF.over, demand, X Size 8, BL45P-EA-DIFF-01:OVER:8:SizeX -# % gui, DIFF.over, readback, X Size 8, BL45P-EA-DIFF-01:OVER:8:SizeX_RBV -# % gui, DIFF.over, demand, X Size Link 8, BL45P-EA-DIFF-01:OVER:8:SizeXLink.DOL -# % gui, DIFF.over, demand, Y Position 8, BL45P-EA-DIFF-01:OVER:8:PositionY -# % gui, DIFF.over, readback, Y Position 8, BL45P-EA-DIFF-01:OVER:8:PositionY_RBV -# % gui, DIFF.over, demand, Y Position Link 8, BL45P-EA-DIFF-01:OVER:8:PositionYLink.DOL -# % gui, DIFF.over, demand, Y Center 8, BL45P-EA-DIFF-01:OVER:8:CenterY -# % gui, DIFF.over, readback, Y Center 8, BL45P-EA-DIFF-01:OVER:8:CenterY_RBV -# % gui, DIFF.over, demand, Y Center Link 8, BL45P-EA-DIFF-01:OVER:8:CenterYLink.DOL -# % gui, DIFF.over, demand, Y Size 8, BL45P-EA-DIFF-01:OVER:8:SizeY -# % gui, DIFF.over, readback, Y Size 8, BL45P-EA-DIFF-01:OVER:8:SizeY_RBV -# % gui, DIFF.over, demand, Y Size Link 8, BL45P-EA-DIFF-01:OVER:8:SizeYLink.DOL -# Memory -# % gui, DIFF.over, groupHeading, Memory -# % gui, DIFF.over, readback, Max memory, BL45P-EA-DIFF-01:OVER:PoolMaxMem -# % gui, DIFF.over, readback, Max buffers, BL45P-EA-DIFF-01:OVER:PoolMaxBuffers -# % gui, DIFF.over, readback, Used memory, BL45P-EA-DIFF-01:OVER:PoolUsedMem -# % gui, DIFF.over, readback, Allocated buffers, BL45P-EA-DIFF-01:OVER:PoolAllocBuffers -# % gui, DIFF.over, readback, Free buffers, BL45P-EA-DIFF-01:OVER:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:OVER:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:OVER:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:OVER:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:OVER:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:OVER:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:OVER:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:OVER:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:OVER:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:OVER:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:OVER:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:OVER:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:OVER:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:OVER:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:OVER:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:OVER:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:OVER:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:OVER:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:OVER:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.over,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:OVER:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.over,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:OVER:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:OVER:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:OVER:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:OVER:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:OVER:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:OVER:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:OVER:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:OVER:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:OVER:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.over,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:OVER:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:OVER:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:OVER:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:OVER:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:OVER:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:OVER:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:OVER:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:OVER:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.over,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:OVER:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.over,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:OVER:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:OVER:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.over,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:OVER:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.over,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:OVER:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:OVER:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:OVER:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:OVER:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:OVER:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:OVER:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:OVER:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:OVER:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:OVER:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,0,1)NDARRAY_PORT") - field(VAL, "DIFF.proc") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:OVER:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:OVER:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:OVER:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.over,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:OVER:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.over,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:OVER:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:OVER:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:OVER:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:OVER:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:OVER:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:OVER:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:OVER:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:OVER:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.over,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:OVER:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.over,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:OVER:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.over,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:OVER:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:OVER:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:OVER:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:OVER:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:OVER:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:OVER:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:OVER:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:OVER:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:OVER:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:OVER:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:OVER:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:OVER:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:OVER:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:OVER:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:OVER:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:OVER:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:OVER:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:OVER:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:OVER:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:OVER:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:OVER:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.over,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:OVER:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.over,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:OVER:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:OVER:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:OVER:SortSize") - field(OUT, "BL45P-EA-DIFF-01:OVER:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:OVER:AsynIO") -{ - field(PORT, "DIFF.over") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# These are the array dimensions in X, Y order. Used for setting HOPR on sliders -record(longin, "BL45P-EA-DIFF-01:OVER:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)MAX_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)MAX_SIZE_Y") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-MAP-01:OVER:1:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,0,1)NAME") - field(VAL, "Overlay 1") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:1:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,0,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-MAP-01:OVER:1:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:OVER:1:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-MAP-01:OVER:1:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:1:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:1:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:1:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:1:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:1:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:1:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:1:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:1:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:1:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:1:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:1:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:1:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:1:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:1:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:1:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:1:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:1:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:1:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:1:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:1:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:1:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:1:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:1:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:1:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:OVER:1:MaxSizeX") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:1:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:1:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:1:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:1:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:1:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:1:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:OVER:1:MaxSizeY") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:1:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:1:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:1:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:1:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:1:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:1:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-MAP-01:OVER:1:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.over,0,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:OVER:1:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,0,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:OVER:1:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,0,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:1:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,0,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:1:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,0,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:1:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,0,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-MAP-01:OVER:2:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,1,1)NAME") - field(VAL, "Overlay 2") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:2:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,1,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-MAP-01:OVER:2:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,1,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:OVER:2:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,1,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-MAP-01:OVER:2:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:2:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,1,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:2:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,1,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:2:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,1,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:2:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,1,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:2:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,1,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:2:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,1,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:2:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,1,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:2:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,1,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:2:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,1,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:2:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,1,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:2:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,1,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:2:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,1,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:2:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,1,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:2:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,1,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:2:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,1,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:2:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,1,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:2:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,1,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:2:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,1,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:2:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,1,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:2:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,1,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,1,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:2:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,1,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,1,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:2:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,1,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:2:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,1,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:2:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,1,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:OVER:2:MaxSizeX") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:2:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:2:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:2:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:2:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:2:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:2:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:OVER:2:MaxSizeY") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:2:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:2:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:2:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:2:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:2:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:2:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-MAP-01:OVER:2:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.over,1,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:OVER:2:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,1,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:OVER:2:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,1,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:2:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,1,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:2:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,1,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:2:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,1,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-MAP-01:OVER:3:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,2,1)NAME") - field(VAL, "Overlay 3") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:3:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,2,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-MAP-01:OVER:3:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,2,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:OVER:3:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,2,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-MAP-01:OVER:3:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:3:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,2,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:3:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,2,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:3:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,2,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:3:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,2,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:3:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,2,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:3:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,2,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:3:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,2,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:3:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,2,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:3:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,2,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:3:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,2,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:3:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,2,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:3:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,2,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:3:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,2,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:3:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,2,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:3:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,2,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:3:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,2,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:3:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,2,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:3:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,2,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:3:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,2,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:3:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,2,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,2,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:3:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,2,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,2,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:3:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,2,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:3:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,2,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:3:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,2,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:OVER:3:MaxSizeX") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:3:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:3:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:3:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:3:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:3:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:3:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:OVER:3:MaxSizeY") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:3:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:3:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:3:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:3:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:3:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:3:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-MAP-01:OVER:3:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.over,2,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:OVER:3:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,2,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:OVER:3:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,2,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:3:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,2,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:3:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,2,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:3:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,2,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-MAP-01:OVER:4:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,3,1)NAME") - field(VAL, "Overlay 4") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:4:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,3,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-MAP-01:OVER:4:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,3,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:OVER:4:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,3,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-MAP-01:OVER:4:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:4:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,3,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:4:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,3,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:4:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,3,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:4:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,3,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:4:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,3,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:4:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,3,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:4:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,3,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:4:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,3,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:4:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,3,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:4:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,3,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:4:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,3,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:4:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,3,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:4:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,3,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:4:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,3,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:4:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,3,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:4:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,3,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:4:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,3,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:4:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,3,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:4:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,3,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:4:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,3,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,3,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:4:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,3,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,3,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:4:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,3,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:4:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,3,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:4:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,3,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:OVER:4:MaxSizeX") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:4:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:4:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:4:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:4:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:4:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:4:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:OVER:4:MaxSizeY") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:4:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:4:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:4:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:4:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:4:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:4:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-MAP-01:OVER:4:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.over,3,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:OVER:4:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,3,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:OVER:4:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,3,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:4:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,3,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:4:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,3,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:4:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,3,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-MAP-01:OVER:5:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,4,1)NAME") - field(VAL, "Overlay 5") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:5:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,4,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-MAP-01:OVER:5:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,4,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:OVER:5:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,4,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-MAP-01:OVER:5:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:5:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,4,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:5:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,4,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:5:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,4,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:5:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,4,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:5:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,4,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:5:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,4,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:5:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,4,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:5:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,4,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:5:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,4,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:5:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,4,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:5:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,4,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:5:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,4,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:5:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,4,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:5:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,4,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:5:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,4,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:5:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,4,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:5:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,4,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:5:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,4,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:5:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,4,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:5:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,4,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,4,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:5:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,4,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,4,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:5:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,4,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:5:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,4,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:5:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,4,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:OVER:5:MaxSizeX") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:5:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:5:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:5:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:5:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:5:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:5:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:OVER:5:MaxSizeY") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:5:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:5:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:5:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:5:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:5:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:5:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-MAP-01:OVER:5:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.over,4,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:OVER:5:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,4,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:OVER:5:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,4,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:5:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,4,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:5:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,4,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:5:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,4,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-MAP-01:OVER:6:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,5,1)NAME") - field(VAL, "Overlay 6") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:6:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,5,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-MAP-01:OVER:6:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,5,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:OVER:6:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,5,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-MAP-01:OVER:6:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:6:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,5,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:6:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,5,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:6:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,5,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:6:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,5,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:6:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,5,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:6:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,5,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:6:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,5,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:6:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,5,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:6:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,5,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:6:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,5,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:6:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,5,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:6:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,5,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:6:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,5,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:6:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,5,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:6:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,5,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:6:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,5,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:6:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,5,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:6:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,5,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:6:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,5,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:6:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,5,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,5,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:6:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,5,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,5,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:6:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,5,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:6:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,5,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:6:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,5,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:OVER:6:MaxSizeX") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:6:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:6:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:6:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:6:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:6:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:6:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:OVER:6:MaxSizeY") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:6:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:6:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:6:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:6:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:6:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:6:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-MAP-01:OVER:6:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.over,5,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:OVER:6:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,5,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:OVER:6:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,5,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:6:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,5,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:6:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,5,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:6:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,5,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-MAP-01:OVER:7:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,6,1)NAME") - field(VAL, "Overlay 7") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:7:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,6,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-MAP-01:OVER:7:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,6,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:OVER:7:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,6,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-MAP-01:OVER:7:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:7:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,6,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:7:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,6,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:7:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,6,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:7:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,6,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:7:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,6,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:7:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,6,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:7:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,6,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:7:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,6,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:7:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,6,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:7:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,6,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:7:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,6,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:7:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,6,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:7:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,6,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:7:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,6,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:7:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,6,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:7:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,6,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:7:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,6,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:7:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,6,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:7:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,6,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:7:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,6,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,6,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:7:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,6,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,6,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:7:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,6,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:7:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,6,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:7:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,6,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:OVER:7:MaxSizeX") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:7:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:7:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:7:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:7:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:7:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:7:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:OVER:7:MaxSizeY") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:7:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:7:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:7:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:7:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:7:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:7:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-MAP-01:OVER:7:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.over,6,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:OVER:7:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,6,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:OVER:7:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,6,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:7:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,6,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:7:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,6,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:7:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,6,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-MAP-01:OVER:8:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,7,1)NAME") - field(VAL, "Overlay 8") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:8:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,7,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-MAP-01:OVER:8:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,7,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:OVER:8:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,7,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-MAP-01:OVER:8:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:8:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,7,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:8:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,7,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:8:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,7,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:8:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,7,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:8:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,7,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:8:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,7,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:8:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,7,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:8:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,7,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:8:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,7,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:8:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,7,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:8:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,7,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:8:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,7,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:8:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,7,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:8:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,7,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-MAP-01:OVER:8:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,7,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:8:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,7,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:8:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,7,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:8:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,7,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:8:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,7,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:8:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,7,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,7,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:8:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,7,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,7,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:8:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,7,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:OVER:8:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,7,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:OVER:8:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,7,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-MAP-01:OVER:8:MaxSizeX") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:8:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:8:SetXHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:8:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:8:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:8:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:8:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-MAP-01:OVER:8:MaxSizeY") -{ - field(INP, "BL45P-EA-MAP-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-MAP-01:OVER:8:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-MAP-01:OVER:8:SetYHOPR") -{ - field(DOL, "BL45P-EA-MAP-01:OVER:8:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-MAP-01:OVER:8:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-MAP-01:OVER:8:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-MAP-01:OVER:8:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-MAP-01:OVER:8:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.over,7,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:OVER:8:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,7,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:OVER:8:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.over,7,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:OVER:8:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.over,7,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:OVER:8:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.over,7,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:OVER:8:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.over,7,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-DIFF-01:OVER:1:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,0,1)NAME") - field(VAL, "Overlay 1") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:1:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,0,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-DIFF-01:OVER:1:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:OVER:1:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:OVER:1:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:1:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:1:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:1:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:1:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:1:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:1:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:1:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:1:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:1:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:1:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:1:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:1:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:1:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:1:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:1:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:1:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:1:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:1:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:1:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:1:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:1:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:1:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:1:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:1:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:OVER:1:MaxSizeX") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:1:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:1:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:1:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:1:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:1:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:1:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:1:MaxSizeY") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:1:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:1:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:1:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:1:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:1:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:1:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:OVER:1:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:OVER:1:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:OVER:1:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,0,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:1:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:1:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,0,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:1:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,0,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-DIFF-01:OVER:2:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,1,1)NAME") - field(VAL, "Overlay 2") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:2:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,1,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-DIFF-01:OVER:2:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,1,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:OVER:2:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,1,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:OVER:2:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:2:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,1,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:2:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:2:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,1,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:2:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:2:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,1,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:2:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:2:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,1,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:2:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:2:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,1,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:2:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:2:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,1,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:2:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:2:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,1,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:2:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:2:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,1,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:2:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:2:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,1,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:2:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:2:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,1,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:2:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,1,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:2:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,1,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:2:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:2:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,1,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:2:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:OVER:2:MaxSizeX") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:2:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:2:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:2:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:2:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:2:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:2:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:2:MaxSizeY") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:2:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:2:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:2:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:2:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:2:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:2:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:OVER:2:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:OVER:2:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:OVER:2:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,1,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:2:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:2:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,1,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:2:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,1,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-DIFF-01:OVER:3:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,2,1)NAME") - field(VAL, "Overlay 3") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:3:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,2,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-DIFF-01:OVER:3:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,2,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:OVER:3:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,2,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:OVER:3:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:3:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,2,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:3:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:3:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,2,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:3:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:3:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,2,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:3:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:3:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,2,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:3:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:3:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,2,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:3:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:3:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,2,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:3:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:3:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,2,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:3:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:3:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,2,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:3:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:3:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,2,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:3:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:3:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,2,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:3:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,2,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:3:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,2,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:3:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:3:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,2,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:3:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:OVER:3:MaxSizeX") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:3:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:3:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:3:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:3:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:3:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:3:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:3:MaxSizeY") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:3:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:3:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:3:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:3:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:3:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:3:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:OVER:3:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:OVER:3:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:OVER:3:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,2,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:3:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:3:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,2,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:3:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,2,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-DIFF-01:OVER:4:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,3,1)NAME") - field(VAL, "Overlay 4") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:4:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,3,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-DIFF-01:OVER:4:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,3,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:OVER:4:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,3,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:OVER:4:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:4:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,3,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:4:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:4:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,3,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:4:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:4:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,3,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:4:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:4:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,3,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:4:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:4:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,3,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:4:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:4:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,3,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:4:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:4:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,3,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:4:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:4:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,3,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:4:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:4:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,3,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:4:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:4:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,3,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:4:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,3,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:4:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,3,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:4:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:4:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,3,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:4:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:OVER:4:MaxSizeX") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:4:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:4:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:4:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:4:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:4:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:4:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:4:MaxSizeY") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:4:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:4:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:4:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:4:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:4:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:4:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:OVER:4:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:OVER:4:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:OVER:4:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,3,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:4:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:4:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,3,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:4:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,3,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-DIFF-01:OVER:5:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,4,1)NAME") - field(VAL, "Overlay 5") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:5:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,4,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-DIFF-01:OVER:5:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,4,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:OVER:5:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,4,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:OVER:5:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:5:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,4,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:5:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:5:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,4,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:5:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:5:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,4,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:5:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:5:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,4,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:5:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:5:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,4,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:5:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:5:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,4,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:5:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:5:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,4,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:5:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:5:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,4,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:5:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:5:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,4,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:5:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:5:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,4,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:5:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,4,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:5:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,4,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:5:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:5:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,4,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:5:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:OVER:5:MaxSizeX") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:5:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:5:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:5:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:5:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:5:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:5:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:5:MaxSizeY") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:5:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:5:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:5:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:5:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:5:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:5:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:OVER:5:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:OVER:5:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:OVER:5:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,4,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:5:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:5:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,4,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:5:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,4,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-DIFF-01:OVER:6:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,5,1)NAME") - field(VAL, "Overlay 6") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:6:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,5,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-DIFF-01:OVER:6:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,5,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:OVER:6:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,5,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:OVER:6:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:6:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,5,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:6:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:6:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,5,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:6:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:6:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,5,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:6:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:6:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,5,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:6:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:6:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,5,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:6:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:6:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,5,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:6:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:6:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,5,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:6:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:6:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,5,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:6:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:6:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,5,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:6:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:6:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,5,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:6:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,5,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:6:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,5,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:6:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:6:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,5,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:6:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:OVER:6:MaxSizeX") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:6:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:6:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:6:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:6:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:6:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:6:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:6:MaxSizeY") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:6:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:6:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:6:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:6:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:6:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:6:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:OVER:6:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:OVER:6:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:OVER:6:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,5,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:6:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:6:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,5,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:6:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,5,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-DIFF-01:OVER:7:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,6,1)NAME") - field(VAL, "Overlay 7") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:7:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,6,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-DIFF-01:OVER:7:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,6,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:OVER:7:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,6,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:OVER:7:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:7:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,6,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:7:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:7:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,6,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:7:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:7:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,6,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:7:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:7:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,6,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:7:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:7:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,6,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:7:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:7:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,6,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:7:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:7:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,6,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:7:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:7:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,6,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:7:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:7:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,6,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:7:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:7:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,6,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:7:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,6,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:7:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,6,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:7:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:7:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,6,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:7:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:OVER:7:MaxSizeX") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:7:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:7:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:7:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:7:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:7:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:7:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:7:MaxSizeY") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:7:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:7:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:7:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:7:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:7:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:7:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:OVER:7:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:OVER:7:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:OVER:7:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,6,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:7:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:7:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,6,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:7:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,6,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDOverlayN.template -# Database for NDOverlays -# Mark Rivers -# March 22, 2010 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, O, NDOverlay Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NAME, Name for the overlay -# % macro, XPOS, Link for the XPos of the overlay -# % macro, YPOS, Link for the YPos of the overlay -# % macro, XCENT, Link for the XCent of the overlay -# % macro, YCENT, Link for the YCent of the overlay -# % macro, XSIZE, Link for the XSize of the overlay -# % macro, YSIZE, Link for the YSize of the overlay -# % macro, XWIDTH, Link for the XWidth of the overlay -# % macro, YWIDTH, Link for the YWdith of the overlay -# % macro, SHAPE, Shape of the overlay - -################################################################### -# These records control the label for the overlay # -################################################################### -record(stringout, "BL45P-EA-DIFF-01:OVER:8:Name") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,7,1)NAME") - field(VAL, "Overlay 8") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:8:Name_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,7,1)NAME") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control whether this overlay is used # -################################################################### -record(bo, "BL45P-EA-DIFF-01:OVER:8:Use") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,7,1)USE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:OVER:8:Use_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,7,1)USE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the overlay definition # -################################################################### - -record(longout, "BL45P-EA-DIFF-01:OVER:8:PositionXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:8:PositionX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:PositionX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,7,1)OVERLAY_POSITION_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:8:PositionX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_POSITION_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:PositionYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:8:PositionY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:PositionY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,7,1)OVERLAY_POSITION_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:8:PositionY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_POSITION_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:CenterXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:8:CenterX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:CenterX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,7,1)OVERLAY_CENTER_X") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:8:CenterX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_CENTER_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:CenterYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:8:CenterY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:CenterY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,7,1)OVERLAY_CENTER_Y") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:8:CenterY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_CENTER_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:SizeXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:8:SizeX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,7,1)OVERLAY_SIZE_X") - field(LOPR, "1") - field(HOPR, "1024") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:8:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:SizeYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:8:SizeY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,7,1)OVERLAY_SIZE_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:8:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:WidthXLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:8:WidthX PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:WidthX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,7,1)OVERLAY_WIDTH_X") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:8:WidthX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_WIDTH_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:WidthYLink") -{ - field(DOL, " CP MS") - field(OMSL, "closed_loop") - field(OUT, "BL45P-EA-DIFF-01:OVER:8:WidthY PP") - info(autosaveFields, "DOL") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:WidthY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,7,1)OVERLAY_WIDTH_Y") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:8:WidthY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_WIDTH_Y") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:8:Shape") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,7,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:8:Shape_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_SHAPE") - field(ZRST, "Cross") - field(ZRVL, "0") - field(ONST, "Rectangle") - field(ONVL, "1") - field(TWST, "Ellipse") - field(TWVL, "3") - field(THST, "Text") - field(THVL, "2") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:8:DrawMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,7,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:8:DrawMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_DRAW_MODE") - field(ZRST, "Set") - field(ZRVL, "0") - field(ONST, "XOR") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:Red") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,7,1)OVERLAY_RED") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:8:Red_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_RED") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:Green") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,7,1)OVERLAY_GREEN") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:8:Green_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_GREEN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:OVER:8:Blue") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,7,1)OVERLAY_BLUE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:8:Blue_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_BLUE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records set the HOPR and LOPR values for the position # -# and size to the maximum for the input array # -################################################################### - -record(longin, "BL45P-EA-DIFF-01:OVER:8:MaxSizeX") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeX_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:8:SetXHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:8:SetXHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:8:MaxSizeX NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:8:PositionX.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:8:CenterX.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:8:SizeX.HOPR NPP") -} - -record(longin, "BL45P-EA-DIFF-01:OVER:8:MaxSizeY") -{ - field(INP, "BL45P-EA-DIFF-01:OVER:MaxSizeY_RBV CP") - field(FLNK, "BL45P-EA-DIFF-01:OVER:8:SetYHOPR.PROC PP") -} - -record(dfanout, "BL45P-EA-DIFF-01:OVER:8:SetYHOPR") -{ - field(DOL, "BL45P-EA-DIFF-01:OVER:8:MaxSizeY NPP") - field(OMSL, "closed_loop") - field(OUTA, "BL45P-EA-DIFF-01:OVER:8:PositionY.HOPR NPP") - field(OUTB, "BL45P-EA-DIFF-01:OVER:8:CenterY.HOPR NPP") - field(OUTC, "BL45P-EA-DIFF-01:OVER:8:SizeY.HOPR NPP") -} - -################################################################### -# Text overlay (Keith Brister 2014-06-26) -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:OVER:8:DisplayText") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:OVER:8:DisplayText_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_DISPLAY_TEXT") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:OVER:8:TimeStampFormat") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.over,7,1)OVERLAY_TIMESTAMP_FORMAT") - field(VAL, "%Y-%m-%d %H:%M:%S.%03f") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:OVER:8:TimeStampFormat_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_TIMESTAMP_FORMAT") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:OVER:8:Font") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.over,7,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:OVER:8:Font_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.over,7,1)OVERLAY_FONT") - field(ZRST, "6x13") - field(ZRVL, "0") - field(ONST, "6x13 Bold") - field(ONVL, "1") - field(TWST, "9x15") - field(TWVL, "2") - field(THST, "9x15 Bold") - field(THVL, "3") - field(SCAN, "I/O Intr") -} -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % gui, DET.fimg, edmtab, ffmpegFile.edl, P=BL45P-EA-MAP-01,R=:FIMG: - -# # \file -# # ffmpegFile wraps the ffmpeg compression libraries in an areaDetector plugin. -# # It works in much the same way as the other NDFile plugins. By default, it -# # will try to guess the file format from the file extension, but you can force -# # it to a particular file format with the FileFormat record. -# # \section ffmpegStream_setup Setup -# # - In the database, an instance of NDPluginBase is required, followed by an -# # instance of NDFile, then an instance of this template. -# # - In the startup scripts, call ffmpegFileConfigure() once per ffmpegStream -# # instance to setup the areadetector plugin -# # - see \ref build_instructions -# # \section ffmpegStream_screenshots Screenshots -# # \htmlinclude flashvideo.html -# # \image html ffmpegFileEdm.png "Edm screen for ffmpegFile" - -# This associates a BOY screen with the template -# % gui, DET.fimg, boydetail,ffmpegServerApp_opi/fimg_detail.opi, P=BL45P-EA-MAP-01, R=:FIMG:, DESC=MPEG File -# % gui, DET.fimg, boyembed, ffmpegServerApp_opi/fimg_embed_box.opi, P=BL45P-EA-MAP-01, R=:FIMG:, DESC=MPEG File -# % gui, DET.fimg, boyembed, ffmpegServerApp_opi/fimg_embed.opi, P=BL45P-EA-MAP-01, R=:FIMG:, DESC=MPEG File - -# Info -# % gui, DET.fimg, groupHeading, Info -# % gui, DET.fimg, readback, Port name, BL45P-EA-MAP-01:FIMG:PortName_RBV -# % gui, DET.fimg, readback, Plugin type, BL45P-EA-MAP-01:FIMG:PluginType_RBV -# Input -# % gui, DET.fimg, demandString, Input, BL45P-EA-MAP-01:FIMG:NDArrayPort -# % gui, DET.fimg, readback, Input, BL45P-EA-MAP-01:FIMG:NDArrayPort_RBV - -# % gui, DET.fimg, groupHeading, Callback -# % gui, DET.fimg, enum, Callbacks, BL45P-EA-MAP-01:FIMG:EnableCallbacks -# % gui, DET.fimg, statusbits, Callbacks, BL45P-EA-MAP-01:FIMG:EnableCallbacks_RBV -# % gui, DET.fimg, demand, Min Callback Time, BL45P-EA-MAP-01:FIMG:MinCallbackTime -# % gui, DET.fimg, readback, Min Callback Time, BL45P-EA-MAP-01:FIMG:MinCallbackTime_RBV -# % gui, DET.fimg, enum, Block Callbacks, BL45P-EA-MAP-01:FIMG:BlockingCallbacks -# % gui, DET.fimg, statusbits, Block Callbacks, BL45P-EA-MAP-01:FIMG:BlockingCallbacks_RBV - -# % gui, DET.fimg, groupHeading, Counters -# % gui, DET.fimg, demand, Array Counter, BL45P-EA-MAP-01:FIMG:ArrayCounter -# % gui, DET.fimg, readback, Array Counter, BL45P-EA-MAP-01:FIMG:ArrayCounter_RBV -# % gui, DET.fimg, readback, Array Rate (fps), BL45P-EA-MAP-01:FIMG:ArrayRate_RBV -# % gui, DET.fimg, readback, Queue Use, BL45P-EA-MAP-01:FIMG:QueueUse -# % gui, DET.fimg, readback, Queue Size, BL45P-EA-MAP-01:FIMG:QueueSize -# % gui, DET.fimg, demand, Dropped Arrays, BL45P-EA-MAP-01:FIMG:DroppedArrays -# % gui, DET.fimg, readback, Dropped Arrays, BL45P-EA-MAP-01:FIMG:DroppedArrays_RBV - -# % gui, DET.fimg, groupHeading, Array Settings -# % gui, DET.fimg, readback, Num Dimensions, BL45P-EA-MAP-01:FIMG:NDimensions_RBV -# % gui, DET.fimg, readback, Dim 0 Size, BL45P-EA-MAP-01:FIMG:ArraySize0_RBV -# % gui, DET.fimg, readback, Dim 1 Size, BL45P-EA-MAP-01:FIMG:ArraySize1_RBV -# % gui, DET.fimg, readback, Dim 2 Size, BL45P-EA-MAP-01:FIMG:ArraySize2_RBV -# % gui, DET.fimg, readback, Input Data Type, BL45P-EA-MAP-01:FIMG:DataType_RBV -# % gui, DET.fimg, readback, Colour Mode, BL45P-EA-MAP-01:FIMG:ColorMode_RBV -# % gui, DET.fimg, readback, Bayer Pattern, BL45P-EA-MAP-01:FIMG:BayerPattern_RBV -# % gui, DET.fimg, readback, Unique id, BL45P-EA-MAP-01:FIMG:UniqueId_RBV -# % gui, DET.fimg, readback, Timestamp, BL45P-EA-MAP-01:FIMG:TimeStamp_RBV - -# File -# % gui, DET.fimg, groupHeading, File -# % gui, DET.fimg, demandString, File Path, BL45P-EA-MAP-01:FIMG:FilePath -# % gui, DET.fimg, readback, File Path, BL45P-EA-MAP-01:FIMG:FilePath_RBV -# % gui, DET.fimg, statusbits, File Path Exists, BL45P-EA-MAP-01:FIMG:FilePathExists_RBV -# % gui, DET.fimg, demand, File Name, BL45P-EA-MAP-01:FIMG:FileName -# % gui, DET.fimg, readback, File Name, BL45P-EA-MAP-01:FIMG:FileName_RBV -# % gui, DET.fimg, demand, File Number, BL45P-EA-MAP-01:FIMG:FileNumber -# % gui, DET.fimg, readback, File Number, BL45P-EA-MAP-01:FIMG:FileNumber_RBV -# % gui, DET.fimg, enum, Auto Increment, BL45P-EA-MAP-01:FIMG:AutoIncrement -# % gui, DET.fimg, statusbits, Auto Increment, BL45P-EA-MAP-01:FIMG:AutoIncrement_RBV -# % gui, DET.fimg, demand, File Format, BL45P-EA-MAP-01:FIMG:FileTemplate -# % gui, DET.fimg, readback, File Format, BL45P-EA-MAP-01:FIMG:FileTemplate_RBV -# % gui, DET.fimg, demand, N to Capture, BL45P-EA-MAP-01:FIMG:NumCapture -# % gui, DET.fimg, readback, N to Capture, BL45P-EA-MAP-01:FIMG:NumCapture_RBV -# % gui, DET.fimg, readback, N Captured, BL45P-EA-MAP-01:FIMG:NumCaptured_RBV -# % gui, DET.fimg, enum, Auto Save, BL45P-EA-MAP-01:FIMG:AutoSave -# % gui, DET.fimg, statusbits, Auto Save , BL45P-EA-MAP-01:FIMG:AutoSave_RBV -# % gui, DET.fimg, enum, Capture mode, BL45P-EA-MAP-01:FIMG:FileWriteMode -# % gui, DET.fimg, readback, Capture mode, BL45P-EA-MAP-01:FIMG:FileWriteMode_RBV -# % gui, DET.fimg, enum, Capture, BL45P-EA-MAP-01:FIMG:Capture -# % gui, DET.fimg, readback, Capture, BL45P-EA-MAP-01:FIMG:Capture_RBV -# % gui, DET.fimg, readback, Write Message, BL45P-EA-MAP-01:FIMG:WriteMessage -# % gui, DET.fimg, readback, Write Status, BL45P-EA-MAP-01:FIMG:WriteStatus -# % gui, DET.fimg, readback, Write Filename, BL45P-EA-MAP-01:FIMG:FullFileName_RBV -# % gui, DET.fimg, enum, Lazy Open, BL45P-EA-MAP-01:FIMG:LazyOpen -# % gui, DET.fimg, readback, Lazy Open, BL45P-EA-MAP-01:FIMG:LazyOpen_RBV -# % gui, DET.fimg, demand, Temporary Suffix, BL45P-EA-MAP-01:FIMG:TempSuffix -# % gui, DET.fimg, readback, Temporary Suffix, BL45P-EA-MAP-01:FIMG:TempSuffix_RBV -# % gui, DET.fimg, demand, Create Directories, BL45P-EA-MAP-01:FIMG:CreateDirectory -# % gui, DET.fimg, readback, Create Directories, BL45P-EA-MAP-01:FIMG:CreateDirectory_RBV - -# Video -# % gui, DET.fimg, groupHeading, Video Settings -# % gui, DET.fimg, demand, Bit Rate, BL45P-EA-MAP-01:FIMG:BITRATE -# % gui, DET.fimg, readback, Bit Rate, BL45P-EA-MAP-01:FIMG:BITRATE_RBV -# % gui, DET.fimg, demand, Frame Rate, BL45P-EA-MAP-01:FIMG:FPS -# % gui, DET.fimg, readback, Frame Rate, BL45P-EA-MAP-01:FIMG:FPS_RBV -# % gui, DET.fimg, demand, Width, BL45P-EA-MAP-01:FIMG:WIDTH -# % gui, DET.fimg, readback, Width, BL45P-EA-MAP-01:FIMG:WIDTH_RBV -# % gui, DET.fimg, demand, Height, BL45P-EA-MAP-01:FIMG:HEIGHT -# % gui, DET.fimg, readback, Height, BL45P-EA-MAP-01:FIMG:HEIGHT_RBV -# Memory -# % gui, DET.fimg, groupHeading, Memory -# % gui, DET.fimg, readback, Max memory, BL45P-EA-MAP-01:FIMG:PoolMaxMem -# % gui, DET.fimg, readback, Max buffers, BL45P-EA-MAP-01:FIMG:PoolMaxBuffers -# % gui, DET.fimg, readback, Used memory, BL45P-EA-MAP-01:FIMG:PoolUsedMem -# % gui, DET.fimg, readback, Allocated buffers, BL45P-EA-MAP-01:FIMG:PoolAllocBuffers -# % gui, DET.fimg, readback, Free buffers, BL45P-EA-MAP-01:FIMG:PoolFreeBuffers - -#=================================================================# -# Template file: NDFile.template -# Database for NDFile driver, which saves files for NDArray data. -# Mark Rivers -# April 7, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -################################################################### -# These records control file I/O # -################################################################### - -# File path. -record(waveform, "BL45P-EA-MAP-01:FIMG:FilePath") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.fimg,0,1)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:FIMG:FilePath_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-MAP-01:FIMG:FilePathExists_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)FILE_PATH_EXISTS") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:FIMG:CreateDirectory") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)CREATE_DIR") - field(VAL, "0" ) - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:CreateDirectory_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)CREATE_DIR") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -# Filename -record(waveform, "BL45P-EA-MAP-01:FIMG:FileName") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.fimg,0,1)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:FIMG:FileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:FIMG:FileNumber") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)FILE_NUMBER") - field(VAL, "1") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:FileNumber_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)FILE_NUMBER") - field(SCAN, "I/O Intr") -} - -# Autoincrement flag -record(bo, "BL45P-EA-MAP-01:FIMG:AutoIncrement") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)AUTO_INCREMENT") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:FIMG:AutoIncrement_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)AUTO_INCREMENT") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# File template -record(waveform, "BL45P-EA-MAP-01:FIMG:FileTemplate") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.fimg,0,1)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:FIMG:FileTemplate_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Full filename, including path -record(waveform, "BL45P-EA-MAP-01:FIMG:FullFileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)FULL_FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Autosave flag -record(bo, "BL45P-EA-MAP-01:FIMG:AutoSave") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:FIMG:AutoSave_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# Write file -record(busy, "BL45P-EA-MAP-01:FIMG:WriteFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)WRITE_FILE") - field(ZNAM, "Done") - field(ONAM, "Write") -} - -record(bi, "BL45P-EA-MAP-01:FIMG:WriteFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)WRITE_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Writing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -# Read file -record(busy, "BL45P-EA-MAP-01:FIMG:ReadFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)READ_FILE") - field(ZNAM, "Done") - field(ONAM, "Read") -} - -record(bi, "BL45P-EA-MAP-01:FIMG:ReadFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)READ_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Reading") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -# File data format -record(mbbo, "BL45P-EA-MAP-01:FIMG:FileFormat") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)FILE_FORMAT") - field(VAL, "0") - field(ZRST, "Undefined") - field(ZRVL, "0") - field(ONST, "Invalid") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:FIMG:FileFormat_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)FILE_FORMAT") - field(ZRST, "netCDF") - field(ZRVL, "0") - field(ONST, "Undefined") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -# File save mode -record(mbbo, "BL45P-EA-MAP-01:FIMG:FileWriteMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)WRITE_MODE") - field(VAL, "0") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:FIMG:FileWriteMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)WRITE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -# Capture data -record(busy, "BL45P-EA-MAP-01:FIMG:Capture") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)CAPTURE") - field(ZNAM, "Done") - field(ONAM, "Capture") -} - -record(bi, "BL45P-EA-MAP-01:FIMG:Capture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)CAPTURE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Capturing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:FIMG:NumCapture") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)NUM_CAPTURE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:NumCapture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)NUM_CAPTURE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:NumCaptured_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)NUM_CAPTURED") - field(SCAN, "I/O Intr") -} - -# Delete driver file flag -record(bo, "BL45P-EA-MAP-01:FIMG:DeleteDriverFile") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)DELETE_DRIVER_FILE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:FIMG:DeleteDriverFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)DELETE_DRIVER_FILE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-MAP-01:FIMG:WriteStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)WRITE_STATUS") - field(ZNAM, "Write OK") - field(ZSV, "NO_ALARM") - field(ONAM, "Write error") - field(OSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:FIMG:WriteMessage") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)WRITE_MESSAGE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:FIMG:LazyOpen") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)FILE_LAZY_OPEN") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:FIMG:LazyOpen_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)FILE_LAZY_OPEN") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:FIMG:TempSuffix") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.fimg,0,1)FILE_TEMP_SUFFIX") - field(VAL, "") -} - -record(stringin, "BL45P-EA-MAP-01:FIMG:TempSuffix_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)FILE_TEMP_SUFFIX") - field(VAL, "") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:FIMG:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:FIMG:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:FIMG:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:FIMG:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:FIMG:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:FIMG:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:FIMG:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:FIMG:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:FIMG:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:FIMG:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:FIMG:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:FIMG:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:FIMG:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:FIMG:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:FIMG:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:FIMG:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:FIMG:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:FIMG:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:FIMG:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:FIMG:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:FIMG:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:FIMG:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.fimg,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:FIMG:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.fimg,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:FIMG:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:FIMG:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:FIMG:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:FIMG:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:FIMG:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:FIMG:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:FIMG:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:FIMG:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:FIMG:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:FIMG:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:FIMG:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:FIMG:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.fimg,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:FIMG:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:FIMG:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:FIMG:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:FIMG:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:FIMG:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:FIMG:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:FIMG:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:FIMG:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.fimg,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:FIMG:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.fimg,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:FIMG:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:FIMG:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.fimg,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:FIMG:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.fimg,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:FIMG:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:FIMG:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:FIMG:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:FIMG:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:FIMG:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:FIMG:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:FIMG:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:FIMG:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:FIMG:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.fimg,0,1)NDARRAY_PORT") - field(VAL, "DET.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:FIMG:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.fimg,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:FIMG:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:FIMG:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:FIMG:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:FIMG:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.fimg,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:FIMG:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.fimg,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:FIMG:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:FIMG:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:FIMG:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:FIMG:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:FIMG:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:FIMG:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:FIMG:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:FIMG:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.fimg,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:FIMG:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.fimg,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:FIMG:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.fimg,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:FIMG:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:FIMG:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:FIMG:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:FIMG:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:FIMG:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:FIMG:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:FIMG:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:FIMG:QueueSize") - field(OUT, "BL45P-EA-MAP-01:FIMG:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:FIMG:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:FIMG:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:FIMG:QueueSize") - field(OUT, "BL45P-EA-MAP-01:FIMG:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:FIMG:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:FIMG:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:FIMG:QueueSize") - field(OUT, "BL45P-EA-MAP-01:FIMG:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:FIMG:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:FIMG:QueueSize") - field(INPB, "BL45P-EA-MAP-01:FIMG:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:FIMG:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:FIMG:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:FIMG:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:FIMG:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.fimg,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:FIMG:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.fimg,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:FIMG:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:FIMG:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:FIMG:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:FIMG:SortSize") - field(OUT, "BL45P-EA-MAP-01:FIMG:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:FIMG:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:FIMG:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:FIMG:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:FIMG:AsynIO") -{ - field(PORT, "DET.fimg") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# # File data format -record(mbbo, "BL45P-EA-MAP-01:FIMG:FileFormat") -{ - field(ZRST, "Auto") - field(ZRVL, "0") -} - -# # File data format from driver -record(mbbi, "BL45P-EA-MAP-01:FIMG:FileFormat_RBV") -{ - field(ZRST, "Auto") - field(ZRVL, "0") -} - -record(bo, "BL45P-EA-MAP-01:FIMG:AutoSave") -{ - field(VAL, "0") -} - -record(mbbo, "BL45P-EA-MAP-01:FIMG:FileWriteMode") -{ - field(VAL, "2") -} - -record(longout, "BL45P-EA-MAP-01:FIMG:NumCapture") -{ - field(VAL, "-1") -} - -# # FFMPEG Bitrate -record(ao, "BL45P-EA-MAP-01:FIMG:BITRATE") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.fimg 0)FFMPEG_BITRATE") - field(VAL, "10000000") - field(PINI, "YES") -} - -# # FFMPEG Bitrate from driver -record(ai, "BL45P-EA-MAP-01:FIMG:BITRATE_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.fimg 0)FFMPEG_BITRATE") -} - -# # FFMPEG Frames Per Second -record(ao, "BL45P-EA-MAP-01:FIMG:FPS") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg 0)FFMPEG_FPS") - field(VAL, "25") - field(PINI, "YES") -} - -# # FFMPEG Frames Per Second from driver -record(ai, "BL45P-EA-MAP-01:FIMG:FPS_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg 0)FFMPEG_FPS") -} - -# # FFMPEG Width -record(ao, "BL45P-EA-MAP-01:FIMG:WIDTH") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg 0)FFMPEG_WIDTH") - field(VAL, "640") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -# # FFMPEG Width from driver -record(ai, "BL45P-EA-MAP-01:FIMG:WIDTH_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg 0)FFMPEG_WIDTH") -} - -# # FFMPEG Height -record(ao, "BL45P-EA-MAP-01:FIMG:HEIGHT") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.fimg 0)FFMPEG_HEIGHT") - field(VAL, "480") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -# # FFMPEG Height from driver -record(ai, "BL45P-EA-MAP-01:FIMG:HEIGHT_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.fimg 0)FFMPEG_HEIGHT") -} -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % gui, DIFF.fimg, edmtab, ffmpegFile.edl, P=BL45P-EA-DIFF-01,R=:FIMG: - -# # \file -# # ffmpegFile wraps the ffmpeg compression libraries in an areaDetector plugin. -# # It works in much the same way as the other NDFile plugins. By default, it -# # will try to guess the file format from the file extension, but you can force -# # it to a particular file format with the FileFormat record. -# # \section ffmpegStream_setup Setup -# # - In the database, an instance of NDPluginBase is required, followed by an -# # instance of NDFile, then an instance of this template. -# # - In the startup scripts, call ffmpegFileConfigure() once per ffmpegStream -# # instance to setup the areadetector plugin -# # - see \ref build_instructions -# # \section ffmpegStream_screenshots Screenshots -# # \htmlinclude flashvideo.html -# # \image html ffmpegFileEdm.png "Edm screen for ffmpegFile" - -# This associates a BOY screen with the template -# % gui, DIFF.fimg, boydetail,ffmpegServerApp_opi/fimg_detail.opi, P=BL45P-EA-DIFF-01, R=:FIMG:, DESC=MPEG File -# % gui, DIFF.fimg, boyembed, ffmpegServerApp_opi/fimg_embed_box.opi, P=BL45P-EA-DIFF-01, R=:FIMG:, DESC=MPEG File -# % gui, DIFF.fimg, boyembed, ffmpegServerApp_opi/fimg_embed.opi, P=BL45P-EA-DIFF-01, R=:FIMG:, DESC=MPEG File - -# Info -# % gui, DIFF.fimg, groupHeading, Info -# % gui, DIFF.fimg, readback, Port name, BL45P-EA-DIFF-01:FIMG:PortName_RBV -# % gui, DIFF.fimg, readback, Plugin type, BL45P-EA-DIFF-01:FIMG:PluginType_RBV -# Input -# % gui, DIFF.fimg, demandString, Input, BL45P-EA-DIFF-01:FIMG:NDArrayPort -# % gui, DIFF.fimg, readback, Input, BL45P-EA-DIFF-01:FIMG:NDArrayPort_RBV - -# % gui, DIFF.fimg, groupHeading, Callback -# % gui, DIFF.fimg, enum, Callbacks, BL45P-EA-DIFF-01:FIMG:EnableCallbacks -# % gui, DIFF.fimg, statusbits, Callbacks, BL45P-EA-DIFF-01:FIMG:EnableCallbacks_RBV -# % gui, DIFF.fimg, demand, Min Callback Time, BL45P-EA-DIFF-01:FIMG:MinCallbackTime -# % gui, DIFF.fimg, readback, Min Callback Time, BL45P-EA-DIFF-01:FIMG:MinCallbackTime_RBV -# % gui, DIFF.fimg, enum, Block Callbacks, BL45P-EA-DIFF-01:FIMG:BlockingCallbacks -# % gui, DIFF.fimg, statusbits, Block Callbacks, BL45P-EA-DIFF-01:FIMG:BlockingCallbacks_RBV - -# % gui, DIFF.fimg, groupHeading, Counters -# % gui, DIFF.fimg, demand, Array Counter, BL45P-EA-DIFF-01:FIMG:ArrayCounter -# % gui, DIFF.fimg, readback, Array Counter, BL45P-EA-DIFF-01:FIMG:ArrayCounter_RBV -# % gui, DIFF.fimg, readback, Array Rate (fps), BL45P-EA-DIFF-01:FIMG:ArrayRate_RBV -# % gui, DIFF.fimg, readback, Queue Use, BL45P-EA-DIFF-01:FIMG:QueueUse -# % gui, DIFF.fimg, readback, Queue Size, BL45P-EA-DIFF-01:FIMG:QueueSize -# % gui, DIFF.fimg, demand, Dropped Arrays, BL45P-EA-DIFF-01:FIMG:DroppedArrays -# % gui, DIFF.fimg, readback, Dropped Arrays, BL45P-EA-DIFF-01:FIMG:DroppedArrays_RBV - -# % gui, DIFF.fimg, groupHeading, Array Settings -# % gui, DIFF.fimg, readback, Num Dimensions, BL45P-EA-DIFF-01:FIMG:NDimensions_RBV -# % gui, DIFF.fimg, readback, Dim 0 Size, BL45P-EA-DIFF-01:FIMG:ArraySize0_RBV -# % gui, DIFF.fimg, readback, Dim 1 Size, BL45P-EA-DIFF-01:FIMG:ArraySize1_RBV -# % gui, DIFF.fimg, readback, Dim 2 Size, BL45P-EA-DIFF-01:FIMG:ArraySize2_RBV -# % gui, DIFF.fimg, readback, Input Data Type, BL45P-EA-DIFF-01:FIMG:DataType_RBV -# % gui, DIFF.fimg, readback, Colour Mode, BL45P-EA-DIFF-01:FIMG:ColorMode_RBV -# % gui, DIFF.fimg, readback, Bayer Pattern, BL45P-EA-DIFF-01:FIMG:BayerPattern_RBV -# % gui, DIFF.fimg, readback, Unique id, BL45P-EA-DIFF-01:FIMG:UniqueId_RBV -# % gui, DIFF.fimg, readback, Timestamp, BL45P-EA-DIFF-01:FIMG:TimeStamp_RBV - -# File -# % gui, DIFF.fimg, groupHeading, File -# % gui, DIFF.fimg, demandString, File Path, BL45P-EA-DIFF-01:FIMG:FilePath -# % gui, DIFF.fimg, readback, File Path, BL45P-EA-DIFF-01:FIMG:FilePath_RBV -# % gui, DIFF.fimg, statusbits, File Path Exists, BL45P-EA-DIFF-01:FIMG:FilePathExists_RBV -# % gui, DIFF.fimg, demand, File Name, BL45P-EA-DIFF-01:FIMG:FileName -# % gui, DIFF.fimg, readback, File Name, BL45P-EA-DIFF-01:FIMG:FileName_RBV -# % gui, DIFF.fimg, demand, File Number, BL45P-EA-DIFF-01:FIMG:FileNumber -# % gui, DIFF.fimg, readback, File Number, BL45P-EA-DIFF-01:FIMG:FileNumber_RBV -# % gui, DIFF.fimg, enum, Auto Increment, BL45P-EA-DIFF-01:FIMG:AutoIncrement -# % gui, DIFF.fimg, statusbits, Auto Increment, BL45P-EA-DIFF-01:FIMG:AutoIncrement_RBV -# % gui, DIFF.fimg, demand, File Format, BL45P-EA-DIFF-01:FIMG:FileTemplate -# % gui, DIFF.fimg, readback, File Format, BL45P-EA-DIFF-01:FIMG:FileTemplate_RBV -# % gui, DIFF.fimg, demand, N to Capture, BL45P-EA-DIFF-01:FIMG:NumCapture -# % gui, DIFF.fimg, readback, N to Capture, BL45P-EA-DIFF-01:FIMG:NumCapture_RBV -# % gui, DIFF.fimg, readback, N Captured, BL45P-EA-DIFF-01:FIMG:NumCaptured_RBV -# % gui, DIFF.fimg, enum, Auto Save, BL45P-EA-DIFF-01:FIMG:AutoSave -# % gui, DIFF.fimg, statusbits, Auto Save , BL45P-EA-DIFF-01:FIMG:AutoSave_RBV -# % gui, DIFF.fimg, enum, Capture mode, BL45P-EA-DIFF-01:FIMG:FileWriteMode -# % gui, DIFF.fimg, readback, Capture mode, BL45P-EA-DIFF-01:FIMG:FileWriteMode_RBV -# % gui, DIFF.fimg, enum, Capture, BL45P-EA-DIFF-01:FIMG:Capture -# % gui, DIFF.fimg, readback, Capture, BL45P-EA-DIFF-01:FIMG:Capture_RBV -# % gui, DIFF.fimg, readback, Write Message, BL45P-EA-DIFF-01:FIMG:WriteMessage -# % gui, DIFF.fimg, readback, Write Status, BL45P-EA-DIFF-01:FIMG:WriteStatus -# % gui, DIFF.fimg, readback, Write Filename, BL45P-EA-DIFF-01:FIMG:FullFileName_RBV -# % gui, DIFF.fimg, enum, Lazy Open, BL45P-EA-DIFF-01:FIMG:LazyOpen -# % gui, DIFF.fimg, readback, Lazy Open, BL45P-EA-DIFF-01:FIMG:LazyOpen_RBV -# % gui, DIFF.fimg, demand, Temporary Suffix, BL45P-EA-DIFF-01:FIMG:TempSuffix -# % gui, DIFF.fimg, readback, Temporary Suffix, BL45P-EA-DIFF-01:FIMG:TempSuffix_RBV -# % gui, DIFF.fimg, demand, Create Directories, BL45P-EA-DIFF-01:FIMG:CreateDirectory -# % gui, DIFF.fimg, readback, Create Directories, BL45P-EA-DIFF-01:FIMG:CreateDirectory_RBV - -# Video -# % gui, DIFF.fimg, groupHeading, Video Settings -# % gui, DIFF.fimg, demand, Bit Rate, BL45P-EA-DIFF-01:FIMG:BITRATE -# % gui, DIFF.fimg, readback, Bit Rate, BL45P-EA-DIFF-01:FIMG:BITRATE_RBV -# % gui, DIFF.fimg, demand, Frame Rate, BL45P-EA-DIFF-01:FIMG:FPS -# % gui, DIFF.fimg, readback, Frame Rate, BL45P-EA-DIFF-01:FIMG:FPS_RBV -# % gui, DIFF.fimg, demand, Width, BL45P-EA-DIFF-01:FIMG:WIDTH -# % gui, DIFF.fimg, readback, Width, BL45P-EA-DIFF-01:FIMG:WIDTH_RBV -# % gui, DIFF.fimg, demand, Height, BL45P-EA-DIFF-01:FIMG:HEIGHT -# % gui, DIFF.fimg, readback, Height, BL45P-EA-DIFF-01:FIMG:HEIGHT_RBV -# Memory -# % gui, DIFF.fimg, groupHeading, Memory -# % gui, DIFF.fimg, readback, Max memory, BL45P-EA-DIFF-01:FIMG:PoolMaxMem -# % gui, DIFF.fimg, readback, Max buffers, BL45P-EA-DIFF-01:FIMG:PoolMaxBuffers -# % gui, DIFF.fimg, readback, Used memory, BL45P-EA-DIFF-01:FIMG:PoolUsedMem -# % gui, DIFF.fimg, readback, Allocated buffers, BL45P-EA-DIFF-01:FIMG:PoolAllocBuffers -# % gui, DIFF.fimg, readback, Free buffers, BL45P-EA-DIFF-01:FIMG:PoolFreeBuffers - -#=================================================================# -# Template file: NDFile.template -# Database for NDFile driver, which saves files for NDArray data. -# Mark Rivers -# April 7, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -################################################################### -# These records control file I/O # -################################################################### - -# File path. -record(waveform, "BL45P-EA-DIFF-01:FIMG:FilePath") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.fimg,0,1)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:FIMG:FilePath_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-DIFF-01:FIMG:FilePathExists_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)FILE_PATH_EXISTS") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:FIMG:CreateDirectory") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)CREATE_DIR") - field(VAL, "0" ) - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:CreateDirectory_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)CREATE_DIR") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -# Filename -record(waveform, "BL45P-EA-DIFF-01:FIMG:FileName") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.fimg,0,1)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:FIMG:FileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:FIMG:FileNumber") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)FILE_NUMBER") - field(VAL, "1") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:FileNumber_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)FILE_NUMBER") - field(SCAN, "I/O Intr") -} - -# Autoincrement flag -record(bo, "BL45P-EA-DIFF-01:FIMG:AutoIncrement") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)AUTO_INCREMENT") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:FIMG:AutoIncrement_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)AUTO_INCREMENT") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# File template -record(waveform, "BL45P-EA-DIFF-01:FIMG:FileTemplate") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.fimg,0,1)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:FIMG:FileTemplate_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Full filename, including path -record(waveform, "BL45P-EA-DIFF-01:FIMG:FullFileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)FULL_FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Autosave flag -record(bo, "BL45P-EA-DIFF-01:FIMG:AutoSave") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:FIMG:AutoSave_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# Write file -record(busy, "BL45P-EA-DIFF-01:FIMG:WriteFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)WRITE_FILE") - field(ZNAM, "Done") - field(ONAM, "Write") -} - -record(bi, "BL45P-EA-DIFF-01:FIMG:WriteFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)WRITE_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Writing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -# Read file -record(busy, "BL45P-EA-DIFF-01:FIMG:ReadFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)READ_FILE") - field(ZNAM, "Done") - field(ONAM, "Read") -} - -record(bi, "BL45P-EA-DIFF-01:FIMG:ReadFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)READ_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Reading") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -# File data format -record(mbbo, "BL45P-EA-DIFF-01:FIMG:FileFormat") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)FILE_FORMAT") - field(VAL, "0") - field(ZRST, "Undefined") - field(ZRVL, "0") - field(ONST, "Invalid") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:FIMG:FileFormat_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)FILE_FORMAT") - field(ZRST, "netCDF") - field(ZRVL, "0") - field(ONST, "Undefined") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -# File save mode -record(mbbo, "BL45P-EA-DIFF-01:FIMG:FileWriteMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)WRITE_MODE") - field(VAL, "0") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:FIMG:FileWriteMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)WRITE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -# Capture data -record(busy, "BL45P-EA-DIFF-01:FIMG:Capture") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)CAPTURE") - field(ZNAM, "Done") - field(ONAM, "Capture") -} - -record(bi, "BL45P-EA-DIFF-01:FIMG:Capture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)CAPTURE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Capturing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:FIMG:NumCapture") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)NUM_CAPTURE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:NumCapture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)NUM_CAPTURE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:NumCaptured_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)NUM_CAPTURED") - field(SCAN, "I/O Intr") -} - -# Delete driver file flag -record(bo, "BL45P-EA-DIFF-01:FIMG:DeleteDriverFile") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)DELETE_DRIVER_FILE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:FIMG:DeleteDriverFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)DELETE_DRIVER_FILE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-DIFF-01:FIMG:WriteStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)WRITE_STATUS") - field(ZNAM, "Write OK") - field(ZSV, "NO_ALARM") - field(ONAM, "Write error") - field(OSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:FIMG:WriteMessage") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)WRITE_MESSAGE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:FIMG:LazyOpen") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)FILE_LAZY_OPEN") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:FIMG:LazyOpen_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)FILE_LAZY_OPEN") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:FIMG:TempSuffix") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.fimg,0,1)FILE_TEMP_SUFFIX") - field(VAL, "") -} - -record(stringin, "BL45P-EA-DIFF-01:FIMG:TempSuffix_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)FILE_TEMP_SUFFIX") - field(VAL, "") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:FIMG:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:FIMG:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:FIMG:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:FIMG:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:FIMG:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:FIMG:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:FIMG:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:FIMG:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:FIMG:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:FIMG:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:FIMG:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:FIMG:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:FIMG:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:FIMG:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:FIMG:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:FIMG:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:FIMG:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:FIMG:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:FIMG:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:FIMG:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:FIMG:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.fimg,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:FIMG:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.fimg,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:FIMG:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:FIMG:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:FIMG:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:FIMG:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:FIMG:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:FIMG:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:FIMG:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:FIMG:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:FIMG:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:FIMG:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.fimg,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:FIMG:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:FIMG:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:FIMG:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:FIMG:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:FIMG:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:FIMG:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:FIMG:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:FIMG:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.fimg,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:FIMG:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.fimg,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:FIMG:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:FIMG:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.fimg,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:FIMG:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.fimg,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:FIMG:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:FIMG:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:FIMG:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:FIMG:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:FIMG:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:FIMG:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.fimg,0,1)NDARRAY_PORT") - field(VAL, "DIFF.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:FIMG:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.fimg,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:FIMG:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:FIMG:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:FIMG:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:FIMG:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.fimg,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:FIMG:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.fimg,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:FIMG:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:FIMG:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:FIMG:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:FIMG:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:FIMG:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:FIMG:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:FIMG:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:FIMG:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.fimg,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:FIMG:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.fimg,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:FIMG:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.fimg,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:FIMG:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:FIMG:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:FIMG:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:FIMG:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:FIMG:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:FIMG:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:FIMG:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:FIMG:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:FIMG:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:FIMG:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:FIMG:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:FIMG:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:FIMG:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:FIMG:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:FIMG:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:FIMG:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:FIMG:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:FIMG:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:FIMG:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:FIMG:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:FIMG:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.fimg,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:FIMG:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.fimg,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:FIMG:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:FIMG:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:FIMG:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:FIMG:SortSize") - field(OUT, "BL45P-EA-DIFF-01:FIMG:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:FIMG:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:FIMG:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:FIMG:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:FIMG:AsynIO") -{ - field(PORT, "DIFF.fimg") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# # File data format -record(mbbo, "BL45P-EA-DIFF-01:FIMG:FileFormat") -{ - field(ZRST, "Auto") - field(ZRVL, "0") -} - -# # File data format from driver -record(mbbi, "BL45P-EA-DIFF-01:FIMG:FileFormat_RBV") -{ - field(ZRST, "Auto") - field(ZRVL, "0") -} - -record(bo, "BL45P-EA-DIFF-01:FIMG:AutoSave") -{ - field(VAL, "0") -} - -record(mbbo, "BL45P-EA-DIFF-01:FIMG:FileWriteMode") -{ - field(VAL, "2") -} - -record(longout, "BL45P-EA-DIFF-01:FIMG:NumCapture") -{ - field(VAL, "-1") -} - -# # FFMPEG Bitrate -record(ao, "BL45P-EA-DIFF-01:FIMG:BITRATE") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.fimg 0)FFMPEG_BITRATE") - field(VAL, "10000000") - field(PINI, "YES") -} - -# # FFMPEG Bitrate from driver -record(ai, "BL45P-EA-DIFF-01:FIMG:BITRATE_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.fimg 0)FFMPEG_BITRATE") -} - -# # FFMPEG Frames Per Second -record(ao, "BL45P-EA-DIFF-01:FIMG:FPS") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg 0)FFMPEG_FPS") - field(VAL, "25") - field(PINI, "YES") -} - -# # FFMPEG Frames Per Second from driver -record(ai, "BL45P-EA-DIFF-01:FIMG:FPS_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg 0)FFMPEG_FPS") -} - -# # FFMPEG Width -record(ao, "BL45P-EA-DIFF-01:FIMG:WIDTH") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg 0)FFMPEG_WIDTH") - field(VAL, "640") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -# # FFMPEG Width from driver -record(ai, "BL45P-EA-DIFF-01:FIMG:WIDTH_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg 0)FFMPEG_WIDTH") -} - -# # FFMPEG Height -record(ao, "BL45P-EA-DIFF-01:FIMG:HEIGHT") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.fimg 0)FFMPEG_HEIGHT") - field(VAL, "480") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -# # FFMPEG Height from driver -record(ai, "BL45P-EA-DIFF-01:FIMG:HEIGHT_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.fimg 0)FFMPEG_HEIGHT") -} -#=================================================================# -# Template file: NDFileTIFF.template -# Database for NDFileTIFF driver, which saves NDArray data -# in the TIFF file format -# Mark Rivers -# May 10, 2009 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name - -# This associates the template with an edm screen -# % gui, DET.tiff, edmtab, NDFileTIFF.edl, P=BL45P-EA-MAP-01,R=:TIFF: - -# This associates a BOY screen with the template -# % gui, DET.tiff, boydetail,ADApp_opi/dls/tiff_detail.opi, P=BL45P-EA-MAP-01, R=:TIFF:, DESC=TIFF File -# % gui, DET.tiff, boyembed, ADApp_opi/dls/tiff_embed_box.opi, P=BL45P-EA-MAP-01, R=:TIFF:, DESC=TIFF File -# % gui, DET.tiff, boyembed, ADApp_opi/dls/tiff_embed.opi, P=BL45P-EA-MAP-01, R=:TIFF:, DESC=TIFF File - -# Info -# % gui, DET.tiff, groupHeading, Info -# % gui, DET.tiff, readback, Port name, BL45P-EA-MAP-01:TIFF:PortName_RBV -# % gui, DET.tiff, readback, Plugin type, BL45P-EA-MAP-01:TIFF:PluginType_RBV -# Input -# % gui, DET.tiff, demandString, Input, BL45P-EA-MAP-01:TIFF:NDArrayPort -# % gui, DET.tiff, readback, Input, BL45P-EA-MAP-01:TIFF:NDArrayPort_RBV - -# % gui, DET.tiff, groupHeading, Callback -# % gui, DET.tiff, enum, Callbacks, BL45P-EA-MAP-01:TIFF:EnableCallbacks -# % gui, DET.tiff, statusbits, Callbacks, BL45P-EA-MAP-01:TIFF:EnableCallbacks_RBV -# % gui, DET.tiff, demand, Min Callback Time, BL45P-EA-MAP-01:TIFF:MinCallbackTime -# % gui, DET.tiff, readback, Min Callback Time, BL45P-EA-MAP-01:TIFF:MinCallbackTime_RBV -# % gui, DET.tiff, enum, Block Callbacks, BL45P-EA-MAP-01:TIFF:BlockingCallbacks -# % gui, DET.tiff, statusbits, Block Callbacks, BL45P-EA-MAP-01:TIFF:BlockingCallbacks_RBV - -# % gui, DET.tiff, groupHeading, Counters -# % gui, DET.tiff, demand, Array Counter, BL45P-EA-MAP-01:TIFF:ArrayCounter -# % gui, DET.tiff, readback, Array Counter, BL45P-EA-MAP-01:TIFF:ArrayCounter_RBV -# % gui, DET.tiff, readback, Array Rate (fps), BL45P-EA-MAP-01:TIFF:ArrayRate_RBV -# % gui, DET.tiff, readback, Queue Use, BL45P-EA-MAP-01:TIFF:QueueUse -# % gui, DET.tiff, readback, Queue Size, BL45P-EA-MAP-01:TIFF:QueueSize -# % gui, DET.tiff, demand, Dropped Arrays, BL45P-EA-MAP-01:TIFF:DroppedArrays -# % gui, DET.tiff, readback, Dropped Arrays, BL45P-EA-MAP-01:TIFF:DroppedArrays_RBV - -# % gui, DET.tiff, groupHeading, Array Settings -# % gui, DET.tiff, readback, Num Dimensions, BL45P-EA-MAP-01:TIFF:NDimensions_RBV -# % gui, DET.tiff, readback, Dim 0 Size, BL45P-EA-MAP-01:TIFF:ArraySize0_RBV -# % gui, DET.tiff, readback, Dim 1 Size, BL45P-EA-MAP-01:TIFF:ArraySize1_RBV -# % gui, DET.tiff, readback, Dim 2 Size, BL45P-EA-MAP-01:TIFF:ArraySize2_RBV -# % gui, DET.tiff, readback, Input Data Type, BL45P-EA-MAP-01:TIFF:DataType_RBV -# % gui, DET.tiff, readback, Colour Mode, BL45P-EA-MAP-01:TIFF:ColorMode_RBV -# % gui, DET.tiff, readback, Bayer Pattern, BL45P-EA-MAP-01:TIFF:BayerPattern_RBV -# % gui, DET.tiff, readback, Unique id, BL45P-EA-MAP-01:TIFF:UniqueId_RBV -# % gui, DET.tiff, readback, Timestamp, BL45P-EA-MAP-01:TIFF:TimeStamp_RBV -# File -# % gui, DET.tiff, groupHeading, File -# % gui, DET.tiff, demandString, File Path, BL45P-EA-MAP-01:TIFF:FilePath -# % gui, DET.tiff, readback, File Path, BL45P-EA-MAP-01:TIFF:FilePath_RBV -# % gui, DET.tiff, statusbits, File Path Exists, BL45P-EA-MAP-01:TIFF:FilePathExists_RBV -# % gui, DET.tiff, demand, File Name, BL45P-EA-MAP-01:TIFF:FileName -# % gui, DET.tiff, readback, File Name, BL45P-EA-MAP-01:TIFF:FileName_RBV -# % gui, DET.tiff, demand, File Number, BL45P-EA-MAP-01:TIFF:FileNumber -# % gui, DET.tiff, readback, File Number, BL45P-EA-MAP-01:TIFF:FileNumber_RBV -# % gui, DET.tiff, enum, Auto Increment, BL45P-EA-MAP-01:TIFF:AutoIncrement -# % gui, DET.tiff, statusbits, Auto Increment, BL45P-EA-MAP-01:TIFF:AutoIncrement_RBV -# % gui, DET.tiff, demand, File Format, BL45P-EA-MAP-01:TIFF:FileTemplate -# % gui, DET.tiff, readback, File Format, BL45P-EA-MAP-01:TIFF:FileTemplate_RBV -# % gui, DET.tiff, demand, N to Capture, BL45P-EA-MAP-01:TIFF:NumCapture -# % gui, DET.tiff, readback, N to Capture, BL45P-EA-MAP-01:TIFF:NumCapture_RBV -# % gui, DET.tiff, readback, N Captured, BL45P-EA-MAP-01:TIFF:NumCaptured_RBV -# % gui, DET.tiff, enum, Auto Save, BL45P-EA-MAP-01:TIFF:AutoSave -# % gui, DET.tiff, statusbits, Auto Save , BL45P-EA-MAP-01:TIFF:AutoSave_RBV -# % gui, DET.tiff, enum, Capture mode, BL45P-EA-MAP-01:TIFF:FileWriteMode -# % gui, DET.tiff, readback, Capture mode, BL45P-EA-MAP-01:TIFF:FileWriteMode_RBV -# % gui, DET.tiff, enum, Capture, BL45P-EA-MAP-01:TIFF:Capture -# % gui, DET.tiff, readback, Capture, BL45P-EA-MAP-01:TIFF:Capture_RBV -# % gui, DET.tiff, readback, Write Message, BL45P-EA-MAP-01:TIFF:WriteMessage -# % gui, DET.tiff, readback, Write Status, BL45P-EA-MAP-01:TIFF:WriteStatus -# % gui, DET.tiff, readback, Write Filename, BL45P-EA-MAP-01:TIFF:FullFileName_RBV -# % gui, DET.tiff, enum, Lazy Open, BL45P-EA-MAP-01:TIFF:LazyOpen -# % gui, DET.tiff, readback, Lazy Open, BL45P-EA-MAP-01:TIFF:LazyOpen_RBV -# % gui, DET.tiff, demand, Temporary Suffix, BL45P-EA-MAP-01:TIFF:TempSuffix -# % gui, DET.tiff, readback, Temporary Suffix, BL45P-EA-MAP-01:TIFF:TempSuffix_RBV -# % gui, DET.tiff, demand, Create Directories, BL45P-EA-MAP-01:TIFF:CreateDirectory -# % gui, DET.tiff, readback, Create Directories, BL45P-EA-MAP-01:TIFF:CreateDirectory_RBV -# Memory -# % gui, DET.tiff, groupHeading, Memory -# % gui, DET.tiff, readback, Max memory, BL45P-EA-MAP-01:TIFF:PoolMaxMem -# % gui, DET.tiff, readback, Max buffers, BL45P-EA-MAP-01:TIFF:PoolMaxBuffers -# % gui, DET.tiff, readback, Used memory, BL45P-EA-MAP-01:TIFF:PoolUsedMem -# % gui, DET.tiff, readback, Allocated buffers, BL45P-EA-MAP-01:TIFF:PoolAllocBuffers -# % gui, DET.tiff, readback, Free buffers, BL45P-EA-MAP-01:TIFF:PoolFreeBuffers -#=================================================================# -# Template file: NDFile.template -# Database for NDFile driver, which saves files for NDArray data. -# Mark Rivers -# April 7, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -################################################################### -# These records control file I/O # -################################################################### - -# File path. -record(waveform, "BL45P-EA-MAP-01:TIFF:FilePath") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.tiff,0,1)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:TIFF:FilePath_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-MAP-01:TIFF:FilePathExists_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)FILE_PATH_EXISTS") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:TIFF:CreateDirectory") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)CREATE_DIR") - field(VAL, "0" ) - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:CreateDirectory_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)CREATE_DIR") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -# Filename -record(waveform, "BL45P-EA-MAP-01:TIFF:FileName") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.tiff,0,1)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:TIFF:FileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:TIFF:FileNumber") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)FILE_NUMBER") - field(VAL, "1") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:FileNumber_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)FILE_NUMBER") - field(SCAN, "I/O Intr") -} - -# Autoincrement flag -record(bo, "BL45P-EA-MAP-01:TIFF:AutoIncrement") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)AUTO_INCREMENT") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:TIFF:AutoIncrement_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)AUTO_INCREMENT") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# File template -record(waveform, "BL45P-EA-MAP-01:TIFF:FileTemplate") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.tiff,0,1)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:TIFF:FileTemplate_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Full filename, including path -record(waveform, "BL45P-EA-MAP-01:TIFF:FullFileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)FULL_FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Autosave flag -record(bo, "BL45P-EA-MAP-01:TIFF:AutoSave") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:TIFF:AutoSave_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# Write file -record(busy, "BL45P-EA-MAP-01:TIFF:WriteFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)WRITE_FILE") - field(ZNAM, "Done") - field(ONAM, "Write") -} - -record(bi, "BL45P-EA-MAP-01:TIFF:WriteFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)WRITE_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Writing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -# Read file -record(busy, "BL45P-EA-MAP-01:TIFF:ReadFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)READ_FILE") - field(ZNAM, "Done") - field(ONAM, "Read") -} - -record(bi, "BL45P-EA-MAP-01:TIFF:ReadFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)READ_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Reading") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -# File data format -record(mbbo, "BL45P-EA-MAP-01:TIFF:FileFormat") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)FILE_FORMAT") - field(VAL, "0") - field(ZRST, "Undefined") - field(ZRVL, "0") - field(ONST, "Invalid") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:TIFF:FileFormat_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)FILE_FORMAT") - field(ZRST, "netCDF") - field(ZRVL, "0") - field(ONST, "Undefined") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -# File save mode -record(mbbo, "BL45P-EA-MAP-01:TIFF:FileWriteMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)WRITE_MODE") - field(VAL, "0") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:TIFF:FileWriteMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)WRITE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -# Capture data -record(busy, "BL45P-EA-MAP-01:TIFF:Capture") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)CAPTURE") - field(ZNAM, "Done") - field(ONAM, "Capture") -} - -record(bi, "BL45P-EA-MAP-01:TIFF:Capture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)CAPTURE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Capturing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:TIFF:NumCapture") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)NUM_CAPTURE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:NumCapture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)NUM_CAPTURE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:NumCaptured_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)NUM_CAPTURED") - field(SCAN, "I/O Intr") -} - -# Delete driver file flag -record(bo, "BL45P-EA-MAP-01:TIFF:DeleteDriverFile") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)DELETE_DRIVER_FILE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:TIFF:DeleteDriverFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)DELETE_DRIVER_FILE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-MAP-01:TIFF:WriteStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)WRITE_STATUS") - field(ZNAM, "Write OK") - field(ZSV, "NO_ALARM") - field(ONAM, "Write error") - field(OSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:TIFF:WriteMessage") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)WRITE_MESSAGE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:TIFF:LazyOpen") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)FILE_LAZY_OPEN") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:TIFF:LazyOpen_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)FILE_LAZY_OPEN") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:TIFF:TempSuffix") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.tiff,0,1)FILE_TEMP_SUFFIX") - field(VAL, "") -} - -record(stringin, "BL45P-EA-MAP-01:TIFF:TempSuffix_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)FILE_TEMP_SUFFIX") - field(VAL, "") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:TIFF:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:TIFF:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:TIFF:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:TIFF:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:TIFF:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:TIFF:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:TIFF:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:TIFF:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:TIFF:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:TIFF:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:TIFF:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:TIFF:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:TIFF:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:TIFF:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:TIFF:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:TIFF:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:TIFF:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:TIFF:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:TIFF:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:TIFF:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:TIFF:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:TIFF:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.tiff,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:TIFF:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.tiff,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:TIFF:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:TIFF:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:TIFF:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:TIFF:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:TIFF:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:TIFF:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:TIFF:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:TIFF:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:TIFF:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:TIFF:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:TIFF:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:TIFF:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.tiff,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:TIFF:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:TIFF:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:TIFF:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:TIFF:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:TIFF:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:TIFF:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:TIFF:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:TIFF:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.tiff,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:TIFF:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.tiff,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:TIFF:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:TIFF:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.tiff,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:TIFF:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.tiff,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:TIFF:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:TIFF:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:TIFF:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:TIFF:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:TIFF:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:TIFF:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:TIFF:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:TIFF:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:TIFF:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.tiff,0,1)NDARRAY_PORT") - field(VAL, "DET.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:TIFF:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.tiff,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:TIFF:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:TIFF:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:TIFF:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:TIFF:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.tiff,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:TIFF:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.tiff,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:TIFF:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:TIFF:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:TIFF:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:TIFF:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:TIFF:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:TIFF:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:TIFF:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:TIFF:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.tiff,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:TIFF:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.tiff,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:TIFF:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.tiff,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:TIFF:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:TIFF:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:TIFF:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:TIFF:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:TIFF:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:TIFF:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:TIFF:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:TIFF:QueueSize") - field(OUT, "BL45P-EA-MAP-01:TIFF:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:TIFF:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:TIFF:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:TIFF:QueueSize") - field(OUT, "BL45P-EA-MAP-01:TIFF:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:TIFF:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:TIFF:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:TIFF:QueueSize") - field(OUT, "BL45P-EA-MAP-01:TIFF:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:TIFF:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:TIFF:QueueSize") - field(INPB, "BL45P-EA-MAP-01:TIFF:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:TIFF:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:TIFF:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:TIFF:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:TIFF:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.tiff,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:TIFF:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.tiff,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:TIFF:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:TIFF:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:TIFF:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:TIFF:SortSize") - field(OUT, "BL45P-EA-MAP-01:TIFF:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:TIFF:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:TIFF:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.tiff,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:TIFF:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.tiff,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:TIFF:AsynIO") -{ - field(PORT, "DET.tiff") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# We replace some fields in records defined in NDFile.template -# File data format -record(mbbo, "BL45P-EA-MAP-01:TIFF:FileFormat") -{ - field(ZRST, "TIFF") - field(ZRVL, "0") - field(ONST, "Invalid") - field(ONVL, "1") -} - -record(mbbi, "BL45P-EA-MAP-01:TIFF:FileFormat_RBV") -{ - field(ZRST, "TIFF") - field(ZRVL, "0") - field(ONST, "Undefined") - field(ONVL, "1") -} - -#=================================================================# -# Template file: NDFileTIFF.template -# Database for NDFileTIFF driver, which saves NDArray data -# in the TIFF file format -# Mark Rivers -# May 10, 2009 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name - -# This associates the template with an edm screen -# % gui, DIFF.tiff, edmtab, NDFileTIFF.edl, P=BL45P-EA-DIFF-01,R=:TIFF: - -# This associates a BOY screen with the template -# % gui, DIFF.tiff, boydetail,ADApp_opi/dls/tiff_detail.opi, P=BL45P-EA-DIFF-01, R=:TIFF:, DESC=TIFF File -# % gui, DIFF.tiff, boyembed, ADApp_opi/dls/tiff_embed_box.opi, P=BL45P-EA-DIFF-01, R=:TIFF:, DESC=TIFF File -# % gui, DIFF.tiff, boyembed, ADApp_opi/dls/tiff_embed.opi, P=BL45P-EA-DIFF-01, R=:TIFF:, DESC=TIFF File - -# Info -# % gui, DIFF.tiff, groupHeading, Info -# % gui, DIFF.tiff, readback, Port name, BL45P-EA-DIFF-01:TIFF:PortName_RBV -# % gui, DIFF.tiff, readback, Plugin type, BL45P-EA-DIFF-01:TIFF:PluginType_RBV -# Input -# % gui, DIFF.tiff, demandString, Input, BL45P-EA-DIFF-01:TIFF:NDArrayPort -# % gui, DIFF.tiff, readback, Input, BL45P-EA-DIFF-01:TIFF:NDArrayPort_RBV - -# % gui, DIFF.tiff, groupHeading, Callback -# % gui, DIFF.tiff, enum, Callbacks, BL45P-EA-DIFF-01:TIFF:EnableCallbacks -# % gui, DIFF.tiff, statusbits, Callbacks, BL45P-EA-DIFF-01:TIFF:EnableCallbacks_RBV -# % gui, DIFF.tiff, demand, Min Callback Time, BL45P-EA-DIFF-01:TIFF:MinCallbackTime -# % gui, DIFF.tiff, readback, Min Callback Time, BL45P-EA-DIFF-01:TIFF:MinCallbackTime_RBV -# % gui, DIFF.tiff, enum, Block Callbacks, BL45P-EA-DIFF-01:TIFF:BlockingCallbacks -# % gui, DIFF.tiff, statusbits, Block Callbacks, BL45P-EA-DIFF-01:TIFF:BlockingCallbacks_RBV - -# % gui, DIFF.tiff, groupHeading, Counters -# % gui, DIFF.tiff, demand, Array Counter, BL45P-EA-DIFF-01:TIFF:ArrayCounter -# % gui, DIFF.tiff, readback, Array Counter, BL45P-EA-DIFF-01:TIFF:ArrayCounter_RBV -# % gui, DIFF.tiff, readback, Array Rate (fps), BL45P-EA-DIFF-01:TIFF:ArrayRate_RBV -# % gui, DIFF.tiff, readback, Queue Use, BL45P-EA-DIFF-01:TIFF:QueueUse -# % gui, DIFF.tiff, readback, Queue Size, BL45P-EA-DIFF-01:TIFF:QueueSize -# % gui, DIFF.tiff, demand, Dropped Arrays, BL45P-EA-DIFF-01:TIFF:DroppedArrays -# % gui, DIFF.tiff, readback, Dropped Arrays, BL45P-EA-DIFF-01:TIFF:DroppedArrays_RBV - -# % gui, DIFF.tiff, groupHeading, Array Settings -# % gui, DIFF.tiff, readback, Num Dimensions, BL45P-EA-DIFF-01:TIFF:NDimensions_RBV -# % gui, DIFF.tiff, readback, Dim 0 Size, BL45P-EA-DIFF-01:TIFF:ArraySize0_RBV -# % gui, DIFF.tiff, readback, Dim 1 Size, BL45P-EA-DIFF-01:TIFF:ArraySize1_RBV -# % gui, DIFF.tiff, readback, Dim 2 Size, BL45P-EA-DIFF-01:TIFF:ArraySize2_RBV -# % gui, DIFF.tiff, readback, Input Data Type, BL45P-EA-DIFF-01:TIFF:DataType_RBV -# % gui, DIFF.tiff, readback, Colour Mode, BL45P-EA-DIFF-01:TIFF:ColorMode_RBV -# % gui, DIFF.tiff, readback, Bayer Pattern, BL45P-EA-DIFF-01:TIFF:BayerPattern_RBV -# % gui, DIFF.tiff, readback, Unique id, BL45P-EA-DIFF-01:TIFF:UniqueId_RBV -# % gui, DIFF.tiff, readback, Timestamp, BL45P-EA-DIFF-01:TIFF:TimeStamp_RBV -# File -# % gui, DIFF.tiff, groupHeading, File -# % gui, DIFF.tiff, demandString, File Path, BL45P-EA-DIFF-01:TIFF:FilePath -# % gui, DIFF.tiff, readback, File Path, BL45P-EA-DIFF-01:TIFF:FilePath_RBV -# % gui, DIFF.tiff, statusbits, File Path Exists, BL45P-EA-DIFF-01:TIFF:FilePathExists_RBV -# % gui, DIFF.tiff, demand, File Name, BL45P-EA-DIFF-01:TIFF:FileName -# % gui, DIFF.tiff, readback, File Name, BL45P-EA-DIFF-01:TIFF:FileName_RBV -# % gui, DIFF.tiff, demand, File Number, BL45P-EA-DIFF-01:TIFF:FileNumber -# % gui, DIFF.tiff, readback, File Number, BL45P-EA-DIFF-01:TIFF:FileNumber_RBV -# % gui, DIFF.tiff, enum, Auto Increment, BL45P-EA-DIFF-01:TIFF:AutoIncrement -# % gui, DIFF.tiff, statusbits, Auto Increment, BL45P-EA-DIFF-01:TIFF:AutoIncrement_RBV -# % gui, DIFF.tiff, demand, File Format, BL45P-EA-DIFF-01:TIFF:FileTemplate -# % gui, DIFF.tiff, readback, File Format, BL45P-EA-DIFF-01:TIFF:FileTemplate_RBV -# % gui, DIFF.tiff, demand, N to Capture, BL45P-EA-DIFF-01:TIFF:NumCapture -# % gui, DIFF.tiff, readback, N to Capture, BL45P-EA-DIFF-01:TIFF:NumCapture_RBV -# % gui, DIFF.tiff, readback, N Captured, BL45P-EA-DIFF-01:TIFF:NumCaptured_RBV -# % gui, DIFF.tiff, enum, Auto Save, BL45P-EA-DIFF-01:TIFF:AutoSave -# % gui, DIFF.tiff, statusbits, Auto Save , BL45P-EA-DIFF-01:TIFF:AutoSave_RBV -# % gui, DIFF.tiff, enum, Capture mode, BL45P-EA-DIFF-01:TIFF:FileWriteMode -# % gui, DIFF.tiff, readback, Capture mode, BL45P-EA-DIFF-01:TIFF:FileWriteMode_RBV -# % gui, DIFF.tiff, enum, Capture, BL45P-EA-DIFF-01:TIFF:Capture -# % gui, DIFF.tiff, readback, Capture, BL45P-EA-DIFF-01:TIFF:Capture_RBV -# % gui, DIFF.tiff, readback, Write Message, BL45P-EA-DIFF-01:TIFF:WriteMessage -# % gui, DIFF.tiff, readback, Write Status, BL45P-EA-DIFF-01:TIFF:WriteStatus -# % gui, DIFF.tiff, readback, Write Filename, BL45P-EA-DIFF-01:TIFF:FullFileName_RBV -# % gui, DIFF.tiff, enum, Lazy Open, BL45P-EA-DIFF-01:TIFF:LazyOpen -# % gui, DIFF.tiff, readback, Lazy Open, BL45P-EA-DIFF-01:TIFF:LazyOpen_RBV -# % gui, DIFF.tiff, demand, Temporary Suffix, BL45P-EA-DIFF-01:TIFF:TempSuffix -# % gui, DIFF.tiff, readback, Temporary Suffix, BL45P-EA-DIFF-01:TIFF:TempSuffix_RBV -# % gui, DIFF.tiff, demand, Create Directories, BL45P-EA-DIFF-01:TIFF:CreateDirectory -# % gui, DIFF.tiff, readback, Create Directories, BL45P-EA-DIFF-01:TIFF:CreateDirectory_RBV -# Memory -# % gui, DIFF.tiff, groupHeading, Memory -# % gui, DIFF.tiff, readback, Max memory, BL45P-EA-DIFF-01:TIFF:PoolMaxMem -# % gui, DIFF.tiff, readback, Max buffers, BL45P-EA-DIFF-01:TIFF:PoolMaxBuffers -# % gui, DIFF.tiff, readback, Used memory, BL45P-EA-DIFF-01:TIFF:PoolUsedMem -# % gui, DIFF.tiff, readback, Allocated buffers, BL45P-EA-DIFF-01:TIFF:PoolAllocBuffers -# % gui, DIFF.tiff, readback, Free buffers, BL45P-EA-DIFF-01:TIFF:PoolFreeBuffers -#=================================================================# -# Template file: NDFile.template -# Database for NDFile driver, which saves files for NDArray data. -# Mark Rivers -# April 7, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -################################################################### -# These records control file I/O # -################################################################### - -# File path. -record(waveform, "BL45P-EA-DIFF-01:TIFF:FilePath") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.tiff,0,1)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:TIFF:FilePath_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-DIFF-01:TIFF:FilePathExists_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)FILE_PATH_EXISTS") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:TIFF:CreateDirectory") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)CREATE_DIR") - field(VAL, "0" ) - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:CreateDirectory_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)CREATE_DIR") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -# Filename -record(waveform, "BL45P-EA-DIFF-01:TIFF:FileName") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.tiff,0,1)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:TIFF:FileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:TIFF:FileNumber") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)FILE_NUMBER") - field(VAL, "1") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:FileNumber_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)FILE_NUMBER") - field(SCAN, "I/O Intr") -} - -# Autoincrement flag -record(bo, "BL45P-EA-DIFF-01:TIFF:AutoIncrement") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)AUTO_INCREMENT") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:TIFF:AutoIncrement_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)AUTO_INCREMENT") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# File template -record(waveform, "BL45P-EA-DIFF-01:TIFF:FileTemplate") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.tiff,0,1)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:TIFF:FileTemplate_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Full filename, including path -record(waveform, "BL45P-EA-DIFF-01:TIFF:FullFileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)FULL_FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Autosave flag -record(bo, "BL45P-EA-DIFF-01:TIFF:AutoSave") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:TIFF:AutoSave_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# Write file -record(busy, "BL45P-EA-DIFF-01:TIFF:WriteFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)WRITE_FILE") - field(ZNAM, "Done") - field(ONAM, "Write") -} - -record(bi, "BL45P-EA-DIFF-01:TIFF:WriteFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)WRITE_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Writing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -# Read file -record(busy, "BL45P-EA-DIFF-01:TIFF:ReadFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)READ_FILE") - field(ZNAM, "Done") - field(ONAM, "Read") -} - -record(bi, "BL45P-EA-DIFF-01:TIFF:ReadFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)READ_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Reading") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -# File data format -record(mbbo, "BL45P-EA-DIFF-01:TIFF:FileFormat") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)FILE_FORMAT") - field(VAL, "0") - field(ZRST, "Undefined") - field(ZRVL, "0") - field(ONST, "Invalid") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:TIFF:FileFormat_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)FILE_FORMAT") - field(ZRST, "netCDF") - field(ZRVL, "0") - field(ONST, "Undefined") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -# File save mode -record(mbbo, "BL45P-EA-DIFF-01:TIFF:FileWriteMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)WRITE_MODE") - field(VAL, "0") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:TIFF:FileWriteMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)WRITE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -# Capture data -record(busy, "BL45P-EA-DIFF-01:TIFF:Capture") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)CAPTURE") - field(ZNAM, "Done") - field(ONAM, "Capture") -} - -record(bi, "BL45P-EA-DIFF-01:TIFF:Capture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)CAPTURE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Capturing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:TIFF:NumCapture") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)NUM_CAPTURE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:NumCapture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)NUM_CAPTURE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:NumCaptured_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)NUM_CAPTURED") - field(SCAN, "I/O Intr") -} - -# Delete driver file flag -record(bo, "BL45P-EA-DIFF-01:TIFF:DeleteDriverFile") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)DELETE_DRIVER_FILE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:TIFF:DeleteDriverFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)DELETE_DRIVER_FILE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-DIFF-01:TIFF:WriteStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)WRITE_STATUS") - field(ZNAM, "Write OK") - field(ZSV, "NO_ALARM") - field(ONAM, "Write error") - field(OSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:TIFF:WriteMessage") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)WRITE_MESSAGE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:TIFF:LazyOpen") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)FILE_LAZY_OPEN") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:TIFF:LazyOpen_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)FILE_LAZY_OPEN") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:TIFF:TempSuffix") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.tiff,0,1)FILE_TEMP_SUFFIX") - field(VAL, "") -} - -record(stringin, "BL45P-EA-DIFF-01:TIFF:TempSuffix_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)FILE_TEMP_SUFFIX") - field(VAL, "") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:TIFF:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:TIFF:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:TIFF:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:TIFF:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:TIFF:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:TIFF:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:TIFF:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:TIFF:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:TIFF:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:TIFF:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:TIFF:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:TIFF:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:TIFF:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:TIFF:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:TIFF:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:TIFF:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:TIFF:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:TIFF:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:TIFF:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:TIFF:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:TIFF:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.tiff,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:TIFF:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.tiff,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:TIFF:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:TIFF:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:TIFF:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:TIFF:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:TIFF:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:TIFF:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:TIFF:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:TIFF:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:TIFF:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:TIFF:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.tiff,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:TIFF:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:TIFF:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:TIFF:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:TIFF:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:TIFF:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:TIFF:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:TIFF:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:TIFF:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.tiff,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:TIFF:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.tiff,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:TIFF:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:TIFF:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.tiff,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:TIFF:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.tiff,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:TIFF:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:TIFF:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:TIFF:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:TIFF:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:TIFF:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:TIFF:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.tiff,0,1)NDARRAY_PORT") - field(VAL, "DIFF.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:TIFF:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.tiff,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:TIFF:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:TIFF:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:TIFF:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:TIFF:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.tiff,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:TIFF:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.tiff,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:TIFF:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:TIFF:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:TIFF:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:TIFF:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:TIFF:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:TIFF:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:TIFF:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:TIFF:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.tiff,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:TIFF:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.tiff,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:TIFF:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.tiff,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:TIFF:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:TIFF:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:TIFF:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:TIFF:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:TIFF:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:TIFF:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:TIFF:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:TIFF:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:TIFF:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:TIFF:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:TIFF:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:TIFF:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:TIFF:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:TIFF:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:TIFF:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:TIFF:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:TIFF:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:TIFF:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:TIFF:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:TIFF:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:TIFF:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.tiff,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:TIFF:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.tiff,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:TIFF:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:TIFF:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:TIFF:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:TIFF:SortSize") - field(OUT, "BL45P-EA-DIFF-01:TIFF:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:TIFF:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:TIFF:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.tiff,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:TIFF:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.tiff,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:TIFF:AsynIO") -{ - field(PORT, "DIFF.tiff") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# We replace some fields in records defined in NDFile.template -# File data format -record(mbbo, "BL45P-EA-DIFF-01:TIFF:FileFormat") -{ - field(ZRST, "TIFF") - field(ZRVL, "0") - field(ONST, "Invalid") - field(ONVL, "1") -} - -record(mbbi, "BL45P-EA-DIFF-01:TIFF:FileFormat_RBV") -{ - field(ZRST, "TIFF") - field(ZRVL, "0") - field(ONST, "Undefined") - field(ONVL, "1") -} - -#=================================================================# -# Template file: NDFileHDF5.template -# Database for NDFileHDF5 driver, which saves files for NDArray data. - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Asyn Port timeout -# % macro, XMLSIZE, Number of elements of the XML layout waveform record - -# This associates the template with an edm screen -# % gui, DET.hdf, edmtab, NDFileHDF5.edl, P=BL45P-EA-MAP-01,R=:HDF5: - -# This associates a BOY screen with the template -# % gui, DET.hdf, boydetail,ADApp_opi/dls/hdf5_detail.opi, P=BL45P-EA-MAP-01, R=:HDF5:, DESC=HDF5 File Test -# % gui, DET.hdf, boyembed, ADApp_opi/dls/hdf5_embed_box.opi, P=BL45P-EA-MAP-01, R=:HDF5:, DESC=HDF5 File Test -# % gui, DET.hdf, boyembed, ADApp_opi/dls/hdf5_embed.opi, P=BL45P-EA-MAP-01, R=:HDF5:, DESC=HDF5 File Test - -# Info -# % gui, DET.hdf, groupHeading, Info -# % gui, DET.hdf, readback, Port name, BL45P-EA-MAP-01:HDF5:PortName_RBV -# % gui, DET.hdf, readback, Plugin type, BL45P-EA-MAP-01:HDF5:PluginType_RBV -# Input -# % gui, DET.hdf, demandString, Input, BL45P-EA-MAP-01:HDF5:NDArrayPort -# % gui, DET.hdf, readback, Input, BL45P-EA-MAP-01:HDF5:NDArrayPort_RBV - -# % gui, DET.hdf, groupHeading, Callback -# % gui, DET.hdf, enum, Callbacks, BL45P-EA-MAP-01:HDF5:EnableCallbacks -# % gui, DET.hdf, statusbits, Callbacks, BL45P-EA-MAP-01:HDF5:EnableCallbacks_RBV -# % gui, DET.hdf, demand, Min Callback Time, BL45P-EA-MAP-01:HDF5:MinCallbackTime -# % gui, DET.hdf, readback, Min Callback Time, BL45P-EA-MAP-01:HDF5:MinCallbackTime_RBV -# % gui, DET.hdf, enum, Block Callbacks, BL45P-EA-MAP-01:HDF5:BlockingCallbacks -# % gui, DET.hdf, statusbits, Block Callbacks, BL45P-EA-MAP-01:HDF5:BlockingCallbacks_RBV - -# % gui, DET.hdf, groupHeading, Counters -# % gui, DET.hdf, demand, Array Counter, BL45P-EA-MAP-01:HDF5:ArrayCounter -# % gui, DET.hdf, readback, Array Counter, BL45P-EA-MAP-01:HDF5:ArrayCounter_RBV -# % gui, DET.hdf, readback, Array Rate (fps), BL45P-EA-MAP-01:HDF5:ArrayRate_RBV -# % gui, DET.hdf, readback, Queue Use, BL45P-EA-MAP-01:HDF5:QueueUse -# % gui, DET.hdf, readback, Queue Size, BL45P-EA-MAP-01:HDF5:QueueSize -# % gui, DET.hdf, demand, Dropped Arrays, BL45P-EA-MAP-01:HDF5:DroppedArrays -# % gui, DET.hdf, readback, Dropped Arrays, BL45P-EA-MAP-01:HDF5:DroppedArrays_RBV - -# % gui, DET.hdf, groupHeading, Array Settings -# % gui, DET.hdf, readback, Num Dimensions, BL45P-EA-MAP-01:HDF5:NDimensions_RBV -# % gui, DET.hdf, readback, Dim 0 Size, BL45P-EA-MAP-01:HDF5:ArraySize0_RBV -# % gui, DET.hdf, readback, Dim 1 Size, BL45P-EA-MAP-01:HDF5:ArraySize1_RBV -# % gui, DET.hdf, readback, Dim 2 Size, BL45P-EA-MAP-01:HDF5:ArraySize2_RBV -# % gui, DET.hdf, readback, Input Data Type, BL45P-EA-MAP-01:HDF5:DataType_RBV -# % gui, DET.hdf, readback, Colour Mode, BL45P-EA-MAP-01:HDF5:ColorMode_RBV -# % gui, DET.hdf, readback, Bayer Pattern, BL45P-EA-MAP-01:HDF5:BayerPattern_RBV -# % gui, DET.hdf, readback, Unique id, BL45P-EA-MAP-01:HDF5:UniqueId_RBV -# % gui, DET.hdf, readback, Timestamp, BL45P-EA-MAP-01:HDF5:TimeStamp_RBV -# File -# % gui, DET.hdf, groupHeading, File -# % gui, DET.hdf, demandString, File Path, BL45P-EA-MAP-01:HDF5:FilePath -# % gui, DET.hdf, readback, File Path, BL45P-EA-MAP-01:HDF5:FilePath_RBV -# % gui, DET.hdf, statusbits, File Path Exists, BL45P-EA-MAP-01:HDF5:FilePathExists_RBV -# % gui, DET.hdf, demand, File Name, BL45P-EA-MAP-01:HDF5:FileName -# % gui, DET.hdf, readback, File Name, BL45P-EA-MAP-01:HDF5:FileName_RBV -# % gui, DET.hdf, demand, File Number, BL45P-EA-MAP-01:HDF5:FileNumber -# % gui, DET.hdf, readback, File Number, BL45P-EA-MAP-01:HDF5:FileNumber_RBV -# % gui, DET.hdf, enum, Auto Increment, BL45P-EA-MAP-01:HDF5:AutoIncrement -# % gui, DET.hdf, statusbits, Auto Increment, BL45P-EA-MAP-01:HDF5:AutoIncrement_RBV -# % gui, DET.hdf, demand, File Format, BL45P-EA-MAP-01:HDF5:FileTemplate -# % gui, DET.hdf, readback, File Format, BL45P-EA-MAP-01:HDF5:FileTemplate_RBV -# % gui, DET.hdf, demand, N to Capture, BL45P-EA-MAP-01:HDF5:NumCapture -# % gui, DET.hdf, readback, N to Capture, BL45P-EA-MAP-01:HDF5:NumCapture_RBV -# % gui, DET.hdf, readback, N Captured, BL45P-EA-MAP-01:HDF5:NumCaptured_RBV -# % gui, DET.hdf, enum, Auto Save, BL45P-EA-MAP-01:HDF5:AutoSave -# % gui, DET.hdf, statusbits, Auto Save , BL45P-EA-MAP-01:HDF5:AutoSave_RBV -# % gui, DET.hdf, enum, Capture mode, BL45P-EA-MAP-01:HDF5:FileWriteMode -# % gui, DET.hdf, readback, Capture mode, BL45P-EA-MAP-01:HDF5:FileWriteMode_RBV -# % gui, DET.hdf, enum, Capture, BL45P-EA-MAP-01:HDF5:Capture -# % gui, DET.hdf, readback, Capture, BL45P-EA-MAP-01:HDF5:Capture_RBV -# % gui, DET.hdf, readback, Write Message, BL45P-EA-MAP-01:HDF5:WriteMessage -# % gui, DET.hdf, readback, Write Status, BL45P-EA-MAP-01:HDF5:WriteStatus -# % gui, DET.hdf, readback, Write Filename, BL45P-EA-MAP-01:HDF5:FullFileName_RBV -# % gui, DET.hdf, enum, Lazy Open, BL45P-EA-MAP-01:HDF5:LazyOpen -# % gui, DET.hdf, readback, Lazy Open, BL45P-EA-MAP-01:HDF5:LazyOpen_RBV -# % gui, DET.hdf, demand, Temporary Suffix, BL45P-EA-MAP-01:HDF5:TempSuffix -# % gui, DET.hdf, readback, Temporary Suffix, BL45P-EA-MAP-01:HDF5:TempSuffix_RBV -# % gui, DET.hdf, demand, Create Directories, BL45P-EA-MAP-01:HDF5:CreateDirectory -# % gui, DET.hdf, readback, Create Directories, BL45P-EA-MAP-01:HDF5:CreateDirectory_RBV -# HDF5 -# % gui, DET.hdf, groupHeading, HDF5 -# % gui, DET.hdf, demand, Extra Dimensions, BL45P-EA-MAP-01:HDF5:NumExtraDims -# % gui, DET.hdf, readback, Extra Dimensions, BL45P-EA-MAP-01:HDF5:NumExtraDims_RBV -# % gui, DET.hdf, demand, Rows per Chunk, BL45P-EA-MAP-01:HDF5:NumRowChunks -# % gui, DET.hdf, readback, Rows per Chunk, BL45P-EA-MAP-01:HDF5:NumRowChunks_RBV -# % gui, DET.hdf, demand, Cols per Chunk, BL45P-EA-MAP-01:HDF5:NumColChunks -# % gui, DET.hdf, readback, Cols per Chunk, BL45P-EA-MAP-01:HDF5:NumColChunks_RBV -# % gui, DET.hdf, demand, Frames per Chunk, BL45P-EA-MAP-01:HDF5:NumFramesChunks -# % gui, DET.hdf, readback, Frames per Chunk, BL45P-EA-MAP-01:HDF5:NumFramesChunks_RBV -# % gui, DET.hdf, demand, Boundary Alignment, BL45P-EA-MAP-01:HDF5:BoundaryAlign -# % gui, DET.hdf, readback, Boundary Alignment, BL45P-EA-MAP-01:HDF5:BoundaryAlign_RBV -# % gui, DET.hdf, demand, Boundary Threshold, BL45P-EA-MAP-01:HDF5:BoundaryThreshold -# % gui, DET.hdf, readback, Boundary Threshold, BL45P-EA-MAP-01:HDF5:BoundaryThreshold_RBV -# % gui, DET.hdf, demand, Flush on Nth Frame, BL45P-EA-MAP-01:HDF5:NumFramesFlush -# % gui, DET.hdf, readback, Flush on Nth Frame, BL45P-EA-MAP-01:HDF5:NumFramesFlush_RBV -# % gui, DET.hdf, enum, Store Attribute Data, BL45P-EA-MAP-01:HDF5:StoreAttr -# % gui, DET.hdf, readback, Store Attribute Data, BL45P-EA-MAP-01:HDF5:StoreAttr_RBV -# % gui, DET.hdf, enum, Store Performance Data, BL45P-EA-MAP-01:HDF5:StorePerform -# % gui, DET.hdf, readback, Store Performance Data, BL45P-EA-MAP-01:HDF5:StorePerform_RBV -# % gui, DET.hdf, readback, Total Write Time, BL45P-EA-MAP-01:HDF5:RunTime -# % gui, DET.hdf, readback, Total Write Speed, BL45P-EA-MAP-01:HDF5:IOSpeed -# % gui, DET.hdf, enum, Compression Type, BL45P-EA-MAP-01:HDF5:Compression -# % gui, DET.hdf, readback, Compression Type, BL45P-EA-MAP-01:HDF5:Compression_RBV -# % gui, DET.hdf, demand, N-bit bits per Pixel, BL45P-EA-MAP-01:HDF5:NumDataBits -# % gui, DET.hdf, readback, N-bit bits per Pixel, BL45P-EA-MAP-01:HDF5:NumDataBits_RBV -# % gui, DET.hdf, demand, N-bit Offset, BL45P-EA-MAP-01:HDF5:DataBitsOffset -# % gui, DET.hdf, readback, N-bit Offset, BL45P-EA-MAP-01:HDF5:DataBitsOffset_RBV -# % gui, DET.hdf, demand, Szip Filter Size, BL45P-EA-MAP-01:HDF5:SZipNumPixels -# % gui, DET.hdf, readback, Szip Filter Size, BL45P-EA-MAP-01:HDF5:SZipNumPixels_RBV -# % gui, DET.hdf, demand, Zlib Deflate Level, BL45P-EA-MAP-01:HDF5:ZLevel -# % gui, DET.hdf, readback, Zlib Deflate Level, BL45P-EA-MAP-01:HDF5:ZLevel_RBV - -# Memory -# % gui, DET.hdf, groupHeading, Memory -# % gui, DET.hdf, readback, Max memory, BL45P-EA-MAP-01:HDF5:PoolMaxMem -# % gui, DET.hdf, readback, Max buffers, BL45P-EA-MAP-01:HDF5:PoolMaxBuffers -# % gui, DET.hdf, readback, Used memory, BL45P-EA-MAP-01:HDF5:PoolUsedMem -# % gui, DET.hdf, readback, Allocated buffers, BL45P-EA-MAP-01:HDF5:PoolAllocBuffers -# % gui, DET.hdf, readback, Free buffers, BL45P-EA-MAP-01:HDF5:PoolFreeBuffers - -#=================================================================# -# Template file: NDFile.template -# Database for NDFile driver, which saves files for NDArray data. -# Mark Rivers -# April 7, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -################################################################### -# These records control file I/O # -################################################################### - -# File path. -record(waveform, "BL45P-EA-MAP-01:HDF5:FilePath") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.hdf,0,1)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:HDF5:FilePath_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:FilePathExists_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)FILE_PATH_EXISTS") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:CreateDirectory") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)CREATE_DIR") - field(VAL, "0" ) - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:CreateDirectory_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)CREATE_DIR") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -# Filename -record(waveform, "BL45P-EA-MAP-01:HDF5:FileName") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.hdf,0,1)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:HDF5:FileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:FileNumber") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)FILE_NUMBER") - field(VAL, "1") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:FileNumber_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)FILE_NUMBER") - field(SCAN, "I/O Intr") -} - -# Autoincrement flag -record(bo, "BL45P-EA-MAP-01:HDF5:AutoIncrement") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)AUTO_INCREMENT") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:AutoIncrement_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)AUTO_INCREMENT") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# File template -record(waveform, "BL45P-EA-MAP-01:HDF5:FileTemplate") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.hdf,0,1)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:HDF5:FileTemplate_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Full filename, including path -record(waveform, "BL45P-EA-MAP-01:HDF5:FullFileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)FULL_FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Autosave flag -record(bo, "BL45P-EA-MAP-01:HDF5:AutoSave") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:AutoSave_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# Write file -record(busy, "BL45P-EA-MAP-01:HDF5:WriteFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)WRITE_FILE") - field(ZNAM, "Done") - field(ONAM, "Write") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:WriteFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)WRITE_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Writing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -# Read file -record(busy, "BL45P-EA-MAP-01:HDF5:ReadFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)READ_FILE") - field(ZNAM, "Done") - field(ONAM, "Read") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:ReadFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)READ_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Reading") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -# File data format -record(mbbo, "BL45P-EA-MAP-01:HDF5:FileFormat") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)FILE_FORMAT") - field(VAL, "0") - field(ZRST, "Undefined") - field(ZRVL, "0") - field(ONST, "Invalid") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:HDF5:FileFormat_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)FILE_FORMAT") - field(ZRST, "netCDF") - field(ZRVL, "0") - field(ONST, "Undefined") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -# File save mode -record(mbbo, "BL45P-EA-MAP-01:HDF5:FileWriteMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)WRITE_MODE") - field(VAL, "0") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:HDF5:FileWriteMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)WRITE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -# Capture data -record(busy, "BL45P-EA-MAP-01:HDF5:Capture") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)CAPTURE") - field(ZNAM, "Done") - field(ONAM, "Capture") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:Capture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)CAPTURE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Capturing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:NumCapture") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)NUM_CAPTURE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:NumCapture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)NUM_CAPTURE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:NumCaptured_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)NUM_CAPTURED") - field(SCAN, "I/O Intr") -} - -# Delete driver file flag -record(bo, "BL45P-EA-MAP-01:HDF5:DeleteDriverFile") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)DELETE_DRIVER_FILE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:DeleteDriverFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)DELETE_DRIVER_FILE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:WriteStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)WRITE_STATUS") - field(ZNAM, "Write OK") - field(ZSV, "NO_ALARM") - field(ONAM, "Write error") - field(OSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-MAP-01:HDF5:WriteMessage") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)WRITE_MESSAGE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:HDF5:LazyOpen") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)FILE_LAZY_OPEN") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:LazyOpen_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)FILE_LAZY_OPEN") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:TempSuffix") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)FILE_TEMP_SUFFIX") - field(VAL, "") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:TempSuffix_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)FILE_TEMP_SUFFIX") - field(VAL, "") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:HDF5:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:HDF5:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:HDF5:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:HDF5:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:HDF5:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:HDF5:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:HDF5:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:HDF5:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:HDF5:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:HDF5:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:HDF5:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:HDF5:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:HDF5:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:HDF5:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:HDF5:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:HDF5:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.hdf,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:HDF5:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.hdf,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:HDF5:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:HDF5:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:HDF5:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:HDF5:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:HDF5:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:HDF5:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:HDF5:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:HDF5:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:HDF5:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:HDF5:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:HDF5:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:HDF5:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.hdf,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:HDF5:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:HDF5:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:HDF5:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:HDF5:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:HDF5:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:HDF5:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:HDF5:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.hdf,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:HDF5:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.hdf,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:HDF5:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:HDF5:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.hdf,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:HDF5:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.hdf,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:HDF5:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:HDF5:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:HDF5:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:HDF5:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:HDF5:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:HDF5:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:HDF5:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:HDF5:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:HDF5:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)NDARRAY_PORT") - field(VAL, "DET.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:HDF5:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:HDF5:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.hdf,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:HDF5:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.hdf,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:HDF5:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:HDF5:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:HDF5:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:HDF5:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:HDF5:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:HDF5:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:HDF5:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:HDF5:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.hdf,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:HDF5:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.hdf,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:HDF5:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.hdf,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:HDF5:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:HDF5:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:HDF5:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:HDF5:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:HDF5:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:HDF5:QueueSize") - field(OUT, "BL45P-EA-MAP-01:HDF5:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:HDF5:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:HDF5:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:HDF5:QueueSize") - field(OUT, "BL45P-EA-MAP-01:HDF5:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:HDF5:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:HDF5:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:HDF5:QueueSize") - field(OUT, "BL45P-EA-MAP-01:HDF5:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:HDF5:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:HDF5:QueueSize") - field(INPB, "BL45P-EA-MAP-01:HDF5:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:HDF5:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:HDF5:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:HDF5:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.hdf,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:HDF5:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.hdf,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:HDF5:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:HDF5:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:HDF5:SortSize") - field(OUT, "BL45P-EA-MAP-01:HDF5:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:HDF5:AsynIO") -{ - field(PORT, "DET.hdf") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# Flush data to file -record(busy, "BL45P-EA-MAP-01:HDF5:FlushNow") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_SWMRFlushNow") - field(ZNAM, "Done") - field(ONAM, "Flush") -} - -# We replace some fields in records defined in NDFile.template -# File data format -record(mbbo, "BL45P-EA-MAP-01:HDF5:FileFormat") -{ - field(ZRST, "HDF5") - field(ZRVL, "0") - field(ONST, "Invalid") - field(ONVL, "1") -} - -record(mbbi, "BL45P-EA-MAP-01:HDF5:FileFormat_RBV") -{ - field(ZRST, "HDF5") - field(ZRVL, "0") - field(ONST, "Undefined") - field(ONVL, "1") -} - -record(bo, "BL45P-EA-MAP-01:HDF5:ChunkSizeAuto") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_chunkSizeAuto") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:ChunkSizeAuto_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_chunkSizeAuto") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:NumRowChunks") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_nRowChunks") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:NumRowChunks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_nRowChunks") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:NumColChunks") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_nColChunks") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:NumColChunks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_nColChunks") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ChunkSize2") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_chunkSize2") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ChunkSize2_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_chunkSize2") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ChunkSize3") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_chunkSize3") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ChunkSize3_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_chunkSize3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ChunkSize4") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_chunkSize4") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ChunkSize4_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_chunkSize4") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ChunkSize5") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_chunkSize5") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ChunkSize5_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_chunkSize5") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ChunkSize6") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_chunkSize6") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ChunkSize6_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_chunkSize6") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ChunkSize7") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_chunkSize7") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ChunkSize7_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_chunkSize7") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ChunkSize8") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_chunkSize8") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ChunkSize8_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_chunkSize8") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ChunkSize9") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_chunkSize9") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ChunkSize9_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_chunkSize9") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:NumFramesChunks") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_nFramesChunks") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:NumFramesChunks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_nFramesChunks") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:NDAttributeChunk") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_NDAttributeChunk") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:NDAttributeChunk_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_NDAttributeChunk") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:BoundaryAlign") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_chunkBoundaryAlign") - field(PINI, "YES") - field(VAL, "0") - field(EGU, "bytes") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:BoundaryAlign_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_chunkBoundaryAlign") - field(SCAN, "I/O Intr") - field(EGU, "bytes") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:BoundaryThreshold") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_chunkBoundaryThreshold") - field(PINI, "YES") - field(VAL, "1") - field(EGU, "bytes") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:BoundaryThreshold_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_chunkBoundaryThreshold") - field(SCAN, "I/O Intr") - field(EGU, "bytes") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:NumExtraDims") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_nExtraDims") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:NumExtraDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_nExtraDims") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimSizeN") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimSizeN") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimSizeN_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimSizeN") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:ExtraDimNameN_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimNameN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimSizeX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimSizeX") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimSizeX") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:ExtraDimNameX_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimNameX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimSizeY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimSizeY") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimSizeY") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:ExtraDimNameY_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimNameY") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimSize3") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimSize3") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimSize3_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimSize3") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:ExtraDimName3_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimName3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimSize4") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimSize4") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimSize4_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimSize4") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:ExtraDimName4_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimName4") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimSize5") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimSize5") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimSize5_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimSize5") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:ExtraDimName5_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimName5") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimSize6") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimSize6") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimSize6_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimSize6") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:ExtraDimName6_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimName6") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimSize7") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimSize7") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimSize7_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimSize7") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:ExtraDimName7_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimName7") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimSize8") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimSize8") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimSize8_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimSize8") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:ExtraDimName8_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimName8") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimSize9") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimSize9") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimSize9_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimSize9") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:ExtraDimName9_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimName9") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:HDF5:StoreAttr") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_storeAttributes") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:StoreAttr_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_storeAttributes") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(bo, "BL45P-EA-MAP-01:HDF5:StorePerform") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_storePerformance") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:StorePerform_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_storePerformance") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(ai, "BL45P-EA-MAP-01:HDF5:RunTime") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.hdf,0,1)HDF5_totalRuntime") - field(SCAN, "I/O Intr") - field(PREC, "3") - field(EGU, "s") -} - -record(ai, "BL45P-EA-MAP-01:HDF5:IOSpeed") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.hdf,0,1)HDF5_totalIoSpeed") - field(SCAN, "I/O Intr") - field(PREC, "1") - field(EGU, "Mbit/s") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:NumFramesFlush") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_flushNthFrame") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:NumFramesFlush_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_flushNthFrame") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:HDF5:Compression") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_compressionType") - field(PINI, "YES") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "N-bit") - field(ONVL, "1") - field(TWST, "szip") - field(TWVL, "2") - field(THST, "zlib") - field(THVL, "3") - field(FRST, "Blosc") - field(FRVL, "4") - field(FVST, "BSLZ4") - field(FVVL, "5") - field(SXST, "LZ4") - field(SXVL, "6") - field(SVST, "JPEG") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:HDF5:Compression_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_compressionType") - field(SCAN, "I/O Intr") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "N-bit") - field(ONVL, "1") - field(TWST, "szip") - field(TWVL, "2") - field(THST, "zlib") - field(THVL, "3") - field(FRST, "Blosc") - field(FRVL, "4") - field(FVST, "BSLZ4") - field(FVVL, "5") - field(SXST, "LZ4") - field(SXVL, "6") - field(SVST, "JPEG") - field(SVVL, "7") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:NumDataBits") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_nbitsPrecision") - field(PINI, "YES") - field(EGU, "bit") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:NumDataBits_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_nbitsPrecision") - field(SCAN, "I/O Intr") - field(EGU, "bit") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:DataBitsOffset") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_nbitsOffset") - field(PINI, "YES") - field(EGU, "bit") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:DataBitsOffset_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_nbitsOffset") - field(SCAN, "I/O Intr") - field(EGU, "bit") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:SZipNumPixels") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_szipNumPixels") - field(PINI, "YES") - field(EGU, "bit") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:SZipNumPixels_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_szipNumPixels") - field(SCAN, "I/O Intr") - field(EGU, "bit") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ZLevel") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_zCompressLevel") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ZLevel_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_zCompressLevel") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-MAP-01:HDF5:BloscShuffle") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_bloscShuffleType") - field(PINI, "YES") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "Byte") - field(ONVL, "1") - field(TWST, "Bit") - field(TWVL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:HDF5:BloscShuffle_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_bloscShuffleType") - field(SCAN, "I/O Intr") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "Byte") - field(ONVL, "1") - field(TWST, "Bit") - field(TWVL, "2") -} - -record(mbbo, "BL45P-EA-MAP-01:HDF5:BloscCompressor") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_bloscCompressor") - field(PINI, "YES") - field(ZRST, "BloscLZ") - field(ZRVL, "0") - field(ONST, "LZ4") - field(ONVL, "1") - field(TWST, "LZ4HC") - field(TWVL, "2") - field(THST, "SNAPPY") - field(THVL, "3") - field(FRST, "ZLIB") - field(FRVL, "4") - field(FVST, "ZSTD") - field(FVVL, "5") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:HDF5:BloscCompressor_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_bloscCompressor") - field(SCAN, "I/O Intr") - field(ZRST, "BloscLZ") - field(ZRVL, "0") - field(ONST, "LZ4") - field(ONVL, "1") - field(TWST, "LZ4HC") - field(TWVL, "2") - field(THST, "SNAPPY") - field(THVL, "3") - field(FRST, "ZLIB") - field(FRVL, "4") - field(FVST, "ZSTD") - field(FVVL, "5") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:BloscLevel") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_bloscCompressLevel") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:BloscLevel_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_bloscCompressLevel") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:JPEGQuality") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_jpegQuality") - field(VAL, "90") - field(DRVL, "1") - field(DRVH, "100") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:JPEGQuality_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_jpegQuality") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:HDF5:DimAttDatasets") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_dimAttDatasets") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:DimAttDatasets_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_dimAttDatasets") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# File path. -# % autosave 2 -#record(waveform, "BL45P-EA-MAP-01:HDF5:XMLPath") -#{ -# field(PINI, "YES") -# field(DTYP, "asynOctetWrite") -# field(INP, "@asyn(DET.hdf,0,1)HDF5_layoutDirectory") -# field(FTVL, "CHAR") -# field(NELM, "256") -#} - -record(waveform, "BL45P-EA-MAP-01:HDF5:XMLErrorMsg_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_layoutErrorMsg") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:XMLValid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_layoutValid") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -# Filename -# % autosave 2 -record(waveform, "BL45P-EA-MAP-01:HDF5:XMLFileName") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.hdf,0,1)HDF5_layoutFilename") - field(FTVL, "CHAR") - field(NELM, "2048") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-MAP-01:HDF5:XMLFileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_layoutFilename") - field(FTVL, "CHAR") - field(NELM, "2048") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:SWMRSupported_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_SWMRSupported") - field(SCAN, "I/O Intr") - field(ZNAM, "Not Supported") - field(ONAM, "Supported") -} - -record(bo, "BL45P-EA-MAP-01:HDF5:SWMRMode") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_SWMRMode") - field(PINI, "YES") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:SWMRMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_SWMRMode") - field(SCAN, "I/O Intr") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:SWMRActive_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_SWMRRunning") - field(SCAN, "I/O Intr") - field(ZNAM, "Off") - field(ONAM, "Active") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:SWMRCbCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_SWMRCbCounter") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:HDF5:PositionMode") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posRunning") - field(PINI, "YES") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(bi, "BL45P-EA-MAP-01:HDF5:PositionMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posRunning") - field(SCAN, "I/O Intr") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosNameDimN") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posNameDimN") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosNameDimN_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posNameDimN") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosNameDimX") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posNameDimX") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosNameDimX_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posNameDimX") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosNameDimY") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posNameDimY") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosNameDimY_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posNameDimY") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosNameDim3") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posNameDim3") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosNameDim3_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posNameDim3") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosNameDim4") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posNameDim4") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosNameDim4_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posNameDim4") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosNameDim5") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posNameDim5") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosNameDim5_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posNameDim5") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosNameDim6") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posNameDim6") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosNameDim6_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posNameDim6") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosNameDim7") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posNameDim7") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosNameDim7_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posNameDim7") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosNameDim8") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posNameDim8") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosNameDim8_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posNameDim8") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosNameDim9") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posNameDim9") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosNameDim9_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posNameDim9") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosIndexDimN") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posIndexDimN") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosIndexDimN_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posIndexDimN") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosIndexDimX") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posIndexDimX") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosIndexDimX_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posIndexDimX") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosIndexDimY") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posIndexDimY") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosIndexDimY_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posIndexDimY") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosIndexDim3") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posIndexDim3") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosIndexDim3_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posIndexDim3") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosIndexDim4") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posIndexDim4") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosIndexDim4_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posIndexDim4") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosIndexDim5") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posIndexDim5") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosIndexDim5_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posIndexDim5") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosIndexDim6") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posIndexDim6") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosIndexDim6_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posIndexDim6") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosIndexDim7") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posIndexDim7") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosIndexDim7_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posIndexDim7") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosIndexDim8") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posIndexDim8") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosIndexDim8_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posIndexDim8") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:HDF5:PosIndexDim9") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_posIndexDim9") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-MAP-01:HDF5:PosIndexDim9_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.hdf,0,1)HDF5_posIndexDim9") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:HDF5:FillValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_fillValue") - field(PINI, "YES") - field(PREC, "1") -} - -record(ai, "BL45P-EA-MAP-01:HDF5:FillValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.hdf,0,1)HDF5_fillValue") - field(SCAN, "I/O Intr") - field(PREC, "1") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimChunkX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimChunkX") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimChunkX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimChunkX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimChunkY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimChunkY") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimChunkY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimChunkY") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimChunk3") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimChunk3") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimChunk3_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimChunk3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimChunk4") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimChunk4") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimChunk4_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimChunk4") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimChunk5") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimChunk5") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimChunk5_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimChunk5") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimChunk6") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimChunk6") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimChunk6_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimChunk6") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimChunk7") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimChunk7") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimChunk7_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimChunk7") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimChunk8") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimChunk8") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimChunk8_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimChunk8") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:HDF5:ExtraDimChunk9") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.hdf,0,1)HDF5_extraDimChunk9") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:HDF5:ExtraDimChunk9_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.hdf,0,1)HDF5_extraDimChunk9") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDFileHDF5.template -# Database for NDFileHDF5 driver, which saves files for NDArray data. - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Asyn Port timeout -# % macro, XMLSIZE, Number of elements of the XML layout waveform record - -# This associates the template with an edm screen -# % gui, DIFF.hdf, edmtab, NDFileHDF5.edl, P=BL45P-EA-DIFF-01,R=:HDF5: - -# This associates a BOY screen with the template -# % gui, DIFF.hdf, boydetail,ADApp_opi/dls/hdf5_detail.opi, P=BL45P-EA-DIFF-01, R=:HDF5:, DESC=HDF5 File Test -# % gui, DIFF.hdf, boyembed, ADApp_opi/dls/hdf5_embed_box.opi, P=BL45P-EA-DIFF-01, R=:HDF5:, DESC=HDF5 File Test -# % gui, DIFF.hdf, boyembed, ADApp_opi/dls/hdf5_embed.opi, P=BL45P-EA-DIFF-01, R=:HDF5:, DESC=HDF5 File Test - -# Info -# % gui, DIFF.hdf, groupHeading, Info -# % gui, DIFF.hdf, readback, Port name, BL45P-EA-DIFF-01:HDF5:PortName_RBV -# % gui, DIFF.hdf, readback, Plugin type, BL45P-EA-DIFF-01:HDF5:PluginType_RBV -# Input -# % gui, DIFF.hdf, demandString, Input, BL45P-EA-DIFF-01:HDF5:NDArrayPort -# % gui, DIFF.hdf, readback, Input, BL45P-EA-DIFF-01:HDF5:NDArrayPort_RBV - -# % gui, DIFF.hdf, groupHeading, Callback -# % gui, DIFF.hdf, enum, Callbacks, BL45P-EA-DIFF-01:HDF5:EnableCallbacks -# % gui, DIFF.hdf, statusbits, Callbacks, BL45P-EA-DIFF-01:HDF5:EnableCallbacks_RBV -# % gui, DIFF.hdf, demand, Min Callback Time, BL45P-EA-DIFF-01:HDF5:MinCallbackTime -# % gui, DIFF.hdf, readback, Min Callback Time, BL45P-EA-DIFF-01:HDF5:MinCallbackTime_RBV -# % gui, DIFF.hdf, enum, Block Callbacks, BL45P-EA-DIFF-01:HDF5:BlockingCallbacks -# % gui, DIFF.hdf, statusbits, Block Callbacks, BL45P-EA-DIFF-01:HDF5:BlockingCallbacks_RBV - -# % gui, DIFF.hdf, groupHeading, Counters -# % gui, DIFF.hdf, demand, Array Counter, BL45P-EA-DIFF-01:HDF5:ArrayCounter -# % gui, DIFF.hdf, readback, Array Counter, BL45P-EA-DIFF-01:HDF5:ArrayCounter_RBV -# % gui, DIFF.hdf, readback, Array Rate (fps), BL45P-EA-DIFF-01:HDF5:ArrayRate_RBV -# % gui, DIFF.hdf, readback, Queue Use, BL45P-EA-DIFF-01:HDF5:QueueUse -# % gui, DIFF.hdf, readback, Queue Size, BL45P-EA-DIFF-01:HDF5:QueueSize -# % gui, DIFF.hdf, demand, Dropped Arrays, BL45P-EA-DIFF-01:HDF5:DroppedArrays -# % gui, DIFF.hdf, readback, Dropped Arrays, BL45P-EA-DIFF-01:HDF5:DroppedArrays_RBV - -# % gui, DIFF.hdf, groupHeading, Array Settings -# % gui, DIFF.hdf, readback, Num Dimensions, BL45P-EA-DIFF-01:HDF5:NDimensions_RBV -# % gui, DIFF.hdf, readback, Dim 0 Size, BL45P-EA-DIFF-01:HDF5:ArraySize0_RBV -# % gui, DIFF.hdf, readback, Dim 1 Size, BL45P-EA-DIFF-01:HDF5:ArraySize1_RBV -# % gui, DIFF.hdf, readback, Dim 2 Size, BL45P-EA-DIFF-01:HDF5:ArraySize2_RBV -# % gui, DIFF.hdf, readback, Input Data Type, BL45P-EA-DIFF-01:HDF5:DataType_RBV -# % gui, DIFF.hdf, readback, Colour Mode, BL45P-EA-DIFF-01:HDF5:ColorMode_RBV -# % gui, DIFF.hdf, readback, Bayer Pattern, BL45P-EA-DIFF-01:HDF5:BayerPattern_RBV -# % gui, DIFF.hdf, readback, Unique id, BL45P-EA-DIFF-01:HDF5:UniqueId_RBV -# % gui, DIFF.hdf, readback, Timestamp, BL45P-EA-DIFF-01:HDF5:TimeStamp_RBV -# File -# % gui, DIFF.hdf, groupHeading, File -# % gui, DIFF.hdf, demandString, File Path, BL45P-EA-DIFF-01:HDF5:FilePath -# % gui, DIFF.hdf, readback, File Path, BL45P-EA-DIFF-01:HDF5:FilePath_RBV -# % gui, DIFF.hdf, statusbits, File Path Exists, BL45P-EA-DIFF-01:HDF5:FilePathExists_RBV -# % gui, DIFF.hdf, demand, File Name, BL45P-EA-DIFF-01:HDF5:FileName -# % gui, DIFF.hdf, readback, File Name, BL45P-EA-DIFF-01:HDF5:FileName_RBV -# % gui, DIFF.hdf, demand, File Number, BL45P-EA-DIFF-01:HDF5:FileNumber -# % gui, DIFF.hdf, readback, File Number, BL45P-EA-DIFF-01:HDF5:FileNumber_RBV -# % gui, DIFF.hdf, enum, Auto Increment, BL45P-EA-DIFF-01:HDF5:AutoIncrement -# % gui, DIFF.hdf, statusbits, Auto Increment, BL45P-EA-DIFF-01:HDF5:AutoIncrement_RBV -# % gui, DIFF.hdf, demand, File Format, BL45P-EA-DIFF-01:HDF5:FileTemplate -# % gui, DIFF.hdf, readback, File Format, BL45P-EA-DIFF-01:HDF5:FileTemplate_RBV -# % gui, DIFF.hdf, demand, N to Capture, BL45P-EA-DIFF-01:HDF5:NumCapture -# % gui, DIFF.hdf, readback, N to Capture, BL45P-EA-DIFF-01:HDF5:NumCapture_RBV -# % gui, DIFF.hdf, readback, N Captured, BL45P-EA-DIFF-01:HDF5:NumCaptured_RBV -# % gui, DIFF.hdf, enum, Auto Save, BL45P-EA-DIFF-01:HDF5:AutoSave -# % gui, DIFF.hdf, statusbits, Auto Save , BL45P-EA-DIFF-01:HDF5:AutoSave_RBV -# % gui, DIFF.hdf, enum, Capture mode, BL45P-EA-DIFF-01:HDF5:FileWriteMode -# % gui, DIFF.hdf, readback, Capture mode, BL45P-EA-DIFF-01:HDF5:FileWriteMode_RBV -# % gui, DIFF.hdf, enum, Capture, BL45P-EA-DIFF-01:HDF5:Capture -# % gui, DIFF.hdf, readback, Capture, BL45P-EA-DIFF-01:HDF5:Capture_RBV -# % gui, DIFF.hdf, readback, Write Message, BL45P-EA-DIFF-01:HDF5:WriteMessage -# % gui, DIFF.hdf, readback, Write Status, BL45P-EA-DIFF-01:HDF5:WriteStatus -# % gui, DIFF.hdf, readback, Write Filename, BL45P-EA-DIFF-01:HDF5:FullFileName_RBV -# % gui, DIFF.hdf, enum, Lazy Open, BL45P-EA-DIFF-01:HDF5:LazyOpen -# % gui, DIFF.hdf, readback, Lazy Open, BL45P-EA-DIFF-01:HDF5:LazyOpen_RBV -# % gui, DIFF.hdf, demand, Temporary Suffix, BL45P-EA-DIFF-01:HDF5:TempSuffix -# % gui, DIFF.hdf, readback, Temporary Suffix, BL45P-EA-DIFF-01:HDF5:TempSuffix_RBV -# % gui, DIFF.hdf, demand, Create Directories, BL45P-EA-DIFF-01:HDF5:CreateDirectory -# % gui, DIFF.hdf, readback, Create Directories, BL45P-EA-DIFF-01:HDF5:CreateDirectory_RBV -# HDF5 -# % gui, DIFF.hdf, groupHeading, HDF5 -# % gui, DIFF.hdf, demand, Extra Dimensions, BL45P-EA-DIFF-01:HDF5:NumExtraDims -# % gui, DIFF.hdf, readback, Extra Dimensions, BL45P-EA-DIFF-01:HDF5:NumExtraDims_RBV -# % gui, DIFF.hdf, demand, Rows per Chunk, BL45P-EA-DIFF-01:HDF5:NumRowChunks -# % gui, DIFF.hdf, readback, Rows per Chunk, BL45P-EA-DIFF-01:HDF5:NumRowChunks_RBV -# % gui, DIFF.hdf, demand, Cols per Chunk, BL45P-EA-DIFF-01:HDF5:NumColChunks -# % gui, DIFF.hdf, readback, Cols per Chunk, BL45P-EA-DIFF-01:HDF5:NumColChunks_RBV -# % gui, DIFF.hdf, demand, Frames per Chunk, BL45P-EA-DIFF-01:HDF5:NumFramesChunks -# % gui, DIFF.hdf, readback, Frames per Chunk, BL45P-EA-DIFF-01:HDF5:NumFramesChunks_RBV -# % gui, DIFF.hdf, demand, Boundary Alignment, BL45P-EA-DIFF-01:HDF5:BoundaryAlign -# % gui, DIFF.hdf, readback, Boundary Alignment, BL45P-EA-DIFF-01:HDF5:BoundaryAlign_RBV -# % gui, DIFF.hdf, demand, Boundary Threshold, BL45P-EA-DIFF-01:HDF5:BoundaryThreshold -# % gui, DIFF.hdf, readback, Boundary Threshold, BL45P-EA-DIFF-01:HDF5:BoundaryThreshold_RBV -# % gui, DIFF.hdf, demand, Flush on Nth Frame, BL45P-EA-DIFF-01:HDF5:NumFramesFlush -# % gui, DIFF.hdf, readback, Flush on Nth Frame, BL45P-EA-DIFF-01:HDF5:NumFramesFlush_RBV -# % gui, DIFF.hdf, enum, Store Attribute Data, BL45P-EA-DIFF-01:HDF5:StoreAttr -# % gui, DIFF.hdf, readback, Store Attribute Data, BL45P-EA-DIFF-01:HDF5:StoreAttr_RBV -# % gui, DIFF.hdf, enum, Store Performance Data, BL45P-EA-DIFF-01:HDF5:StorePerform -# % gui, DIFF.hdf, readback, Store Performance Data, BL45P-EA-DIFF-01:HDF5:StorePerform_RBV -# % gui, DIFF.hdf, readback, Total Write Time, BL45P-EA-DIFF-01:HDF5:RunTime -# % gui, DIFF.hdf, readback, Total Write Speed, BL45P-EA-DIFF-01:HDF5:IOSpeed -# % gui, DIFF.hdf, enum, Compression Type, BL45P-EA-DIFF-01:HDF5:Compression -# % gui, DIFF.hdf, readback, Compression Type, BL45P-EA-DIFF-01:HDF5:Compression_RBV -# % gui, DIFF.hdf, demand, N-bit bits per Pixel, BL45P-EA-DIFF-01:HDF5:NumDataBits -# % gui, DIFF.hdf, readback, N-bit bits per Pixel, BL45P-EA-DIFF-01:HDF5:NumDataBits_RBV -# % gui, DIFF.hdf, demand, N-bit Offset, BL45P-EA-DIFF-01:HDF5:DataBitsOffset -# % gui, DIFF.hdf, readback, N-bit Offset, BL45P-EA-DIFF-01:HDF5:DataBitsOffset_RBV -# % gui, DIFF.hdf, demand, Szip Filter Size, BL45P-EA-DIFF-01:HDF5:SZipNumPixels -# % gui, DIFF.hdf, readback, Szip Filter Size, BL45P-EA-DIFF-01:HDF5:SZipNumPixels_RBV -# % gui, DIFF.hdf, demand, Zlib Deflate Level, BL45P-EA-DIFF-01:HDF5:ZLevel -# % gui, DIFF.hdf, readback, Zlib Deflate Level, BL45P-EA-DIFF-01:HDF5:ZLevel_RBV - -# Memory -# % gui, DIFF.hdf, groupHeading, Memory -# % gui, DIFF.hdf, readback, Max memory, BL45P-EA-DIFF-01:HDF5:PoolMaxMem -# % gui, DIFF.hdf, readback, Max buffers, BL45P-EA-DIFF-01:HDF5:PoolMaxBuffers -# % gui, DIFF.hdf, readback, Used memory, BL45P-EA-DIFF-01:HDF5:PoolUsedMem -# % gui, DIFF.hdf, readback, Allocated buffers, BL45P-EA-DIFF-01:HDF5:PoolAllocBuffers -# % gui, DIFF.hdf, readback, Free buffers, BL45P-EA-DIFF-01:HDF5:PoolFreeBuffers - -#=================================================================# -# Template file: NDFile.template -# Database for NDFile driver, which saves files for NDArray data. -# Mark Rivers -# April 7, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -################################################################### -# These records control file I/O # -################################################################### - -# File path. -record(waveform, "BL45P-EA-DIFF-01:HDF5:FilePath") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.hdf,0,1)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:HDF5:FilePath_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:FilePathExists_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)FILE_PATH_EXISTS") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:CreateDirectory") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)CREATE_DIR") - field(VAL, "0" ) - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:CreateDirectory_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)CREATE_DIR") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -# Filename -record(waveform, "BL45P-EA-DIFF-01:HDF5:FileName") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.hdf,0,1)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:HDF5:FileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:FileNumber") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)FILE_NUMBER") - field(VAL, "1") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:FileNumber_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)FILE_NUMBER") - field(SCAN, "I/O Intr") -} - -# Autoincrement flag -record(bo, "BL45P-EA-DIFF-01:HDF5:AutoIncrement") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)AUTO_INCREMENT") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:AutoIncrement_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)AUTO_INCREMENT") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# File template -record(waveform, "BL45P-EA-DIFF-01:HDF5:FileTemplate") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.hdf,0,1)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:HDF5:FileTemplate_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Full filename, including path -record(waveform, "BL45P-EA-DIFF-01:HDF5:FullFileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)FULL_FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Autosave flag -record(bo, "BL45P-EA-DIFF-01:HDF5:AutoSave") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:AutoSave_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# Write file -record(busy, "BL45P-EA-DIFF-01:HDF5:WriteFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)WRITE_FILE") - field(ZNAM, "Done") - field(ONAM, "Write") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:WriteFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)WRITE_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Writing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -# Read file -record(busy, "BL45P-EA-DIFF-01:HDF5:ReadFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)READ_FILE") - field(ZNAM, "Done") - field(ONAM, "Read") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:ReadFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)READ_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Reading") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -# File data format -record(mbbo, "BL45P-EA-DIFF-01:HDF5:FileFormat") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)FILE_FORMAT") - field(VAL, "0") - field(ZRST, "Undefined") - field(ZRVL, "0") - field(ONST, "Invalid") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:HDF5:FileFormat_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)FILE_FORMAT") - field(ZRST, "netCDF") - field(ZRVL, "0") - field(ONST, "Undefined") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -# File save mode -record(mbbo, "BL45P-EA-DIFF-01:HDF5:FileWriteMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)WRITE_MODE") - field(VAL, "0") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:HDF5:FileWriteMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)WRITE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -# Capture data -record(busy, "BL45P-EA-DIFF-01:HDF5:Capture") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)CAPTURE") - field(ZNAM, "Done") - field(ONAM, "Capture") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:Capture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)CAPTURE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Capturing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:NumCapture") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)NUM_CAPTURE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:NumCapture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)NUM_CAPTURE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:NumCaptured_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)NUM_CAPTURED") - field(SCAN, "I/O Intr") -} - -# Delete driver file flag -record(bo, "BL45P-EA-DIFF-01:HDF5:DeleteDriverFile") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)DELETE_DRIVER_FILE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:DeleteDriverFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)DELETE_DRIVER_FILE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:WriteStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)WRITE_STATUS") - field(ZNAM, "Write OK") - field(ZSV, "NO_ALARM") - field(ONAM, "Write error") - field(OSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-DIFF-01:HDF5:WriteMessage") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)WRITE_MESSAGE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:HDF5:LazyOpen") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)FILE_LAZY_OPEN") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:LazyOpen_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)FILE_LAZY_OPEN") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:TempSuffix") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)FILE_TEMP_SUFFIX") - field(VAL, "") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:TempSuffix_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)FILE_TEMP_SUFFIX") - field(VAL, "") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:HDF5:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:HDF5:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:HDF5:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:HDF5:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:HDF5:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:HDF5:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:HDF5:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:HDF5:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:HDF5:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:HDF5:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:HDF5:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:HDF5:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:HDF5:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:HDF5:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.hdf,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:HDF5:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.hdf,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:HDF5:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:HDF5:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:HDF5:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:HDF5:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:HDF5:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:HDF5:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:HDF5:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:HDF5:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:HDF5:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:HDF5:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.hdf,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:HDF5:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:HDF5:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:HDF5:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:HDF5:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:HDF5:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:HDF5:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:HDF5:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.hdf,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:HDF5:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.hdf,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:HDF5:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:HDF5:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.hdf,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:HDF5:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.hdf,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:HDF5:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:HDF5:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:HDF5:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:HDF5:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:HDF5:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)NDARRAY_PORT") - field(VAL, "DIFF.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:HDF5:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:HDF5:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.hdf,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:HDF5:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.hdf,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:HDF5:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:HDF5:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:HDF5:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:HDF5:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:HDF5:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:HDF5:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:HDF5:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:HDF5:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.hdf,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:HDF5:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.hdf,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:HDF5:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.hdf,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:HDF5:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:HDF5:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:HDF5:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:HDF5:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:HDF5:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:HDF5:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:HDF5:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:HDF5:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:HDF5:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:HDF5:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:HDF5:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:HDF5:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:HDF5:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:HDF5:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:HDF5:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:HDF5:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:HDF5:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:HDF5:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.hdf,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:HDF5:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.hdf,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:HDF5:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:HDF5:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:HDF5:SortSize") - field(OUT, "BL45P-EA-DIFF-01:HDF5:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:HDF5:AsynIO") -{ - field(PORT, "DIFF.hdf") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# Flush data to file -record(busy, "BL45P-EA-DIFF-01:HDF5:FlushNow") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_SWMRFlushNow") - field(ZNAM, "Done") - field(ONAM, "Flush") -} - -# We replace some fields in records defined in NDFile.template -# File data format -record(mbbo, "BL45P-EA-DIFF-01:HDF5:FileFormat") -{ - field(ZRST, "HDF5") - field(ZRVL, "0") - field(ONST, "Invalid") - field(ONVL, "1") -} - -record(mbbi, "BL45P-EA-DIFF-01:HDF5:FileFormat_RBV") -{ - field(ZRST, "HDF5") - field(ZRVL, "0") - field(ONST, "Undefined") - field(ONVL, "1") -} - -record(bo, "BL45P-EA-DIFF-01:HDF5:ChunkSizeAuto") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_chunkSizeAuto") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:ChunkSizeAuto_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_chunkSizeAuto") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:NumRowChunks") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_nRowChunks") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:NumRowChunks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_nRowChunks") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:NumColChunks") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_nColChunks") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:NumColChunks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_nColChunks") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ChunkSize2") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize2") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ChunkSize2_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize2") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ChunkSize3") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize3") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ChunkSize3_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ChunkSize4") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize4") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ChunkSize4_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize4") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ChunkSize5") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize5") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ChunkSize5_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize5") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ChunkSize6") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize6") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ChunkSize6_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize6") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ChunkSize7") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize7") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ChunkSize7_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize7") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ChunkSize8") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize8") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ChunkSize8_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize8") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ChunkSize9") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize9") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ChunkSize9_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_chunkSize9") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:NumFramesChunks") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_nFramesChunks") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:NumFramesChunks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_nFramesChunks") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:NDAttributeChunk") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_NDAttributeChunk") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:NDAttributeChunk_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_NDAttributeChunk") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:BoundaryAlign") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_chunkBoundaryAlign") - field(PINI, "YES") - field(VAL, "0") - field(EGU, "bytes") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:BoundaryAlign_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_chunkBoundaryAlign") - field(SCAN, "I/O Intr") - field(EGU, "bytes") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:BoundaryThreshold") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_chunkBoundaryThreshold") - field(PINI, "YES") - field(VAL, "1") - field(EGU, "bytes") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:BoundaryThreshold_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_chunkBoundaryThreshold") - field(SCAN, "I/O Intr") - field(EGU, "bytes") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:NumExtraDims") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_nExtraDims") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:NumExtraDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_nExtraDims") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimSizeN") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSizeN") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimSizeN_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSizeN") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:ExtraDimNameN_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimNameN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimSizeX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSizeX") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSizeX") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:ExtraDimNameX_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimNameX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimSizeY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSizeY") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSizeY") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:ExtraDimNameY_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimNameY") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimSize3") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSize3") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimSize3_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSize3") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:ExtraDimName3_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimName3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimSize4") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSize4") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimSize4_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSize4") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:ExtraDimName4_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimName4") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimSize5") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSize5") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimSize5_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSize5") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:ExtraDimName5_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimName5") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimSize6") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSize6") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimSize6_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSize6") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:ExtraDimName6_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimName6") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimSize7") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSize7") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimSize7_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSize7") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:ExtraDimName7_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimName7") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimSize8") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSize8") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimSize8_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSize8") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:ExtraDimName8_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimName8") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimSize9") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSize9") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimSize9_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimSize9") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:ExtraDimName9_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimName9") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:HDF5:StoreAttr") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_storeAttributes") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:StoreAttr_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_storeAttributes") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(bo, "BL45P-EA-DIFF-01:HDF5:StorePerform") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_storePerformance") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:StorePerform_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_storePerformance") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(ai, "BL45P-EA-DIFF-01:HDF5:RunTime") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_totalRuntime") - field(SCAN, "I/O Intr") - field(PREC, "3") - field(EGU, "s") -} - -record(ai, "BL45P-EA-DIFF-01:HDF5:IOSpeed") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_totalIoSpeed") - field(SCAN, "I/O Intr") - field(PREC, "1") - field(EGU, "Mbit/s") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:NumFramesFlush") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_flushNthFrame") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:NumFramesFlush_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_flushNthFrame") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:HDF5:Compression") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_compressionType") - field(PINI, "YES") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "N-bit") - field(ONVL, "1") - field(TWST, "szip") - field(TWVL, "2") - field(THST, "zlib") - field(THVL, "3") - field(FRST, "Blosc") - field(FRVL, "4") - field(FVST, "BSLZ4") - field(FVVL, "5") - field(SXST, "LZ4") - field(SXVL, "6") - field(SVST, "JPEG") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:HDF5:Compression_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_compressionType") - field(SCAN, "I/O Intr") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "N-bit") - field(ONVL, "1") - field(TWST, "szip") - field(TWVL, "2") - field(THST, "zlib") - field(THVL, "3") - field(FRST, "Blosc") - field(FRVL, "4") - field(FVST, "BSLZ4") - field(FVVL, "5") - field(SXST, "LZ4") - field(SXVL, "6") - field(SVST, "JPEG") - field(SVVL, "7") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:NumDataBits") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_nbitsPrecision") - field(PINI, "YES") - field(EGU, "bit") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:NumDataBits_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_nbitsPrecision") - field(SCAN, "I/O Intr") - field(EGU, "bit") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:DataBitsOffset") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_nbitsOffset") - field(PINI, "YES") - field(EGU, "bit") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:DataBitsOffset_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_nbitsOffset") - field(SCAN, "I/O Intr") - field(EGU, "bit") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:SZipNumPixels") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_szipNumPixels") - field(PINI, "YES") - field(EGU, "bit") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:SZipNumPixels_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_szipNumPixels") - field(SCAN, "I/O Intr") - field(EGU, "bit") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ZLevel") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_zCompressLevel") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ZLevel_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_zCompressLevel") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-DIFF-01:HDF5:BloscShuffle") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_bloscShuffleType") - field(PINI, "YES") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "Byte") - field(ONVL, "1") - field(TWST, "Bit") - field(TWVL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:HDF5:BloscShuffle_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_bloscShuffleType") - field(SCAN, "I/O Intr") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "Byte") - field(ONVL, "1") - field(TWST, "Bit") - field(TWVL, "2") -} - -record(mbbo, "BL45P-EA-DIFF-01:HDF5:BloscCompressor") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_bloscCompressor") - field(PINI, "YES") - field(ZRST, "BloscLZ") - field(ZRVL, "0") - field(ONST, "LZ4") - field(ONVL, "1") - field(TWST, "LZ4HC") - field(TWVL, "2") - field(THST, "SNAPPY") - field(THVL, "3") - field(FRST, "ZLIB") - field(FRVL, "4") - field(FVST, "ZSTD") - field(FVVL, "5") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:HDF5:BloscCompressor_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_bloscCompressor") - field(SCAN, "I/O Intr") - field(ZRST, "BloscLZ") - field(ZRVL, "0") - field(ONST, "LZ4") - field(ONVL, "1") - field(TWST, "LZ4HC") - field(TWVL, "2") - field(THST, "SNAPPY") - field(THVL, "3") - field(FRST, "ZLIB") - field(FRVL, "4") - field(FVST, "ZSTD") - field(FVVL, "5") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:BloscLevel") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_bloscCompressLevel") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:BloscLevel_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_bloscCompressLevel") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:JPEGQuality") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_jpegQuality") - field(VAL, "90") - field(DRVL, "1") - field(DRVH, "100") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:JPEGQuality_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_jpegQuality") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:HDF5:DimAttDatasets") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_dimAttDatasets") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:DimAttDatasets_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_dimAttDatasets") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# File path. -# % autosave 2 -#record(waveform, "BL45P-EA-DIFF-01:HDF5:XMLPath") -#{ -# field(PINI, "YES") -# field(DTYP, "asynOctetWrite") -# field(INP, "@asyn(DIFF.hdf,0,1)HDF5_layoutDirectory") -# field(FTVL, "CHAR") -# field(NELM, "256") -#} - -record(waveform, "BL45P-EA-DIFF-01:HDF5:XMLErrorMsg_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_layoutErrorMsg") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:XMLValid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_layoutValid") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -# Filename -# % autosave 2 -record(waveform, "BL45P-EA-DIFF-01:HDF5:XMLFileName") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_layoutFilename") - field(FTVL, "CHAR") - field(NELM, "2048") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-DIFF-01:HDF5:XMLFileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_layoutFilename") - field(FTVL, "CHAR") - field(NELM, "2048") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:SWMRSupported_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_SWMRSupported") - field(SCAN, "I/O Intr") - field(ZNAM, "Not Supported") - field(ONAM, "Supported") -} - -record(bo, "BL45P-EA-DIFF-01:HDF5:SWMRMode") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_SWMRMode") - field(PINI, "YES") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:SWMRMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_SWMRMode") - field(SCAN, "I/O Intr") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:SWMRActive_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_SWMRRunning") - field(SCAN, "I/O Intr") - field(ZNAM, "Off") - field(ONAM, "Active") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:SWMRCbCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_SWMRCbCounter") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:HDF5:PositionMode") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posRunning") - field(PINI, "YES") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(bi, "BL45P-EA-DIFF-01:HDF5:PositionMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posRunning") - field(SCAN, "I/O Intr") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosNameDimN") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posNameDimN") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosNameDimN_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posNameDimN") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosNameDimX") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posNameDimX") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosNameDimX_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posNameDimX") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosNameDimY") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posNameDimY") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosNameDimY_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posNameDimY") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosNameDim3") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posNameDim3") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosNameDim3_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posNameDim3") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosNameDim4") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posNameDim4") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosNameDim4_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posNameDim4") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosNameDim5") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posNameDim5") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosNameDim5_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posNameDim5") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosNameDim6") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posNameDim6") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosNameDim6_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posNameDim6") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosNameDim7") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posNameDim7") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosNameDim7_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posNameDim7") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosNameDim8") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posNameDim8") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosNameDim8_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posNameDim8") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosNameDim9") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posNameDim9") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosNameDim9_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posNameDim9") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosIndexDimN") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDimN") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosIndexDimN_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDimN") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosIndexDimX") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDimX") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosIndexDimX_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDimX") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosIndexDimY") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDimY") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosIndexDimY_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDimY") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosIndexDim3") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDim3") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosIndexDim3_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDim3") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosIndexDim4") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDim4") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosIndexDim4_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDim4") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosIndexDim5") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDim5") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosIndexDim5_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDim5") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosIndexDim6") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDim6") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosIndexDim6_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDim6") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosIndexDim7") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDim7") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosIndexDim7_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDim7") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosIndexDim8") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDim8") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosIndexDim8_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDim8") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:HDF5:PosIndexDim9") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDim9") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-DIFF-01:HDF5:PosIndexDim9_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_posIndexDim9") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:HDF5:FillValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_fillValue") - field(PINI, "YES") - field(PREC, "1") -} - -record(ai, "BL45P-EA-DIFF-01:HDF5:FillValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_fillValue") - field(SCAN, "I/O Intr") - field(PREC, "1") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunkX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunkX") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunkX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunkX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunkY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunkY") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunkY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunkY") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunk3") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunk3") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunk3_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunk3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunk4") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunk4") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunk4_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunk4") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunk5") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunk5") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunk5_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunk5") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunk6") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunk6") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunk6_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunk6") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunk7") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunk7") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunk7_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunk7") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunk8") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunk8") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunk8_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunk8") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunk9") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunk9") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:HDF5:ExtraDimChunk9_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.hdf,0,1)HDF5_extraDimChunk9") - field(SCAN, "I/O Intr") -} -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, QUALITY, Jpeg Quality in percent -# % macro, MAXW, Maximum Jpeg Width -# % macro, MAXH, Maximum Jpeg Height -# % macro, SETW, Set initial Jpeg Width -# % macro, SETH, Set initial Jpeg Height -# % gui, DET.mjpg, edmtab, ffmpegStream.edl, P=BL45P-EA-MAP-01,R=:MJPG: - - -# # \file -# # ffmpegServer contains a very simple http server based on -# # nullhttpd. If a file named -# # \.jpg is requested for any ffmpegStream object named \, then it -# # will return the last NDArray received by the object compressed to jpeg. If -# # \.mjpg is requested then it will return an mjpg stream over http to the -# # client. Otherwise, it will return an index page listing all the available -# # streams. -# # \section ffmpegStream_setup Setup -# # - In the database, an instance of NDPluginBase is required, followed by an -# # instance of this template. -# # - In the startup scripts, call ffmpegServerConfigure() once per IOC to setup -# # the http server, then call ffmpegStreamConfigure() once per ffmpegStream -# # instance to setup the areadetector plugin -# # - see \ref build_instructions -# # \section ffmpegStream_screenshots Screenshots -# # \image html server.png "Index page for ffmpegServer" -# # \image html ffmpegStreamEdm.png "Edm screen for ffmpegStream" - -# This associates a BOY screen with the template -# % gui, DET.mjpg, boydetail,ffmpegServerApp_opi/mjpg_detail.opi, P=BL45P-EA-MAP-01, R=:MJPG:, DESC=MPEG Viewer -# % gui, DET.mjpg, boyembed, ffmpegServerApp_opi/mjpg_embed_box.opi, P=BL45P-EA-MAP-01, R=:MJPG:, DESC=MPEG Viewer -# % gui, DET.mjpg, boyembed, ffmpegServerApp_opi/mjpg_embed.opi, P=BL45P-EA-MAP-01, R=:MJPG:, DESC=MPEG Viewer - -# Info -# % gui, DET.mjpg, groupHeading, Info -# % gui, DET.mjpg, readback, Port name, BL45P-EA-MAP-01:MJPG:PortName_RBV -# % gui, DET.mjpg, readback, Plugin type, BL45P-EA-MAP-01:MJPG:PluginType_RBV -# Input -# % gui, DET.mjpg, demandString, Input, BL45P-EA-MAP-01:MJPG:NDArrayPort -# % gui, DET.mjpg, readback, Input, BL45P-EA-MAP-01:MJPG:NDArrayPort_RBV - -# % gui, DET.mjpg, groupHeading, Callback -# % gui, DET.mjpg, enum, Callbacks, BL45P-EA-MAP-01:MJPG:EnableCallbacks -# % gui, DET.mjpg, statusbits, Callbacks, BL45P-EA-MAP-01:MJPG:EnableCallbacks_RBV -# % gui, DET.mjpg, demand, Min Callback Time, BL45P-EA-MAP-01:MJPG:MinCallbackTime -# % gui, DET.mjpg, readback, Min Callback Time, BL45P-EA-MAP-01:MJPG:MinCallbackTime_RBV -# % gui, DET.mjpg, enum, Block Callbacks, BL45P-EA-MAP-01:MJPG:BlockingCallbacks -# % gui, DET.mjpg, statusbits, Block Callbacks, BL45P-EA-MAP-01:MJPG:BlockingCallbacks_RBV - -# % gui, DET.mjpg, groupHeading, Counters -# % gui, DET.mjpg, demand, Array Counter, BL45P-EA-MAP-01:MJPG:ArrayCounter -# % gui, DET.mjpg, readback, Array Counter, BL45P-EA-MAP-01:MJPG:ArrayCounter_RBV -# % gui, DET.mjpg, readback, Array Rate (fps), BL45P-EA-MAP-01:MJPG:ArrayRate_RBV -# % gui, DET.mjpg, readback, Queue Use, BL45P-EA-MAP-01:MJPG:QueueUse -# % gui, DET.mjpg, readback, Queue Size, BL45P-EA-MAP-01:MJPG:QueueSize -# % gui, DET.mjpg, demand, Dropped Arrays, BL45P-EA-MAP-01:MJPG:DroppedArrays -# % gui, DET.mjpg, readback, Dropped Arrays, BL45P-EA-MAP-01:MJPG:DroppedArrays_RBV - -# % gui, DET.mjpg, groupHeading, Array Settings -# % gui, DET.mjpg, readback, Num Dimensions, BL45P-EA-MAP-01:MJPG:NDimensions_RBV -# % gui, DET.mjpg, readback, Dim 0 Size, BL45P-EA-MAP-01:MJPG:ArraySize0_RBV -# % gui, DET.mjpg, readback, Dim 1 Size, BL45P-EA-MAP-01:MJPG:ArraySize1_RBV -# % gui, DET.mjpg, readback, Dim 2 Size, BL45P-EA-MAP-01:MJPG:ArraySize2_RBV -# % gui, DET.mjpg, readback, Input Data Type, BL45P-EA-MAP-01:MJPG:DataType_RBV -# % gui, DET.mjpg, readback, Colour Mode, BL45P-EA-MAP-01:MJPG:ColorMode_RBV -# % gui, DET.mjpg, readback, Bayer Pattern, BL45P-EA-MAP-01:MJPG:BayerPattern_RBV -# % gui, DET.mjpg, readback, Unique id, BL45P-EA-MAP-01:MJPG:UniqueId_RBV -# % gui, DET.mjpg, readback, Timestamp, BL45P-EA-MAP-01:MJPG:TimeStamp_RBV - -# Video -# % gui, DET.mjpg, groupHeading, Video Settings -# % gui, DET.mjpg, readback, Host, BL45P-EA-MAP-01:MJPG:HOST_RBV -# % gui, DET.mjpg, readback, Host port, BL45P-EA-MAP-01:MJPG:HTTP_PORT_RBV -# % gui, DET.mjpg, readback, Num clients, BL45P-EA-MAP-01:MJPG:CLIENTS_RBV -# % gui, DET.mjpg, demand, JPEG Quality, BL45P-EA-MAP-01:MJPG:QUALITY -# % gui, DET.mjpg, readback, JPEG Quality, BL45P-EA-MAP-01:MJPG:QUALITY_RBV -# % gui, DET.mjpg, demand, Max Width, BL45P-EA-MAP-01:MJPG:MAXW -# % gui, DET.mjpg, readback, Max Width, BL45P-EA-MAP-01:MJPG:MAXW_RBV -# % gui, DET.mjpg, demand, Max Height, BL45P-EA-MAP-01:MJPG:MAXH -# % gui, DET.mjpg, readback, Max Height, BL45P-EA-MAP-01:MJPG:MAXH_RBV -# % gui, DET.mjpg, enum, Always On, BL45P-EA-MAP-01:MJPG:ALWAYS_ON -# % gui, DET.mjpg, readback, Always On, BL45P-EA-MAP-01:MJPG:ALWAYS_ON_RBV -# % gui, DET.mjpg, readback, Snapshot URL, BL45P-EA-MAP-01:MJPG:JPG_URL_RBV -# % gui, DET.mjpg, readback, Streaming URL, BL45P-EA-MAP-01:MJPG:MJPG_URL_RBV -# % gui, DET.mjpg, enum, Show Grid, BL45P-EA-MAP-01:MJPG:GRID -# % gui, DET.mjpg, demand, X Position, BL45P-EA-MAP-01:MJPG:GX -# % gui, DET.mjpg, demand, Y Position, BL45P-EA-MAP-01:MJPG:GY -# % gui, DET.mjpg, demand, Spacing, BL45P-EA-MAP-01:MJPG:GS -# % gui, DET.mjpg, demand, Colour RGB, BL45P-EA-MAP-01:MJPG:GCOL -# % gui, DET.mjpg, command, Fast Viewer -# % gui, DET.mjpg, command, Fallback Viewer -# % gui, DET.mjpg, command, Firefox (slow) -# % gui, DET.mjpg, command, Firefox (snapshot) - - -# Memory -# % gui, DET.mjpg, groupHeading, Memory -# % gui, DET.mjpg, readback, Max memory, BL45P-EA-MAP-01:MJPG:PoolMaxMem -# % gui, DET.mjpg, readback, Max buffers, BL45P-EA-MAP-01:MJPG:PoolMaxBuffers -# % gui, DET.mjpg, readback, Used memory, BL45P-EA-MAP-01:MJPG:PoolUsedMem -# % gui, DET.mjpg, readback, Allocated buffers, BL45P-EA-MAP-01:MJPG:PoolAllocBuffers -# % gui, DET.mjpg, readback, Free buffers, BL45P-EA-MAP-01:MJPG:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:MJPG:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.mjpg,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:MJPG:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.mjpg,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:MJPG:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.mjpg,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:MJPG:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.mjpg,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:MJPG:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.mjpg,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:MJPG:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.mjpg,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:MJPG:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.mjpg,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:MJPG:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.mjpg,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:MJPG:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:MJPG:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:MJPG:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:MJPG:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:MJPG:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:MJPG:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:MJPG:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:MJPG:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:MJPG:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:MJPG:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:MJPG:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:MJPG:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:MJPG:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:MJPG:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.mjpg,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:MJPG:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.mjpg,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:MJPG:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:MJPG:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:MJPG:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:MJPG:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:MJPG:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:MJPG:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.mjpg,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:MJPG:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:MJPG:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:MJPG:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:MJPG:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:MJPG:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:MJPG:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.mjpg,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:MJPG:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:MJPG:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:MJPG:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:MJPG:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:MJPG:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:MJPG:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:MJPG:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:MJPG:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.mjpg,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:MJPG:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.mjpg,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:MJPG:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:MJPG:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.mjpg,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:MJPG:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.mjpg,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:MJPG:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:MJPG:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:MJPG:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:MJPG:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:MJPG:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:MJPG:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:MJPG:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:MJPG:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.mjpg,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:MJPG:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.mjpg,0,1)NDARRAY_PORT") - field(VAL, "DET.over") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:MJPG:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.mjpg,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:MJPG:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:MJPG:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:MJPG:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:MJPG:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.mjpg,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:MJPG:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.mjpg,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:MJPG:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:MJPG:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:MJPG:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:MJPG:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:MJPG:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:MJPG:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:MJPG:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:MJPG:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.mjpg,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:MJPG:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.mjpg,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:MJPG:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.mjpg,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:MJPG:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:MJPG:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:MJPG:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:MJPG:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:MJPG:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:MJPG:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:MJPG:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:MJPG:QueueSize") - field(OUT, "BL45P-EA-MAP-01:MJPG:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:MJPG:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:MJPG:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:MJPG:QueueSize") - field(OUT, "BL45P-EA-MAP-01:MJPG:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:MJPG:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:MJPG:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:MJPG:QueueSize") - field(OUT, "BL45P-EA-MAP-01:MJPG:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:MJPG:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:MJPG:QueueSize") - field(INPB, "BL45P-EA-MAP-01:MJPG:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:MJPG:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:MJPG:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:MJPG:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:MJPG:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.mjpg,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:MJPG:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.mjpg,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:MJPG:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:MJPG:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:MJPG:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:MJPG:SortSize") - field(OUT, "BL45P-EA-MAP-01:MJPG:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:MJPG:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:MJPG:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:MJPG:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:MJPG:AsynIO") -{ - field(PORT, "DET.mjpg") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# # JPEG Quality -record(ao, "BL45P-EA-MAP-01:MJPG:QUALITY") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg 0)FFMPEG_QUALITY") - field(VAL, "100") - field(DRVH, "100") - field(DRVL, "0") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -# # JPEG Quality Readback from driver -record(ai, "BL45P-EA-MAP-01:MJPG:QUALITY_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg 0)FFMPEG_QUALITY") -} - -# # Maximum jpg width -record(ao, "BL45P-EA-MAP-01:MJPG:MAXW") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg 0)FFMPEG_MAXW") - field(VAL, "1600") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -# # Maximum jpg width Readback from driver -record(ai, "BL45P-EA-MAP-01:MJPG:MAXW_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg 0)FFMPEG_MAXW") -} - -# # Maximum jpg height -record(ao, "BL45P-EA-MAP-01:MJPG:MAXH") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg 0)FFMPEG_MAXH") - field(VAL, "1200") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -# # Maximum jpg height Readback from driver -record(ai, "BL45P-EA-MAP-01:MJPG:MAXH_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg 0)FFMPEG_MAXH") -} - -# # Set jpg width -record(ao, "BL45P-EA-MAP-01:MJPG:SETW") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg 0)FFMPEG_SETW") - field(VAL, "0") - field(PINI, "1") -} - -# # Set jpg width Readback from driver -record(ai, "BL45P-EA-MAP-01:MJPG:SETW_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg 0)FFMPEG_SETW") -} - -# # Set jpg height -record(ao, "BL45P-EA-MAP-01:MJPG:SETH") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg 0)FFMPEG_SETH") - field(VAL, "0") - field(PINI, "1") -} - -# # Set jpg height Readback from driver -record(ai, "BL45P-EA-MAP-01:MJPG:SETH_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg 0)FFMPEG_SETH") -} - -# # Toggle False colour mode -record(bo, "BL45P-EA-MAP-01:MJPG:FALSE_COL") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg 0)FFMPEG_FALSE_COL") - field(ZNAM, "Off") - field(ONAM, "On") - field(VAL, "0") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -# # False colour mode readback from driver -record(bi, "BL45P-EA-MAP-01:MJPG:FALSE_COL_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg 0)FFMPEG_FALSE_COL") - field(ZNAM, "Off") - field(ONAM, "On") -} - -# # Always produce jpegs, even when no-one is listening -record(bo, "BL45P-EA-MAP-01:MJPG:ALWAYS_ON") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.mjpg 0)FFMPEG_ALWAYS_ON") - field(ZNAM, "Off") - field(ONAM, "On") - field(VAL, "0") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -# # Always on readback from driver -record(bi, "BL45P-EA-MAP-01:MJPG:ALWAYS_ON_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg 0)FFMPEG_ALWAYS_ON") - field(ZNAM, "Off") - field(ONAM, "On") -} - -# # HTTP Port to connect an mjpg viewer to -record(ai, "BL45P-EA-MAP-01:MJPG:HTTP_PORT_RBV") -{ - field(PINI, "1") - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg 0)FFMPEG_HTTP_PORT") - field(SCAN, "I/O Intr") -} - -# # Hostname of the HTTP server -record(stringin, "BL45P-EA-MAP-01:MJPG:HOST_RBV") -{ - field(PINI, "1") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.mjpg 0)FFMPEG_HOST") - field(SCAN, "I/O Intr") -} - -# # Number of clients -record(ai, "BL45P-EA-MAP-01:MJPG:CLIENTS_RBV") -{ - field(PINI, "1") - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.mjpg 0)FFMPEG_CLIENTS") - field(SCAN, "I/O Intr") -} - -# # URL of the jpg snapshot -record(waveform, "BL45P-EA-MAP-01:MJPG:JPG_URL_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.mjpg 0)FFMPEG_JPG_URL") - field(FTVL, "UCHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# # URL of the mjpg stream -record(waveform, "BL45P-EA-MAP-01:MJPG:MJPG_URL_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.mjpg 0)FFMPEG_MJPG_URL") - field(FTVL, "UCHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -#% autosave 2 -#% archiver 10 Monitor -record(longout, "BL45P-EA-MAP-01:MJPG:GX") { - field(VAL, "100") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -#% autosave 2 -#% archiver 10 Monitor -record(longout, "BL45P-EA-MAP-01:MJPG:GY") { - field(VAL, "100") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -#% autosave 2 -#% archiver 10 Monitor -record(bo, "BL45P-EA-MAP-01:MJPG:GRID") { - field(VAL, "0") - field(ZNAM, "Off") - field(ONAM, "On") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -#% autosave 2 -#% archiver 10 Monitor -# default white -record(longout, "BL45P-EA-MAP-01:MJPG:GCOL") { - field(VAL, "0xFFFFFF") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -#% autosave 2 -#% archiver 10 Monitor -record(longout, "BL45P-EA-MAP-01:MJPG:GS") { - field(VAL, "200") - field(DRVL, "10") - field(DRVH, "2000") - field(PINI, "1") - info(autosaveFields, "VAL") -} -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, QUALITY, Jpeg Quality in percent -# % macro, MAXW, Maximum Jpeg Width -# % macro, MAXH, Maximum Jpeg Height -# % macro, SETW, Set initial Jpeg Width -# % macro, SETH, Set initial Jpeg Height -# % gui, DIFF.mjpg, edmtab, ffmpegStream.edl, P=BL45P-EA-DIFF-01,R=:MJPG: - - -# # \file -# # ffmpegServer contains a very simple http server based on -# # nullhttpd. If a file named -# # \.jpg is requested for any ffmpegStream object named \, then it -# # will return the last NDArray received by the object compressed to jpeg. If -# # \.mjpg is requested then it will return an mjpg stream over http to the -# # client. Otherwise, it will return an index page listing all the available -# # streams. -# # \section ffmpegStream_setup Setup -# # - In the database, an instance of NDPluginBase is required, followed by an -# # instance of this template. -# # - In the startup scripts, call ffmpegServerConfigure() once per IOC to setup -# # the http server, then call ffmpegStreamConfigure() once per ffmpegStream -# # instance to setup the areadetector plugin -# # - see \ref build_instructions -# # \section ffmpegStream_screenshots Screenshots -# # \image html server.png "Index page for ffmpegServer" -# # \image html ffmpegStreamEdm.png "Edm screen for ffmpegStream" - -# This associates a BOY screen with the template -# % gui, DIFF.mjpg, boydetail,ffmpegServerApp_opi/mjpg_detail.opi, P=BL45P-EA-DIFF-01, R=:MJPG:, DESC=MPEG Viewer -# % gui, DIFF.mjpg, boyembed, ffmpegServerApp_opi/mjpg_embed_box.opi, P=BL45P-EA-DIFF-01, R=:MJPG:, DESC=MPEG Viewer -# % gui, DIFF.mjpg, boyembed, ffmpegServerApp_opi/mjpg_embed.opi, P=BL45P-EA-DIFF-01, R=:MJPG:, DESC=MPEG Viewer - -# Info -# % gui, DIFF.mjpg, groupHeading, Info -# % gui, DIFF.mjpg, readback, Port name, BL45P-EA-DIFF-01:MJPG:PortName_RBV -# % gui, DIFF.mjpg, readback, Plugin type, BL45P-EA-DIFF-01:MJPG:PluginType_RBV -# Input -# % gui, DIFF.mjpg, demandString, Input, BL45P-EA-DIFF-01:MJPG:NDArrayPort -# % gui, DIFF.mjpg, readback, Input, BL45P-EA-DIFF-01:MJPG:NDArrayPort_RBV - -# % gui, DIFF.mjpg, groupHeading, Callback -# % gui, DIFF.mjpg, enum, Callbacks, BL45P-EA-DIFF-01:MJPG:EnableCallbacks -# % gui, DIFF.mjpg, statusbits, Callbacks, BL45P-EA-DIFF-01:MJPG:EnableCallbacks_RBV -# % gui, DIFF.mjpg, demand, Min Callback Time, BL45P-EA-DIFF-01:MJPG:MinCallbackTime -# % gui, DIFF.mjpg, readback, Min Callback Time, BL45P-EA-DIFF-01:MJPG:MinCallbackTime_RBV -# % gui, DIFF.mjpg, enum, Block Callbacks, BL45P-EA-DIFF-01:MJPG:BlockingCallbacks -# % gui, DIFF.mjpg, statusbits, Block Callbacks, BL45P-EA-DIFF-01:MJPG:BlockingCallbacks_RBV - -# % gui, DIFF.mjpg, groupHeading, Counters -# % gui, DIFF.mjpg, demand, Array Counter, BL45P-EA-DIFF-01:MJPG:ArrayCounter -# % gui, DIFF.mjpg, readback, Array Counter, BL45P-EA-DIFF-01:MJPG:ArrayCounter_RBV -# % gui, DIFF.mjpg, readback, Array Rate (fps), BL45P-EA-DIFF-01:MJPG:ArrayRate_RBV -# % gui, DIFF.mjpg, readback, Queue Use, BL45P-EA-DIFF-01:MJPG:QueueUse -# % gui, DIFF.mjpg, readback, Queue Size, BL45P-EA-DIFF-01:MJPG:QueueSize -# % gui, DIFF.mjpg, demand, Dropped Arrays, BL45P-EA-DIFF-01:MJPG:DroppedArrays -# % gui, DIFF.mjpg, readback, Dropped Arrays, BL45P-EA-DIFF-01:MJPG:DroppedArrays_RBV - -# % gui, DIFF.mjpg, groupHeading, Array Settings -# % gui, DIFF.mjpg, readback, Num Dimensions, BL45P-EA-DIFF-01:MJPG:NDimensions_RBV -# % gui, DIFF.mjpg, readback, Dim 0 Size, BL45P-EA-DIFF-01:MJPG:ArraySize0_RBV -# % gui, DIFF.mjpg, readback, Dim 1 Size, BL45P-EA-DIFF-01:MJPG:ArraySize1_RBV -# % gui, DIFF.mjpg, readback, Dim 2 Size, BL45P-EA-DIFF-01:MJPG:ArraySize2_RBV -# % gui, DIFF.mjpg, readback, Input Data Type, BL45P-EA-DIFF-01:MJPG:DataType_RBV -# % gui, DIFF.mjpg, readback, Colour Mode, BL45P-EA-DIFF-01:MJPG:ColorMode_RBV -# % gui, DIFF.mjpg, readback, Bayer Pattern, BL45P-EA-DIFF-01:MJPG:BayerPattern_RBV -# % gui, DIFF.mjpg, readback, Unique id, BL45P-EA-DIFF-01:MJPG:UniqueId_RBV -# % gui, DIFF.mjpg, readback, Timestamp, BL45P-EA-DIFF-01:MJPG:TimeStamp_RBV - -# Video -# % gui, DIFF.mjpg, groupHeading, Video Settings -# % gui, DIFF.mjpg, readback, Host, BL45P-EA-DIFF-01:MJPG:HOST_RBV -# % gui, DIFF.mjpg, readback, Host port, BL45P-EA-DIFF-01:MJPG:HTTP_PORT_RBV -# % gui, DIFF.mjpg, readback, Num clients, BL45P-EA-DIFF-01:MJPG:CLIENTS_RBV -# % gui, DIFF.mjpg, demand, JPEG Quality, BL45P-EA-DIFF-01:MJPG:QUALITY -# % gui, DIFF.mjpg, readback, JPEG Quality, BL45P-EA-DIFF-01:MJPG:QUALITY_RBV -# % gui, DIFF.mjpg, demand, Max Width, BL45P-EA-DIFF-01:MJPG:MAXW -# % gui, DIFF.mjpg, readback, Max Width, BL45P-EA-DIFF-01:MJPG:MAXW_RBV -# % gui, DIFF.mjpg, demand, Max Height, BL45P-EA-DIFF-01:MJPG:MAXH -# % gui, DIFF.mjpg, readback, Max Height, BL45P-EA-DIFF-01:MJPG:MAXH_RBV -# % gui, DIFF.mjpg, enum, Always On, BL45P-EA-DIFF-01:MJPG:ALWAYS_ON -# % gui, DIFF.mjpg, readback, Always On, BL45P-EA-DIFF-01:MJPG:ALWAYS_ON_RBV -# % gui, DIFF.mjpg, readback, Snapshot URL, BL45P-EA-DIFF-01:MJPG:JPG_URL_RBV -# % gui, DIFF.mjpg, readback, Streaming URL, BL45P-EA-DIFF-01:MJPG:MJPG_URL_RBV -# % gui, DIFF.mjpg, enum, Show Grid, BL45P-EA-DIFF-01:MJPG:GRID -# % gui, DIFF.mjpg, demand, X Position, BL45P-EA-DIFF-01:MJPG:GX -# % gui, DIFF.mjpg, demand, Y Position, BL45P-EA-DIFF-01:MJPG:GY -# % gui, DIFF.mjpg, demand, Spacing, BL45P-EA-DIFF-01:MJPG:GS -# % gui, DIFF.mjpg, demand, Colour RGB, BL45P-EA-DIFF-01:MJPG:GCOL -# % gui, DIFF.mjpg, command, Fast Viewer -# % gui, DIFF.mjpg, command, Fallback Viewer -# % gui, DIFF.mjpg, command, Firefox (slow) -# % gui, DIFF.mjpg, command, Firefox (snapshot) - - -# Memory -# % gui, DIFF.mjpg, groupHeading, Memory -# % gui, DIFF.mjpg, readback, Max memory, BL45P-EA-DIFF-01:MJPG:PoolMaxMem -# % gui, DIFF.mjpg, readback, Max buffers, BL45P-EA-DIFF-01:MJPG:PoolMaxBuffers -# % gui, DIFF.mjpg, readback, Used memory, BL45P-EA-DIFF-01:MJPG:PoolUsedMem -# % gui, DIFF.mjpg, readback, Allocated buffers, BL45P-EA-DIFF-01:MJPG:PoolAllocBuffers -# % gui, DIFF.mjpg, readback, Free buffers, BL45P-EA-DIFF-01:MJPG:PoolFreeBuffers - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:MJPG:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.mjpg,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:MJPG:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.mjpg,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:MJPG:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.mjpg,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:MJPG:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.mjpg,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:MJPG:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.mjpg,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:MJPG:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.mjpg,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:MJPG:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.mjpg,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:MJPG:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.mjpg,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:MJPG:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:MJPG:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:MJPG:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:MJPG:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:MJPG:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:MJPG:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:MJPG:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:MJPG:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:MJPG:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:MJPG:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:MJPG:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:MJPG:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:MJPG:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.mjpg,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:MJPG:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.mjpg,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:MJPG:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:MJPG:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:MJPG:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:MJPG:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.mjpg,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:MJPG:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:MJPG:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:MJPG:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:MJPG:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:MJPG:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:MJPG:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.mjpg,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:MJPG:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:MJPG:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:MJPG:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:MJPG:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:MJPG:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:MJPG:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:MJPG:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:MJPG:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.mjpg,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:MJPG:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.mjpg,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:MJPG:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:MJPG:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.mjpg,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:MJPG:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.mjpg,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:MJPG:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:MJPG:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:MJPG:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:MJPG:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:MJPG:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.mjpg,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:MJPG:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.mjpg,0,1)NDARRAY_PORT") - field(VAL, "DIFF.over") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:MJPG:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.mjpg,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:MJPG:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:MJPG:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:MJPG:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:MJPG:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.mjpg,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:MJPG:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.mjpg,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:MJPG:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:MJPG:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:MJPG:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:MJPG:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:MJPG:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:MJPG:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:MJPG:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:MJPG:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.mjpg,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:MJPG:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.mjpg,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:MJPG:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.mjpg,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:MJPG:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:MJPG:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:MJPG:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:MJPG:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:MJPG:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:MJPG:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:MJPG:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:MJPG:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:MJPG:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:MJPG:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:MJPG:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:MJPG:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:MJPG:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:MJPG:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:MJPG:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:MJPG:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:MJPG:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:MJPG:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:MJPG:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:MJPG:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:MJPG:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.mjpg,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:MJPG:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.mjpg,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:MJPG:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:MJPG:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:MJPG:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:MJPG:SortSize") - field(OUT, "BL45P-EA-DIFF-01:MJPG:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:MJPG:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:MJPG:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:MJPG:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:MJPG:AsynIO") -{ - field(PORT, "DIFF.mjpg") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# # JPEG Quality -record(ao, "BL45P-EA-DIFF-01:MJPG:QUALITY") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg 0)FFMPEG_QUALITY") - field(VAL, "100") - field(DRVH, "100") - field(DRVL, "0") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -# # JPEG Quality Readback from driver -record(ai, "BL45P-EA-DIFF-01:MJPG:QUALITY_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg 0)FFMPEG_QUALITY") -} - -# # Maximum jpg width -record(ao, "BL45P-EA-DIFF-01:MJPG:MAXW") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg 0)FFMPEG_MAXW") - field(VAL, "1600") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -# # Maximum jpg width Readback from driver -record(ai, "BL45P-EA-DIFF-01:MJPG:MAXW_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg 0)FFMPEG_MAXW") -} - -# # Maximum jpg height -record(ao, "BL45P-EA-DIFF-01:MJPG:MAXH") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg 0)FFMPEG_MAXH") - field(VAL, "1200") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -# # Maximum jpg height Readback from driver -record(ai, "BL45P-EA-DIFF-01:MJPG:MAXH_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg 0)FFMPEG_MAXH") -} - -# # Set jpg width -record(ao, "BL45P-EA-DIFF-01:MJPG:SETW") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg 0)FFMPEG_SETW") - field(VAL, "0") - field(PINI, "1") -} - -# # Set jpg width Readback from driver -record(ai, "BL45P-EA-DIFF-01:MJPG:SETW_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg 0)FFMPEG_SETW") -} - -# # Set jpg height -record(ao, "BL45P-EA-DIFF-01:MJPG:SETH") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg 0)FFMPEG_SETH") - field(VAL, "0") - field(PINI, "1") -} - -# # Set jpg height Readback from driver -record(ai, "BL45P-EA-DIFF-01:MJPG:SETH_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg 0)FFMPEG_SETH") -} - -# # Toggle False colour mode -record(bo, "BL45P-EA-DIFF-01:MJPG:FALSE_COL") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg 0)FFMPEG_FALSE_COL") - field(ZNAM, "Off") - field(ONAM, "On") - field(VAL, "0") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -# # False colour mode readback from driver -record(bi, "BL45P-EA-DIFF-01:MJPG:FALSE_COL_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg 0)FFMPEG_FALSE_COL") - field(ZNAM, "Off") - field(ONAM, "On") -} - -# # Always produce jpegs, even when no-one is listening -record(bo, "BL45P-EA-DIFF-01:MJPG:ALWAYS_ON") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.mjpg 0)FFMPEG_ALWAYS_ON") - field(ZNAM, "Off") - field(ONAM, "On") - field(VAL, "0") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -# # Always on readback from driver -record(bi, "BL45P-EA-DIFF-01:MJPG:ALWAYS_ON_RBV") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg 0)FFMPEG_ALWAYS_ON") - field(ZNAM, "Off") - field(ONAM, "On") -} - -# # HTTP Port to connect an mjpg viewer to -record(ai, "BL45P-EA-DIFF-01:MJPG:HTTP_PORT_RBV") -{ - field(PINI, "1") - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg 0)FFMPEG_HTTP_PORT") - field(SCAN, "I/O Intr") -} - -# # Hostname of the HTTP server -record(stringin, "BL45P-EA-DIFF-01:MJPG:HOST_RBV") -{ - field(PINI, "1") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.mjpg 0)FFMPEG_HOST") - field(SCAN, "I/O Intr") -} - -# # Number of clients -record(ai, "BL45P-EA-DIFF-01:MJPG:CLIENTS_RBV") -{ - field(PINI, "1") - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.mjpg 0)FFMPEG_CLIENTS") - field(SCAN, "I/O Intr") -} - -# # URL of the jpg snapshot -record(waveform, "BL45P-EA-DIFF-01:MJPG:JPG_URL_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.mjpg 0)FFMPEG_JPG_URL") - field(FTVL, "UCHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# # URL of the mjpg stream -record(waveform, "BL45P-EA-DIFF-01:MJPG:MJPG_URL_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.mjpg 0)FFMPEG_MJPG_URL") - field(FTVL, "UCHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -#% autosave 2 -#% archiver 10 Monitor -record(longout, "BL45P-EA-DIFF-01:MJPG:GX") { - field(VAL, "100") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -#% autosave 2 -#% archiver 10 Monitor -record(longout, "BL45P-EA-DIFF-01:MJPG:GY") { - field(VAL, "100") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -#% autosave 2 -#% archiver 10 Monitor -record(bo, "BL45P-EA-DIFF-01:MJPG:GRID") { - field(VAL, "0") - field(ZNAM, "Off") - field(ONAM, "On") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -#% autosave 2 -#% archiver 10 Monitor -# default white -record(longout, "BL45P-EA-DIFF-01:MJPG:GCOL") { - field(VAL, "0xFFFFFF") - field(PINI, "1") - info(autosaveFields, "VAL") -} - -#% autosave 2 -#% archiver 10 Monitor -record(longout, "BL45P-EA-DIFF-01:MJPG:GS") { - field(VAL, "200") - field(DRVL, "10") - field(DRVH, "2000") - field(PINI, "1") - info(autosaveFields, "VAL") -} -#=================================================================# -# Template file: NDPva.template -# Database for the records specific to the pvAccess plugin -# Bruno Martins -# May 5, 2015 - -#% macro, P, Device Prefix -#% macro, R, Device Suffix -#% macro, PORT, Asyn Port name -#% macro, ADDR, Asyn Port address -#% macro, TIMEOUT, Asyn timeout - -# This associates the template with an edm screen -# % gui, DET.pva, edmtab, NDPvaPlugin.edl, P=BL45P-EA-MAP-01,R=:PVA: - -# This associates a BOY screen with the template -# % gui, DET.pva, boydetail,ADApp_opi/dls/pva_detail.opi, P=BL45P-EA-MAP-01, R=:PVA:, DESC=PVAccess -# % gui, DET.pva, boyembed, ADApp_opi/dls/pva_embed_box.opi, P=BL45P-EA-MAP-01, R=:PVA:, DESC=PVAccess -# % gui, DET.pva, boyembed, ADApp_opi/dls/pva_embed.opi, P=BL45P-EA-MAP-01, R=:PVA:, DESC=PVAccess - -# Info -# % gui, DET.pva, groupHeading, Info -# % gui, DET.pva, readback, Port name, BL45P-EA-MAP-01:PVA:PortName_RBV -# % gui, DET.pva, readback, Plugin type, BL45P-EA-MAP-01:PVA:PluginType_RBV -# Input -# % gui, DET.pva, demandString, Input, BL45P-EA-MAP-01:PVA:NDArrayPort -# % gui, DET.pva, readback, Input, BL45P-EA-MAP-01:PVA:NDArrayPort_RBV - -# % gui, DET.pva, groupHeading, Callback -# % gui, DET.pva, enum, Callbacks, BL45P-EA-MAP-01:PVA:EnableCallbacks -# % gui, DET.pva, statusbits, Callbacks, BL45P-EA-MAP-01:PVA:EnableCallbacks_RBV -# % gui, DET.pva, demand, Min Callback Time, BL45P-EA-MAP-01:PVA:MinCallbackTime -# % gui, DET.pva, readback, Min Callback Time, BL45P-EA-MAP-01:PVA:MinCallbackTime_RBV -# % gui, DET.pva, enum, Block Callbacks, BL45P-EA-MAP-01:PVA:BlockingCallbacks -# % gui, DET.pva, statusbits, Block Callbacks, BL45P-EA-MAP-01:PVA:BlockingCallbacks_RBV - -# % gui, DET.pva, groupHeading, Counters -# % gui, DET.pva, demand, Array Counter, BL45P-EA-MAP-01:PVA:ArrayCounter -# % gui, DET.pva, readback, Array Counter, BL45P-EA-MAP-01:PVA:ArrayCounter_RBV -# % gui, DET.pva, readback, Array Rate (fps), BL45P-EA-MAP-01:PVA:ArrayRate_RBV -# % gui, DET.pva, readback, Queue Use, BL45P-EA-MAP-01:PVA:QueueUse -# % gui, DET.pva, readback, Queue Size, BL45P-EA-MAP-01:PVA:QueueSize -# % gui, DET.pva, demand, Dropped Arrays, BL45P-EA-MAP-01:PVA:DroppedArrays -# % gui, DET.pva, readback, Dropped Arrays, BL45P-EA-MAP-01:PVA:DroppedArrays_RBV - -# % gui, DET.pva, groupHeading, Array Settings -# % gui, DET.pva, readback, Num Dimensions, BL45P-EA-MAP-01:PVA:NDimensions_RBV -# % gui, DET.pva, readback, Dim 0 Size, BL45P-EA-MAP-01:PVA:ArraySize0_RBV -# % gui, DET.pva, readback, Dim 1 Size, BL45P-EA-MAP-01:PVA:ArraySize1_RBV -# % gui, DET.pva, readback, Dim 2 Size, BL45P-EA-MAP-01:PVA:ArraySize2_RBV -# % gui, DET.pva, readback, Input Data Type, BL45P-EA-MAP-01:PVA:DataType_RBV -# % gui, DET.pva, readback, Colour Mode, BL45P-EA-MAP-01:PVA:ColorMode_RBV -# % gui, DET.pva, readback, Bayer Pattern, BL45P-EA-MAP-01:PVA:BayerPattern_RBV -# % gui, DET.pva, readback, Unique id, BL45P-EA-MAP-01:PVA:UniqueId_RBV -# % gui, DET.pva, readback, Timestamp, BL45P-EA-MAP-01:PVA:TimeStamp_RBV - -# % gui, DET.pva, groupHeading, PVA Settings -# % gui, DET.pva, readback, PV Name, BL45P-EA-MAP-01:PVA:PvName_RBV - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:PVA:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.pva,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:PVA:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.pva,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:PVA:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.pva,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:PVA:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.pva,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:PVA:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.pva,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:PVA:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.pva,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:PVA:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.pva,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:PVA:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.pva,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:PVA:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:PVA:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:PVA:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:PVA:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:PVA:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:PVA:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:PVA:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:PVA:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:PVA:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:PVA:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:PVA:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:PVA:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:PVA:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:PVA:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:PVA:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.pva,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:PVA:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.pva,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:PVA:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:PVA:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:PVA:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:PVA:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:PVA:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:PVA:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.pva,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PVA:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:PVA:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:PVA:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:PVA:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:PVA:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:PVA:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:PVA:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.pva,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PVA:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PVA:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:PVA:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:PVA:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:PVA:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:PVA:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:PVA:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:PVA:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:PVA:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:PVA:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:PVA:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.pva,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:PVA:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.pva,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:PVA:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:PVA:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.pva,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:PVA:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.pva,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:PVA:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:PVA:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:PVA:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:PVA:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:PVA:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:PVA:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:PVA:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:PVA:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:PVA:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:PVA:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:PVA:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.pva,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:PVA:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.pva,0,1)NDARRAY_PORT") - field(VAL, "DET.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:PVA:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.pva,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:PVA:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:PVA:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:PVA:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:PVA:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PVA:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.pva,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:PVA:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.pva,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PVA:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:PVA:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:PVA:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:PVA:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:PVA:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:PVA:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:PVA:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:PVA:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.pva,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:PVA:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.pva,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:PVA:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.pva,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:PVA:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:PVA:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:PVA:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:PVA:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:PVA:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:PVA:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:PVA:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:PVA:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:PVA:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:PVA:QueueSize") - field(OUT, "BL45P-EA-MAP-01:PVA:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:PVA:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:PVA:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:PVA:QueueSize") - field(OUT, "BL45P-EA-MAP-01:PVA:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:PVA:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:PVA:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:PVA:QueueSize") - field(OUT, "BL45P-EA-MAP-01:PVA:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:PVA:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:PVA:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:PVA:QueueSize") - field(INPB, "BL45P-EA-MAP-01:PVA:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:PVA:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:PVA:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PVA:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:PVA:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:PVA:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:PVA:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.pva,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:PVA:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.pva,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:PVA:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:PVA:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:PVA:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:PVA:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:PVA:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:PVA:SortSize") - field(OUT, "BL45P-EA-MAP-01:PVA:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:PVA:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:PVA:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:PVA:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.pva,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:PVA:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.pva,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:PVA:AsynIO") -{ - field(PORT, "DET.pva") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# New records for NDPluginPva - -record(waveform, "BL45P-EA-MAP-01:PVA:PvName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.pva,0,1)PV_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDPva.template -# Database for the records specific to the pvAccess plugin -# Bruno Martins -# May 5, 2015 - -#% macro, P, Device Prefix -#% macro, R, Device Suffix -#% macro, PORT, Asyn Port name -#% macro, ADDR, Asyn Port address -#% macro, TIMEOUT, Asyn timeout - -# This associates the template with an edm screen -# % gui, DIFF.pva, edmtab, NDPvaPlugin.edl, P=BL45P-EA-DIFF-01,R=:PVA: - -# This associates a BOY screen with the template -# % gui, DIFF.pva, boydetail,ADApp_opi/dls/pva_detail.opi, P=BL45P-EA-DIFF-01, R=:PVA:, DESC=PVAccess -# % gui, DIFF.pva, boyembed, ADApp_opi/dls/pva_embed_box.opi, P=BL45P-EA-DIFF-01, R=:PVA:, DESC=PVAccess -# % gui, DIFF.pva, boyembed, ADApp_opi/dls/pva_embed.opi, P=BL45P-EA-DIFF-01, R=:PVA:, DESC=PVAccess - -# Info -# % gui, DIFF.pva, groupHeading, Info -# % gui, DIFF.pva, readback, Port name, BL45P-EA-DIFF-01:PVA:PortName_RBV -# % gui, DIFF.pva, readback, Plugin type, BL45P-EA-DIFF-01:PVA:PluginType_RBV -# Input -# % gui, DIFF.pva, demandString, Input, BL45P-EA-DIFF-01:PVA:NDArrayPort -# % gui, DIFF.pva, readback, Input, BL45P-EA-DIFF-01:PVA:NDArrayPort_RBV - -# % gui, DIFF.pva, groupHeading, Callback -# % gui, DIFF.pva, enum, Callbacks, BL45P-EA-DIFF-01:PVA:EnableCallbacks -# % gui, DIFF.pva, statusbits, Callbacks, BL45P-EA-DIFF-01:PVA:EnableCallbacks_RBV -# % gui, DIFF.pva, demand, Min Callback Time, BL45P-EA-DIFF-01:PVA:MinCallbackTime -# % gui, DIFF.pva, readback, Min Callback Time, BL45P-EA-DIFF-01:PVA:MinCallbackTime_RBV -# % gui, DIFF.pva, enum, Block Callbacks, BL45P-EA-DIFF-01:PVA:BlockingCallbacks -# % gui, DIFF.pva, statusbits, Block Callbacks, BL45P-EA-DIFF-01:PVA:BlockingCallbacks_RBV - -# % gui, DIFF.pva, groupHeading, Counters -# % gui, DIFF.pva, demand, Array Counter, BL45P-EA-DIFF-01:PVA:ArrayCounter -# % gui, DIFF.pva, readback, Array Counter, BL45P-EA-DIFF-01:PVA:ArrayCounter_RBV -# % gui, DIFF.pva, readback, Array Rate (fps), BL45P-EA-DIFF-01:PVA:ArrayRate_RBV -# % gui, DIFF.pva, readback, Queue Use, BL45P-EA-DIFF-01:PVA:QueueUse -# % gui, DIFF.pva, readback, Queue Size, BL45P-EA-DIFF-01:PVA:QueueSize -# % gui, DIFF.pva, demand, Dropped Arrays, BL45P-EA-DIFF-01:PVA:DroppedArrays -# % gui, DIFF.pva, readback, Dropped Arrays, BL45P-EA-DIFF-01:PVA:DroppedArrays_RBV - -# % gui, DIFF.pva, groupHeading, Array Settings -# % gui, DIFF.pva, readback, Num Dimensions, BL45P-EA-DIFF-01:PVA:NDimensions_RBV -# % gui, DIFF.pva, readback, Dim 0 Size, BL45P-EA-DIFF-01:PVA:ArraySize0_RBV -# % gui, DIFF.pva, readback, Dim 1 Size, BL45P-EA-DIFF-01:PVA:ArraySize1_RBV -# % gui, DIFF.pva, readback, Dim 2 Size, BL45P-EA-DIFF-01:PVA:ArraySize2_RBV -# % gui, DIFF.pva, readback, Input Data Type, BL45P-EA-DIFF-01:PVA:DataType_RBV -# % gui, DIFF.pva, readback, Colour Mode, BL45P-EA-DIFF-01:PVA:ColorMode_RBV -# % gui, DIFF.pva, readback, Bayer Pattern, BL45P-EA-DIFF-01:PVA:BayerPattern_RBV -# % gui, DIFF.pva, readback, Unique id, BL45P-EA-DIFF-01:PVA:UniqueId_RBV -# % gui, DIFF.pva, readback, Timestamp, BL45P-EA-DIFF-01:PVA:TimeStamp_RBV - -# % gui, DIFF.pva, groupHeading, PVA Settings -# % gui, DIFF.pva, readback, PV Name, BL45P-EA-DIFF-01:PVA:PvName_RBV - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:PVA:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.pva,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:PVA:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.pva,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:PVA:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.pva,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:PVA:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.pva,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:PVA:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.pva,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:PVA:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.pva,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:PVA:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.pva,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:PVA:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.pva,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:PVA:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:PVA:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:PVA:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:PVA:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:PVA:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:PVA:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:PVA:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:PVA:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:PVA:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:PVA:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:PVA:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:PVA:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:PVA:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:PVA:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.pva,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:PVA:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.pva,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:PVA:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:PVA:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:PVA:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:PVA:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:PVA:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:PVA:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.pva,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:PVA:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:PVA:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:PVA:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:PVA:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:PVA:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:PVA:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.pva,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:PVA:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:PVA:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:PVA:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:PVA:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:PVA:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:PVA:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:PVA:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:PVA:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.pva,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:PVA:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.pva,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:PVA:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:PVA:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.pva,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:PVA:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.pva,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:PVA:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:PVA:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:PVA:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:PVA:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:PVA:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:PVA:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:PVA:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:PVA:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.pva,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:PVA:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.pva,0,1)NDARRAY_PORT") - field(VAL, "DIFF.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:PVA:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.pva,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:PVA:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:PVA:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:PVA:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PVA:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.pva,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:PVA:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.pva,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PVA:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:PVA:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:PVA:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:PVA:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:PVA:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:PVA:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:PVA:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:PVA:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.pva,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:PVA:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.pva,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:PVA:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.pva,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:PVA:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:PVA:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:PVA:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:PVA:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:PVA:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:PVA:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:PVA:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:PVA:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:PVA:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:PVA:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:PVA:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:PVA:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:PVA:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:PVA:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:PVA:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:PVA:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:PVA:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:PVA:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:PVA:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:PVA:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:PVA:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:PVA:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:PVA:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:PVA:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.pva,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:PVA:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.pva,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:PVA:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:PVA:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:PVA:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:PVA:SortSize") - field(OUT, "BL45P-EA-DIFF-01:PVA:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:PVA:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:PVA:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.pva,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:PVA:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.pva,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:PVA:AsynIO") -{ - field(PORT, "DIFF.pva") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# New records for NDPluginPva - -record(waveform, "BL45P-EA-DIFF-01:PVA:PvName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.pva,0,1)PV_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} -#% macro, P, Device Prefix -#% macro, R, Device Suffix -#% macro, PORT, Asyn Port name -#% macro, ADDR, Asyn Port address -#% macro, TIMEOUT, Asyn timeout -#% macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -# This associates the template with an edm screen -# % gui, DET.POS, edmtab, NDPosPlugin.edl, P=BL45P-EA-MAP-01,R=:POS: - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:POS:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.POS,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:POS:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.POS,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:POS:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.POS,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:POS:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.POS,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:POS:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.POS,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:POS:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.POS,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:POS:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.POS,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:POS:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.POS,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-MAP-01:POS:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-MAP-01:POS:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-MAP-01:POS:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:POS:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-MAP-01:POS:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-MAP-01:POS:AcquireBusy PP") -} - -record(busy, "BL45P-EA-MAP-01:POS:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:POS:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:POS:ClearAcquireBusy") { - field(INPA, "BL45P-EA-MAP-01:POS:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-MAP-01:POS:AcquireBusy PP") -} - -record(bo, "BL45P-EA-MAP-01:POS:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-MAP-01:POS:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-MAP-01:POS:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-MAP-01:POS:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DET.POS,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim0SA") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim0SA") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize0") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize0") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim0SA") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim1SA") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim1SA") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize1") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize1") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim1SA") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim2SA") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim2SA") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize2") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize2") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim2SA") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim3SA") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim3SA") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize3") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize3") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim3SA") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim4SA") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim4SA") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize4") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize4") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim4SA") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim5SA") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim5SA") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize5") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize5") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim5SA") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim6SA") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim6SA") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize6") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize6") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim6SA") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim7SA") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim7SA") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize7") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize7") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim7SA") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim8SA") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim8SA") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize8") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize8") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim8SA") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim9SA") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim9SA") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize9") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize9") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim9SA") -} - - -record(waveform, "BL45P-EA-MAP-01:POS:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DET.POS,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim0SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim1SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim2SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim3SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim4SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim5SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim6SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim7SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim8SA_RBV") - field(FLNK, "BL45P-EA-MAP-01:POS:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-MAP-01:POS:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-MAP-01:POS:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-MAP-01:POS:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-MAP-01:POS:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-MAP-01:POS:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.POS,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:POS:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:POS:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:POS:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-MAP-01:POS:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-MAP-01:POS:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-MAP-01:POS:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-MAP-01:POS:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.POS,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:POS:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:POS:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-MAP-01:POS:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-MAP-01:POS:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-MAP-01:POS:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:POS:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-MAP-01:POS:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-MAP-01:POS:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:POS:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:POS:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:POS:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.POS,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-MAP-01:POS:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.POS,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-MAP-01:POS:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-MAP-01:POS:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.POS,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-MAP-01:POS:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.POS,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-MAP-01:POS:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-MAP-01:POS:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:POS:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-MAP-01:POS:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-MAP-01:POS:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-MAP-01:POS:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-MAP-01:POS:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-MAP-01:POS:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-MAP-01:POS:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-MAP-01:POS:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-MAP-01:POS:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.POS,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-MAP-01:POS:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.POS,0,1)NDARRAY_PORT") - field(VAL, "DET.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-MAP-01:POS:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.POS,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:POS:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-MAP-01:POS:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-MAP-01:POS:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:POS:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:POS:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.POS,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:POS:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.POS,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:POS:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-MAP-01:POS:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-MAP-01:POS:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-MAP-01:POS:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-MAP-01:POS:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-MAP-01:POS:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-MAP-01:POS:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-MAP-01:POS:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.POS,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-MAP-01:POS:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.POS,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-MAP-01:POS:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.POS,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-MAP-01:POS:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-MAP-01:POS:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-MAP-01:POS:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-MAP-01:POS:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:POS:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:POS:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:POS:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-MAP-01:POS:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:POS:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:POS:QueueSize") - field(OUT, "BL45P-EA-MAP-01:POS:QueueFree.LOW") - field(FLNK, "BL45P-EA-MAP-01:POS:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-MAP-01:POS:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-MAP-01:POS:QueueSize") - field(OUT, "BL45P-EA-MAP-01:POS:QueueUse.HIGH") - field(FLNK, "BL45P-EA-MAP-01:POS:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-MAP-01:POS:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-MAP-01:POS:QueueSize") - field(OUT, "BL45P-EA-MAP-01:POS:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-MAP-01:POS:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-MAP-01:POS:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-MAP-01:POS:QueueSize") - field(INPB, "BL45P-EA-MAP-01:POS:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-MAP-01:POS:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:POS:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:POS:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-MAP-01:POS:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-MAP-01:POS:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-MAP-01:POS:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DET.POS,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-MAP-01:POS:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DET.POS,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:POS:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:POS:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-MAP-01:POS:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:POS:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-MAP-01:POS:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-MAP-01:POS:SortSize") - field(OUT, "BL45P-EA-MAP-01:POS:SortFree.LOW") -} - -record(longout, "BL45P-EA-MAP-01:POS:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-MAP-01:POS:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:POS:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-MAP-01:POS:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-MAP-01:POS:AsynIO") -{ - field(PORT, "DET.POS") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# File path. -record(waveform, "BL45P-EA-MAP-01:POS:Filename") -{ - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DET.POS,0,1)NDPos_Filename") - field(FTVL, "CHAR") - field(NELM, "1000000") -} - -record(waveform, "BL45P-EA-MAP-01:POS:Filename_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.POS,0)NDPos_Filename") - field(FTVL, "CHAR") - field(NELM, "1000000") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-MAP-01:POS:FileValid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0)NDPos_FileValid") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -record(busy, "BL45P-EA-MAP-01:POS:Running") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0)NDPos_Running") - field(ZNAM, "Idle") - field(ONAM, "Running") - field(VAL, "0") -} - -record(bi, "BL45P-EA-MAP-01:POS:Running_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0)NDPos_Running") - field(ZNAM, "Idle") - field(ONAM, "Running") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-MAP-01:POS:Reset") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0)NDPos_Restart") -} - -record(bo, "BL45P-EA-MAP-01:POS:Delete") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0)NDPos_Delete") -} - -record(bo, "BL45P-EA-MAP-01:POS:Mode") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0)NDPos_Mode") - field(ZNAM, "Discard") - field(ONAM, "Keep") -} - -record(bi, "BL45P-EA-MAP-01:POS:Mode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0)NDPos_Mode") - field(ZNAM, "Discard") - field(ONAM, "Keep") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:POS:Qty_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0)NDPos_CurrentQty") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:POS:Index_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0)NDPos_CurrentIndex") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-MAP-01:POS:Position_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.POS,0)NDPos_CurrentPos") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:POS:Missing") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0)NDPos_MissingFrames") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-MAP-01:POS:Missing_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0)NDPos_MissingFrames") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:POS:Duplicate") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0)NDPos_DuplicateFrames") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-MAP-01:POS:Duplicate_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0)NDPos_DuplicateFrames") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-MAP-01:POS:ExpectedID_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0)NDPos_ExpectedID") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-MAP-01:POS:IDName") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DET.POS,0)NDPos_IDName") - field(PINI, "NO") -} - -record(stringin, "BL45P-EA-MAP-01:POS:IDName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DET.POS,0)NDPos_IDName") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:POS:IDStart") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0)NDPos_IDStart") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-MAP-01:POS:IDStart_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0)NDPos_IDStart") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-MAP-01:POS:IDDifference") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DET.POS,0)NDPos_IDDifference") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-MAP-01:POS:IDDifference_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DET.POS,0)NDPos_IDDifference") - field(SCAN, "I/O Intr") -} - -#% macro, P, Device Prefix -#% macro, R, Device Suffix -#% macro, PORT, Asyn Port name -#% macro, ADDR, Asyn Port address -#% macro, TIMEOUT, Asyn timeout -#% macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -# This associates the template with an edm screen -# % gui, DIFF.POS, edmtab, NDPosPlugin.edl, P=BL45P-EA-DIFF-01,R=:POS: - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:POS:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.POS,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:POS:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.POS,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:POS:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.POS,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:POS:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.POS,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:POS:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.POS,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:POS:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.POS,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:POS:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.POS,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:POS:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.POS,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-DIFF-01:POS:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-DIFF-01:POS:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-DIFF-01:POS:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:POS:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-DIFF-01:POS:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-DIFF-01:POS:AcquireBusy PP") -} - -record(busy, "BL45P-EA-DIFF-01:POS:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:POS:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:POS:ClearAcquireBusy") { - field(INPA, "BL45P-EA-DIFF-01:POS:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-DIFF-01:POS:AcquireBusy PP") -} - -record(bo, "BL45P-EA-DIFF-01:POS:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-DIFF-01:POS:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-DIFF-01:POS:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-DIFF-01:POS:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(DIFF.POS,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim0SA") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim0SA") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize0") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize0") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim0SA") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim1SA") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim1SA") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize1") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize1") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim1SA") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim2SA") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim2SA") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize2") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize2") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim2SA") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim3SA") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim3SA") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize3") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize3") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim3SA") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim4SA") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim4SA") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize4") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize4") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim4SA") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim5SA") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim5SA") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize5") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize5") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim5SA") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim6SA") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim6SA") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize6") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize6") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim6SA") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim7SA") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim7SA") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize7") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize7") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim7SA") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim8SA") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim8SA") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize8") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize8") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim8SA") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim9SA") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim9SA") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize9") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize9") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim9SA") -} - - -record(waveform, "BL45P-EA-DIFF-01:POS:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(DIFF.POS,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim0SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim1SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim2SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim3SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim4SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim5SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim6SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim7SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim8SA_RBV") - field(FLNK, "BL45P-EA-DIFF-01:POS:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-DIFF-01:POS:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-DIFF-01:POS:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-DIFF-01:POS:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-DIFF-01:POS:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-DIFF-01:POS:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.POS,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:POS:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:POS:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:POS:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-DIFF-01:POS:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-DIFF-01:POS:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-DIFF-01:POS:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-DIFF-01:POS:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.POS,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:POS:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:POS:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-DIFF-01:POS:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-DIFF-01:POS:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:POS:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-DIFF-01:POS:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-DIFF-01:POS:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:POS:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:POS:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:POS:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.POS,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-DIFF-01:POS:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.POS,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-DIFF-01:POS:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-DIFF-01:POS:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.POS,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-DIFF-01:POS:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.POS,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-DIFF-01:POS:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-DIFF-01:POS:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:POS:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-DIFF-01:POS:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-DIFF-01:POS:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-DIFF-01:POS:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-DIFF-01:POS:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-DIFF-01:POS:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-DIFF-01:POS:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-DIFF-01:POS:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-DIFF-01:POS:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.POS,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-DIFF-01:POS:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.POS,0,1)NDARRAY_PORT") - field(VAL, "DIFF.DET") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-DIFF-01:POS:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.POS,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:POS:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-DIFF-01:POS:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-DIFF-01:POS:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:POS:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:POS:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.POS,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:POS:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.POS,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:POS:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-DIFF-01:POS:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-DIFF-01:POS:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-DIFF-01:POS:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-DIFF-01:POS:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-DIFF-01:POS:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-DIFF-01:POS:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-DIFF-01:POS:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.POS,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-DIFF-01:POS:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.POS,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-DIFF-01:POS:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.POS,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-DIFF-01:POS:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-DIFF-01:POS:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-DIFF-01:POS:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-DIFF-01:POS:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:POS:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:POS:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:POS:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:POS:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:POS:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:POS:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:POS:QueueFree.LOW") - field(FLNK, "BL45P-EA-DIFF-01:POS:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-DIFF-01:POS:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-DIFF-01:POS:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:POS:QueueUse.HIGH") - field(FLNK, "BL45P-EA-DIFF-01:POS:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-DIFF-01:POS:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-DIFF-01:POS:QueueSize") - field(OUT, "BL45P-EA-DIFF-01:POS:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-DIFF-01:POS:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-DIFF-01:POS:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-DIFF-01:POS:QueueSize") - field(INPB, "BL45P-EA-DIFF-01:POS:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-DIFF-01:POS:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:POS:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:POS:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-DIFF-01:POS:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-DIFF-01:POS:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-DIFF-01:POS:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(DIFF.POS,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-DIFF-01:POS:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(DIFF.POS,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:POS:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:POS:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-DIFF-01:POS:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:POS:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-DIFF-01:POS:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-DIFF-01:POS:SortSize") - field(OUT, "BL45P-EA-DIFF-01:POS:SortFree.LOW") -} - -record(longout, "BL45P-EA-DIFF-01:POS:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-DIFF-01:POS:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:POS:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-DIFF-01:POS:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-DIFF-01:POS:AsynIO") -{ - field(PORT, "DIFF.POS") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# File path. -record(waveform, "BL45P-EA-DIFF-01:POS:Filename") -{ - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(DIFF.POS,0,1)NDPos_Filename") - field(FTVL, "CHAR") - field(NELM, "1000000") -} - -record(waveform, "BL45P-EA-DIFF-01:POS:Filename_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.POS,0)NDPos_Filename") - field(FTVL, "CHAR") - field(NELM, "1000000") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-DIFF-01:POS:FileValid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0)NDPos_FileValid") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -record(busy, "BL45P-EA-DIFF-01:POS:Running") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0)NDPos_Running") - field(ZNAM, "Idle") - field(ONAM, "Running") - field(VAL, "0") -} - -record(bi, "BL45P-EA-DIFF-01:POS:Running_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0)NDPos_Running") - field(ZNAM, "Idle") - field(ONAM, "Running") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-DIFF-01:POS:Reset") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0)NDPos_Restart") -} - -record(bo, "BL45P-EA-DIFF-01:POS:Delete") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0)NDPos_Delete") -} - -record(bo, "BL45P-EA-DIFF-01:POS:Mode") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0)NDPos_Mode") - field(ZNAM, "Discard") - field(ONAM, "Keep") -} - -record(bi, "BL45P-EA-DIFF-01:POS:Mode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0)NDPos_Mode") - field(ZNAM, "Discard") - field(ONAM, "Keep") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:POS:Qty_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0)NDPos_CurrentQty") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:POS:Index_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0)NDPos_CurrentIndex") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-DIFF-01:POS:Position_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.POS,0)NDPos_CurrentPos") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:POS:Missing") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0)NDPos_MissingFrames") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-DIFF-01:POS:Missing_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0)NDPos_MissingFrames") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:POS:Duplicate") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0)NDPos_DuplicateFrames") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-DIFF-01:POS:Duplicate_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0)NDPos_DuplicateFrames") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-DIFF-01:POS:ExpectedID_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0)NDPos_ExpectedID") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-DIFF-01:POS:IDName") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(DIFF.POS,0)NDPos_IDName") - field(PINI, "NO") -} - -record(stringin, "BL45P-EA-DIFF-01:POS:IDName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(DIFF.POS,0)NDPos_IDName") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:POS:IDStart") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0)NDPos_IDStart") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-DIFF-01:POS:IDStart_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0)NDPos_IDStart") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-DIFF-01:POS:IDDifference") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(DIFF.POS,0)NDPos_IDDifference") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-DIFF-01:POS:IDDifference_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(DIFF.POS,0)NDPos_IDDifference") - field(SCAN, "I/O Intr") -} - diff --git a/iocs/bl45p-ea-ioc-01/config_src/ioc.boot b/iocs/bl45p-ea-ioc-01/config_src/ioc.boot deleted file mode 100755 index 0e4ee5c..0000000 --- a/iocs/bl45p-ea-ioc-01/config_src/ioc.boot +++ /dev/null @@ -1,526 +0,0 @@ -# This file was automatically generated on Mon 12 Apr 2021 10:33:57 BST from -# source: /scratch/work/bl45p-builder/etc/makeIocs/BL45P-EA-IOC-01.xml -# -# *** Please do not edit this file: edit the source file instead. *** -# -cd $(TOP) - -epicsEnvSet "EPICS_CA_MAX_ARRAY_BYTES", '6000000' -epicsEnvSet "EPICS_TS_MIN_WEST", '0' - - -# Loading libraries -# ----------------- - -# Device initialisation -# --------------------- - -cd $(TOP) - -dbLoadDatabase "dbd/ioc.dbd" -ioc_registerRecordDeviceDriver(pdbbase) - -aravisConfig("DET.DET", "172.23.59.11", -1, 0, 1) - -aravisConfig("DIFF.DET", "172.23.59.12", -1, 0, 1) - -# NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDROIConfigure("DET.roi", 16, 0, "DET.DET", 0, 0, 0, 0, 0, 1) - -# NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDROIConfigure("DET.rois.roi1", 16, 0, "DET.DET", 0, 0, 0, 0, 0, 1) - -# NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDROIConfigure("DET.rois.roi2", 16, 0, "DET.DET", 0, 0, 0, 0, 0, 1) - -# NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDROIConfigure("DET.rois.roi3", 16, 0, "DET.DET", 0, 0, 0, 0, 0, 1) - -# NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDROIConfigure("DET.rois.roi4", 16, 0, "DET.DET", 0, 0, 0, 0, 0, 1) - -# NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDROIConfigure("DET.rois.roi5", 16, 0, "DET.DET", 0, 0, 0, 0, 0, 1) - -# NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDROIConfigure("DET.rois.roi6", 16, 0, "DET.DET", 0, 0, 0, 0, 0, 1) - -# ADCore path for manual NDTimeSeries.template to find base plugin template -epicsEnvSet "EPICS_DB_INCLUDE_PATH", "$(ADCORE)/db" - -# NDStatsConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStatsConfigure("DET.stat", 16, 0, "DET.DET", 0, 0, 0, 0, 0, 1) -# NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) -NDTimeSeriesConfigure("DET.stat_TS", 16, 0, "DET.stat", 1, 23) -# Load time series records -dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=BL45P-EA-MAP-01,R=:STAT:TS:, PORT=DET.stat_TS ,ADDR=0,TIMEOUT=1,NDARRAY_PORT=DET.stat,NDARRAY_ADDR=1,NCHANS=1024,ENABLED=1") - -# NDStatsConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStatsConfigure("DET.stats.stat1", 16, 0, "DET.rois.roi1", 0, 0, 0, 0, 0, 1) -# NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) -NDTimeSeriesConfigure("DET.stats.stat1_TS", 16, 0, "DET.stats.stat1", 1, 23) -# Load time series records -dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=BL45P-EA-MAP-01,R=:STAT1:TS:, PORT=DET.stats.stat1_TS ,ADDR=0,TIMEOUT=1,NDARRAY_PORT=DET.stats.stat1,NDARRAY_ADDR=1,NCHANS=1024,ENABLED=1") - -# NDStatsConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStatsConfigure("DET.stats.stat2", 16, 0, "DET.rois.roi1", 0, 0, 0, 0, 0, 1) -# NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) -NDTimeSeriesConfigure("DET.stats.stat2_TS", 16, 0, "DET.stats.stat2", 1, 23) -# Load time series records -dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=BL45P-EA-MAP-01,R=:STAT2:TS:, PORT=DET.stats.stat2_TS ,ADDR=0,TIMEOUT=1,NDARRAY_PORT=DET.stats.stat2,NDARRAY_ADDR=1,NCHANS=1024,ENABLED=1") - -# NDStatsConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStatsConfigure("DET.stats.stat3", 16, 0, "DET.rois.roi1", 0, 0, 0, 0, 0, 1) -# NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) -NDTimeSeriesConfigure("DET.stats.stat3_TS", 16, 0, "DET.stats.stat3", 1, 23) -# Load time series records -dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=BL45P-EA-MAP-01,R=:STAT3:TS:, PORT=DET.stats.stat3_TS ,ADDR=0,TIMEOUT=1,NDARRAY_PORT=DET.stats.stat3,NDARRAY_ADDR=1,NCHANS=1024,ENABLED=1") - -# NDStatsConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStatsConfigure("DET.stats.stat4", 16, 0, "DET.rois.roi1", 0, 0, 0, 0, 0, 1) -# NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) -NDTimeSeriesConfigure("DET.stats.stat4_TS", 16, 0, "DET.stats.stat4", 1, 23) -# Load time series records -dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=BL45P-EA-MAP-01,R=:STAT4:TS:, PORT=DET.stats.stat4_TS ,ADDR=0,TIMEOUT=1,NDARRAY_PORT=DET.stats.stat4,NDARRAY_ADDR=1,NCHANS=1024,ENABLED=1") - -# NDStatsConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStatsConfigure("DET.stats.stat5", 16, 0, "DET.rois.roi1", 0, 0, 0, 0, 0, 1) -# NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) -NDTimeSeriesConfigure("DET.stats.stat5_TS", 16, 0, "DET.stats.stat5", 1, 23) -# Load time series records -dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=BL45P-EA-MAP-01,R=:STAT5:TS:, PORT=DET.stats.stat5_TS ,ADDR=0,TIMEOUT=1,NDARRAY_PORT=DET.stats.stat5,NDARRAY_ADDR=1,NCHANS=1024,ENABLED=1") - -# NDStatsConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStatsConfigure("DET.stats.stat6", 16, 0, "DET.rois.roi1", 0, 0, 0, 0, 0, 1) -# NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) -NDTimeSeriesConfigure("DET.stats.stat6_TS", 16, 0, "DET.stats.stat6", 1, 23) -# Load time series records -dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=BL45P-EA-MAP-01,R=:STAT6:TS:, PORT=DET.stats.stat6_TS ,ADDR=0,TIMEOUT=1,NDARRAY_PORT=DET.stats.stat6,NDARRAY_ADDR=1,NCHANS=1024,ENABLED=1") - -# NDStdArraysConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStdArraysConfigure("DET.arr", 2, 0, "DET.roi", 0, 0, 0, 0, 0, 1) - -# NDProcessConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) -NDProcessConfigure("DET.proc", 16, 0, "DET.DET", 0) - -# NDOverlayConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, NOverlays, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDOverlayConfigure("DET.over", 16, 0, "DET.proc", 0, 8, 0, 0, 0, 0, 1) - -# ffmpegFileConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory) -ffmpegFileConfigure ("DET.fimg", 16, 0, "DET.DET", 0, 50, 0) - -# NDFileTIFFConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) -NDFileTIFFConfigure("DET.tiff", 16, 0, "DET.DET", 0) - -# NDFileHDF5Configure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) -NDFileHDF5Configure("DET.hdf", 16, 0, "DET.DET", 0) - -ffmpegServerConfigure(8080) -# ffmpegStreamConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxMemory) -ffmpegStreamConfigure("DET.mjpg", 2, 0, "DET.over", "0", 0) - -# NDPvaConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, pvName, maxBuffers, maxMemory, priority, stackSize) -NDPvaConfigure("DET.pva", 16, 0, "DET.DET", 0, BL45P-EA-MAP-01:PVA:ARRAY, 0, 0, 0, 0) -startPVAServer - -# NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDROIConfigure("DIFF.roi", 16, 0, "DIFF.DET", 0, 0, 0, 0, 0, 1) - -# NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDROIConfigure("DIFF.rois.roi1", 16, 0, "DIFF.DET", 0, 0, 0, 0, 0, 1) - -# NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDROIConfigure("DIFF.rois.roi2", 16, 0, "DIFF.DET", 0, 0, 0, 0, 0, 1) - -# NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDROIConfigure("DIFF.rois.roi3", 16, 0, "DIFF.DET", 0, 0, 0, 0, 0, 1) - -# NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDROIConfigure("DIFF.rois.roi4", 16, 0, "DIFF.DET", 0, 0, 0, 0, 0, 1) - -# NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDROIConfigure("DIFF.rois.roi5", 16, 0, "DIFF.DET", 0, 0, 0, 0, 0, 1) - -# NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDROIConfigure("DIFF.rois.roi6", 16, 0, "DIFF.DET", 0, 0, 0, 0, 0, 1) - -# NDStatsConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStatsConfigure("DIFF.stat", 16, 0, "DIFF.DET", 0, 0, 0, 0, 0, 1) -# NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) -NDTimeSeriesConfigure("DIFF.stat_TS", 16, 0, "DIFF.stat", 1, 23) -# Load time series records -dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=BL45P-EA-DIFF-01,R=:STAT:TS:, PORT=DIFF.stat_TS ,ADDR=0,TIMEOUT=1,NDARRAY_PORT=DIFF.stat,NDARRAY_ADDR=1,NCHANS=1024,ENABLED=1") - -# NDStatsConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStatsConfigure("DIFF.stats.stat1", 16, 0, "DIFF.rois.roi1", 0, 0, 0, 0, 0, 1) -# NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) -NDTimeSeriesConfigure("DIFF.stats.stat1_TS", 16, 0, "DIFF.stats.stat1", 1, 23) -# Load time series records -dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=BL45P-EA-DIFF-01,R=:STAT1:TS:, PORT=DIFF.stats.stat1_TS ,ADDR=0,TIMEOUT=1,NDARRAY_PORT=DIFF.stats.stat1,NDARRAY_ADDR=1,NCHANS=1024,ENABLED=1") - -# NDStatsConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStatsConfigure("DIFF.stats.stat2", 16, 0, "DIFF.rois.roi1", 0, 0, 0, 0, 0, 1) -# NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) -NDTimeSeriesConfigure("DIFF.stats.stat2_TS", 16, 0, "DIFF.stats.stat2", 1, 23) -# Load time series records -dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=BL45P-EA-DIFF-01,R=:STAT2:TS:, PORT=DIFF.stats.stat2_TS ,ADDR=0,TIMEOUT=1,NDARRAY_PORT=DIFF.stats.stat2,NDARRAY_ADDR=1,NCHANS=1024,ENABLED=1") - -# NDStatsConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStatsConfigure("DIFF.stats.stat3", 16, 0, "DIFF.rois.roi1", 0, 0, 0, 0, 0, 1) -# NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) -NDTimeSeriesConfigure("DIFF.stats.stat3_TS", 16, 0, "DIFF.stats.stat3", 1, 23) -# Load time series records -dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=BL45P-EA-DIFF-01,R=:STAT3:TS:, PORT=DIFF.stats.stat3_TS ,ADDR=0,TIMEOUT=1,NDARRAY_PORT=DIFF.stats.stat3,NDARRAY_ADDR=1,NCHANS=1024,ENABLED=1") - -# NDStatsConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStatsConfigure("DIFF.stats.stat4", 16, 0, "DIFF.rois.roi1", 0, 0, 0, 0, 0, 1) -# NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) -NDTimeSeriesConfigure("DIFF.stats.stat4_TS", 16, 0, "DIFF.stats.stat4", 1, 23) -# Load time series records -dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=BL45P-EA-DIFF-01,R=:STAT4:TS:, PORT=DIFF.stats.stat4_TS ,ADDR=0,TIMEOUT=1,NDARRAY_PORT=DIFF.stats.stat4,NDARRAY_ADDR=1,NCHANS=1024,ENABLED=1") - -# NDStatsConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStatsConfigure("DIFF.stats.stat5", 16, 0, "DIFF.rois.roi1", 0, 0, 0, 0, 0, 1) -# NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) -NDTimeSeriesConfigure("DIFF.stats.stat5_TS", 16, 0, "DIFF.stats.stat5", 1, 23) -# Load time series records -dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=BL45P-EA-DIFF-01,R=:STAT5:TS:, PORT=DIFF.stats.stat5_TS ,ADDR=0,TIMEOUT=1,NDARRAY_PORT=DIFF.stats.stat5,NDARRAY_ADDR=1,NCHANS=1024,ENABLED=1") - -# NDStatsConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStatsConfigure("DIFF.stats.stat6", 16, 0, "DIFF.rois.roi1", 0, 0, 0, 0, 0, 1) -# NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) -NDTimeSeriesConfigure("DIFF.stats.stat6_TS", 16, 0, "DIFF.stats.stat6", 1, 23) -# Load time series records -dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=BL45P-EA-DIFF-01,R=:STAT6:TS:, PORT=DIFF.stats.stat6_TS ,ADDR=0,TIMEOUT=1,NDARRAY_PORT=DIFF.stats.stat6,NDARRAY_ADDR=1,NCHANS=1024,ENABLED=1") - -# NDStdArraysConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDStdArraysConfigure("DIFF.arr", 2, 0, "DIFF.roi", 0, 0, 0, 0, 0, 1) - -# NDProcessConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) -NDProcessConfigure("DIFF.proc", 16, 0, "DIFF.DET", 0) - -# NDOverlayConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, NOverlays, maxBuffers, maxMemory, priority, stackSize, maxThreads) -NDOverlayConfigure("DIFF.over", 16, 0, "DIFF.proc", 0, 8, 0, 0, 0, 0, 1) - -# ffmpegFileConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory) -ffmpegFileConfigure ("DIFF.fimg", 16, 0, "DIFF.DET", 0, 50, 0) - -# NDFileTIFFConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) -NDFileTIFFConfigure("DIFF.tiff", 16, 0, "DIFF.DET", 0) - -# NDFileHDF5Configure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) -NDFileHDF5Configure("DIFF.hdf", 16, 0, "DIFF.DET", 0) - -# ffmpegStreamConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxMemory) -ffmpegStreamConfigure("DIFF.mjpg", 2, 0, "DIFF.over", "0", 0) - -# NDPvaConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, pvName, maxBuffers, maxMemory, priority, stackSize) -NDPvaConfigure("DIFF.pva", 16, 0, "DIFF.DET", 0, BL45P-EA-DIFF-01:PVA:ARRAY, 0, 0, 0, 0) -startPVAServer - -# NDPosPluginConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize) -NDPosPluginConfigure("DET.POS", 1000, 0, "DET.DET", 0, 0, 0, 0, 0) - -# NDPosPluginConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize) -NDPosPluginConfigure("DIFF.POS", 1000, 0, "DIFF.DET", 0, 0, 0, 0, 0) - -# Final ioc initialisation -# ------------------------ -cd $(TOP) -dbLoadRecords $(THIS_DIR)/BL45P-EA-IOC-01_expanded.db -dbLoadRecords $(THIS_DIR)/BL45P-EA-IOC-01.db - -# Extra IOC commands -callbackSetQueueSize(10000) - -iocInit - -# set the stream port -dbpf "BL45P-EA-IOC-01:GC_GevSCPHostPort", "53000" - -# Extra post-init IOC commands -dbpf "BL45P-EA-MAP-01:FIMG:FileTemplate", "%s/%s_%d.avi" -dbpf "BL45P-EA-MAP-01:HDF5:FileTemplate", "%s/%s_%d.h5" -dbpf "BL45P-EA-DIFF-01:FIMG:FileTemplate", "%s/%s_%d.avi" -dbpf "BL45P-EA-DIFF-01:HDF5:FileTemplate", "%s/%s_%d.h5" - - -dbpf BL45P-EA-DIFF-01:STAT:NDAttributesFile, BL45P-EA-IOC-01App/data/DIFF.stat.xml -dbpf BL45P-EA-MAP-01:STAT6:NDAttributesFile, BL45P-EA-IOC-01App/data/DET.stats.stat6.xml -dbpf BL45P-EA-MAP-01:STAT:NDAttributesFile, BL45P-EA-IOC-01App/data/DET.stat.xml -dbpf BL45P-EA-MAP-01:STAT5:NDAttributesFile, BL45P-EA-IOC-01App/data/DET.stats.stat5.xml -dbpf BL45P-EA-MAP-01:STAT4:NDAttributesFile, BL45P-EA-IOC-01App/data/DET.stats.stat4.xml -dbpf BL45P-EA-MAP-01:STAT3:NDAttributesFile, BL45P-EA-IOC-01App/data/DET.stats.stat3.xml -dbpf BL45P-EA-MAP-01:STAT2:NDAttributesFile, BL45P-EA-IOC-01App/data/DET.stats.stat2.xml -dbpf BL45P-EA-MAP-01:STAT1:NDAttributesFile, BL45P-EA-IOC-01App/data/DET.stats.stat1.xml -dbpf BL45P-EA-DIFF-01:STAT2:NDAttributesFile, BL45P-EA-IOC-01App/data/DIFF.stats.stat2.xml -dbpf BL45P-EA-DIFF-01:STAT3:NDAttributesFile, BL45P-EA-IOC-01App/data/DIFF.stats.stat3.xml -dbpf BL45P-EA-DIFF-01:STAT1:NDAttributesFile, BL45P-EA-IOC-01App/data/DIFF.stats.stat1.xml -dbpf BL45P-EA-DIFF-01:STAT6:NDAttributesFile, BL45P-EA-IOC-01App/data/DIFF.stats.stat6.xml -dbpf BL45P-EA-DIFF-01:STAT4:NDAttributesFile, BL45P-EA-IOC-01App/data/DIFF.stats.stat4.xml -dbpf BL45P-EA-DIFF-01:STAT5:NDAttributesFile, BL45P-EA-IOC-01App/data/DIFF.stats.stat5.xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iocs/bl45p-ea-ioc-01/templates/ioc.yaml b/iocs/bl45p-ea-ioc-01/templates/ioc.yaml deleted file mode 100644 index 7683dc1..0000000 --- a/iocs/bl45p-ea-ioc-01/templates/ioc.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{ include "ioc-chart.ioc" . }} - -{{- /* - add the contents of every file in the config folder of this IOC helm chart - into the config map - this must include start.sh the startup script. - The files must be text only. Any files ending in .tz are explicitly ommitted -*/ -}} - -{{ (.Files.Glob "config/*[!.tz]").AsConfig | indent 2 }} - version.txt: | - IOC {{ .Release.Name }} version {{ .Chart.AppVersion }} - -binaryData: - # this clause for config that is too big and needed to be tarred - # it has no effect if there is no config.tz in config folder - config.tz: |- - {{ .Files.Get "config/config.tz" | b64enc }} \ No newline at end of file diff --git a/iocs/bl45p-ea-ioc-01/values.yaml b/iocs/bl45p-ea-ioc-01/values.yaml deleted file mode 100644 index c6b919a..0000000 --- a/iocs/bl45p-ea-ioc-01/values.yaml +++ /dev/null @@ -1,10 +0,0 @@ -base_image: ghcr.io/epics-containers/ioc-adaravis:1.0.1.run - -# Area detector may need more than beamline default resources -resources: - limits: - cpu: 4 - memory: 4Gi - requests: - cpu: 1 - memory: 500Mi diff --git a/iocs/bl45p-ea-ioc-02/Chart.yaml b/iocs/bl45p-ea-ioc-02/Chart.yaml deleted file mode 100644 index ef0fafb..0000000 --- a/iocs/bl45p-ea-ioc-02/Chart.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: v2 -name: bl45p-ea-ioc-02 -description: | - panda IOC for the bl45p test beamline - -type: application - -# chart and app version - these are updated automatically by CI -version: 2021.8.27 -appVersion: 2021.8.27 - -dependencies: - - name: bl45p-chart - version: "1.0.0" - repository: file://../../bl45p-chart - import-values: - - beamline_defaults - - name: helm-ioc-lib - version: "1.6.1" - repository: oci://ghcr.io/epics-containers - import-values: - - defaults diff --git a/iocs/bl45p-ea-ioc-02/config/BL45P-EA-IOC-02_expanded.db b/iocs/bl45p-ea-ioc-02/config/BL45P-EA-IOC-02_expanded.db deleted file mode 100644 index 76db5aa..0000000 --- a/iocs/bl45p-ea-ioc-02/config/BL45P-EA-IOC-02_expanded.db +++ /dev/null @@ -1,21709 +0,0 @@ -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -# Used by Channel Access Security to determine access to this IOC. -record(mbbo, "BL45P-EA-IOC-02:ACCESS") -{ - field(DESC, "BL45P-EA-IOC-02 Acc Mode") - field(PINI, "YES") - field(ZRST, "Running") - field(ZRSV, "NO_ALARM") - field(ONST, "Maintenance") - field(ONSV, "MINOR") - field(TWST, "Test") - field(TWSV, "MINOR") - field(THST, "OFFLINE") - field(THSV, "MAJOR") - info(autosaveFields, "VAL") -} -record(stringin, "BL45P-EA-IOC-02:STARTTOD") -{ - field(DESC, "Time and date of startup") - field(DTYP, "Soft Timestamp") - field(PINI, "YES") - field(INP, "@%Y-%m-%d %H:%M:%S") -} -record(stringin, "BL45P-EA-IOC-02:TOD") -{ - field(DESC, "Current time and date") - field(DTYP, "Soft Timestamp") - field(SCAN, "1 second") - field(INP, "@%Y-%m-%d %H:%M:%S") -} -record(calcout, "BL45P-EA-IOC-02:HEARTBEAT") -{ - field(DESC, "1 Hz counter since startup") - field(CALC, "(A<2147483647)?A+1:1") - field(SCAN, "1 second") - field(INPA, "BL45P-EA-IOC-02:HEARTBEAT") -} -# if autosave is working, START_CNT creates a running count of -# number of times the IOC was started. -record(calcout, "BL45P-EA-IOC-02:START_CNT") -{ - field(DESC, "Increments at startup") - field(CALC, "A+1") - field(PINI, "YES") - field(INPA, "BL45P-EA-IOC-02:START_CNT") - info(autosaveFields_pass0, "VAL") -} -# -# Using an existing internal set of subroutines, this -# PV updates the Access Security mechanism dynamically. -# The .acf file is re-read. -# -record( sub, "BL45P-EA-IOC-02:READACF") -{ - field( DESC, "BL45P-EA-IOC-02 ACF Update") - field( INAM, "asSubInit") - field( SNAM, "asSubProcess") - field( BRSV, "INVALID") -} -record(sub, "BL45P-EA-IOC-02:SYSRESET") -{ - alias("BL45P-EA-IOC-02:SysReset") - field(DESC, "IOC Restart" ) - field(SNAM, "rebootProc") - field(BRSV,"INVALID") - field(L,"1") -} - -#% archiver 1 Monitor -#% alh -record(ai, "BL45P-EA-IOC-02:CA_CLNT_CNT") { - field(DESC, "Number of CA Clients") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@ca_clients") - field(HOPR, "200") - field(HIHI, "175") - field(HIGH, "100") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") -} - -#% archiver 1 Monitor -#% alh -record(ai, "BL45P-EA-IOC-02:CA_CONN_CNT") { - field(DESC, "Number of CA Connections") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@ca_connections") - field(HOPR, "5000") - field(HIHI, "4500") - field(HIGH, "4000") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") -} - -record(ai, "BL45P-EA-IOC-02:RECORD_CNT") { - field(DESC, "Number of Records") - field(PINI, "YES") - field(DTYP, "IOC stats") - field(INP, "@records") -} - -record(ai, "BL45P-EA-IOC-02:FD_MAX") { - field(DESC, "Max File Descriptors") - field(PINI, "YES") - field(DTYP, "IOC stats") - field(INP, "@maxfd") -} - -record(ai, "BL45P-EA-IOC-02:FD_CNT") { - field(DESC, "Allocated File Descriptors") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(FLNK, "BL45P-EA-IOC-02:FD_FREE PP MS") - field(INP, "@fd") -} - -#% archiver 1 Monitor -#% alh -record(calc, "BL45P-EA-IOC-02:FD_FREE") { - field(DESC, "Available FDs") - field(CALC, "B>0?B-A:C") - field(INPA, "BL45P-EA-IOC-02:FD_CNT NPP MS") - field(INPB, "BL45P-EA-IOC-02:FD_MAX NPP MS") - field(INPC, "1000") - field(HOPR, "150") - field(LOLO, "5") - field(LOW, "20") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR LOW LOLO LSV LLSV") -} - -#% archiver 1 Monitor -record(ai, "BL45P-EA-IOC-02:SYS_CPU_LOAD") { - field(DESC, "System CPU Load") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@sys_cpuload") - field(EGU, "%") - field(PREC, "1") - field(HOPR, "100") - field(HIHI, "80") - field(HIGH, "70") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") -} - -#% archiver 1 Monitor -#% alh -record(ai, "BL45P-EA-IOC-02:IOC_CPU_LOAD") { - alias("BL45P-EA-IOC-02:LOAD") - field(DESC, "IOC CPU Load") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@ioc_cpuload") - field(EGU, "%") - field(PREC, "1") - field(HOPR, "100") - field(HIHI, "80") - field(HIGH, "70") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") -} - -record(ai, "BL45P-EA-IOC-02:CPU_CNT") { - field(DESC, "Number of CPUs") - field(DTYP, "IOC stats") - field(INP, "@no_of_cpus") - field(PINI, "YES") -} - -#% archiver 1 Monitor -#% alh -record(ai, "BL45P-EA-IOC-02:SUSP_TASK_CNT") { - field(DESC, "Number Suspended Tasks") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@suspended_tasks") - field(HIHI, "1") - field(HHSV, "MAJOR") - info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") -} - -#% archiver 1 Monitor -record(ai, "BL45P-EA-IOC-02:MEM_USED") { - field(DESC, "Allocated Memory") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@allocated_bytes") - field(EGU, "byte") -} - -#% archiver 1 Monitor -record(ai, "BL45P-EA-IOC-02:MEM_FREE") { - field(DESC, "Free Memory") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@free_bytes") - field(EGU, "byte") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR LOW LOLO LSV LLSV") -} - -record(ai, "BL45P-EA-IOC-02:MEM_MAX") { - field(DESC, "Maximum Memory") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@total_bytes") - field(EGU, "byte") -} - -record(ao, "BL45P-EA-IOC-02:CA_UPD_TIME") { - field(DESC, "CA Check Update Period") - field(DTYP, "IOC stats") - field(OUT, "@ca_scan_rate") - field(EGU, "sec") - field(DRVH, "60") - field(DRVL, "1") - field(HOPR, "60") - field(VAL, "15") - field(PINI, "YES") -} - -record(ao, "BL45P-EA-IOC-02:FD_UPD_TIME") { - field(DESC, "FD Check Update Period") - field(DTYP, "IOC stats") - field(OUT, "@fd_scan_rate") - field(EGU, "sec") - field(DRVH, "60") - field(DRVL, "1") - field(HOPR, "60") - field(VAL, "20") - field(PINI, "YES") -} - -record(ao, "BL45P-EA-IOC-02:LOAD_UPD_TIME") { - field(DESC, "CPU Check Update Period") - field(DTYP, "IOC stats") - field(OUT, "@cpu_scan_rate") - field(EGU, "sec") - field(DRVH, "60") - field(DRVL, "1") - field(HOPR, "60") - field(VAL, "10") - field(PINI, "YES") -} - -record(ao, "BL45P-EA-IOC-02:MEM_UPD_TIME") { - field(DESC, "Memory Check Update Period") - field(DTYP, "IOC stats") - field(OUT, "@memory_scan_rate") - field(EGU, "sec") - field(DRVH, "60") - field(DRVL, "1") - field(HOPR, "60") - field(VAL, "10") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-02:ST_SCRIPT1") { - field(DESC, "Startup Script Part1") - field(DTYP, "IOC stats") - field(INP, "@startup_script_1") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-02:ST_SCRIPT2") { - field(DESC, "Startup Script Part2") - field(DTYP, "IOC stats") - field(INP, "@startup_script_2") - field(PINI, "YES") -} - -record(waveform, "BL45P-EA-IOC-02:ST_SCRIPT") { - field(DESC, "Startup Script") - field(DTYP, "IOC stats") - field(INP, "@startup_script") - field(NELM, "120") - field(FTVL, "CHAR") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-02:KERNEL_VERS") { - field(DESC, "Kernel Version") - field(DTYP, "IOC stats") - field(INP, "@kernel_ver") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-02:EPICS_VERS") { - field(DESC, "EPICS Version") - field(DTYP, "IOC stats") - field(INP, "@epics_ver") - field(PINI, "YES") -} - -record(waveform, "BL45P-EA-IOC-02:EPICS_VERSION") { - field(DESC, "EPICS Version") - field(DTYP, "IOC stats") - field(INP, "@epics_ver") - field(NELM, "120") - field(FTVL, "CHAR") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-02:HOSTNAME") { - field(DESC, "Host Name") - field(DTYP, "IOC stats") - field(INP, "@hostname") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-02:APP_DIR1") { - field(DESC, "Application Directory Part 1") - field(DTYP, "IOC stats") - field(INP, "@pwd1") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-02:APP_DIR2") { - field(DESC, "Application Directory Part 2") - field(DTYP, "IOC stats") - field(INP, "@pwd2") - field(PINI, "YES") -} - -record(waveform, "BL45P-EA-IOC-02:APP_DIR") { - field(DESC, "Application Directory") - field(DTYP, "IOC stats") - field(INP, "@pwd") - field(NELM, "160") - field(FTVL, "CHAR") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-02:UPTIME") { - field(DESC, "Elapsed Time since Start") - field(SCAN, "1 second") - field(DTYP, "IOC stats") - field(INP, "@up_time") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-02:ENGINEER") { - field(DESC, "Engineer") - field(DTYP, "IOC stats") - field(INP, "@engineer") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-IOC-02:LOCATION") { - field(DESC, "Location") - field(DTYP, "IOC stats") - field(INP, "@location") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-IOC-02:PROCESS_ID") { - field(DESC, "Process ID") - field(PINI, "YES") - field(DTYP, "IOC stats") - field(INP, "@proc_id") -} - -record(ai, "BL45P-EA-IOC-02:PARENT_ID") { - field(DESC, "Parent Process ID") - field(PINI, "YES") - field(DTYP, "IOC stats") - field(INP, "@parent_proc_id") -} - -record(stringin, "BL45P-EA-IOC-02:DLSVER") { - field(DESC, "IOC version") - field(DTYP, "IOC stats") - field(INP, "@dlsver") - field(PINI, "YES") -} -record(ai, "BL45P-EA-IOC-02:GTIM_TIME") { - field(DESC, "Gen Time Secs since 1990") - field(SCAN, "1 second") - field(DTYP, "General Time") - field(PREC, "3") - field(INP, "@TIME") - field(EGU, "sec") -} - -record(bo, "BL45P-EA-IOC-02:GTIM_RESET") { - field(DESC, "Gen Time Error Reset") - field(DTYP, "General Time") - field(OUT, "@RSTERRCNT") - field(ZNAM, "Reset") - field(ONAM, "Reset") -} - -record(longin, "BL45P-EA-IOC-02:GTIM_ERR_CNT") { - field(DESC, "Gen Time Error Count") - field(DTYP, "General Time") - field(INP, "@GETERRCNT") - field(SCAN, "1 second") - field(HIHI, "1") - field(HHSV, "MAJOR") -} - -record(stringin, "BL45P-EA-IOC-02:GTIM_CUR_SRC") { - field(DESC, "Gen Time Current Provider") - field(DTYP, "General Time") - field(INP, "@BESTTCP") - field(SCAN, "1 second") -} - -record(stringin, "BL45P-EA-IOC-02:GTIM_EVT_SRC") { - field(DESC, "Gen Time Event Provider") - field(DTYP, "General Time") - field(INP, "@BESTTEP") - field(SCAN, "1 second") -} - -record(stringin, "BL45P-EA-IOC-02:GTIM_HI_SRC") { - field(DESC, "Gen Time Highest Provider") - field(DTYP, "General Time") - field(INP, "@TOPTCP") - field(SCAN, "1 second") -} -record(stringin, "BL45P-EA-IOC-02:CA_ADDR_LIST") { - field(DESC, "EPICS_CA_ADDR_LIST") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_ADDR_LIST") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-02:CA_CONN_TIME") { - field(DESC, "EPICS_CA_CONN_TMO") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_CONN_TMO") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-02:CA_AUTO_ADDR") { - field(DESC, "EPICS_CA_AUTO_ADDR_LIST") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_AUTO_ADDR_LIST") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-02:CA_RPTR_PORT") { - field(DESC, "EPICS_CA_REPEATER_PORT") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_REPEATER_PORT") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-02:CA_SRVR_PORT") { - field(DESC, "EPICS_CA_SERVER_PORT") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_SERVER_PORT") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-02:CA_MAX_ARRAY") { - field(DESC, "EPICS_CA_MAX_ARRAY_BYTES") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_MAX_ARRAY_BYTES") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-02:CA_SRCH_TIME") { - field(DESC, "EPICS_CA_MAX_SEARCH_PERIOD") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_MAX_SEARCH_PERIOD") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-02:CA_BEAC_TIME") { - field(DESC, "EPICS_CA_BEACON_PERIOD") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_BEACON_PERIOD") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-02:TIMEZONE") { - field(DESC, "EPICS_TIMEZONE") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_TIMEZONE") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-02:TS_NTP_INET") { - field(DESC, "EPICS_TS_NTP_INET") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_TS_NTP_INET") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-02:IOC_LOG_PORT") { - field(DESC, "EPICS_IOC_LOG_PORT") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_IOC_LOG_PORT") - field(PINI, "YES") -} -record(stringin, "BL45P-EA-IOC-02:IOC_LOG_INET") { - field(DESC, "EPICS_IOC_LOG_INET") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_IOC_LOG_INET") - field(PINI, "YES") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-EA-IOC-02:01HZ_MODE") { - field(DESC, "01HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-EA-IOC-02:01HZ_UPD_TIME") { - field(DESC, "01HZ Update Time") - field(SCAN, "10 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-EA-IOC-02:01HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-EA-IOC-02:02HZ_MODE") { - field(DESC, "02HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-EA-IOC-02:02HZ_UPD_TIME") { - field(DESC, "02HZ Update Time") - field(SCAN, "5 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-EA-IOC-02:02HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-EA-IOC-02:05HZ_MODE") { - field(DESC, "05HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-EA-IOC-02:05HZ_UPD_TIME") { - field(DESC, "05HZ Update Time") - field(SCAN, "2 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-EA-IOC-02:05HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-EA-IOC-02:1HZ_MODE") { - field(DESC, "1HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-EA-IOC-02:1HZ_UPD_TIME") { - field(DESC, "1HZ Update Time") - field(SCAN, "1 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-EA-IOC-02:1HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-EA-IOC-02:2HZ_MODE") { - field(DESC, "2HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-EA-IOC-02:2HZ_UPD_TIME") { - field(DESC, "2HZ Update Time") - field(SCAN, ".5 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-EA-IOC-02:2HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-EA-IOC-02:5HZ_MODE") { - field(DESC, "5HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-EA-IOC-02:5HZ_UPD_TIME") { - field(DESC, "5HZ Update Time") - field(SCAN, ".2 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-EA-IOC-02:5HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-EA-IOC-02:10HZ_MODE") { - field(DESC, "10HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-EA-IOC-02:10HZ_UPD_TIME") { - field(DESC, "10HZ Update Time") - field(SCAN, ".1 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-EA-IOC-02:10HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} - -record(calc, "BL45P-EA-IOC-02:SCANMON_SEVR") { - field(DESC, "ScanMon Max Severity") - field(SCAN, "1 second") - field(CALC, "0") - field(INPA, "BL45P-EA-IOC-02:01HZ_UPD_TIME.SEVR MS") - field(INPB, "BL45P-EA-IOC-02:02HZ_UPD_TIME.SEVR MS") - field(INPC, "BL45P-EA-IOC-02:05HZ_UPD_TIME.SEVR MS") - field(INPD, "BL45P-EA-IOC-02:1HZ_UPD_TIME.SEVR MS") - field(INPE, "BL45P-EA-IOC-02:2HZ_UPD_TIME.SEVR MS") - field(INPF, "BL45P-EA-IOC-02:5HZ_UPD_TIME.SEVR MS") - field(INPG, "BL45P-EA-IOC-02:10HZ_UPD_TIME.SEVR MS") -} - -# % macro, name, name for gui elements -# % macro, EDM_FILE, edm screen, defaults to ioc_stats_softdls.edl -# % macro, IOC, ioc name - -# % gui, EA02_STATS, edm, ioc_stats_softdls.edl, ioc=BL45P-EA-IOC-02 -# % gui, EA02_STATS, edmembed, ioc_embed.edl, ioc=BL45P-EA-IOC-02,EDM_FILE=ioc_stats_softdls.edl - - - -# This associates BOY screens with the template -# % gui, EA02_STATS, boydetail, devIocStatsApp_opi/iocStats_detail.opi, desc=BL45P-EA-IOC-02, IOC=BL45P-EA-IOC-02, name=EA02_STATS -# % gui, EA02_STATS, boyembed, devIocStatsApp_opi/iocStats_embed.opi, desc=BL45P-EA-IOC-02, IOC=BL45P-EA-IOC-02, name=EA02_STATS -# % gui, EA02_STATS, boyembed, devIocStatsApp_opi/iocStats_embed_box.opi, desc=BL45P-EA-IOC-02, IOC=BL45P-EA-IOC-02, name=EA02_STATS - -# These define what PVs a detail screen should contain -# % gui, EA02_STATS, readback, Startup Time,BL45P-EA-IOC-02:STARTOD -# % gui, EA02_STATS, readback, Current Time,BL45P-EA-IOC-02:TOD -# % gui, EA02_STATS, readback, Up Time,BL45P-EA-IOC-02:UPTIME -# % gui, EA02_STATS, readback, Heartbeat,BL45P-EA-IOC-02:HEARTBEAT -# % gui, EA02_STATS, readback, Records,BL45P-EA-IOC-02:RECORD_CNT -# % gui, EA02_STATS, readback, Host Name,BL45P-EA-IOC-02:HOSTNAME -# % gui, EA02_STATS, readback, User Name,BL45P-EA-IOC-02:ENGINEER -# % gui, EA02_STATS, readback, Location,BL45P-EA-IOC-02:LOCATION -# % gui, EA02_STATS, readback, CA Clients,BL45P-EA-IOC-02:CA_CLNT_CNT -# % gui, EA02_STATS, readback, CA PV Conns,BL45P-EA-IOC-02:CA_CONN_CNT -# % gui, EA02_STATS, readback, Susp Tasks,BL45P-EA-IOC-02:SUSP_TASK_CNT -# % gui, EA02_STATS, readback, EPICS Version,BL45P-EA-IOC-02:EPICS_VERS -# % gui, EA02_STATS, readback, OS Version,BL45P-EA-IOC-02:KERNEL_VERS -# % gui, EA02_STATS, readback, Application Directory,BL45P-EA-IOC-02:APP_DIR1 -# % gui, EA02_STATS, readback, Startup Script,BL45P-EA-IOC-02:ST_SCRIPT1 -# % gui, EA02_STATS, readback, Memory Free,BL45P-EA-IOC-02:MEM_FREE -# % gui, EA02_STATS, readback, Memory Used,BL45P-EA-IOC-02:MEM_USED -# % gui, EA02_STATS, readback, Memory Max,BL45P-EA-IOC-02:MEM_MAX -# % gui, EA02_STATS, readback, File Handles Free,BL45P-EA-IOC-02:FD_FREE -# % gui, EA02_STATS, readback, File Handles Max,BL45P-EA-IOC-02:FD_MAX -# % gui, EA02_STATS, readback, IOC CPU Load,BL45P-EA-IOC-02:IOC_CPU_LOAD -# % gui, EA02_STATS, readback, All CPUs Load,BL45P-EA-IOC-02:SYS_CPU_LOAD -# % gui, EA02_STATS, readback, System CPUs,BL45P-EA-IOC-02:CPU_CNT - -#====================================================================# -# Template file: ADPandABlocks.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# -# EDM: -# % gui, PANDA01.DRV, edmtab, ADPandABlocksDetector.edl, P=BL45P-EA-PANDA-01, R=:DRV:, DEVICE=BL45P-EA-PANDA-01:DRV: -#====================================================================# - -# CSS screen -## This associates a BOY screen with the template -# % gui, PANDA01.DRV, boydetail, ADPandABlocksApp_opi/ADPandABlocks_detail.opi, P=BL45P-EA-PANDA-01, R=:DRV:, DESC=PandA, DEVICE=BL45P-EA-PANDA-01:DRV: -# % gui, PANDA01.DRV, boyembed, ADPandABlocksApp_opi/ADPandABlocks_embed.opi, P=BL45P-EA-PANDA-01, R=:DRV:, DESC=PandA, DEVICE=BL45P-EA-PANDA-01:DRV: -# % gui, PANDA01.DRV, boyembed, ADPandABlocksApp_opi/ADPandABlocks_embed_box.opi, P=BL45P-EA-PANDA-01, R=:DRV:, DESC=PandA, DEVICE=BL45P-EA-PANDA-01:DRV: -# % gui, PANDA01.DRV, boyembed, ADPandABlocksApp_opi/ADPandABlocks_positions.opi, P=BL45P-EA-PANDA-01, R=:DRV:, DESC=PandA, DEVICE=BL45P-EA-PANDA-01:DRV: -# % gui, PANDA01.DRV, boyembed, ADPandABlocksApp_opi/ADPandABlocks_sync.opi, P=BL45P-EA-PANDA-01, R=:DRV:, DESC=PandA, DEVICE=BL45P-EA-PANDA-01:DRV: - -## Info -# % gui, PANDA01.DRV, groupHeading, Info -# % gui, PANDA01.DRV, readback, Port Name , BL45P-EA-PANDA-01:DRV:PortName_RBV -# % gui, PANDA01.DRV, readback, Detector State , BL45P-EA-PANDA-01:DRV:DetectorState_RBV -# % gui, PANDA01.DRV, readback, Status Message , BL45P-EA-PANDA-01:DRV:StatusMessage_RBV -# % gui, PANDA01.DRV, readback, Manufacturer , BL45P-EA-PANDA-01:DRV:Manufacturer_RBV -# % gui, PANDA01.DRV, readback, Model , BL45P-EA-PANDA-01:DRV:Model_RBV -# % gui, PANDA01.DRV, groupExit, InfoExit -## Image -# % gui, PANDA01.DRV, groupHeading, Image -# % gui, PANDA01.DRV, enum, Data Type , BL45P-EA-PANDA-01:DRV:DataType -# % gui, PANDA01.DRV, readback, Sensor Size X , BL45P-EA-PANDA-01:DRV:MaxSizeX_RBV -# % gui, PANDA01.DRV, readback, Sensor Size Y , BL45P-EA-PANDA-01:DRV:MaxSizeY_RBV -# % gui, PANDA01.DRV, readback, Image Size X , BL45P-EA-PANDA-01:DRV:ArraySizeX_RBV -# % gui, PANDA01.DRV, readback, Image Size Y , BL45P-EA-PANDA-01:DRV:ArraySizeY_RBV -# % gui, PANDA01.DRV, readback, Image Bytes , BL45P-EA-PANDA-01:DRV:ArraySize_RBV -# % gui, PANDA01.DRV, groupExit, ImageExit -## Acquisition -# % gui, PANDA01.DRV, groupHeading, Acquisition -# % gui, PANDA01.DRV, demand, Num Exposures , BL45P-EA-PANDA-01:DRV:NumExposures -# % gui, PANDA01.DRV, readback, Num Exposures , BL45P-EA-PANDA-01:DRV:NumExposures_RBV -# % gui, PANDA01.DRV, demand, Num Images , BL45P-EA-PANDA-01:DRV:NumImages -# % gui, PANDA01.DRV, readback, Num Images , BL45P-EA-PANDA-01:DRV:NumImages_RBV -# % gui, PANDA01.DRV, enum, Image Mode , BL45P-EA-PANDA-01:DRV:ImageMode -# % gui, PANDA01.DRV, enum, Trigger Mode , BL45P-EA-PANDA-01:DRV:TriggerMode -# % gui, PANDA01.DRV, enum, Acquire , BL45P-EA-PANDA-01:DRV:Acquire -# % gui, PANDA01.DRV, readback, Acquire , BL45P-EA-PANDA-01:DRV:Acquire -# % gui, PANDA01.DRV, groupExit, AcquisitionExit -## Status -# % gui, PANDA01.DRV, groupHeading, Status -# % gui, PANDA01.DRV, demand, Counter , BL45P-EA-PANDA-01:DRV:ArrayCounter -# % gui, PANDA01.DRV, readback, Counter , BL45P-EA-PANDA-01:DRV:ArrayCounter_RBV -# % gui, PANDA01.DRV, readback, Array Rate (fps) , BL45P-EA-PANDA-01:DRV:ArrayRate_RBV -# % gui, PANDA01.DRV, readback, Time Remaining , BL45P-EA-PANDA-01:DRV:TimeRemaining_RBV -# % gui, PANDA01.DRV, readback, Exposures Remaining , BL45P-EA-PANDA-01:DRV:NumExposuresCounter_RBV -# % gui, PANDA01.DRV, readback, Images Remaining , BL45P-EA-PANDA-01:DRV:NumImagesCounter_RBV -# % gui, PANDA01.DRV, groupExit, StatusExit -## Header -# % gui, PANDA01.DRV, groupHeading, Header -# % gui, PANDA01.DRV, readback, Data End , $(DEVICE,undefined)DATAEND -# % gui, PANDA01.DRV, readback, Data Header , $(DEVICE,undefined)HEADER -# % gui, PANDA01.DRV, groupExit, HeaderExit - -#=================================================================# -# Template file: ADBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -# Using SCANRATE:The ImageJ EPICS_AD_Viewer plugin monitors ArrayCounter_RBV to decide -# when there is a new image to display. That means that it will not display faster than -# the SCANRATE you select. - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-PANDA-01:DRV:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-PANDA-01:DRV:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-PANDA-01:DRV:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-PANDA-01:DRV:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:DRV:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:DRV:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:DRV:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:DRV:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-PANDA-01:DRV:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-PANDA-01:DRV:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-PANDA-01:DRV:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-01:DRV:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-PANDA-01:DRV:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-PANDA-01:DRV:AcquireBusy PP") -} - -record(busy, "BL45P-EA-PANDA-01:DRV:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-PANDA-01:DRV:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-01:DRV:ClearAcquireBusy") { - field(INPA, "BL45P-EA-PANDA-01:DRV:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-PANDA-01:DRV:AcquireBusy PP") -} - -record(bo, "BL45P-EA-PANDA-01:DRV:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-PANDA-01:DRV:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-PANDA-01:DRV:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(PANDA01.DRV,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim0SA") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim0SA") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize0") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize0") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim0SA") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim1SA") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim1SA") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize1") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize1") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim1SA") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim2SA") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim2SA") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize2") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize2") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim2SA") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim3SA") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim3SA") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize3") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize3") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim3SA") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim4SA") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim4SA") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize4") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize4") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim4SA") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim5SA") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim5SA") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize5") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize5") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim5SA") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim6SA") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim6SA") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize6") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize6") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim6SA") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim7SA") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim7SA") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize7") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize7") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim7SA") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim8SA") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim8SA") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize8") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize8") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim8SA") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim9SA") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim9SA") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize9") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize9") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim9SA") -} - - -record(waveform, "BL45P-EA-PANDA-01:DRV:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(PANDA01.DRV,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim0SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim1SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim2SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim3SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim4SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim5SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim6SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim7SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim8SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:DRV:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:DRV:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:DRV:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-PANDA-01:DRV:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-PANDA-01:DRV:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-PANDA-01:DRV:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:DRV:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-PANDA-01:DRV:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:DRV:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-PANDA-01:DRV:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-PANDA-01:DRV:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.DRV,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-PANDA-01:DRV:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-PANDA-01:DRV:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-PANDA-01:DRV:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-PANDA-01:DRV:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-PANDA-01:DRV:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-PANDA-01:DRV:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:DRV:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-PANDA-01:DRV:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA01.DRV,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-PANDA-01:DRV:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA01.DRV,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-PANDA-01:DRV:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-PANDA-01:DRV:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.DRV,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-PANDA-01:DRV:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.DRV,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-PANDA-01:DRV:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-PANDA-01:DRV:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-PANDA-01:DRV:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-PANDA-01:DRV:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-PANDA-01:DRV:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-PANDA-01:DRV:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-PANDA-01:DRV:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)MAX_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)MAX_SIZE_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the detector readout # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-PANDA-01:DRV:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)BIN_X") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)BIN_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)BIN_Y") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)BIN_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)MIN_X") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)MIN_Y") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)SIZE_X") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)SIZE_Y") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-01:DRV:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)REVERSE_X") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:DRV:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)REVERSE_X") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-01:DRV:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)REVERSE_Y") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:DRV:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)REVERSE_Y") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the acquisition time and # -# period # -################################################################### -record(ao, "BL45P-EA-PANDA-01:DRV:AcquireTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,0,1)ACQ_TIME") - field(PREC, "3") - field(VAL, "1.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-01:DRV:AcquireTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.DRV,0,1)ACQ_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:AcquirePeriod") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,0,1)ACQ_PERIOD") - field(PREC, "3") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-01:DRV:AcquirePeriod_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.DRV,0,1)ACQ_PERIOD") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-PANDA-01:DRV:TimeRemaining_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.DRV,0,1)TIME_REMAINING") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the gain # -################################################################### -record(ao, "BL45P-EA-PANDA-01:DRV:Gain") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,0,1)GAIN") - field(VAL, "1.0") - field(PREC, "3") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-01:DRV:Gain_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.DRV,0,1)GAIN") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the frame type # -################################################################### -record(mbbo, "BL45P-EA-PANDA-01:DRV:FrameType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)FRAME_TYPE") - field(ZRST, "Normal") - field(ZRVL, "0") - field(ONST, "Background") - field(ONVL, "1") - field(TWST, "FlatField") - field(TWVL, "2") - field(THST, "DblCorrelation") - field(THVL, "3") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:DRV:FrameType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)FRAME_TYPE") - field(ZRST, "Normal") - field(ZRVL, "0") - field(ONST, "Background") - field(ONVL, "1") - field(TWST, "FlatField") - field(TWVL, "2") - field(THST, "DblCorrelation") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the acquisition mode # -################################################################### -record(mbbo, "BL45P-EA-PANDA-01:DRV:ImageMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)IMAGE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Multiple") - field(ONVL, "1") - field(TWST, "Continuous") - field(TWVL, "2") - field(VAL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:DRV:ImageMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)IMAGE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Multiple") - field(ONVL, "1") - field(TWST, "Continuous") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the trigger mode # -################################################################### -record(mbbo, "BL45P-EA-PANDA-01:DRV:TriggerMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)TRIGGER_MODE") - field(ZRST, "Internal") - field(ZRVL, "0") - field(ONST, "External") - field(ONVL, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:DRV:TriggerMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)TRIGGER_MODE") - field(ZRST, "Internal") - field(ZRVL, "0") - field(ONST, "External") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the number of exposures and # -# number of images # -################################################################### -record(longout, "BL45P-EA-PANDA-01:DRV:NumExposures") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)NEXPOSURES") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:NumExposures_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)NEXPOSURES") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:NumExposuresCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)NEXPOSURES_COUNTER") - field(SCAN, "I/O Intr") -} -record(longout, "BL45P-EA-PANDA-01:DRV:NumImages") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)NIMAGES") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:NumImages_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)NIMAGES") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:NumImagesCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)NIMAGES_COUNTER") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are for the detector state # -################################################################### - -record(mbbi, "BL45P-EA-PANDA-01:DRV:DetectorState_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)STATUS") - field(ZRST, "Idle") - field(ZRVL, "0") - field(ZRSV, "NO_ALARM") - field(ONST, "Acquire") - field(ONVL, "1") - field(ONSV, "NO_ALARM") - field(TWST, "Readout") - field(TWVL, "2") - field(TWSV, "NO_ALARM") - field(THST, "Correct") - field(THVL, "3") - field(THSV, "NO_ALARM") - field(FRST, "Saving") - field(FRVL, "4") - field(FRSV, "NO_ALARM") - field(FVST, "Aborting") - field(FVVL, "5") - field(FVSV, "MINOR") - field(SXST, "Error") - field(SXVL, "6") - field(SXSV, "MAJOR") - field(SVST, "Waiting") - field(SVVL, "7") - field(SVSV, "NO_ALARM") - field(EIST, "Initializing") - field(EIVL, "8") - field(EISV, "NO_ALARM") - field(NIST, "Disconnected") - field(NIVL, "9") - field(NISV, "INVALID") - field(TEST, "Aborted") - field(TEVL, "10") - field(TESV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide status information # -################################################################### - -# Status message. -record(waveform, "BL45P-EA-PANDA-01:DRV:StatusMessage_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,0,1)STATUS_MESSAGE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-PANDA-01:DRV:StringToServer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,0,1)STRING_TO_SERVER") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-PANDA-01:DRV:StringFromServer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,0,1)STRING_FROM_SERVER") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -################################################################@### -# This record can be used to force a read of the detector status # -#################################################################### -record(bo,"BL45P-EA-PANDA-01:DRV:ReadStatus") { - field(DTYP,"asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)READ_STATUS") - field(VAL, "1") - field(SCAN,"Passive") - info(autosaveFields, "SCAN") -} - -################################################################### -# These records control the shutter # -################################################################### - -record(mbbo, "BL45P-EA-PANDA-01:DRV:ShutterMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)SHUTTER_MODE") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "EPICS PV") - field(ONVL, "1") - field(TWST, "Detector output") - field(TWVL, "2") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:DRV:ShutterMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)SHUTTER_MODE") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "EPICS PV") - field(ONVL, "1") - field(TWST, "Camera output") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-01:DRV:ShutterControl") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0,1)SHUTTER_CONTROL") - field(ZNAM, "Close") - field(ONAM, "Open") - field(VAL, "0") -} - -record(bi, "BL45P-EA-PANDA-01:DRV:ShutterControl_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)SHUTTER_CONTROL") - field(ZNAM, "Close") - field(ONAM, "Open") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-PANDA-01:DRV:ShutterStatus_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)SHUTTER_STATUS") - field(ZNAM, "Closed") - field(ZSV, "NO_ALARM") - field(ONAM, "Open") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:ShutterOpenDelay") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,0,1)SHUTTER_OPEN_DELAY") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-01:DRV:ShutterOpenDelay_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.DRV,0,1)SHUTTER_OPEN_DELAY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:ShutterCloseDelay") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,0,1)SHUTTER_CLOSE_DELAY") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-01:DRV:ShutterCloseDelay_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.DRV,0,1)SHUTTER_CLOSE_DELAY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -# This record changes state when the driver opens/closes an EPICS shutter -record(bi, "BL45P-EA-PANDA-01:DRV:ShutterControlEPICS") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0,1)SHUTTER_CONTROL_EPICS") - field(ZNAM, "Closed") - field(ZSV, "NO_ALARM") - field(ONAM, "Open") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") - field(FLNK, "BL45P-EA-PANDA-01:DRV:ShutterFanout.PROC") -} - -record(fanout, "BL45P-EA-PANDA-01:DRV:ShutterFanout") -{ - field(LNK1, "BL45P-EA-PANDA-01:DRV:ShutterOpenEPICS.PROC PP MS") - field(LNK2, "BL45P-EA-PANDA-01:DRV:ShutterCloseEPICS.PROC PP MS") -} - -record(calcout, "BL45P-EA-PANDA-01:DRV:ShutterOpenEPICS") -{ - field(INPA, "BL45P-EA-PANDA-01:DRV:ShutterControlEPICS.VAL NPP NMS") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(DOPT, "Use OCAL") - field(OCAL, "1") - field(OUT, "") - info(autosaveFields, "OUT OCAL") -} - -record(calcout, "BL45P-EA-PANDA-01:DRV:ShutterCloseEPICS") -{ - field(INPA, "BL45P-EA-PANDA-01:DRV:ShutterControlEPICS.VAL NPP NMS") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(DOPT, "Use OCAL") - field(OCAL, "0") - field(OUT, "") - info(autosaveFields, "OUT OCAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:DRV:ShutterStatusEPICS_RBV") -{ - field(DTYP, "Raw Soft Channel") - field(INP, "test CP MS") - field(ZRVL, "0") - field(ZRST, "Closed") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "Open") - field(ONSV, "MINOR") - info(autosaveFields, "INP ZRVL ONVL") -} - -################################################################### -# These records control the detector temperature # -################################################################### - -record(ao, "BL45P-EA-PANDA-01:DRV:Temperature") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,0,1)TEMPERATURE") - field(PREC, "1") - field(EGU, "C") - field(VAL, "25.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-01:DRV:Temperature_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.DRV,0,1)TEMPERATURE") - field(PREC, "1") - field(EGU, "C") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-PANDA-01:DRV:TemperatureActual") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.DRV,0,1)TEMPERATURE_ACTUAL") - field(PREC, "1") - field(EGU, "C") - field(SCAN, "I/O Intr") -} - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-PANDA-01:DRV:AsynIO") -{ - field(PORT, "PANDA01.DRV") - field(TIB2,"1") - info("ADType", "ADDriver") -} - - -record(bi, "BL45P-EA-PANDA-01:DRV:CONNECTED") { - field(DESC, "Is ADPandABlocks connected") - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0) ISCONNECTED") - field(ZNAM, "Not Connected") - field(ONAM, "Connected") - field(ZSV, "INVALID") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-PANDA-01:DRV:RESPONDING") { - field(DESC, "Is ADPandABlocks responsive") - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.DRV,0) ISRESPONSIVE") - field(ZNAM, "Not Responding") - field(ONAM, "Responding") - field(ZSV, "INVALID") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-PANDA-01:DRV:HEADER") { - field(DESC, "ADPandABlocks data header") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,0) HEADER") - field(FTVL, "CHAR") - field(NELM, "1024") - # field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-PANDA-01:DRV:DATAEND") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,0) DATAEND") - field(FTVL, "CHAR") - field(NELM, "1024") - # field(SCAN, "I/O Intr") -} - - -record(mbbo, "BL45P-EA-PANDA-01:DRV:ColorMode") { - field(DISA, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:Gain") { - field(DISA, "1") -} - -record(ai, "BL45P-EA-PANDA-01:DRV:Gain_RBV") { - field(DISA, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:BinX") { - field(DISA, "1") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:BinX_RBV") { - field(DISA, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:BinY") { - field(DISA, "1") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:BinY_RBV") { - field(DISA, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:MinX") { - field(DISA, "1") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:MinX_RBV") { - field(DISA, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:MinY") { - field(DISA, "1") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:MinY_RBV") { - field(DISA, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:SizeX") { - field(DISA, "1") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:SizeX_RBV") { - field(DISA, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:SizeY") { - field(DISA, "1") -} - -record(longin, "BL45P-EA-PANDA-01:DRV:SizeY_RBV") { - field(DISA, "1") -} - -record(bo, "BL45P-EA-PANDA-01:DRV:ReverseX") { - field(DISA, "1") -} - -record(bi, "BL45P-EA-PANDA-01:DRV:ReverseX_RBV") { - field(DISA, "1") -} - -record(bo, "BL45P-EA-PANDA-01:DRV:ReverseY") { - field(DISA, "1") -} - -record(bi, "BL45P-EA-PANDA-01:DRV:ReverseY_RBV") { - field(DISA, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:AcquireTime") { - field(DISA, "1") -} - -record(ai, "BL45P-EA-PANDA-01:DRV:AcquireTime_RBV") { - field(DISA, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:AcquirePeriod") { - field(DISA, "1") -} - -record(ai, "BL45P-EA-PANDA-01:DRV:AcquirePeriod_RBV") { - field(DISA, "1") -} -#====================================================================# -# Template file: ADPandABlocks.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# -# EDM: -# % gui, PANDA02.DRV, edmtab, ADPandABlocksDetector.edl, P=BL45P-EA-PANDA-02, R=:DRV:, DEVICE=BL45P-EA-PANDA-02:DRV: -#====================================================================# - -# CSS screen -## This associates a BOY screen with the template -# % gui, PANDA02.DRV, boydetail, ADPandABlocksApp_opi/ADPandABlocks_detail.opi, P=BL45P-EA-PANDA-02, R=:DRV:, DESC=PandA, DEVICE=BL45P-EA-PANDA-02:DRV: -# % gui, PANDA02.DRV, boyembed, ADPandABlocksApp_opi/ADPandABlocks_embed.opi, P=BL45P-EA-PANDA-02, R=:DRV:, DESC=PandA, DEVICE=BL45P-EA-PANDA-02:DRV: -# % gui, PANDA02.DRV, boyembed, ADPandABlocksApp_opi/ADPandABlocks_embed_box.opi, P=BL45P-EA-PANDA-02, R=:DRV:, DESC=PandA, DEVICE=BL45P-EA-PANDA-02:DRV: -# % gui, PANDA02.DRV, boyembed, ADPandABlocksApp_opi/ADPandABlocks_positions.opi, P=BL45P-EA-PANDA-02, R=:DRV:, DESC=PandA, DEVICE=BL45P-EA-PANDA-02:DRV: -# % gui, PANDA02.DRV, boyembed, ADPandABlocksApp_opi/ADPandABlocks_sync.opi, P=BL45P-EA-PANDA-02, R=:DRV:, DESC=PandA, DEVICE=BL45P-EA-PANDA-02:DRV: - -## Info -# % gui, PANDA02.DRV, groupHeading, Info -# % gui, PANDA02.DRV, readback, Port Name , BL45P-EA-PANDA-02:DRV:PortName_RBV -# % gui, PANDA02.DRV, readback, Detector State , BL45P-EA-PANDA-02:DRV:DetectorState_RBV -# % gui, PANDA02.DRV, readback, Status Message , BL45P-EA-PANDA-02:DRV:StatusMessage_RBV -# % gui, PANDA02.DRV, readback, Manufacturer , BL45P-EA-PANDA-02:DRV:Manufacturer_RBV -# % gui, PANDA02.DRV, readback, Model , BL45P-EA-PANDA-02:DRV:Model_RBV -# % gui, PANDA02.DRV, groupExit, InfoExit -## Image -# % gui, PANDA02.DRV, groupHeading, Image -# % gui, PANDA02.DRV, enum, Data Type , BL45P-EA-PANDA-02:DRV:DataType -# % gui, PANDA02.DRV, readback, Sensor Size X , BL45P-EA-PANDA-02:DRV:MaxSizeX_RBV -# % gui, PANDA02.DRV, readback, Sensor Size Y , BL45P-EA-PANDA-02:DRV:MaxSizeY_RBV -# % gui, PANDA02.DRV, readback, Image Size X , BL45P-EA-PANDA-02:DRV:ArraySizeX_RBV -# % gui, PANDA02.DRV, readback, Image Size Y , BL45P-EA-PANDA-02:DRV:ArraySizeY_RBV -# % gui, PANDA02.DRV, readback, Image Bytes , BL45P-EA-PANDA-02:DRV:ArraySize_RBV -# % gui, PANDA02.DRV, groupExit, ImageExit -## Acquisition -# % gui, PANDA02.DRV, groupHeading, Acquisition -# % gui, PANDA02.DRV, demand, Num Exposures , BL45P-EA-PANDA-02:DRV:NumExposures -# % gui, PANDA02.DRV, readback, Num Exposures , BL45P-EA-PANDA-02:DRV:NumExposures_RBV -# % gui, PANDA02.DRV, demand, Num Images , BL45P-EA-PANDA-02:DRV:NumImages -# % gui, PANDA02.DRV, readback, Num Images , BL45P-EA-PANDA-02:DRV:NumImages_RBV -# % gui, PANDA02.DRV, enum, Image Mode , BL45P-EA-PANDA-02:DRV:ImageMode -# % gui, PANDA02.DRV, enum, Trigger Mode , BL45P-EA-PANDA-02:DRV:TriggerMode -# % gui, PANDA02.DRV, enum, Acquire , BL45P-EA-PANDA-02:DRV:Acquire -# % gui, PANDA02.DRV, readback, Acquire , BL45P-EA-PANDA-02:DRV:Acquire -# % gui, PANDA02.DRV, groupExit, AcquisitionExit -## Status -# % gui, PANDA02.DRV, groupHeading, Status -# % gui, PANDA02.DRV, demand, Counter , BL45P-EA-PANDA-02:DRV:ArrayCounter -# % gui, PANDA02.DRV, readback, Counter , BL45P-EA-PANDA-02:DRV:ArrayCounter_RBV -# % gui, PANDA02.DRV, readback, Array Rate (fps) , BL45P-EA-PANDA-02:DRV:ArrayRate_RBV -# % gui, PANDA02.DRV, readback, Time Remaining , BL45P-EA-PANDA-02:DRV:TimeRemaining_RBV -# % gui, PANDA02.DRV, readback, Exposures Remaining , BL45P-EA-PANDA-02:DRV:NumExposuresCounter_RBV -# % gui, PANDA02.DRV, readback, Images Remaining , BL45P-EA-PANDA-02:DRV:NumImagesCounter_RBV -# % gui, PANDA02.DRV, groupExit, StatusExit -## Header -# % gui, PANDA02.DRV, groupHeading, Header -# % gui, PANDA02.DRV, readback, Data End , $(DEVICE,undefined)DATAEND -# % gui, PANDA02.DRV, readback, Data Header , $(DEVICE,undefined)HEADER -# % gui, PANDA02.DRV, groupExit, HeaderExit - -#=================================================================# -# Template file: ADBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -# Using SCANRATE:The ImageJ EPICS_AD_Viewer plugin monitors ArrayCounter_RBV to decide -# when there is a new image to display. That means that it will not display faster than -# the SCANRATE you select. - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-PANDA-02:DRV:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-PANDA-02:DRV:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-PANDA-02:DRV:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-PANDA-02:DRV:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:DRV:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:DRV:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:DRV:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:DRV:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-PANDA-02:DRV:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-PANDA-02:DRV:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-PANDA-02:DRV:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-02:DRV:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-PANDA-02:DRV:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-PANDA-02:DRV:AcquireBusy PP") -} - -record(busy, "BL45P-EA-PANDA-02:DRV:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-PANDA-02:DRV:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-02:DRV:ClearAcquireBusy") { - field(INPA, "BL45P-EA-PANDA-02:DRV:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-PANDA-02:DRV:AcquireBusy PP") -} - -record(bo, "BL45P-EA-PANDA-02:DRV:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-PANDA-02:DRV:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-PANDA-02:DRV:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(PANDA02.DRV,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim0SA") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim0SA") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize0") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize0") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim0SA") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim1SA") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim1SA") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize1") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize1") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim1SA") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim2SA") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim2SA") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize2") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize2") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim2SA") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim3SA") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim3SA") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize3") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize3") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim3SA") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim4SA") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim4SA") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize4") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize4") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim4SA") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim5SA") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim5SA") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize5") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize5") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim5SA") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim6SA") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim6SA") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize6") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize6") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim6SA") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim7SA") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim7SA") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize7") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize7") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim7SA") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim8SA") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim8SA") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize8") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize8") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim8SA") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim9SA") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim9SA") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize9") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize9") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim9SA") -} - - -record(waveform, "BL45P-EA-PANDA-02:DRV:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(PANDA02.DRV,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim0SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim1SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim2SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim3SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim4SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim5SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim6SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim7SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim8SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:DRV:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:DRV:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:DRV:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-PANDA-02:DRV:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-PANDA-02:DRV:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-PANDA-02:DRV:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:DRV:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-PANDA-02:DRV:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:DRV:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-PANDA-02:DRV:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-PANDA-02:DRV:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.DRV,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-PANDA-02:DRV:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-PANDA-02:DRV:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-PANDA-02:DRV:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-PANDA-02:DRV:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-PANDA-02:DRV:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-PANDA-02:DRV:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:DRV:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-PANDA-02:DRV:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA02.DRV,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-PANDA-02:DRV:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA02.DRV,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-PANDA-02:DRV:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-PANDA-02:DRV:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.DRV,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-PANDA-02:DRV:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.DRV,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-PANDA-02:DRV:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-PANDA-02:DRV:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-PANDA-02:DRV:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-PANDA-02:DRV:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-PANDA-02:DRV:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-PANDA-02:DRV:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-PANDA-02:DRV:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:MaxSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)MAX_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:MaxSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)MAX_SIZE_Y") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the detector readout # -# including binning, region start and size # -################################################################### - -record(longout, "BL45P-EA-PANDA-02:DRV:BinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)BIN_X") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:BinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)BIN_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:BinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)BIN_Y") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:BinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)BIN_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:MinX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)MIN_X") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:MinX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)MIN_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:MinY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)MIN_Y") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:MinY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)MIN_Y") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:SizeX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)SIZE_X") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:SizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:SizeY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)SIZE_Y") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:SizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-02:DRV:ReverseX") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)REVERSE_X") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:DRV:ReverseX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)REVERSE_X") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-02:DRV:ReverseY") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)REVERSE_Y") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:DRV:ReverseY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)REVERSE_Y") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control the acquisition time and # -# period # -################################################################### -record(ao, "BL45P-EA-PANDA-02:DRV:AcquireTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0,1)ACQ_TIME") - field(PREC, "3") - field(VAL, "1.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-02:DRV:AcquireTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.DRV,0,1)ACQ_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:AcquirePeriod") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0,1)ACQ_PERIOD") - field(PREC, "3") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-02:DRV:AcquirePeriod_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.DRV,0,1)ACQ_PERIOD") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-PANDA-02:DRV:TimeRemaining_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.DRV,0,1)TIME_REMAINING") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the gain # -################################################################### -record(ao, "BL45P-EA-PANDA-02:DRV:Gain") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0,1)GAIN") - field(VAL, "1.0") - field(PREC, "3") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-02:DRV:Gain_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.DRV,0,1)GAIN") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the frame type # -################################################################### -record(mbbo, "BL45P-EA-PANDA-02:DRV:FrameType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)FRAME_TYPE") - field(ZRST, "Normal") - field(ZRVL, "0") - field(ONST, "Background") - field(ONVL, "1") - field(TWST, "FlatField") - field(TWVL, "2") - field(THST, "DblCorrelation") - field(THVL, "3") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:DRV:FrameType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)FRAME_TYPE") - field(ZRST, "Normal") - field(ZRVL, "0") - field(ONST, "Background") - field(ONVL, "1") - field(TWST, "FlatField") - field(TWVL, "2") - field(THST, "DblCorrelation") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the acquisition mode # -################################################################### -record(mbbo, "BL45P-EA-PANDA-02:DRV:ImageMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)IMAGE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Multiple") - field(ONVL, "1") - field(TWST, "Continuous") - field(TWVL, "2") - field(VAL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:DRV:ImageMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)IMAGE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Multiple") - field(ONVL, "1") - field(TWST, "Continuous") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the trigger mode # -################################################################### -record(mbbo, "BL45P-EA-PANDA-02:DRV:TriggerMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)TRIGGER_MODE") - field(ZRST, "Internal") - field(ZRVL, "0") - field(ONST, "External") - field(ONVL, "1") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:DRV:TriggerMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)TRIGGER_MODE") - field(ZRST, "Internal") - field(ZRVL, "0") - field(ONST, "External") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the number of exposures and # -# number of images # -################################################################### -record(longout, "BL45P-EA-PANDA-02:DRV:NumExposures") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)NEXPOSURES") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:NumExposures_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)NEXPOSURES") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:NumExposuresCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)NEXPOSURES_COUNTER") - field(SCAN, "I/O Intr") -} -record(longout, "BL45P-EA-PANDA-02:DRV:NumImages") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)NIMAGES") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:NumImages_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)NIMAGES") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:NumImagesCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)NIMAGES_COUNTER") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are for the detector state # -################################################################### - -record(mbbi, "BL45P-EA-PANDA-02:DRV:DetectorState_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)STATUS") - field(ZRST, "Idle") - field(ZRVL, "0") - field(ZRSV, "NO_ALARM") - field(ONST, "Acquire") - field(ONVL, "1") - field(ONSV, "NO_ALARM") - field(TWST, "Readout") - field(TWVL, "2") - field(TWSV, "NO_ALARM") - field(THST, "Correct") - field(THVL, "3") - field(THSV, "NO_ALARM") - field(FRST, "Saving") - field(FRVL, "4") - field(FRSV, "NO_ALARM") - field(FVST, "Aborting") - field(FVVL, "5") - field(FVSV, "MINOR") - field(SXST, "Error") - field(SXVL, "6") - field(SXSV, "MAJOR") - field(SVST, "Waiting") - field(SVVL, "7") - field(SVSV, "NO_ALARM") - field(EIST, "Initializing") - field(EIVL, "8") - field(EISV, "NO_ALARM") - field(NIST, "Disconnected") - field(NIVL, "9") - field(NISV, "INVALID") - field(TEST, "Aborted") - field(TEVL, "10") - field(TESV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide status information # -################################################################### - -# Status message. -record(waveform, "BL45P-EA-PANDA-02:DRV:StatusMessage_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,0,1)STATUS_MESSAGE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-PANDA-02:DRV:StringToServer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,0,1)STRING_TO_SERVER") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-PANDA-02:DRV:StringFromServer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,0,1)STRING_FROM_SERVER") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -################################################################@### -# This record can be used to force a read of the detector status # -#################################################################### -record(bo,"BL45P-EA-PANDA-02:DRV:ReadStatus") { - field(DTYP,"asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)READ_STATUS") - field(VAL, "1") - field(SCAN,"Passive") - info(autosaveFields, "SCAN") -} - -################################################################### -# These records control the shutter # -################################################################### - -record(mbbo, "BL45P-EA-PANDA-02:DRV:ShutterMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)SHUTTER_MODE") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "EPICS PV") - field(ONVL, "1") - field(TWST, "Detector output") - field(TWVL, "2") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:DRV:ShutterMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)SHUTTER_MODE") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "EPICS PV") - field(ONVL, "1") - field(TWST, "Camera output") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-02:DRV:ShutterControl") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0,1)SHUTTER_CONTROL") - field(ZNAM, "Close") - field(ONAM, "Open") - field(VAL, "0") -} - -record(bi, "BL45P-EA-PANDA-02:DRV:ShutterControl_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)SHUTTER_CONTROL") - field(ZNAM, "Close") - field(ONAM, "Open") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-PANDA-02:DRV:ShutterStatus_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)SHUTTER_STATUS") - field(ZNAM, "Closed") - field(ZSV, "NO_ALARM") - field(ONAM, "Open") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:ShutterOpenDelay") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0,1)SHUTTER_OPEN_DELAY") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-02:DRV:ShutterOpenDelay_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.DRV,0,1)SHUTTER_OPEN_DELAY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:ShutterCloseDelay") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0,1)SHUTTER_CLOSE_DELAY") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-02:DRV:ShutterCloseDelay_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.DRV,0,1)SHUTTER_CLOSE_DELAY") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -# This record changes state when the driver opens/closes an EPICS shutter -record(bi, "BL45P-EA-PANDA-02:DRV:ShutterControlEPICS") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0,1)SHUTTER_CONTROL_EPICS") - field(ZNAM, "Closed") - field(ZSV, "NO_ALARM") - field(ONAM, "Open") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") - field(FLNK, "BL45P-EA-PANDA-02:DRV:ShutterFanout.PROC") -} - -record(fanout, "BL45P-EA-PANDA-02:DRV:ShutterFanout") -{ - field(LNK1, "BL45P-EA-PANDA-02:DRV:ShutterOpenEPICS.PROC PP MS") - field(LNK2, "BL45P-EA-PANDA-02:DRV:ShutterCloseEPICS.PROC PP MS") -} - -record(calcout, "BL45P-EA-PANDA-02:DRV:ShutterOpenEPICS") -{ - field(INPA, "BL45P-EA-PANDA-02:DRV:ShutterControlEPICS.VAL NPP NMS") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(DOPT, "Use OCAL") - field(OCAL, "1") - field(OUT, "") - info(autosaveFields, "OUT OCAL") -} - -record(calcout, "BL45P-EA-PANDA-02:DRV:ShutterCloseEPICS") -{ - field(INPA, "BL45P-EA-PANDA-02:DRV:ShutterControlEPICS.VAL NPP NMS") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(DOPT, "Use OCAL") - field(OCAL, "0") - field(OUT, "") - info(autosaveFields, "OUT OCAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:DRV:ShutterStatusEPICS_RBV") -{ - field(DTYP, "Raw Soft Channel") - field(INP, "test CP MS") - field(ZRVL, "0") - field(ZRST, "Closed") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "Open") - field(ONSV, "MINOR") - info(autosaveFields, "INP ZRVL ONVL") -} - -################################################################### -# These records control the detector temperature # -################################################################### - -record(ao, "BL45P-EA-PANDA-02:DRV:Temperature") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0,1)TEMPERATURE") - field(PREC, "1") - field(EGU, "C") - field(VAL, "25.0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-02:DRV:Temperature_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.DRV,0,1)TEMPERATURE") - field(PREC, "1") - field(EGU, "C") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-PANDA-02:DRV:TemperatureActual") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.DRV,0,1)TEMPERATURE_ACTUAL") - field(PREC, "1") - field(EGU, "C") - field(SCAN, "I/O Intr") -} - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-PANDA-02:DRV:AsynIO") -{ - field(PORT, "PANDA02.DRV") - field(TIB2,"1") - info("ADType", "ADDriver") -} - - -record(bi, "BL45P-EA-PANDA-02:DRV:CONNECTED") { - field(DESC, "Is ADPandABlocks connected") - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0) ISCONNECTED") - field(ZNAM, "Not Connected") - field(ONAM, "Connected") - field(ZSV, "INVALID") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-PANDA-02:DRV:RESPONDING") { - field(DESC, "Is ADPandABlocks responsive") - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.DRV,0) ISRESPONSIVE") - field(ZNAM, "Not Responding") - field(ONAM, "Responding") - field(ZSV, "INVALID") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-PANDA-02:DRV:HEADER") { - field(DESC, "ADPandABlocks data header") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,0) HEADER") - field(FTVL, "CHAR") - field(NELM, "1024") - # field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-PANDA-02:DRV:DATAEND") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,0) DATAEND") - field(FTVL, "CHAR") - field(NELM, "1024") - # field(SCAN, "I/O Intr") -} - - -record(mbbo, "BL45P-EA-PANDA-02:DRV:ColorMode") { - field(DISA, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:Gain") { - field(DISA, "1") -} - -record(ai, "BL45P-EA-PANDA-02:DRV:Gain_RBV") { - field(DISA, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:BinX") { - field(DISA, "1") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:BinX_RBV") { - field(DISA, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:BinY") { - field(DISA, "1") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:BinY_RBV") { - field(DISA, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:MinX") { - field(DISA, "1") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:MinX_RBV") { - field(DISA, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:MinY") { - field(DISA, "1") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:MinY_RBV") { - field(DISA, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:SizeX") { - field(DISA, "1") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:SizeX_RBV") { - field(DISA, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:SizeY") { - field(DISA, "1") -} - -record(longin, "BL45P-EA-PANDA-02:DRV:SizeY_RBV") { - field(DISA, "1") -} - -record(bo, "BL45P-EA-PANDA-02:DRV:ReverseX") { - field(DISA, "1") -} - -record(bi, "BL45P-EA-PANDA-02:DRV:ReverseX_RBV") { - field(DISA, "1") -} - -record(bo, "BL45P-EA-PANDA-02:DRV:ReverseY") { - field(DISA, "1") -} - -record(bi, "BL45P-EA-PANDA-02:DRV:ReverseY_RBV") { - field(DISA, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:AcquireTime") { - field(DISA, "1") -} - -record(ai, "BL45P-EA-PANDA-02:DRV:AcquireTime_RBV") { - field(DISA, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:AcquirePeriod") { - field(DISA, "1") -} - -record(ai, "BL45P-EA-PANDA-02:DRV:AcquirePeriod_RBV") { - field(DISA, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS0") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,0)POSBUS0") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS0:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0)POSBUS0:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS0:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,0)POSBUS0:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS0:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,0)POSBUS0:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS0:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,0)POSBUS0:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS0:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,0)POSBUS0:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS0:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0)POSBUS0:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS0:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0)POSBUS0:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS0:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0)POSBUS0:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS0:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0)POSBUS0:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS0:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,0)POSBUS0:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS1") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,1)POSBUS1") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS1:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,1)POSBUS1:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS1:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,1)POSBUS1:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS1:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,1)POSBUS1:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS1:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,1)POSBUS1:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS1:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,1)POSBUS1:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS1:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,1)POSBUS1:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS1:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,1)POSBUS1:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS1:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,1)POSBUS1:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS1:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,1)POSBUS1:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS1:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,1)POSBUS1:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS2") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,2)POSBUS2") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS2:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,2)POSBUS2:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS2:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,2)POSBUS2:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS2:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,2)POSBUS2:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS2:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,2)POSBUS2:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS2:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,2)POSBUS2:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS2:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,2)POSBUS2:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS2:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,2)POSBUS2:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS2:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,2)POSBUS2:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS2:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,2)POSBUS2:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS2:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,2)POSBUS2:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS3") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,3)POSBUS3") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS3:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,3)POSBUS3:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS3:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,3)POSBUS3:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS3:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,3)POSBUS3:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS3:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,3)POSBUS3:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS3:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,3)POSBUS3:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS3:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,3)POSBUS3:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS3:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,3)POSBUS3:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS3:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,3)POSBUS3:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS3:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,3)POSBUS3:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS3:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,3)POSBUS3:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS4") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,4)POSBUS4") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS4:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,4)POSBUS4:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS4:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,4)POSBUS4:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS4:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,4)POSBUS4:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS4:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,4)POSBUS4:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS4:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,4)POSBUS4:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS4:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,4)POSBUS4:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS4:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,4)POSBUS4:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS4:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,4)POSBUS4:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS4:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,4)POSBUS4:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS4:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,4)POSBUS4:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS5") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,5)POSBUS5") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS5:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,5)POSBUS5:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS5:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,5)POSBUS5:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS5:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,5)POSBUS5:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS5:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,5)POSBUS5:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS5:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,5)POSBUS5:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS5:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,5)POSBUS5:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS5:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,5)POSBUS5:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS5:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,5)POSBUS5:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS5:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,5)POSBUS5:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS5:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,5)POSBUS5:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS6") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,6)POSBUS6") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS6:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,6)POSBUS6:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS6:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,6)POSBUS6:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS6:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,6)POSBUS6:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS6:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,6)POSBUS6:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS6:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,6)POSBUS6:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS6:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,6)POSBUS6:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS6:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,6)POSBUS6:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS6:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,6)POSBUS6:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS6:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,6)POSBUS6:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS6:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,6)POSBUS6:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS7") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,7)POSBUS7") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS7:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,7)POSBUS7:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS7:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,7)POSBUS7:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS7:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,7)POSBUS7:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS7:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,7)POSBUS7:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS7:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,7)POSBUS7:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS7:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,7)POSBUS7:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS7:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,7)POSBUS7:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS7:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,7)POSBUS7:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS7:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,7)POSBUS7:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS7:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,7)POSBUS7:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS8") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,8)POSBUS8") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS8:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,8)POSBUS8:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS8:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,8)POSBUS8:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS8:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,8)POSBUS8:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS8:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,8)POSBUS8:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS8:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,8)POSBUS8:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS8:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,8)POSBUS8:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS8:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,8)POSBUS8:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS8:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,8)POSBUS8:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS8:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,8)POSBUS8:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS8:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,8)POSBUS8:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS9") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,9)POSBUS9") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS9:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,9)POSBUS9:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS9:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,9)POSBUS9:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS9:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,9)POSBUS9:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS9:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,9)POSBUS9:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS9:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,9)POSBUS9:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS9:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,9)POSBUS9:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS9:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,9)POSBUS9:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS9:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,9)POSBUS9:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS9:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,9)POSBUS9:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS9:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,9)POSBUS9:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS10") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,10)POSBUS10") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS10:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,10)POSBUS10:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS10:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,10)POSBUS10:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS10:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,10)POSBUS10:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS10:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,10)POSBUS10:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS10:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,10)POSBUS10:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS10:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,10)POSBUS10:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS10:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,10)POSBUS10:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS10:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,10)POSBUS10:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS10:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,10)POSBUS10:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS10:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,10)POSBUS10:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS11") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,11)POSBUS11") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS11:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,11)POSBUS11:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS11:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,11)POSBUS11:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS11:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,11)POSBUS11:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS11:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,11)POSBUS11:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS11:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,11)POSBUS11:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS11:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,11)POSBUS11:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS11:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,11)POSBUS11:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS11:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,11)POSBUS11:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS11:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,11)POSBUS11:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS11:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,11)POSBUS11:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS12") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,12)POSBUS12") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS12:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,12)POSBUS12:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS12:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,12)POSBUS12:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS12:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,12)POSBUS12:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS12:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,12)POSBUS12:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS12:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,12)POSBUS12:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS12:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,12)POSBUS12:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS12:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,12)POSBUS12:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS12:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,12)POSBUS12:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS12:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,12)POSBUS12:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS12:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,12)POSBUS12:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS13") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,13)POSBUS13") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS13:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,13)POSBUS13:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS13:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,13)POSBUS13:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS13:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,13)POSBUS13:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS13:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,13)POSBUS13:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS13:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,13)POSBUS13:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS13:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,13)POSBUS13:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS13:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,13)POSBUS13:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS13:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,13)POSBUS13:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS13:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,13)POSBUS13:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS13:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,13)POSBUS13:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS14") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,14)POSBUS14") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS14:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,14)POSBUS14:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS14:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,14)POSBUS14:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS14:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,14)POSBUS14:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS14:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,14)POSBUS14:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS14:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,14)POSBUS14:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS14:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,14)POSBUS14:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS14:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,14)POSBUS14:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS14:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,14)POSBUS14:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS14:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,14)POSBUS14:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS14:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,14)POSBUS14:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS15") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,15)POSBUS15") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS15:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,15)POSBUS15:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS15:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,15)POSBUS15:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS15:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,15)POSBUS15:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS15:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,15)POSBUS15:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS15:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,15)POSBUS15:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS15:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,15)POSBUS15:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS15:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,15)POSBUS15:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS15:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,15)POSBUS15:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS15:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,15)POSBUS15:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS15:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,15)POSBUS15:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS16") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,16)POSBUS16") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS16:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,16)POSBUS16:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS16:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,16)POSBUS16:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS16:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,16)POSBUS16:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS16:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,16)POSBUS16:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS16:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,16)POSBUS16:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS16:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,16)POSBUS16:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS16:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,16)POSBUS16:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS16:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,16)POSBUS16:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS16:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,16)POSBUS16:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS16:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,16)POSBUS16:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS17") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,17)POSBUS17") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS17:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,17)POSBUS17:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS17:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,17)POSBUS17:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS17:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,17)POSBUS17:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS17:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,17)POSBUS17:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS17:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,17)POSBUS17:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS17:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,17)POSBUS17:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS17:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,17)POSBUS17:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS17:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,17)POSBUS17:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS17:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,17)POSBUS17:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS17:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,17)POSBUS17:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS18") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,18)POSBUS18") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS18:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,18)POSBUS18:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS18:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,18)POSBUS18:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS18:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,18)POSBUS18:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS18:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,18)POSBUS18:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS18:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,18)POSBUS18:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS18:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,18)POSBUS18:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS18:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,18)POSBUS18:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS18:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,18)POSBUS18:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS18:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,18)POSBUS18:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS18:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,18)POSBUS18:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS19") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,19)POSBUS19") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS19:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,19)POSBUS19:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS19:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,19)POSBUS19:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS19:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,19)POSBUS19:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS19:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,19)POSBUS19:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS19:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,19)POSBUS19:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS19:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,19)POSBUS19:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS19:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,19)POSBUS19:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS19:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,19)POSBUS19:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS19:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,19)POSBUS19:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS19:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,19)POSBUS19:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS20") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,20)POSBUS20") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS20:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,20)POSBUS20:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS20:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,20)POSBUS20:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS20:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,20)POSBUS20:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS20:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,20)POSBUS20:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS20:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,20)POSBUS20:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS20:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,20)POSBUS20:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS20:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,20)POSBUS20:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS20:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,20)POSBUS20:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS20:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,20)POSBUS20:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS20:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,20)POSBUS20:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS21") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,21)POSBUS21") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS21:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,21)POSBUS21:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS21:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,21)POSBUS21:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS21:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,21)POSBUS21:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS21:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,21)POSBUS21:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS21:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,21)POSBUS21:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS21:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,21)POSBUS21:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS21:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,21)POSBUS21:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS21:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,21)POSBUS21:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS21:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,21)POSBUS21:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS21:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,21)POSBUS21:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS22") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,22)POSBUS22") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS22:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,22)POSBUS22:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS22:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,22)POSBUS22:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS22:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,22)POSBUS22:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS22:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,22)POSBUS22:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS22:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,22)POSBUS22:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS22:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,22)POSBUS22:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS22:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,22)POSBUS22:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS22:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,22)POSBUS22:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS22:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,22)POSBUS22:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS22:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,22)POSBUS22:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS23") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,23)POSBUS23") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS23:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,23)POSBUS23:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS23:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,23)POSBUS23:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS23:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,23)POSBUS23:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS23:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,23)POSBUS23:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS23:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,23)POSBUS23:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS23:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,23)POSBUS23:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS23:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,23)POSBUS23:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS23:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,23)POSBUS23:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS23:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,23)POSBUS23:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS23:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,23)POSBUS23:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS24") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,24)POSBUS24") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS24:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,24)POSBUS24:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS24:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,24)POSBUS24:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS24:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,24)POSBUS24:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS24:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,24)POSBUS24:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS24:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,24)POSBUS24:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS24:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,24)POSBUS24:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS24:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,24)POSBUS24:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS24:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,24)POSBUS24:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS24:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,24)POSBUS24:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS24:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,24)POSBUS24:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS25") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,25)POSBUS25") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS25:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,25)POSBUS25:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS25:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,25)POSBUS25:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS25:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,25)POSBUS25:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS25:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,25)POSBUS25:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS25:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,25)POSBUS25:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS25:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,25)POSBUS25:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS25:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,25)POSBUS25:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS25:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,25)POSBUS25:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS25:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,25)POSBUS25:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS25:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,25)POSBUS25:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS26") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,26)POSBUS26") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS26:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,26)POSBUS26:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS26:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,26)POSBUS26:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS26:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,26)POSBUS26:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS26:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,26)POSBUS26:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS26:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,26)POSBUS26:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS26:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,26)POSBUS26:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS26:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,26)POSBUS26:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS26:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,26)POSBUS26:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS26:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,26)POSBUS26:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS26:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,26)POSBUS26:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS27") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,27)POSBUS27") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS27:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,27)POSBUS27:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS27:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,27)POSBUS27:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS27:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,27)POSBUS27:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS27:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,27)POSBUS27:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS27:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,27)POSBUS27:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS27:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,27)POSBUS27:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS27:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,27)POSBUS27:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS27:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,27)POSBUS27:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS27:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,27)POSBUS27:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS27:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,27)POSBUS27:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS28") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,28)POSBUS28") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS28:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,28)POSBUS28:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS28:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,28)POSBUS28:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS28:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,28)POSBUS28:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS28:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,28)POSBUS28:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS28:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,28)POSBUS28:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS28:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,28)POSBUS28:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS28:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,28)POSBUS28:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS28:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,28)POSBUS28:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS28:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,28)POSBUS28:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS28:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,28)POSBUS28:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS29") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,29)POSBUS29") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS29:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,29)POSBUS29:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS29:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,29)POSBUS29:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS29:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,29)POSBUS29:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS29:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,29)POSBUS29:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS29:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,29)POSBUS29:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS29:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,29)POSBUS29:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS29:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,29)POSBUS29:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS29:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,29)POSBUS29:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS29:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,29)POSBUS29:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS29:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,29)POSBUS29:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS30") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,30)POSBUS30") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS30:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,30)POSBUS30:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS30:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,30)POSBUS30:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS30:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,30)POSBUS30:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS30:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,30)POSBUS30:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS30:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,30)POSBUS30:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS30:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,30)POSBUS30:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS30:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,30)POSBUS30:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS30:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,30)POSBUS30:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS30:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,30)POSBUS30:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS30:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,30)POSBUS30:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-01:DRV:POSBUS31") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.DRV,31)POSBUS31") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-01:DRV:POSBUS31:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,31)POSBUS31:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS31:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,31)POSBUS31:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS31:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,31)POSBUS31:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:POSBUS31:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,31)POSBUS31:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:POSBUS31:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,31)POSBUS31:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS31:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,31)POSBUS31:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS31:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,31)POSBUS31:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-01:DRV:POSBUS31:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,31)POSBUS31:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-01:DRV:POSBUS31:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,31)POSBUS31:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-01:DRV:POSBUS31:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,31)POSBUS31:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS0") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,0)POSBUS0") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS0:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)POSBUS0:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS0:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0)POSBUS0:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS0:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0)POSBUS0:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS0:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,0)POSBUS0:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS0:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0)POSBUS0:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS0:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)POSBUS0:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS0:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)POSBUS0:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS0:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)POSBUS0:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS0:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)POSBUS0:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS0:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,0)POSBUS0:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS1") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,1)POSBUS1") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS1:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,1)POSBUS1:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS1:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,1)POSBUS1:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS1:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,1)POSBUS1:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS1:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,1)POSBUS1:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS1:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,1)POSBUS1:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS1:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,1)POSBUS1:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS1:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,1)POSBUS1:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS1:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,1)POSBUS1:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS1:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,1)POSBUS1:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS1:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,1)POSBUS1:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS2") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,2)POSBUS2") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS2:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,2)POSBUS2:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS2:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,2)POSBUS2:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS2:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,2)POSBUS2:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS2:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,2)POSBUS2:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS2:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,2)POSBUS2:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS2:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,2)POSBUS2:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS2:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,2)POSBUS2:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS2:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,2)POSBUS2:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS2:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,2)POSBUS2:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS2:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,2)POSBUS2:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS3") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,3)POSBUS3") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS3:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,3)POSBUS3:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS3:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,3)POSBUS3:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS3:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,3)POSBUS3:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS3:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,3)POSBUS3:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS3:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,3)POSBUS3:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS3:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,3)POSBUS3:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS3:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,3)POSBUS3:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS3:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,3)POSBUS3:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS3:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,3)POSBUS3:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS3:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,3)POSBUS3:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS4") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,4)POSBUS4") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS4:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,4)POSBUS4:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS4:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,4)POSBUS4:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS4:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,4)POSBUS4:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS4:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,4)POSBUS4:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS4:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,4)POSBUS4:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS4:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,4)POSBUS4:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS4:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,4)POSBUS4:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS4:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,4)POSBUS4:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS4:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,4)POSBUS4:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS4:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,4)POSBUS4:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS5") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,5)POSBUS5") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS5:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,5)POSBUS5:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS5:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,5)POSBUS5:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS5:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,5)POSBUS5:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS5:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,5)POSBUS5:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS5:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,5)POSBUS5:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS5:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,5)POSBUS5:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS5:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,5)POSBUS5:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS5:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,5)POSBUS5:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS5:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,5)POSBUS5:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS5:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,5)POSBUS5:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS6") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,6)POSBUS6") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS6:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,6)POSBUS6:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS6:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,6)POSBUS6:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS6:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,6)POSBUS6:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS6:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,6)POSBUS6:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS6:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,6)POSBUS6:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS6:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,6)POSBUS6:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS6:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,6)POSBUS6:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS6:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,6)POSBUS6:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS6:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,6)POSBUS6:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS6:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,6)POSBUS6:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS7") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,7)POSBUS7") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS7:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,7)POSBUS7:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS7:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,7)POSBUS7:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS7:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,7)POSBUS7:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS7:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,7)POSBUS7:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS7:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,7)POSBUS7:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS7:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,7)POSBUS7:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS7:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,7)POSBUS7:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS7:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,7)POSBUS7:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS7:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,7)POSBUS7:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS7:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,7)POSBUS7:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS8") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,8)POSBUS8") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS8:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,8)POSBUS8:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS8:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,8)POSBUS8:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS8:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,8)POSBUS8:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS8:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,8)POSBUS8:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS8:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,8)POSBUS8:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS8:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,8)POSBUS8:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS8:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,8)POSBUS8:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS8:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,8)POSBUS8:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS8:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,8)POSBUS8:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS8:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,8)POSBUS8:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS9") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,9)POSBUS9") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS9:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,9)POSBUS9:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS9:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,9)POSBUS9:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS9:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,9)POSBUS9:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS9:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,9)POSBUS9:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS9:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,9)POSBUS9:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS9:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,9)POSBUS9:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS9:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,9)POSBUS9:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS9:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,9)POSBUS9:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS9:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,9)POSBUS9:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS9:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,9)POSBUS9:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS10") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,10)POSBUS10") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS10:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,10)POSBUS10:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS10:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,10)POSBUS10:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS10:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,10)POSBUS10:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS10:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,10)POSBUS10:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS10:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,10)POSBUS10:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS10:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,10)POSBUS10:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS10:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,10)POSBUS10:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS10:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,10)POSBUS10:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS10:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,10)POSBUS10:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS10:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,10)POSBUS10:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS11") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,11)POSBUS11") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS11:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,11)POSBUS11:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS11:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,11)POSBUS11:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS11:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,11)POSBUS11:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS11:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,11)POSBUS11:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS11:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,11)POSBUS11:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS11:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,11)POSBUS11:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS11:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,11)POSBUS11:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS11:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,11)POSBUS11:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS11:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,11)POSBUS11:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS11:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,11)POSBUS11:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS12") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,12)POSBUS12") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS12:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,12)POSBUS12:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS12:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,12)POSBUS12:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS12:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,12)POSBUS12:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS12:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,12)POSBUS12:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS12:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,12)POSBUS12:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS12:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,12)POSBUS12:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS12:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,12)POSBUS12:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS12:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,12)POSBUS12:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS12:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,12)POSBUS12:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS12:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,12)POSBUS12:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS13") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,13)POSBUS13") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS13:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,13)POSBUS13:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS13:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,13)POSBUS13:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS13:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,13)POSBUS13:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS13:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,13)POSBUS13:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS13:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,13)POSBUS13:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS13:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,13)POSBUS13:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS13:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,13)POSBUS13:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS13:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,13)POSBUS13:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS13:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,13)POSBUS13:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS13:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,13)POSBUS13:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS14") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,14)POSBUS14") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS14:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,14)POSBUS14:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS14:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,14)POSBUS14:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS14:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,14)POSBUS14:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS14:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,14)POSBUS14:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS14:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,14)POSBUS14:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS14:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,14)POSBUS14:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS14:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,14)POSBUS14:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS14:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,14)POSBUS14:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS14:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,14)POSBUS14:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS14:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,14)POSBUS14:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS15") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,15)POSBUS15") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS15:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,15)POSBUS15:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS15:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,15)POSBUS15:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS15:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,15)POSBUS15:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS15:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,15)POSBUS15:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS15:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,15)POSBUS15:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS15:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,15)POSBUS15:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS15:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,15)POSBUS15:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS15:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,15)POSBUS15:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS15:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,15)POSBUS15:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS15:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,15)POSBUS15:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS16") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,16)POSBUS16") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS16:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,16)POSBUS16:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS16:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,16)POSBUS16:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS16:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,16)POSBUS16:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS16:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,16)POSBUS16:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS16:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,16)POSBUS16:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS16:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,16)POSBUS16:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS16:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,16)POSBUS16:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS16:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,16)POSBUS16:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS16:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,16)POSBUS16:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS16:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,16)POSBUS16:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS17") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,17)POSBUS17") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS17:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,17)POSBUS17:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS17:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,17)POSBUS17:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS17:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,17)POSBUS17:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS17:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,17)POSBUS17:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS17:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,17)POSBUS17:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS17:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,17)POSBUS17:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS17:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,17)POSBUS17:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS17:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,17)POSBUS17:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS17:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,17)POSBUS17:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS17:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,17)POSBUS17:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS18") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,18)POSBUS18") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS18:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,18)POSBUS18:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS18:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,18)POSBUS18:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS18:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,18)POSBUS18:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS18:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,18)POSBUS18:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS18:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,18)POSBUS18:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS18:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,18)POSBUS18:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS18:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,18)POSBUS18:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS18:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,18)POSBUS18:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS18:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,18)POSBUS18:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS18:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,18)POSBUS18:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS19") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,19)POSBUS19") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS19:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,19)POSBUS19:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS19:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,19)POSBUS19:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS19:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,19)POSBUS19:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS19:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,19)POSBUS19:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS19:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,19)POSBUS19:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS19:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,19)POSBUS19:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS19:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,19)POSBUS19:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS19:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,19)POSBUS19:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS19:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,19)POSBUS19:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS19:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,19)POSBUS19:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS20") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,20)POSBUS20") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS20:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,20)POSBUS20:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS20:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,20)POSBUS20:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS20:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,20)POSBUS20:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS20:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,20)POSBUS20:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS20:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,20)POSBUS20:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS20:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,20)POSBUS20:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS20:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,20)POSBUS20:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS20:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,20)POSBUS20:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS20:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,20)POSBUS20:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS20:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,20)POSBUS20:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS21") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,21)POSBUS21") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS21:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,21)POSBUS21:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS21:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,21)POSBUS21:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS21:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,21)POSBUS21:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS21:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,21)POSBUS21:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS21:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,21)POSBUS21:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS21:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,21)POSBUS21:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS21:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,21)POSBUS21:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS21:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,21)POSBUS21:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS21:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,21)POSBUS21:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS21:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,21)POSBUS21:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS22") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,22)POSBUS22") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS22:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,22)POSBUS22:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS22:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,22)POSBUS22:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS22:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,22)POSBUS22:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS22:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,22)POSBUS22:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS22:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,22)POSBUS22:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS22:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,22)POSBUS22:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS22:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,22)POSBUS22:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS22:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,22)POSBUS22:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS22:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,22)POSBUS22:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS22:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,22)POSBUS22:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS23") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,23)POSBUS23") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS23:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,23)POSBUS23:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS23:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,23)POSBUS23:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS23:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,23)POSBUS23:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS23:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,23)POSBUS23:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS23:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,23)POSBUS23:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS23:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,23)POSBUS23:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS23:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,23)POSBUS23:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS23:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,23)POSBUS23:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS23:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,23)POSBUS23:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS23:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,23)POSBUS23:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS24") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,24)POSBUS24") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS24:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,24)POSBUS24:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS24:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,24)POSBUS24:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS24:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,24)POSBUS24:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS24:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,24)POSBUS24:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS24:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,24)POSBUS24:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS24:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,24)POSBUS24:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS24:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,24)POSBUS24:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS24:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,24)POSBUS24:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS24:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,24)POSBUS24:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS24:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,24)POSBUS24:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS25") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,25)POSBUS25") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS25:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,25)POSBUS25:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS25:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,25)POSBUS25:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS25:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,25)POSBUS25:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS25:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,25)POSBUS25:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS25:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,25)POSBUS25:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS25:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,25)POSBUS25:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS25:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,25)POSBUS25:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS25:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,25)POSBUS25:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS25:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,25)POSBUS25:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS25:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,25)POSBUS25:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS26") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,26)POSBUS26") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS26:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,26)POSBUS26:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS26:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,26)POSBUS26:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS26:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,26)POSBUS26:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS26:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,26)POSBUS26:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS26:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,26)POSBUS26:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS26:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,26)POSBUS26:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS26:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,26)POSBUS26:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS26:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,26)POSBUS26:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS26:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,26)POSBUS26:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS26:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,26)POSBUS26:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS27") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,27)POSBUS27") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS27:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,27)POSBUS27:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS27:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,27)POSBUS27:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS27:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,27)POSBUS27:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS27:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,27)POSBUS27:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS27:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,27)POSBUS27:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS27:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,27)POSBUS27:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS27:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,27)POSBUS27:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS27:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,27)POSBUS27:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS27:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,27)POSBUS27:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS27:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,27)POSBUS27:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS28") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,28)POSBUS28") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS28:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,28)POSBUS28:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS28:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,28)POSBUS28:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS28:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,28)POSBUS28:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS28:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,28)POSBUS28:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS28:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,28)POSBUS28:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS28:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,28)POSBUS28:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS28:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,28)POSBUS28:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS28:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,28)POSBUS28:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS28:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,28)POSBUS28:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS28:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,28)POSBUS28:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS29") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,29)POSBUS29") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS29:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,29)POSBUS29:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS29:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,29)POSBUS29:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS29:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,29)POSBUS29:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS29:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,29)POSBUS29:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS29:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,29)POSBUS29:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS29:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,29)POSBUS29:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS29:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,29)POSBUS29:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS29:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,29)POSBUS29:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS29:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,29)POSBUS29:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS29:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,29)POSBUS29:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS30") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,30)POSBUS30") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS30:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,30)POSBUS30:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS30:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,30)POSBUS30:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS30:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,30)POSBUS30:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS30:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,30)POSBUS30:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS30:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,30)POSBUS30:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS30:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,30)POSBUS30:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS30:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,30)POSBUS30:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS30:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,30)POSBUS30:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS30:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,30)POSBUS30:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS30:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,30)POSBUS30:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksPosBus.template -# -# Macros: -# % macro, PORT, Asyn Port name for ADPandABlocks coms -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, POSBUS_IND, Position Bus index -#====================================================================# - -record(stringin, "BL45P-EA-PANDA-02:DRV:POSBUS31") { - field(DESC, "Data end string") - field(SCAN, "I/O Intr") - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.DRV,31)POSBUS31") - #field(FTVL, "CHAR") - #field(NELM, "1024") -} - -record(mbbo, "BL45P-EA-PANDA-02:DRV:POSBUS31:CAPTURE") { - field(DESC, "Data end string") - field(ZRVL, "0") - field(ZRST, "No") - field(ONVL, "1") - field(ONST, "Value") - field(TWVL, "2") - field(TWST, "Diff") - field(THVL, "3") - field(THST, "Sum") - field(FRVL, "4") - field(FRST, "Mean") - field(FVVL, "5") - field(FVST, "Min") - field(SXVL, "6") - field(SXST, "Max") - field(SVVL, "7") - field(SVST, "Min Max") - field(EIVL, "8") - field(EIST, "Min Max Mean") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,31)POSBUS31:CAPTURE") - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS31:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,31)POSBUS31:SCALE") - field(PREC, 8) - info(asyn:READBACK, "1") -} - -#% archiver 10 Monitor -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS31:OFFSET") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,31)POSBUS31:OFFSET") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:POSBUS31:UNITS") { - field(DESC, "INENC units value") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,31)POSBUS31:UNITS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:POSBUS31:VAL") { - field(DESC, "INENC value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,31)POSBUS31:VAL") - field(PREC, 4) - info(asyn:READBACK, "1") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS31:UNSCALEDVAL") { - field(DESC, "INENC unscaled value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,31)POSBUS31:UNSCALEDVAL") - info(asyn:READBACK, "1") -} - -# Embedded screen type -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS31:SCREENTYPE") { - field(DESC, "INENC scale value") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,31)POSBUS31:SCREENTYPE") - info(asyn:READBACK, "1") -} - -# Calibrate motor position (Requires MotorSync template) -record(bo, "BL45P-EA-PANDA-02:DRV:POSBUS31:CALIBRATE") { - field(DESC, "Manually sync motor with motorsync") - field(ZNAM, "Done") - field(ONAM, "Calibrating") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,31)POSBUS31:CALIBRATE") - info(asyn:READBACK, "1") -} - -# Reads setpos from the MotorSync template (if it exists) -record(longout, "BL45P-EA-PANDA-02:DRV:POSBUS31:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,31)POSBUS31:SETPOS") - info(asyn:READBACK, "1") -} - -# Underlying motor name from MotorSync template (if it exists) -record (stringout, "BL45P-EA-PANDA-02:DRV:POSBUS31:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,31)POSBUS31:MOTORNAME") - info(asyn:READBACK, "1") -} -#====================================================================# -# Template file: ADPandABlocksEnc.template -# -# Macros: -# % macro, MOTOR, pv of motor record -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, PORT, asyn port -# % macro, ENC_IND, index for motor -# % macro, DIR, motor direction + for positive - for negative -# % macro, MULT, scale factor multiply -# % macro, READONLY, Should screen be read-only -# % macro, HOMESETTLE, Delay after home for calibrating motor position -#====================================================================# - - -record(calcout, "BL45P-EA-PANDA-01:DRV:INENC1:SCALECALC") { - field(CALC, "(B=0?A:-A)*(C>0?C:1)*D") - field(INPA, "BL45P-MO-CHOP-01:HOR.ERES CP") - field(INPB, "BL45P-MO-CHOP-01:HOR.DIR CP") - field(INPC, "BL45P-MO-CHOP-01:HOR:SCALE CP") - field(INPD, "+0.000043") - field(OUT, "BL45P-EA-PANDA-01:DRV:INENC1:SCALE PP") - field(PREC, "4") -} - -record(calcout, "BL45P-EA-PANDA-01:DRV:INENC1:OFFCALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-CHOP-01:HOR.OFF CP") - field(OUT, "BL45P-EA-PANDA-01:DRV:INENC1:OFF PP") - field(PREC, "4") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:INENC1:UNITSCALC") { - field(OUT, "BL45P-EA-PANDA-01:DRV:INENC1:UNITS PP") - field(DOL, "BL45P-MO-CHOP-01:HOR.EGU CP") - field(OMSL, "closed_loop") -} - -record(calcout, "BL45P-EA-PANDA-01:DRV:INENC1:ONHOMED") { - field(DESC, "Trigger seq when motor has been homed") - field(CALC, "A=0") - field(INPA, "BL45P-MO-CHOP-01:HOR:HOMING CP") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-PANDA-01:DRV:INENC1:ONENABLE.PROC") - field(VAL, "1") -} - -record(seq, "BL45P-EA-PANDA-01:DRV:INENC1:ONENABLE") { - field(DESC, "Calibrate pos after home with delay") - field(DOL1, "1") - field(LNK1, "BL45P-EA-PANDA-01:DRV:INENC1:SETPOSCALC.PROC PP") - field(DLY1, "5") -} - -# % archiver 10 Monitor -record(calcout, "BL45P-EA-PANDA-01:DRV:INENC1:SETPOSCALC") { - field(CALC, "A*(B>0?B:1)*C") - field(INPA, "BL45P-MO-CHOP-01:HOR.REP") #WRITES TO THE MOTOR RECORD VAL IN COUNTS INSTEAD OF :RBV - field(INPB, "BL45P-MO-CHOP-01:HOR:SCALE") - field(INPC, "+1") - field(OUT, "BL45P-EA-PANDA-01:DRV:INENC1:SETPOS PP") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:INENC1:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0)INENC1:SETPOS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:INENC1:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,0)INENC1:SCALE") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:INENC1:OFF") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,0)INENC1:OFF") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:INENC1:UNITS") { - field(DESC, "INENC units") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,0)INENC1:UNITS") -} - -# Set embedded screen type to read-only -record(longout, "BL45P-EA-PANDA-01:DRV:INENC1:SCREENTYPE") { - field(DESC, "INENC screen type") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0)INENC1:SCREENTYPE") - field(VAL, "1") - field(PINI, "YES") -} - -# Trigger manual calibration of encoder position -record(longout, "BL45P-EA-PANDA-01:DRV:INENC1:CALIBRATE") { - field(DESC, "Trigger encoder calibration") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0)INENC1:CALIBRATE") - field(FLNK, "BL45P-EA-PANDA-01:DRV:INENC1:SETPOSCALC.PROC PP") - info(asyn:READBACK, "1") - } - - # Underlying motor name -record (stringout, "BL45P-EA-PANDA-01:DRV:INENC1:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,0)INENC1:MOTORNAME") - field(VAL, "BL45P-MO-CHOP-01:HOR") - field(PINI, "YES") -}#====================================================================# -# Template file: ADPandABlocksEnc.template -# -# Macros: -# % macro, MOTOR, pv of motor record -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, PORT, asyn port -# % macro, ENC_IND, index for motor -# % macro, DIR, motor direction + for positive - for negative -# % macro, MULT, scale factor multiply -# % macro, READONLY, Should screen be read-only -# % macro, HOMESETTLE, Delay after home for calibrating motor position -#====================================================================# - - -record(calcout, "BL45P-EA-PANDA-01:DRV:INENC4:SCALECALC") { - field(CALC, "(B=0?A:-A)*(C>0?C:1)*D") - field(INPA, "BL45P-MO-CHOP-01:VER.ERES CP") - field(INPB, "BL45P-MO-CHOP-01:VER.DIR CP") - field(INPC, "BL45P-MO-CHOP-01:VER:SCALE CP") - field(INPD, "+0.000687") - field(OUT, "BL45P-EA-PANDA-01:DRV:INENC4:SCALE PP") - field(PREC, "4") -} - -record(calcout, "BL45P-EA-PANDA-01:DRV:INENC4:OFFCALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-CHOP-01:VER.OFF CP") - field(OUT, "BL45P-EA-PANDA-01:DRV:INENC4:OFF PP") - field(PREC, "4") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:INENC4:UNITSCALC") { - field(OUT, "BL45P-EA-PANDA-01:DRV:INENC4:UNITS PP") - field(DOL, "BL45P-MO-CHOP-01:VER.EGU CP") - field(OMSL, "closed_loop") -} - -record(calcout, "BL45P-EA-PANDA-01:DRV:INENC4:ONHOMED") { - field(DESC, "Trigger seq when motor has been homed") - field(CALC, "A=0") - field(INPA, "BL45P-MO-CHOP-01:VER:HOMING CP") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-PANDA-01:DRV:INENC4:ONENABLE.PROC") - field(VAL, "1") -} - -record(seq, "BL45P-EA-PANDA-01:DRV:INENC4:ONENABLE") { - field(DESC, "Calibrate pos after home with delay") - field(DOL1, "1") - field(LNK1, "BL45P-EA-PANDA-01:DRV:INENC4:SETPOSCALC.PROC PP") - field(DLY1, "5") -} - -# % archiver 10 Monitor -record(calcout, "BL45P-EA-PANDA-01:DRV:INENC4:SETPOSCALC") { - field(CALC, "A*(B>0?B:1)*C") - field(INPA, "BL45P-MO-CHOP-01:VER.REP") #WRITES TO THE MOTOR RECORD VAL IN COUNTS INSTEAD OF :RBV - field(INPB, "BL45P-MO-CHOP-01:VER:SCALE") - field(INPC, "+1") - field(OUT, "BL45P-EA-PANDA-01:DRV:INENC4:SETPOS PP") -} - -record(longout, "BL45P-EA-PANDA-01:DRV:INENC4:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0)INENC4:SETPOS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:INENC4:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,0)INENC4:SCALE") -} - -record(ao, "BL45P-EA-PANDA-01:DRV:INENC4:OFF") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.DRV,0)INENC4:OFF") -} - -record(stringout, "BL45P-EA-PANDA-01:DRV:INENC4:UNITS") { - field(DESC, "INENC units") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,0)INENC4:UNITS") -} - -# Set embedded screen type to read-only -record(longout, "BL45P-EA-PANDA-01:DRV:INENC4:SCREENTYPE") { - field(DESC, "INENC screen type") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0)INENC4:SCREENTYPE") - field(VAL, "1") - field(PINI, "YES") -} - -# Trigger manual calibration of encoder position -record(longout, "BL45P-EA-PANDA-01:DRV:INENC4:CALIBRATE") { - field(DESC, "Trigger encoder calibration") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.DRV,0)INENC4:CALIBRATE") - field(FLNK, "BL45P-EA-PANDA-01:DRV:INENC4:SETPOSCALC.PROC PP") - info(asyn:READBACK, "1") - } - - # Underlying motor name -record (stringout, "BL45P-EA-PANDA-01:DRV:INENC4:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.DRV,0)INENC4:MOTORNAME") - field(VAL, "BL45P-MO-CHOP-01:VER") - field(PINI, "YES") -}#====================================================================# -# Template file: ADPandABlocksEnc.template -# -# Macros: -# % macro, MOTOR, pv of motor record -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, PORT, asyn port -# % macro, ENC_IND, index for motor -# % macro, DIR, motor direction + for positive - for negative -# % macro, MULT, scale factor multiply -# % macro, READONLY, Should screen be read-only -# % macro, HOMESETTLE, Delay after home for calibrating motor position -#====================================================================# - - -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC1:SCALECALC") { - field(CALC, "(B=0?A:-A)*(C>0?C:1)*D") - field(INPA, "BL45P-MO-STAGE-01:X.ERES CP") - field(INPB, "BL45P-MO-STAGE-01:X.DIR CP") - field(INPC, "BL45P-MO-STAGE-01:X:SCALE CP") - field(INPD, "-0.0001") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC1:SCALE PP") - field(PREC, "4") -} - -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC1:OFFCALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-STAGE-01:X.OFF CP") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC1:OFF PP") - field(PREC, "4") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:INENC1:UNITSCALC") { - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC1:UNITS PP") - field(DOL, "BL45P-MO-STAGE-01:X.EGU CP") - field(OMSL, "closed_loop") -} - -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC1:ONHOMED") { - field(DESC, "Trigger seq when motor has been homed") - field(CALC, "A=0") - field(INPA, "BL45P-MO-STAGE-01:X:HOMING CP") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC1:ONENABLE.PROC") - field(VAL, "1") -} - -record(seq, "BL45P-EA-PANDA-02:DRV:INENC1:ONENABLE") { - field(DESC, "Calibrate pos after home with delay") - field(DOL1, "1") - field(LNK1, "BL45P-EA-PANDA-02:DRV:INENC1:SETPOSCALC.PROC PP") - field(DLY1, "5") -} - -# % archiver 10 Monitor -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC1:SETPOSCALC") { - field(CALC, "A*(B>0?B:1)*C") - field(INPA, "BL45P-MO-STAGE-01:X.REP") #WRITES TO THE MOTOR RECORD VAL IN COUNTS INSTEAD OF :RBV - field(INPB, "BL45P-MO-STAGE-01:X:SCALE") - field(INPC, "-1") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC1:SETPOS PP") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:INENC1:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)INENC1:SETPOS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:INENC1:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0)INENC1:SCALE") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:INENC1:OFF") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0)INENC1:OFF") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:INENC1:UNITS") { - field(DESC, "INENC units") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,0)INENC1:UNITS") -} - -# Set embedded screen type to read-only -record(longout, "BL45P-EA-PANDA-02:DRV:INENC1:SCREENTYPE") { - field(DESC, "INENC screen type") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)INENC1:SCREENTYPE") - field(VAL, "1") - field(PINI, "YES") -} - -# Trigger manual calibration of encoder position -record(longout, "BL45P-EA-PANDA-02:DRV:INENC1:CALIBRATE") { - field(DESC, "Trigger encoder calibration") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)INENC1:CALIBRATE") - field(FLNK, "BL45P-EA-PANDA-02:DRV:INENC1:SETPOSCALC.PROC PP") - info(asyn:READBACK, "1") - } - - # Underlying motor name -record (stringout, "BL45P-EA-PANDA-02:DRV:INENC1:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,0)INENC1:MOTORNAME") - field(VAL, "BL45P-MO-STAGE-01:X") - field(PINI, "YES") -}#====================================================================# -# Template file: ADPandABlocksEnc.template -# -# Macros: -# % macro, MOTOR, pv of motor record -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, PORT, asyn port -# % macro, ENC_IND, index for motor -# % macro, DIR, motor direction + for positive - for negative -# % macro, MULT, scale factor multiply -# % macro, READONLY, Should screen be read-only -# % macro, HOMESETTLE, Delay after home for calibrating motor position -#====================================================================# - - -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC2:SCALECALC") { - field(CALC, "(B=0?A:-A)*(C>0?C:1)*D") - field(INPA, "BL45P-MO-STAGE-01:Y.ERES CP") - field(INPB, "BL45P-MO-STAGE-01:Y.DIR CP") - field(INPC, "BL45P-MO-STAGE-01:Y:SCALE CP") - field(INPD, "+0.0005") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC2:SCALE PP") - field(PREC, "4") -} - -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC2:OFFCALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-STAGE-01:Y.OFF CP") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC2:OFF PP") - field(PREC, "4") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:INENC2:UNITSCALC") { - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC2:UNITS PP") - field(DOL, "BL45P-MO-STAGE-01:Y.EGU CP") - field(OMSL, "closed_loop") -} - -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC2:ONHOMED") { - field(DESC, "Trigger seq when motor has been homed") - field(CALC, "A=0") - field(INPA, "BL45P-MO-STAGE-01:Y:HOMING CP") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC2:ONENABLE.PROC") - field(VAL, "1") -} - -record(seq, "BL45P-EA-PANDA-02:DRV:INENC2:ONENABLE") { - field(DESC, "Calibrate pos after home with delay") - field(DOL1, "1") - field(LNK1, "BL45P-EA-PANDA-02:DRV:INENC2:SETPOSCALC.PROC PP") - field(DLY1, "5") -} - -# % archiver 10 Monitor -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC2:SETPOSCALC") { - field(CALC, "A*(B>0?B:1)*C") - field(INPA, "BL45P-MO-STAGE-01:Y.REP") #WRITES TO THE MOTOR RECORD VAL IN COUNTS INSTEAD OF :RBV - field(INPB, "BL45P-MO-STAGE-01:Y:SCALE") - field(INPC, "+1") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC2:SETPOS PP") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:INENC2:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)INENC2:SETPOS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:INENC2:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0)INENC2:SCALE") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:INENC2:OFF") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0)INENC2:OFF") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:INENC2:UNITS") { - field(DESC, "INENC units") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,0)INENC2:UNITS") -} - -# Set embedded screen type to read-only -record(longout, "BL45P-EA-PANDA-02:DRV:INENC2:SCREENTYPE") { - field(DESC, "INENC screen type") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)INENC2:SCREENTYPE") - field(VAL, "1") - field(PINI, "YES") -} - -# Trigger manual calibration of encoder position -record(longout, "BL45P-EA-PANDA-02:DRV:INENC2:CALIBRATE") { - field(DESC, "Trigger encoder calibration") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)INENC2:CALIBRATE") - field(FLNK, "BL45P-EA-PANDA-02:DRV:INENC2:SETPOSCALC.PROC PP") - info(asyn:READBACK, "1") - } - - # Underlying motor name -record (stringout, "BL45P-EA-PANDA-02:DRV:INENC2:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,0)INENC2:MOTORNAME") - field(VAL, "BL45P-MO-STAGE-01:Y") - field(PINI, "YES") -}#====================================================================# -# Template file: ADPandABlocksEnc.template -# -# Macros: -# % macro, MOTOR, pv of motor record -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, PORT, asyn port -# % macro, ENC_IND, index for motor -# % macro, DIR, motor direction + for positive - for negative -# % macro, MULT, scale factor multiply -# % macro, READONLY, Should screen be read-only -# % macro, HOMESETTLE, Delay after home for calibrating motor position -#====================================================================# - - -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC3:SCALECALC") { - field(CALC, "(B=0?A:-A)*(C>0?C:1)*D") - field(INPA, "BL45P-MO-STAGE-01:Z.ERES CP") - field(INPB, "BL45P-MO-STAGE-01:Z.DIR CP") - field(INPC, "BL45P-MO-STAGE-01:Z:SCALE CP") - field(INPD, "+0.0005") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC3:SCALE PP") - field(PREC, "4") -} - -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC3:OFFCALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-STAGE-01:Z.OFF CP") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC3:OFF PP") - field(PREC, "4") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:INENC3:UNITSCALC") { - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC3:UNITS PP") - field(DOL, "BL45P-MO-STAGE-01:Z.EGU CP") - field(OMSL, "closed_loop") -} - -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC3:ONHOMED") { - field(DESC, "Trigger seq when motor has been homed") - field(CALC, "A=0") - field(INPA, "BL45P-MO-STAGE-01:Z:HOMING CP") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC3:ONENABLE.PROC") - field(VAL, "1") -} - -record(seq, "BL45P-EA-PANDA-02:DRV:INENC3:ONENABLE") { - field(DESC, "Calibrate pos after home with delay") - field(DOL1, "1") - field(LNK1, "BL45P-EA-PANDA-02:DRV:INENC3:SETPOSCALC.PROC PP") - field(DLY1, "5") -} - -# % archiver 10 Monitor -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC3:SETPOSCALC") { - field(CALC, "A*(B>0?B:1)*C") - field(INPA, "BL45P-MO-STAGE-01:Z.REP") #WRITES TO THE MOTOR RECORD VAL IN COUNTS INSTEAD OF :RBV - field(INPB, "BL45P-MO-STAGE-01:Z:SCALE") - field(INPC, "+1") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC3:SETPOS PP") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:INENC3:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)INENC3:SETPOS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:INENC3:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0)INENC3:SCALE") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:INENC3:OFF") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0)INENC3:OFF") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:INENC3:UNITS") { - field(DESC, "INENC units") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,0)INENC3:UNITS") -} - -# Set embedded screen type to read-only -record(longout, "BL45P-EA-PANDA-02:DRV:INENC3:SCREENTYPE") { - field(DESC, "INENC screen type") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)INENC3:SCREENTYPE") - field(VAL, "1") - field(PINI, "YES") -} - -# Trigger manual calibration of encoder position -record(longout, "BL45P-EA-PANDA-02:DRV:INENC3:CALIBRATE") { - field(DESC, "Trigger encoder calibration") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)INENC3:CALIBRATE") - field(FLNK, "BL45P-EA-PANDA-02:DRV:INENC3:SETPOSCALC.PROC PP") - info(asyn:READBACK, "1") - } - - # Underlying motor name -record (stringout, "BL45P-EA-PANDA-02:DRV:INENC3:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,0)INENC3:MOTORNAME") - field(VAL, "BL45P-MO-STAGE-01:Z") - field(PINI, "YES") -}#====================================================================# -# Template file: ADPandABlocksEnc.template -# -# Macros: -# % macro, MOTOR, pv of motor record -# % macro, P, Device prefix -# % macro, R, Device suffix -# % macro, PORT, asyn port -# % macro, ENC_IND, index for motor -# % macro, DIR, motor direction + for positive - for negative -# % macro, MULT, scale factor multiply -# % macro, READONLY, Should screen be read-only -# % macro, HOMESETTLE, Delay after home for calibrating motor position -#====================================================================# - - -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC4:SCALECALC") { - field(CALC, "(B=0?A:-A)*(C>0?C:1)*D") - field(INPA, "BL45P-MO-SAMP-01:THETA.ERES CP") - field(INPB, "BL45P-MO-SAMP-01:THETA.DIR CP") - field(INPC, "BL45P-MO-SAMP-01:THETA:SCALE CP") - field(INPD, "-0.036") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC4:SCALE PP") - field(PREC, "4") -} - -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC4:OFFCALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-SAMP-01:THETA.OFF CP") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC4:OFF PP") - field(PREC, "4") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:INENC4:UNITSCALC") { - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC4:UNITS PP") - field(DOL, "BL45P-MO-SAMP-01:THETA.EGU CP") - field(OMSL, "closed_loop") -} - -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC4:ONHOMED") { - field(DESC, "Trigger seq when motor has been homed") - field(CALC, "A=0") - field(INPA, "BL45P-MO-SAMP-01:THETA:HOMING CP") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC4:ONENABLE.PROC") - field(VAL, "1") -} - -record(seq, "BL45P-EA-PANDA-02:DRV:INENC4:ONENABLE") { - field(DESC, "Calibrate pos after home with delay") - field(DOL1, "1") - field(LNK1, "BL45P-EA-PANDA-02:DRV:INENC4:SETPOSCALC.PROC PP") - field(DLY1, "5") -} - -# % archiver 10 Monitor -record(calcout, "BL45P-EA-PANDA-02:DRV:INENC4:SETPOSCALC") { - field(CALC, "A*(B>0?B:1)*C") - field(INPA, "BL45P-MO-SAMP-01:THETA.REP") #WRITES TO THE MOTOR RECORD VAL IN COUNTS INSTEAD OF :RBV - field(INPB, "BL45P-MO-SAMP-01:THETA:SCALE") - field(INPC, "-1") - field(OUT, "BL45P-EA-PANDA-02:DRV:INENC4:SETPOS PP") -} - -record(longout, "BL45P-EA-PANDA-02:DRV:INENC4:SETPOS") { - field(DESC, "INENC set current position") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)INENC4:SETPOS") - info(asyn:READBACK, "1") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:INENC4:SCALE") { - field(DESC, "INENC scale value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0)INENC4:SCALE") -} - -record(ao, "BL45P-EA-PANDA-02:DRV:INENC4:OFF") { - field(DESC, "INENC offset value") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.DRV,0)INENC4:OFF") -} - -record(stringout, "BL45P-EA-PANDA-02:DRV:INENC4:UNITS") { - field(DESC, "INENC units") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,0)INENC4:UNITS") -} - -# Set embedded screen type to read-only -record(longout, "BL45P-EA-PANDA-02:DRV:INENC4:SCREENTYPE") { - field(DESC, "INENC screen type") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)INENC4:SCREENTYPE") - field(VAL, "1") - field(PINI, "YES") -} - -# Trigger manual calibration of encoder position -record(longout, "BL45P-EA-PANDA-02:DRV:INENC4:CALIBRATE") { - field(DESC, "Trigger encoder calibration") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.DRV,0)INENC4:CALIBRATE") - field(FLNK, "BL45P-EA-PANDA-02:DRV:INENC4:SETPOSCALC.PROC PP") - info(asyn:READBACK, "1") - } - - # Underlying motor name -record (stringout, "BL45P-EA-PANDA-02:DRV:INENC4:MOTORNAME") { - field(DESC, "Name of motor") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.DRV,0)INENC4:MOTORNAME") - field(VAL, "BL45P-MO-SAMP-01:THETA") - field(PINI, "YES") -}#% macro, P, Device Prefix -#% macro, R, Device Suffix -#% macro, PORT, Asyn Port name -#% macro, ADDR, Asyn Port address -#% macro, TIMEOUT, Asyn timeout -#% macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -# This associates the template with an edm screen -# % gui, PANDA01.POS, edmtab, NDPosPlugin.edl, P=BL45P-EA-PANDA-01,R=:POS: - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-PANDA-01:POS:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.POS,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-PANDA-01:POS:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.POS,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-PANDA-01:POS:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.POS,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-PANDA-01:POS:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.POS,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:POS:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.POS,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:POS:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.POS,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:POS:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.POS,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:POS:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.POS,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-PANDA-01:POS:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-PANDA-01:POS:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-PANDA-01:POS:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-01:POS:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-PANDA-01:POS:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-PANDA-01:POS:AcquireBusy PP") -} - -record(busy, "BL45P-EA-PANDA-01:POS:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-PANDA-01:POS:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-01:POS:ClearAcquireBusy") { - field(INPA, "BL45P-EA-PANDA-01:POS:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-PANDA-01:POS:AcquireBusy PP") -} - -record(bo, "BL45P-EA-PANDA-01:POS:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-PANDA-01:POS:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-PANDA-01:POS:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-PANDA-01:POS:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(PANDA01.POS,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim0SA") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim0SA") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize0") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize0") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim0SA") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim1SA") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim1SA") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize1") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize1") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim1SA") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim2SA") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim2SA") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize2") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize2") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim2SA") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim3SA") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim3SA") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize3") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize3") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim3SA") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim4SA") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim4SA") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize4") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize4") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim4SA") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim5SA") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim5SA") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize5") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize5") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim5SA") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim6SA") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim6SA") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize6") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize6") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim6SA") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim7SA") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim7SA") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize7") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize7") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim7SA") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim8SA") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim8SA") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize8") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize8") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim8SA") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim9SA") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim9SA") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize9") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize9") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim9SA") -} - - -record(waveform, "BL45P-EA-PANDA-01:POS:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(PANDA01.POS,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim0SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim1SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim2SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim3SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim4SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim5SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim6SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim7SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim8SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:POS:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:POS:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-PANDA-01:POS:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:POS:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-PANDA-01:POS:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-PANDA-01:POS:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.POS,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:POS:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-PANDA-01:POS:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:POS:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-PANDA-01:POS:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:POS:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-PANDA-01:POS:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-PANDA-01:POS:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.POS,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:POS:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:POS:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-PANDA-01:POS:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-PANDA-01:POS:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-PANDA-01:POS:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-PANDA-01:POS:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-PANDA-01:POS:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-PANDA-01:POS:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:POS:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-PANDA-01:POS:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA01.POS,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-PANDA-01:POS:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA01.POS,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-PANDA-01:POS:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-PANDA-01:POS:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.POS,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-PANDA-01:POS:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.POS,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-PANDA-01:POS:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-PANDA-01:POS:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-PANDA-01:POS:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-PANDA-01:POS:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-PANDA-01:POS:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-PANDA-01:POS:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-PANDA-01:POS:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-PANDA-01:POS:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-PANDA-01:POS:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-PANDA-01:POS:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-PANDA-01:POS:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.POS,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-PANDA-01:POS:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.POS,0,1)NDARRAY_PORT") - field(VAL, "PANDA01.DRV") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-PANDA-01:POS:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.POS,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:POS:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:POS:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-PANDA-01:POS:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:POS:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-01:POS:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.POS,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-01:POS:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.POS,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-01:POS:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-PANDA-01:POS:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-PANDA-01:POS:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-PANDA-01:POS:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-PANDA-01:POS:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-PANDA-01:POS:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-PANDA-01:POS:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-PANDA-01:POS:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.POS,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-01:POS:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.POS,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-PANDA-01:POS:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.POS,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-PANDA-01:POS:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-PANDA-01:POS:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:POS:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-PANDA-01:POS:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-PANDA-01:POS:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:POS:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-01:POS:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-PANDA-01:POS:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-01:POS:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-PANDA-01:POS:QueueSize") - field(OUT, "BL45P-EA-PANDA-01:POS:QueueFree.LOW") - field(FLNK, "BL45P-EA-PANDA-01:POS:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-PANDA-01:POS:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-PANDA-01:POS:QueueSize") - field(OUT, "BL45P-EA-PANDA-01:POS:QueueUse.HIGH") - field(FLNK, "BL45P-EA-PANDA-01:POS:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-PANDA-01:POS:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-PANDA-01:POS:QueueSize") - field(OUT, "BL45P-EA-PANDA-01:POS:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-PANDA-01:POS:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-PANDA-01:POS:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-PANDA-01:POS:QueueSize") - field(INPB, "BL45P-EA-PANDA-01:POS:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-PANDA-01:POS:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-01:POS:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:POS:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-PANDA-01:POS:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-PANDA-01:POS:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-01:POS:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.POS,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-PANDA-01:POS:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.POS,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:POS:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-01:POS:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-PANDA-01:POS:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:POS:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-01:POS:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-PANDA-01:POS:SortSize") - field(OUT, "BL45P-EA-PANDA-01:POS:SortFree.LOW") -} - -record(longout, "BL45P-EA-PANDA-01:POS:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-PANDA-01:POS:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:POS:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-01:POS:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-PANDA-01:POS:AsynIO") -{ - field(PORT, "PANDA01.POS") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# File path. -record(waveform, "BL45P-EA-PANDA-01:POS:Filename") -{ - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA01.POS,0,1)NDPos_Filename") - field(FTVL, "CHAR") - field(NELM, "1000000") -} - -record(waveform, "BL45P-EA-PANDA-01:POS:Filename_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.POS,0)NDPos_Filename") - field(FTVL, "CHAR") - field(NELM, "1000000") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-PANDA-01:POS:FileValid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0)NDPos_FileValid") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -record(busy, "BL45P-EA-PANDA-01:POS:Running") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0)NDPos_Running") - field(ZNAM, "Idle") - field(ONAM, "Running") - field(VAL, "0") -} - -record(bi, "BL45P-EA-PANDA-01:POS:Running_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0)NDPos_Running") - field(ZNAM, "Idle") - field(ONAM, "Running") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-01:POS:Reset") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0)NDPos_Restart") -} - -record(bo, "BL45P-EA-PANDA-01:POS:Delete") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0)NDPos_Delete") -} - -record(bo, "BL45P-EA-PANDA-01:POS:Mode") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0)NDPos_Mode") - field(ZNAM, "Discard") - field(ONAM, "Keep") -} - -record(bi, "BL45P-EA-PANDA-01:POS:Mode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0)NDPos_Mode") - field(ZNAM, "Discard") - field(ONAM, "Keep") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:POS:Qty_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0)NDPos_CurrentQty") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:POS:Index_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0)NDPos_CurrentIndex") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:POS:Position_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.POS,0)NDPos_CurrentPos") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:POS:Missing") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0)NDPos_MissingFrames") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-PANDA-01:POS:Missing_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0)NDPos_MissingFrames") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:POS:Duplicate") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0)NDPos_DuplicateFrames") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-PANDA-01:POS:Duplicate_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0)NDPos_DuplicateFrames") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:POS:ExpectedID_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0)NDPos_ExpectedID") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:POS:IDName") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.POS,0)NDPos_IDName") - field(PINI, "NO") -} - -record(stringin, "BL45P-EA-PANDA-01:POS:IDName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.POS,0)NDPos_IDName") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:POS:IDStart") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0)NDPos_IDStart") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-PANDA-01:POS:IDStart_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0)NDPos_IDStart") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:POS:IDDifference") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.POS,0)NDPos_IDDifference") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-PANDA-01:POS:IDDifference_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.POS,0)NDPos_IDDifference") - field(SCAN, "I/O Intr") -} - -#% macro, P, Device Prefix -#% macro, R, Device Suffix -#% macro, PORT, Asyn Port name -#% macro, ADDR, Asyn Port address -#% macro, TIMEOUT, Asyn timeout -#% macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -# This associates the template with an edm screen -# % gui, PANDA02.POS, edmtab, NDPosPlugin.edl, P=BL45P-EA-PANDA-02,R=:POS: - -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-PANDA-02:POS:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.POS,0,1)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-PANDA-02:POS:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.POS,0,1)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-PANDA-02:POS:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.POS,0,1)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-PANDA-02:POS:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.POS,0,1)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:POS:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.POS,0,1)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:POS:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.POS,0,1)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:POS:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.POS,0,1)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:POS:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.POS,0,1)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-PANDA-02:POS:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-PANDA-02:POS:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-PANDA-02:POS:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-02:POS:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-PANDA-02:POS:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-PANDA-02:POS:AcquireBusy PP") -} - -record(busy, "BL45P-EA-PANDA-02:POS:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-PANDA-02:POS:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-02:POS:ClearAcquireBusy") { - field(INPA, "BL45P-EA-PANDA-02:POS:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-PANDA-02:POS:AcquireBusy PP") -} - -record(bo, "BL45P-EA-PANDA-02:POS:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-PANDA-02:POS:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-PANDA-02:POS:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-PANDA-02:POS:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(PANDA02.POS,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim0SA") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim0SA") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize0") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize0") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim0SA") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim1SA") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim1SA") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize1") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize1") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim1SA") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim2SA") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim2SA") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize2") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize2") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim2SA") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim3SA") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim3SA") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize3") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize3") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim3SA") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim4SA") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim4SA") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize4") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize4") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim4SA") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim5SA") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim5SA") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize5") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize5") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim5SA") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim6SA") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim6SA") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize6") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize6") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim6SA") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim7SA") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim7SA") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize7") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize7") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim7SA") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim8SA") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim8SA") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize8") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize8") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim8SA") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim9SA") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim9SA") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize9") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize9") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim9SA") -} - - -record(waveform, "BL45P-EA-PANDA-02:POS:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(PANDA02.POS,0,1)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim0SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim1SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim2SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim3SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim4SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim5SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim6SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim7SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim8SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:POS:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:POS:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-PANDA-02:POS:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:POS:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-PANDA-02:POS:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-PANDA-02:POS:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.POS,0,1)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:POS:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-PANDA-02:POS:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:POS:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-PANDA-02:POS:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:POS:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-PANDA-02:POS:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-PANDA-02:POS:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.POS,0,1)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:POS:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:POS:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-PANDA-02:POS:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-PANDA-02:POS:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-PANDA-02:POS:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-PANDA-02:POS:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-PANDA-02:POS:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-PANDA-02:POS:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:POS:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-PANDA-02:POS:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA02.POS,0,1)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-PANDA-02:POS:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA02.POS,0,1)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-PANDA-02:POS:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-PANDA-02:POS:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.POS,0,1)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-PANDA-02:POS:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.POS,0,1)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-PANDA-02:POS:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-PANDA-02:POS:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-PANDA-02:POS:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-PANDA-02:POS:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-PANDA-02:POS:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-PANDA-02:POS:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-PANDA-02:POS:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-PANDA-02:POS:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-PANDA-02:POS:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-PANDA-02:POS:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-PANDA-02:POS:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.POS,0,1)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-PANDA-02:POS:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.POS,0,1)NDARRAY_PORT") - field(VAL, "PANDA02.DRV") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-PANDA-02:POS:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.POS,0,1)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:POS:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:POS:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-PANDA-02:POS:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:POS:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-02:POS:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.POS,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-02:POS:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.POS,0,1)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-02:POS:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-PANDA-02:POS:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-PANDA-02:POS:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-PANDA-02:POS:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-PANDA-02:POS:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-PANDA-02:POS:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-PANDA-02:POS:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-PANDA-02:POS:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.POS,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-02:POS:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.POS,0,1)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-PANDA-02:POS:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.POS,0,1)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-PANDA-02:POS:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-PANDA-02:POS:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:POS:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-PANDA-02:POS:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-PANDA-02:POS:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:POS:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-02:POS:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)QUEUE_SIZE") - field(FLNK, "BL45P-EA-PANDA-02:POS:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-02:POS:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-PANDA-02:POS:QueueSize") - field(OUT, "BL45P-EA-PANDA-02:POS:QueueFree.LOW") - field(FLNK, "BL45P-EA-PANDA-02:POS:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-PANDA-02:POS:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-PANDA-02:POS:QueueSize") - field(OUT, "BL45P-EA-PANDA-02:POS:QueueUse.HIGH") - field(FLNK, "BL45P-EA-PANDA-02:POS:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-PANDA-02:POS:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-PANDA-02:POS:QueueSize") - field(OUT, "BL45P-EA-PANDA-02:POS:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-PANDA-02:POS:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-PANDA-02:POS:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-PANDA-02:POS:QueueSize") - field(INPB, "BL45P-EA-PANDA-02:POS:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-PANDA-02:POS:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-02:POS:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:POS:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-PANDA-02:POS:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-PANDA-02:POS:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-02:POS:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.POS,0,1)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-PANDA-02:POS:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.POS,0,1)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:POS:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-02:POS:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)SORT_SIZE") - field(FLNK, "BL45P-EA-PANDA-02:POS:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:POS:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-02:POS:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-PANDA-02:POS:SortSize") - field(OUT, "BL45P-EA-PANDA-02:POS:SortFree.LOW") -} - -record(longout, "BL45P-EA-PANDA-02:POS:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-PANDA-02:POS:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:POS:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0,1)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-02:POS:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0,1)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-PANDA-02:POS:AsynIO") -{ - field(PORT, "PANDA02.POS") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# File path. -record(waveform, "BL45P-EA-PANDA-02:POS:Filename") -{ - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA02.POS,0,1)NDPos_Filename") - field(FTVL, "CHAR") - field(NELM, "1000000") -} - -record(waveform, "BL45P-EA-PANDA-02:POS:Filename_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.POS,0)NDPos_Filename") - field(FTVL, "CHAR") - field(NELM, "1000000") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-PANDA-02:POS:FileValid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0)NDPos_FileValid") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -record(busy, "BL45P-EA-PANDA-02:POS:Running") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0)NDPos_Running") - field(ZNAM, "Idle") - field(ONAM, "Running") - field(VAL, "0") -} - -record(bi, "BL45P-EA-PANDA-02:POS:Running_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0)NDPos_Running") - field(ZNAM, "Idle") - field(ONAM, "Running") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-02:POS:Reset") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0)NDPos_Restart") -} - -record(bo, "BL45P-EA-PANDA-02:POS:Delete") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0)NDPos_Delete") -} - -record(bo, "BL45P-EA-PANDA-02:POS:Mode") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0)NDPos_Mode") - field(ZNAM, "Discard") - field(ONAM, "Keep") -} - -record(bi, "BL45P-EA-PANDA-02:POS:Mode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0)NDPos_Mode") - field(ZNAM, "Discard") - field(ONAM, "Keep") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:POS:Qty_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0)NDPos_CurrentQty") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:POS:Index_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0)NDPos_CurrentIndex") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:POS:Position_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.POS,0)NDPos_CurrentPos") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:POS:Missing") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0)NDPos_MissingFrames") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-PANDA-02:POS:Missing_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0)NDPos_MissingFrames") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:POS:Duplicate") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0)NDPos_DuplicateFrames") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-PANDA-02:POS:Duplicate_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0)NDPos_DuplicateFrames") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:POS:ExpectedID_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0)NDPos_ExpectedID") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:POS:IDName") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.POS,0)NDPos_IDName") - field(PINI, "NO") -} - -record(stringin, "BL45P-EA-PANDA-02:POS:IDName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.POS,0)NDPos_IDName") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:POS:IDStart") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0)NDPos_IDStart") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-PANDA-02:POS:IDStart_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0)NDPos_IDStart") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:POS:IDDifference") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.POS,0)NDPos_IDDifference") - field(PINI, "NO") -} - -record(longin, "BL45P-EA-PANDA-02:POS:IDDifference_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.POS,0)NDPos_IDDifference") - field(SCAN, "I/O Intr") -} - -#=================================================================# -# Template file: NDFileHDF5.template -# Database for NDFileHDF5 driver, which saves files for NDArray data. - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Asyn Port timeout -# % macro, XMLSIZE, Number of elements of the XML layout waveform record - -# This associates the template with an edm screen -# % gui, PANDA01.HDF, edmtab, NDFileHDF5.edl, P=BL45P-EA-PANDA-01,R=:HDF5: - -# This associates a BOY screen with the template -# % gui, PANDA01.HDF, boydetail,ADApp_opi/dls/hdf5_detail.opi, P=BL45P-EA-PANDA-01, R=:HDF5:, DESC=HDF5 File Test -# % gui, PANDA01.HDF, boyembed, ADApp_opi/dls/hdf5_embed_box.opi, P=BL45P-EA-PANDA-01, R=:HDF5:, DESC=HDF5 File Test -# % gui, PANDA01.HDF, boyembed, ADApp_opi/dls/hdf5_embed.opi, P=BL45P-EA-PANDA-01, R=:HDF5:, DESC=HDF5 File Test - -# Info -# % gui, PANDA01.HDF, groupHeading, Info -# % gui, PANDA01.HDF, readback, Port name, BL45P-EA-PANDA-01:HDF5:PortName_RBV -# % gui, PANDA01.HDF, readback, Plugin type, BL45P-EA-PANDA-01:HDF5:PluginType_RBV -# Input -# % gui, PANDA01.HDF, demandString, Input, BL45P-EA-PANDA-01:HDF5:NDArrayPort -# % gui, PANDA01.HDF, readback, Input, BL45P-EA-PANDA-01:HDF5:NDArrayPort_RBV - -# % gui, PANDA01.HDF, groupHeading, Callback -# % gui, PANDA01.HDF, enum, Callbacks, BL45P-EA-PANDA-01:HDF5:EnableCallbacks -# % gui, PANDA01.HDF, statusbits, Callbacks, BL45P-EA-PANDA-01:HDF5:EnableCallbacks_RBV -# % gui, PANDA01.HDF, demand, Min Callback Time, BL45P-EA-PANDA-01:HDF5:MinCallbackTime -# % gui, PANDA01.HDF, readback, Min Callback Time, BL45P-EA-PANDA-01:HDF5:MinCallbackTime_RBV -# % gui, PANDA01.HDF, enum, Block Callbacks, BL45P-EA-PANDA-01:HDF5:BlockingCallbacks -# % gui, PANDA01.HDF, statusbits, Block Callbacks, BL45P-EA-PANDA-01:HDF5:BlockingCallbacks_RBV - -# % gui, PANDA01.HDF, groupHeading, Counters -# % gui, PANDA01.HDF, demand, Array Counter, BL45P-EA-PANDA-01:HDF5:ArrayCounter -# % gui, PANDA01.HDF, readback, Array Counter, BL45P-EA-PANDA-01:HDF5:ArrayCounter_RBV -# % gui, PANDA01.HDF, readback, Array Rate (fps), BL45P-EA-PANDA-01:HDF5:ArrayRate_RBV -# % gui, PANDA01.HDF, readback, Queue Use, BL45P-EA-PANDA-01:HDF5:QueueUse -# % gui, PANDA01.HDF, readback, Queue Size, BL45P-EA-PANDA-01:HDF5:QueueSize -# % gui, PANDA01.HDF, demand, Dropped Arrays, BL45P-EA-PANDA-01:HDF5:DroppedArrays -# % gui, PANDA01.HDF, readback, Dropped Arrays, BL45P-EA-PANDA-01:HDF5:DroppedArrays_RBV - -# % gui, PANDA01.HDF, groupHeading, Array Settings -# % gui, PANDA01.HDF, readback, Num Dimensions, BL45P-EA-PANDA-01:HDF5:NDimensions_RBV -# % gui, PANDA01.HDF, readback, Dim 0 Size, BL45P-EA-PANDA-01:HDF5:ArraySize0_RBV -# % gui, PANDA01.HDF, readback, Dim 1 Size, BL45P-EA-PANDA-01:HDF5:ArraySize1_RBV -# % gui, PANDA01.HDF, readback, Dim 2 Size, BL45P-EA-PANDA-01:HDF5:ArraySize2_RBV -# % gui, PANDA01.HDF, readback, Input Data Type, BL45P-EA-PANDA-01:HDF5:DataType_RBV -# % gui, PANDA01.HDF, readback, Colour Mode, BL45P-EA-PANDA-01:HDF5:ColorMode_RBV -# % gui, PANDA01.HDF, readback, Bayer Pattern, BL45P-EA-PANDA-01:HDF5:BayerPattern_RBV -# % gui, PANDA01.HDF, readback, Unique id, BL45P-EA-PANDA-01:HDF5:UniqueId_RBV -# % gui, PANDA01.HDF, readback, Timestamp, BL45P-EA-PANDA-01:HDF5:TimeStamp_RBV -# File -# % gui, PANDA01.HDF, groupHeading, File -# % gui, PANDA01.HDF, demandString, File Path, BL45P-EA-PANDA-01:HDF5:FilePath -# % gui, PANDA01.HDF, readback, File Path, BL45P-EA-PANDA-01:HDF5:FilePath_RBV -# % gui, PANDA01.HDF, statusbits, File Path Exists, BL45P-EA-PANDA-01:HDF5:FilePathExists_RBV -# % gui, PANDA01.HDF, demand, File Name, BL45P-EA-PANDA-01:HDF5:FileName -# % gui, PANDA01.HDF, readback, File Name, BL45P-EA-PANDA-01:HDF5:FileName_RBV -# % gui, PANDA01.HDF, demand, File Number, BL45P-EA-PANDA-01:HDF5:FileNumber -# % gui, PANDA01.HDF, readback, File Number, BL45P-EA-PANDA-01:HDF5:FileNumber_RBV -# % gui, PANDA01.HDF, enum, Auto Increment, BL45P-EA-PANDA-01:HDF5:AutoIncrement -# % gui, PANDA01.HDF, statusbits, Auto Increment, BL45P-EA-PANDA-01:HDF5:AutoIncrement_RBV -# % gui, PANDA01.HDF, demand, File Format, BL45P-EA-PANDA-01:HDF5:FileTemplate -# % gui, PANDA01.HDF, readback, File Format, BL45P-EA-PANDA-01:HDF5:FileTemplate_RBV -# % gui, PANDA01.HDF, demand, N to Capture, BL45P-EA-PANDA-01:HDF5:NumCapture -# % gui, PANDA01.HDF, readback, N to Capture, BL45P-EA-PANDA-01:HDF5:NumCapture_RBV -# % gui, PANDA01.HDF, readback, N Captured, BL45P-EA-PANDA-01:HDF5:NumCaptured_RBV -# % gui, PANDA01.HDF, enum, Auto Save, BL45P-EA-PANDA-01:HDF5:AutoSave -# % gui, PANDA01.HDF, statusbits, Auto Save , BL45P-EA-PANDA-01:HDF5:AutoSave_RBV -# % gui, PANDA01.HDF, enum, Capture mode, BL45P-EA-PANDA-01:HDF5:FileWriteMode -# % gui, PANDA01.HDF, readback, Capture mode, BL45P-EA-PANDA-01:HDF5:FileWriteMode_RBV -# % gui, PANDA01.HDF, enum, Capture, BL45P-EA-PANDA-01:HDF5:Capture -# % gui, PANDA01.HDF, readback, Capture, BL45P-EA-PANDA-01:HDF5:Capture_RBV -# % gui, PANDA01.HDF, readback, Write Message, BL45P-EA-PANDA-01:HDF5:WriteMessage -# % gui, PANDA01.HDF, readback, Write Status, BL45P-EA-PANDA-01:HDF5:WriteStatus -# % gui, PANDA01.HDF, readback, Write Filename, BL45P-EA-PANDA-01:HDF5:FullFileName_RBV -# % gui, PANDA01.HDF, enum, Lazy Open, BL45P-EA-PANDA-01:HDF5:LazyOpen -# % gui, PANDA01.HDF, readback, Lazy Open, BL45P-EA-PANDA-01:HDF5:LazyOpen_RBV -# % gui, PANDA01.HDF, demand, Temporary Suffix, BL45P-EA-PANDA-01:HDF5:TempSuffix -# % gui, PANDA01.HDF, readback, Temporary Suffix, BL45P-EA-PANDA-01:HDF5:TempSuffix_RBV -# % gui, PANDA01.HDF, demand, Create Directories, BL45P-EA-PANDA-01:HDF5:CreateDirectory -# % gui, PANDA01.HDF, readback, Create Directories, BL45P-EA-PANDA-01:HDF5:CreateDirectory_RBV -# HDF5 -# % gui, PANDA01.HDF, groupHeading, HDF5 -# % gui, PANDA01.HDF, demand, Extra Dimensions, BL45P-EA-PANDA-01:HDF5:NumExtraDims -# % gui, PANDA01.HDF, readback, Extra Dimensions, BL45P-EA-PANDA-01:HDF5:NumExtraDims_RBV -# % gui, PANDA01.HDF, demand, Rows per Chunk, BL45P-EA-PANDA-01:HDF5:NumRowChunks -# % gui, PANDA01.HDF, readback, Rows per Chunk, BL45P-EA-PANDA-01:HDF5:NumRowChunks_RBV -# % gui, PANDA01.HDF, demand, Cols per Chunk, BL45P-EA-PANDA-01:HDF5:NumColChunks -# % gui, PANDA01.HDF, readback, Cols per Chunk, BL45P-EA-PANDA-01:HDF5:NumColChunks_RBV -# % gui, PANDA01.HDF, demand, Frames per Chunk, BL45P-EA-PANDA-01:HDF5:NumFramesChunks -# % gui, PANDA01.HDF, readback, Frames per Chunk, BL45P-EA-PANDA-01:HDF5:NumFramesChunks_RBV -# % gui, PANDA01.HDF, demand, Boundary Alignment, BL45P-EA-PANDA-01:HDF5:BoundaryAlign -# % gui, PANDA01.HDF, readback, Boundary Alignment, BL45P-EA-PANDA-01:HDF5:BoundaryAlign_RBV -# % gui, PANDA01.HDF, demand, Boundary Threshold, BL45P-EA-PANDA-01:HDF5:BoundaryThreshold -# % gui, PANDA01.HDF, readback, Boundary Threshold, BL45P-EA-PANDA-01:HDF5:BoundaryThreshold_RBV -# % gui, PANDA01.HDF, demand, Flush on Nth Frame, BL45P-EA-PANDA-01:HDF5:NumFramesFlush -# % gui, PANDA01.HDF, readback, Flush on Nth Frame, BL45P-EA-PANDA-01:HDF5:NumFramesFlush_RBV -# % gui, PANDA01.HDF, enum, Store Attribute Data, BL45P-EA-PANDA-01:HDF5:StoreAttr -# % gui, PANDA01.HDF, readback, Store Attribute Data, BL45P-EA-PANDA-01:HDF5:StoreAttr_RBV -# % gui, PANDA01.HDF, enum, Store Performance Data, BL45P-EA-PANDA-01:HDF5:StorePerform -# % gui, PANDA01.HDF, readback, Store Performance Data, BL45P-EA-PANDA-01:HDF5:StorePerform_RBV -# % gui, PANDA01.HDF, readback, Total Write Time, BL45P-EA-PANDA-01:HDF5:RunTime -# % gui, PANDA01.HDF, readback, Total Write Speed, BL45P-EA-PANDA-01:HDF5:IOSpeed -# % gui, PANDA01.HDF, enum, Compression Type, BL45P-EA-PANDA-01:HDF5:Compression -# % gui, PANDA01.HDF, readback, Compression Type, BL45P-EA-PANDA-01:HDF5:Compression_RBV -# % gui, PANDA01.HDF, demand, N-bit bits per Pixel, BL45P-EA-PANDA-01:HDF5:NumDataBits -# % gui, PANDA01.HDF, readback, N-bit bits per Pixel, BL45P-EA-PANDA-01:HDF5:NumDataBits_RBV -# % gui, PANDA01.HDF, demand, N-bit Offset, BL45P-EA-PANDA-01:HDF5:DataBitsOffset -# % gui, PANDA01.HDF, readback, N-bit Offset, BL45P-EA-PANDA-01:HDF5:DataBitsOffset_RBV -# % gui, PANDA01.HDF, demand, Szip Filter Size, BL45P-EA-PANDA-01:HDF5:SZipNumPixels -# % gui, PANDA01.HDF, readback, Szip Filter Size, BL45P-EA-PANDA-01:HDF5:SZipNumPixels_RBV -# % gui, PANDA01.HDF, demand, Zlib Deflate Level, BL45P-EA-PANDA-01:HDF5:ZLevel -# % gui, PANDA01.HDF, readback, Zlib Deflate Level, BL45P-EA-PANDA-01:HDF5:ZLevel_RBV - -# Memory -# % gui, PANDA01.HDF, groupHeading, Memory -# % gui, PANDA01.HDF, readback, Max memory, BL45P-EA-PANDA-01:HDF5:PoolMaxMem -# % gui, PANDA01.HDF, readback, Max buffers, BL45P-EA-PANDA-01:HDF5:PoolMaxBuffers -# % gui, PANDA01.HDF, readback, Used memory, BL45P-EA-PANDA-01:HDF5:PoolUsedMem -# % gui, PANDA01.HDF, readback, Allocated buffers, BL45P-EA-PANDA-01:HDF5:PoolAllocBuffers -# % gui, PANDA01.HDF, readback, Free buffers, BL45P-EA-PANDA-01:HDF5:PoolFreeBuffers - -#=================================================================# -# Template file: NDFile.template -# Database for NDFile driver, which saves files for NDArray data. -# Mark Rivers -# April 7, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -################################################################### -# These records control file I/O # -################################################################### - -# File path. -record(waveform, "BL45P-EA-PANDA-01:HDF5:FilePath") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA01.HDF,0,5)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-PANDA-01:HDF5:FilePath_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:FilePathExists_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)FILE_PATH_EXISTS") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:CreateDirectory") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)CREATE_DIR") - field(VAL, "0" ) - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:CreateDirectory_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)CREATE_DIR") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -# Filename -record(waveform, "BL45P-EA-PANDA-01:HDF5:FileName") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA01.HDF,0,5)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-PANDA-01:HDF5:FileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:FileNumber") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)FILE_NUMBER") - field(VAL, "1") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:FileNumber_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)FILE_NUMBER") - field(SCAN, "I/O Intr") -} - -# Autoincrement flag -record(bo, "BL45P-EA-PANDA-01:HDF5:AutoIncrement") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)AUTO_INCREMENT") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:AutoIncrement_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)AUTO_INCREMENT") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# File template -record(waveform, "BL45P-EA-PANDA-01:HDF5:FileTemplate") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA01.HDF,0,5)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-PANDA-01:HDF5:FileTemplate_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Full filename, including path -record(waveform, "BL45P-EA-PANDA-01:HDF5:FullFileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)FULL_FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Autosave flag -record(bo, "BL45P-EA-PANDA-01:HDF5:AutoSave") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:AutoSave_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# Write file -record(busy, "BL45P-EA-PANDA-01:HDF5:WriteFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)WRITE_FILE") - field(ZNAM, "Done") - field(ONAM, "Write") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:WriteFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)WRITE_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Writing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -# Read file -record(busy, "BL45P-EA-PANDA-01:HDF5:ReadFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)READ_FILE") - field(ZNAM, "Done") - field(ONAM, "Read") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:ReadFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)READ_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Reading") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -# File data format -record(mbbo, "BL45P-EA-PANDA-01:HDF5:FileFormat") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)FILE_FORMAT") - field(VAL, "0") - field(ZRST, "Undefined") - field(ZRVL, "0") - field(ONST, "Invalid") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:HDF5:FileFormat_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)FILE_FORMAT") - field(ZRST, "netCDF") - field(ZRVL, "0") - field(ONST, "Undefined") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -# File save mode -record(mbbo, "BL45P-EA-PANDA-01:HDF5:FileWriteMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)WRITE_MODE") - field(VAL, "0") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:HDF5:FileWriteMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)WRITE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -# Capture data -record(busy, "BL45P-EA-PANDA-01:HDF5:Capture") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)CAPTURE") - field(ZNAM, "Done") - field(ONAM, "Capture") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:Capture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)CAPTURE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Capturing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:NumCapture") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)NUM_CAPTURE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:NumCapture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)NUM_CAPTURE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:NumCaptured_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)NUM_CAPTURED") - field(SCAN, "I/O Intr") -} - -# Delete driver file flag -record(bo, "BL45P-EA-PANDA-01:HDF5:DeleteDriverFile") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)DELETE_DRIVER_FILE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:DeleteDriverFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)DELETE_DRIVER_FILE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:WriteStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)WRITE_STATUS") - field(ZNAM, "Write OK") - field(ZSV, "NO_ALARM") - field(ONAM, "Write error") - field(OSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-PANDA-01:HDF5:WriteMessage") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)WRITE_MESSAGE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-01:HDF5:LazyOpen") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)FILE_LAZY_OPEN") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:LazyOpen_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)FILE_LAZY_OPEN") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:TempSuffix") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)FILE_TEMP_SUFFIX") - field(VAL, "") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:TempSuffix_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)FILE_TEMP_SUFFIX") - field(VAL, "") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-PANDA-01:HDF5:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-PANDA-01:HDF5:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-PANDA-01:HDF5:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-PANDA-01:HDF5:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-01:HDF5:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-PANDA-01:HDF5:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-PANDA-01:HDF5:AcquireBusy PP") -} - -record(busy, "BL45P-EA-PANDA-01:HDF5:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-01:HDF5:ClearAcquireBusy") { - field(INPA, "BL45P-EA-PANDA-01:HDF5:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-PANDA-01:HDF5:AcquireBusy PP") -} - -record(bo, "BL45P-EA-PANDA-01:HDF5:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-PANDA-01:HDF5:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-PANDA-01:HDF5:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(PANDA01.HDF,0,5)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim0SA") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim0SA") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize0") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize0") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim0SA") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim1SA") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim1SA") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize1") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize1") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim1SA") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim2SA") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim2SA") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize2") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize2") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim2SA") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim3SA") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim3SA") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize3") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize3") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim3SA") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim4SA") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim4SA") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize4") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize4") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim4SA") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim5SA") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim5SA") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize5") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize5") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim5SA") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim6SA") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim6SA") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize6") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize6") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim6SA") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim7SA") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim7SA") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize7") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize7") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim7SA") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim8SA") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim8SA") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize8") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize8") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim8SA") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim9SA") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim9SA") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize9") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize9") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim9SA") -} - - -record(waveform, "BL45P-EA-PANDA-01:HDF5:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(PANDA01.HDF,0,5)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim0SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim1SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim2SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim3SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim4SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim5SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim6SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim7SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim8SA_RBV") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-01:HDF5:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-PANDA-01:HDF5:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-PANDA-01:HDF5:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-PANDA-01:HDF5:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-PANDA-01:HDF5:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:HDF5:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-PANDA-01:HDF5:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:HDF5:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-PANDA-01:HDF5:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-PANDA-01:HDF5:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.HDF,0,5)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-PANDA-01:HDF5:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-PANDA-01:HDF5:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-PANDA-01:HDF5:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-PANDA-01:HDF5:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-PANDA-01:HDF5:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-PANDA-01:HDF5:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-PANDA-01:HDF5:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA01.HDF,0,5)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-PANDA-01:HDF5:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA01.HDF,0,5)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-PANDA-01:HDF5:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-PANDA-01:HDF5:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.HDF,0,5)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-PANDA-01:HDF5:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.HDF,0,5)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-PANDA-01:HDF5:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-PANDA-01:HDF5:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-PANDA-01:HDF5:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-PANDA-01:HDF5:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-PANDA-01:HDF5:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)NDARRAY_PORT") - field(VAL, "PANDA01.POS") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-PANDA-01:HDF5:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-01:HDF5:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.HDF,0,5)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-01:HDF5:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.HDF,0,5)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-01:HDF5:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-PANDA-01:HDF5:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-PANDA-01:HDF5:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-PANDA-01:HDF5:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-PANDA-01:HDF5:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-PANDA-01:HDF5:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-PANDA-01:HDF5:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-PANDA-01:HDF5:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.HDF,0,5)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-01:HDF5:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.HDF,0,5)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-PANDA-01:HDF5:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.HDF,0,5)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-PANDA-01:HDF5:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-PANDA-01:HDF5:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-PANDA-01:HDF5:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)QUEUE_SIZE") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-01:HDF5:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-PANDA-01:HDF5:QueueSize") - field(OUT, "BL45P-EA-PANDA-01:HDF5:QueueFree.LOW") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-PANDA-01:HDF5:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-PANDA-01:HDF5:QueueSize") - field(OUT, "BL45P-EA-PANDA-01:HDF5:QueueUse.HIGH") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-PANDA-01:HDF5:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-PANDA-01:HDF5:QueueSize") - field(OUT, "BL45P-EA-PANDA-01:HDF5:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-PANDA-01:HDF5:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-PANDA-01:HDF5:QueueSize") - field(INPB, "BL45P-EA-PANDA-01:HDF5:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-PANDA-01:HDF5:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-PANDA-01:HDF5:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-01:HDF5:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.HDF,0,5)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-PANDA-01:HDF5:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.HDF,0,5)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)SORT_SIZE") - field(FLNK, "BL45P-EA-PANDA-01:HDF5:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-01:HDF5:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-PANDA-01:HDF5:SortSize") - field(OUT, "BL45P-EA-PANDA-01:HDF5:SortFree.LOW") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-PANDA-01:HDF5:AsynIO") -{ - field(PORT, "PANDA01.HDF") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# Flush data to file -record(busy, "BL45P-EA-PANDA-01:HDF5:FlushNow") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_SWMRFlushNow") - field(ZNAM, "Done") - field(ONAM, "Flush") -} - -# We replace some fields in records defined in NDFile.template -# File data format -record(mbbo, "BL45P-EA-PANDA-01:HDF5:FileFormat") -{ - field(ZRST, "HDF5") - field(ZRVL, "0") - field(ONST, "Invalid") - field(ONVL, "1") -} - -record(mbbi, "BL45P-EA-PANDA-01:HDF5:FileFormat_RBV") -{ - field(ZRST, "HDF5") - field(ZRVL, "0") - field(ONST, "Undefined") - field(ONVL, "1") -} - -record(bo, "BL45P-EA-PANDA-01:HDF5:ChunkSizeAuto") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSizeAuto") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:ChunkSizeAuto_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSizeAuto") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:NumRowChunks") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_nRowChunks") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:NumRowChunks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_nRowChunks") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:NumColChunks") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_nColChunks") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:NumColChunks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_nColChunks") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ChunkSize2") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize2") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ChunkSize2_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize2") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ChunkSize3") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize3") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ChunkSize3_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ChunkSize4") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize4") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ChunkSize4_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize4") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ChunkSize5") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize5") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ChunkSize5_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize5") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ChunkSize6") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize6") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ChunkSize6_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize6") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ChunkSize7") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize7") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ChunkSize7_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize7") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ChunkSize8") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize8") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ChunkSize8_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize8") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ChunkSize9") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize9") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ChunkSize9_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_chunkSize9") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:NumFramesChunks") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_nFramesChunks") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:NumFramesChunks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_nFramesChunks") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:NDAttributeChunk") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_NDAttributeChunk") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:NDAttributeChunk_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_NDAttributeChunk") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:BoundaryAlign") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_chunkBoundaryAlign") - field(PINI, "YES") - field(VAL, "0") - field(EGU, "bytes") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:BoundaryAlign_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_chunkBoundaryAlign") - field(SCAN, "I/O Intr") - field(EGU, "bytes") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:BoundaryThreshold") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_chunkBoundaryThreshold") - field(PINI, "YES") - field(VAL, "1") - field(EGU, "bytes") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:BoundaryThreshold_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_chunkBoundaryThreshold") - field(SCAN, "I/O Intr") - field(EGU, "bytes") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:NumExtraDims") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_nExtraDims") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:NumExtraDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_nExtraDims") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimSizeN") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSizeN") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimSizeN_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSizeN") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:ExtraDimNameN_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimNameN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimSizeX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSizeX") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSizeX") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:ExtraDimNameX_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimNameX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimSizeY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSizeY") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSizeY") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:ExtraDimNameY_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimNameY") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimSize3") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSize3") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimSize3_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSize3") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:ExtraDimName3_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimName3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimSize4") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSize4") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimSize4_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSize4") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:ExtraDimName4_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimName4") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimSize5") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSize5") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimSize5_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSize5") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:ExtraDimName5_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimName5") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimSize6") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSize6") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimSize6_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSize6") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:ExtraDimName6_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimName6") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimSize7") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSize7") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimSize7_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSize7") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:ExtraDimName7_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimName7") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimSize8") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSize8") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimSize8_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSize8") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:ExtraDimName8_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimName8") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimSize9") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSize9") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimSize9_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimSize9") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:ExtraDimName9_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimName9") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-01:HDF5:StoreAttr") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_storeAttributes") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:StoreAttr_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_storeAttributes") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(bo, "BL45P-EA-PANDA-01:HDF5:StorePerform") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_storePerformance") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:StorePerform_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_storePerformance") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(ai, "BL45P-EA-PANDA-01:HDF5:RunTime") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_totalRuntime") - field(SCAN, "I/O Intr") - field(PREC, "3") - field(EGU, "s") -} - -record(ai, "BL45P-EA-PANDA-01:HDF5:IOSpeed") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_totalIoSpeed") - field(SCAN, "I/O Intr") - field(PREC, "1") - field(EGU, "Mbit/s") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:NumFramesFlush") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_flushNthFrame") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:NumFramesFlush_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_flushNthFrame") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-PANDA-01:HDF5:Compression") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_compressionType") - field(PINI, "YES") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "N-bit") - field(ONVL, "1") - field(TWST, "szip") - field(TWVL, "2") - field(THST, "zlib") - field(THVL, "3") - field(FRST, "Blosc") - field(FRVL, "4") - field(FVST, "BSLZ4") - field(FVVL, "5") - field(SXST, "LZ4") - field(SXVL, "6") - field(SVST, "JPEG") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:HDF5:Compression_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_compressionType") - field(SCAN, "I/O Intr") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "N-bit") - field(ONVL, "1") - field(TWST, "szip") - field(TWVL, "2") - field(THST, "zlib") - field(THVL, "3") - field(FRST, "Blosc") - field(FRVL, "4") - field(FVST, "BSLZ4") - field(FVVL, "5") - field(SXST, "LZ4") - field(SXVL, "6") - field(SVST, "JPEG") - field(SVVL, "7") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:NumDataBits") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_nbitsPrecision") - field(PINI, "YES") - field(EGU, "bit") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:NumDataBits_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_nbitsPrecision") - field(SCAN, "I/O Intr") - field(EGU, "bit") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:DataBitsOffset") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_nbitsOffset") - field(PINI, "YES") - field(EGU, "bit") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:DataBitsOffset_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_nbitsOffset") - field(SCAN, "I/O Intr") - field(EGU, "bit") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:SZipNumPixels") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_szipNumPixels") - field(PINI, "YES") - field(EGU, "bit") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:SZipNumPixels_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_szipNumPixels") - field(SCAN, "I/O Intr") - field(EGU, "bit") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ZLevel") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_zCompressLevel") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ZLevel_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_zCompressLevel") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-PANDA-01:HDF5:BloscShuffle") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_bloscShuffleType") - field(PINI, "YES") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "Byte") - field(ONVL, "1") - field(TWST, "Bit") - field(TWVL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:HDF5:BloscShuffle_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_bloscShuffleType") - field(SCAN, "I/O Intr") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "Byte") - field(ONVL, "1") - field(TWST, "Bit") - field(TWVL, "2") -} - -record(mbbo, "BL45P-EA-PANDA-01:HDF5:BloscCompressor") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_bloscCompressor") - field(PINI, "YES") - field(ZRST, "BloscLZ") - field(ZRVL, "0") - field(ONST, "LZ4") - field(ONVL, "1") - field(TWST, "LZ4HC") - field(TWVL, "2") - field(THST, "SNAPPY") - field(THVL, "3") - field(FRST, "ZLIB") - field(FRVL, "4") - field(FVST, "ZSTD") - field(FVVL, "5") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-01:HDF5:BloscCompressor_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_bloscCompressor") - field(SCAN, "I/O Intr") - field(ZRST, "BloscLZ") - field(ZRVL, "0") - field(ONST, "LZ4") - field(ONVL, "1") - field(TWST, "LZ4HC") - field(TWVL, "2") - field(THST, "SNAPPY") - field(THVL, "3") - field(FRST, "ZLIB") - field(FRVL, "4") - field(FVST, "ZSTD") - field(FVVL, "5") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:BloscLevel") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_bloscCompressLevel") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:BloscLevel_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_bloscCompressLevel") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:JPEGQuality") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_jpegQuality") - field(VAL, "90") - field(DRVL, "1") - field(DRVH, "100") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:JPEGQuality_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_jpegQuality") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-01:HDF5:DimAttDatasets") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_dimAttDatasets") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:DimAttDatasets_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_dimAttDatasets") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# File path. -# % autosave 2 -#record(waveform, "BL45P-EA-PANDA-01:HDF5:XMLPath") -#{ -# field(PINI, "YES") -# field(DTYP, "asynOctetWrite") -# field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_layoutDirectory") -# field(FTVL, "CHAR") -# field(NELM, "256") -#} - -record(waveform, "BL45P-EA-PANDA-01:HDF5:XMLErrorMsg_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_layoutErrorMsg") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:XMLValid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_layoutValid") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -# Filename -# % autosave 2 -record(waveform, "BL45P-EA-PANDA-01:HDF5:XMLFileName") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_layoutFilename") - field(FTVL, "CHAR") - field(NELM, "2048") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-PANDA-01:HDF5:XMLFileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_layoutFilename") - field(FTVL, "CHAR") - field(NELM, "2048") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:SWMRSupported_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_SWMRSupported") - field(SCAN, "I/O Intr") - field(ZNAM, "Not Supported") - field(ONAM, "Supported") -} - -record(bo, "BL45P-EA-PANDA-01:HDF5:SWMRMode") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_SWMRMode") - field(PINI, "YES") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:SWMRMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_SWMRMode") - field(SCAN, "I/O Intr") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:SWMRActive_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_SWMRRunning") - field(SCAN, "I/O Intr") - field(ZNAM, "Off") - field(ONAM, "Active") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:SWMRCbCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_SWMRCbCounter") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-01:HDF5:PositionMode") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posRunning") - field(PINI, "YES") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(bi, "BL45P-EA-PANDA-01:HDF5:PositionMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posRunning") - field(SCAN, "I/O Intr") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosNameDimN") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDimN") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosNameDimN_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDimN") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosNameDimX") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDimX") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosNameDimX_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDimX") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosNameDimY") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDimY") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosNameDimY_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDimY") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosNameDim3") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDim3") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosNameDim3_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDim3") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosNameDim4") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDim4") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosNameDim4_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDim4") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosNameDim5") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDim5") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosNameDim5_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDim5") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosNameDim6") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDim6") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosNameDim6_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDim6") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosNameDim7") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDim7") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosNameDim7_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDim7") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosNameDim8") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDim8") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosNameDim8_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDim8") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosNameDim9") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDim9") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosNameDim9_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posNameDim9") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosIndexDimN") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDimN") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosIndexDimN_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDimN") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosIndexDimX") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDimX") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosIndexDimX_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDimX") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosIndexDimY") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDimY") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosIndexDimY_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDimY") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosIndexDim3") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDim3") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosIndexDim3_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDim3") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosIndexDim4") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDim4") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosIndexDim4_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDim4") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosIndexDim5") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDim5") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosIndexDim5_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDim5") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosIndexDim6") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDim6") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosIndexDim6_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDim6") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosIndexDim7") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDim7") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosIndexDim7_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDim7") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosIndexDim8") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDim8") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosIndexDim8_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDim8") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-01:HDF5:PosIndexDim9") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDim9") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-01:HDF5:PosIndexDim9_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_posIndexDim9") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-01:HDF5:FillValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_fillValue") - field(PINI, "YES") - field(PREC, "1") -} - -record(ai, "BL45P-EA-PANDA-01:HDF5:FillValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_fillValue") - field(SCAN, "I/O Intr") - field(PREC, "1") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunkX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunkX") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunkX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunkX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunkY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunkY") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunkY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunkY") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunk3") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunk3") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunk3_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunk3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunk4") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunk4") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunk4_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunk4") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunk5") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunk5") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunk5_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunk5") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunk6") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunk6") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunk6_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunk6") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunk7") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunk7") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunk7_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunk7") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunk8") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunk8") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunk8_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunk8") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunk9") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunk9") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-01:HDF5:ExtraDimChunk9_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA01.HDF,0,5)HDF5_extraDimChunk9") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDFileHDF5.template -# Database for NDFileHDF5 driver, which saves files for NDArray data. - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, ADDR, Asyn Port address -# % macro, TIMEOUT, Asyn Port timeout -# % macro, XMLSIZE, Number of elements of the XML layout waveform record - -# This associates the template with an edm screen -# % gui, PANDA02.HDF, edmtab, NDFileHDF5.edl, P=BL45P-EA-PANDA-02,R=:HDF5: - -# This associates a BOY screen with the template -# % gui, PANDA02.HDF, boydetail,ADApp_opi/dls/hdf5_detail.opi, P=BL45P-EA-PANDA-02, R=:HDF5:, DESC=HDF5 File Test -# % gui, PANDA02.HDF, boyembed, ADApp_opi/dls/hdf5_embed_box.opi, P=BL45P-EA-PANDA-02, R=:HDF5:, DESC=HDF5 File Test -# % gui, PANDA02.HDF, boyembed, ADApp_opi/dls/hdf5_embed.opi, P=BL45P-EA-PANDA-02, R=:HDF5:, DESC=HDF5 File Test - -# Info -# % gui, PANDA02.HDF, groupHeading, Info -# % gui, PANDA02.HDF, readback, Port name, BL45P-EA-PANDA-02:HDF5:PortName_RBV -# % gui, PANDA02.HDF, readback, Plugin type, BL45P-EA-PANDA-02:HDF5:PluginType_RBV -# Input -# % gui, PANDA02.HDF, demandString, Input, BL45P-EA-PANDA-02:HDF5:NDArrayPort -# % gui, PANDA02.HDF, readback, Input, BL45P-EA-PANDA-02:HDF5:NDArrayPort_RBV - -# % gui, PANDA02.HDF, groupHeading, Callback -# % gui, PANDA02.HDF, enum, Callbacks, BL45P-EA-PANDA-02:HDF5:EnableCallbacks -# % gui, PANDA02.HDF, statusbits, Callbacks, BL45P-EA-PANDA-02:HDF5:EnableCallbacks_RBV -# % gui, PANDA02.HDF, demand, Min Callback Time, BL45P-EA-PANDA-02:HDF5:MinCallbackTime -# % gui, PANDA02.HDF, readback, Min Callback Time, BL45P-EA-PANDA-02:HDF5:MinCallbackTime_RBV -# % gui, PANDA02.HDF, enum, Block Callbacks, BL45P-EA-PANDA-02:HDF5:BlockingCallbacks -# % gui, PANDA02.HDF, statusbits, Block Callbacks, BL45P-EA-PANDA-02:HDF5:BlockingCallbacks_RBV - -# % gui, PANDA02.HDF, groupHeading, Counters -# % gui, PANDA02.HDF, demand, Array Counter, BL45P-EA-PANDA-02:HDF5:ArrayCounter -# % gui, PANDA02.HDF, readback, Array Counter, BL45P-EA-PANDA-02:HDF5:ArrayCounter_RBV -# % gui, PANDA02.HDF, readback, Array Rate (fps), BL45P-EA-PANDA-02:HDF5:ArrayRate_RBV -# % gui, PANDA02.HDF, readback, Queue Use, BL45P-EA-PANDA-02:HDF5:QueueUse -# % gui, PANDA02.HDF, readback, Queue Size, BL45P-EA-PANDA-02:HDF5:QueueSize -# % gui, PANDA02.HDF, demand, Dropped Arrays, BL45P-EA-PANDA-02:HDF5:DroppedArrays -# % gui, PANDA02.HDF, readback, Dropped Arrays, BL45P-EA-PANDA-02:HDF5:DroppedArrays_RBV - -# % gui, PANDA02.HDF, groupHeading, Array Settings -# % gui, PANDA02.HDF, readback, Num Dimensions, BL45P-EA-PANDA-02:HDF5:NDimensions_RBV -# % gui, PANDA02.HDF, readback, Dim 0 Size, BL45P-EA-PANDA-02:HDF5:ArraySize0_RBV -# % gui, PANDA02.HDF, readback, Dim 1 Size, BL45P-EA-PANDA-02:HDF5:ArraySize1_RBV -# % gui, PANDA02.HDF, readback, Dim 2 Size, BL45P-EA-PANDA-02:HDF5:ArraySize2_RBV -# % gui, PANDA02.HDF, readback, Input Data Type, BL45P-EA-PANDA-02:HDF5:DataType_RBV -# % gui, PANDA02.HDF, readback, Colour Mode, BL45P-EA-PANDA-02:HDF5:ColorMode_RBV -# % gui, PANDA02.HDF, readback, Bayer Pattern, BL45P-EA-PANDA-02:HDF5:BayerPattern_RBV -# % gui, PANDA02.HDF, readback, Unique id, BL45P-EA-PANDA-02:HDF5:UniqueId_RBV -# % gui, PANDA02.HDF, readback, Timestamp, BL45P-EA-PANDA-02:HDF5:TimeStamp_RBV -# File -# % gui, PANDA02.HDF, groupHeading, File -# % gui, PANDA02.HDF, demandString, File Path, BL45P-EA-PANDA-02:HDF5:FilePath -# % gui, PANDA02.HDF, readback, File Path, BL45P-EA-PANDA-02:HDF5:FilePath_RBV -# % gui, PANDA02.HDF, statusbits, File Path Exists, BL45P-EA-PANDA-02:HDF5:FilePathExists_RBV -# % gui, PANDA02.HDF, demand, File Name, BL45P-EA-PANDA-02:HDF5:FileName -# % gui, PANDA02.HDF, readback, File Name, BL45P-EA-PANDA-02:HDF5:FileName_RBV -# % gui, PANDA02.HDF, demand, File Number, BL45P-EA-PANDA-02:HDF5:FileNumber -# % gui, PANDA02.HDF, readback, File Number, BL45P-EA-PANDA-02:HDF5:FileNumber_RBV -# % gui, PANDA02.HDF, enum, Auto Increment, BL45P-EA-PANDA-02:HDF5:AutoIncrement -# % gui, PANDA02.HDF, statusbits, Auto Increment, BL45P-EA-PANDA-02:HDF5:AutoIncrement_RBV -# % gui, PANDA02.HDF, demand, File Format, BL45P-EA-PANDA-02:HDF5:FileTemplate -# % gui, PANDA02.HDF, readback, File Format, BL45P-EA-PANDA-02:HDF5:FileTemplate_RBV -# % gui, PANDA02.HDF, demand, N to Capture, BL45P-EA-PANDA-02:HDF5:NumCapture -# % gui, PANDA02.HDF, readback, N to Capture, BL45P-EA-PANDA-02:HDF5:NumCapture_RBV -# % gui, PANDA02.HDF, readback, N Captured, BL45P-EA-PANDA-02:HDF5:NumCaptured_RBV -# % gui, PANDA02.HDF, enum, Auto Save, BL45P-EA-PANDA-02:HDF5:AutoSave -# % gui, PANDA02.HDF, statusbits, Auto Save , BL45P-EA-PANDA-02:HDF5:AutoSave_RBV -# % gui, PANDA02.HDF, enum, Capture mode, BL45P-EA-PANDA-02:HDF5:FileWriteMode -# % gui, PANDA02.HDF, readback, Capture mode, BL45P-EA-PANDA-02:HDF5:FileWriteMode_RBV -# % gui, PANDA02.HDF, enum, Capture, BL45P-EA-PANDA-02:HDF5:Capture -# % gui, PANDA02.HDF, readback, Capture, BL45P-EA-PANDA-02:HDF5:Capture_RBV -# % gui, PANDA02.HDF, readback, Write Message, BL45P-EA-PANDA-02:HDF5:WriteMessage -# % gui, PANDA02.HDF, readback, Write Status, BL45P-EA-PANDA-02:HDF5:WriteStatus -# % gui, PANDA02.HDF, readback, Write Filename, BL45P-EA-PANDA-02:HDF5:FullFileName_RBV -# % gui, PANDA02.HDF, enum, Lazy Open, BL45P-EA-PANDA-02:HDF5:LazyOpen -# % gui, PANDA02.HDF, readback, Lazy Open, BL45P-EA-PANDA-02:HDF5:LazyOpen_RBV -# % gui, PANDA02.HDF, demand, Temporary Suffix, BL45P-EA-PANDA-02:HDF5:TempSuffix -# % gui, PANDA02.HDF, readback, Temporary Suffix, BL45P-EA-PANDA-02:HDF5:TempSuffix_RBV -# % gui, PANDA02.HDF, demand, Create Directories, BL45P-EA-PANDA-02:HDF5:CreateDirectory -# % gui, PANDA02.HDF, readback, Create Directories, BL45P-EA-PANDA-02:HDF5:CreateDirectory_RBV -# HDF5 -# % gui, PANDA02.HDF, groupHeading, HDF5 -# % gui, PANDA02.HDF, demand, Extra Dimensions, BL45P-EA-PANDA-02:HDF5:NumExtraDims -# % gui, PANDA02.HDF, readback, Extra Dimensions, BL45P-EA-PANDA-02:HDF5:NumExtraDims_RBV -# % gui, PANDA02.HDF, demand, Rows per Chunk, BL45P-EA-PANDA-02:HDF5:NumRowChunks -# % gui, PANDA02.HDF, readback, Rows per Chunk, BL45P-EA-PANDA-02:HDF5:NumRowChunks_RBV -# % gui, PANDA02.HDF, demand, Cols per Chunk, BL45P-EA-PANDA-02:HDF5:NumColChunks -# % gui, PANDA02.HDF, readback, Cols per Chunk, BL45P-EA-PANDA-02:HDF5:NumColChunks_RBV -# % gui, PANDA02.HDF, demand, Frames per Chunk, BL45P-EA-PANDA-02:HDF5:NumFramesChunks -# % gui, PANDA02.HDF, readback, Frames per Chunk, BL45P-EA-PANDA-02:HDF5:NumFramesChunks_RBV -# % gui, PANDA02.HDF, demand, Boundary Alignment, BL45P-EA-PANDA-02:HDF5:BoundaryAlign -# % gui, PANDA02.HDF, readback, Boundary Alignment, BL45P-EA-PANDA-02:HDF5:BoundaryAlign_RBV -# % gui, PANDA02.HDF, demand, Boundary Threshold, BL45P-EA-PANDA-02:HDF5:BoundaryThreshold -# % gui, PANDA02.HDF, readback, Boundary Threshold, BL45P-EA-PANDA-02:HDF5:BoundaryThreshold_RBV -# % gui, PANDA02.HDF, demand, Flush on Nth Frame, BL45P-EA-PANDA-02:HDF5:NumFramesFlush -# % gui, PANDA02.HDF, readback, Flush on Nth Frame, BL45P-EA-PANDA-02:HDF5:NumFramesFlush_RBV -# % gui, PANDA02.HDF, enum, Store Attribute Data, BL45P-EA-PANDA-02:HDF5:StoreAttr -# % gui, PANDA02.HDF, readback, Store Attribute Data, BL45P-EA-PANDA-02:HDF5:StoreAttr_RBV -# % gui, PANDA02.HDF, enum, Store Performance Data, BL45P-EA-PANDA-02:HDF5:StorePerform -# % gui, PANDA02.HDF, readback, Store Performance Data, BL45P-EA-PANDA-02:HDF5:StorePerform_RBV -# % gui, PANDA02.HDF, readback, Total Write Time, BL45P-EA-PANDA-02:HDF5:RunTime -# % gui, PANDA02.HDF, readback, Total Write Speed, BL45P-EA-PANDA-02:HDF5:IOSpeed -# % gui, PANDA02.HDF, enum, Compression Type, BL45P-EA-PANDA-02:HDF5:Compression -# % gui, PANDA02.HDF, readback, Compression Type, BL45P-EA-PANDA-02:HDF5:Compression_RBV -# % gui, PANDA02.HDF, demand, N-bit bits per Pixel, BL45P-EA-PANDA-02:HDF5:NumDataBits -# % gui, PANDA02.HDF, readback, N-bit bits per Pixel, BL45P-EA-PANDA-02:HDF5:NumDataBits_RBV -# % gui, PANDA02.HDF, demand, N-bit Offset, BL45P-EA-PANDA-02:HDF5:DataBitsOffset -# % gui, PANDA02.HDF, readback, N-bit Offset, BL45P-EA-PANDA-02:HDF5:DataBitsOffset_RBV -# % gui, PANDA02.HDF, demand, Szip Filter Size, BL45P-EA-PANDA-02:HDF5:SZipNumPixels -# % gui, PANDA02.HDF, readback, Szip Filter Size, BL45P-EA-PANDA-02:HDF5:SZipNumPixels_RBV -# % gui, PANDA02.HDF, demand, Zlib Deflate Level, BL45P-EA-PANDA-02:HDF5:ZLevel -# % gui, PANDA02.HDF, readback, Zlib Deflate Level, BL45P-EA-PANDA-02:HDF5:ZLevel_RBV - -# Memory -# % gui, PANDA02.HDF, groupHeading, Memory -# % gui, PANDA02.HDF, readback, Max memory, BL45P-EA-PANDA-02:HDF5:PoolMaxMem -# % gui, PANDA02.HDF, readback, Max buffers, BL45P-EA-PANDA-02:HDF5:PoolMaxBuffers -# % gui, PANDA02.HDF, readback, Used memory, BL45P-EA-PANDA-02:HDF5:PoolUsedMem -# % gui, PANDA02.HDF, readback, Allocated buffers, BL45P-EA-PANDA-02:HDF5:PoolAllocBuffers -# % gui, PANDA02.HDF, readback, Free buffers, BL45P-EA-PANDA-02:HDF5:PoolFreeBuffers - -#=================================================================# -# Template file: NDFile.template -# Database for NDFile driver, which saves files for NDArray data. -# Mark Rivers -# April 7, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -################################################################### -# These records control file I/O # -################################################################### - -# File path. -record(waveform, "BL45P-EA-PANDA-02:HDF5:FilePath") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA02.HDF,0,5)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-PANDA-02:HDF5:FilePath_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)FILE_PATH") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:FilePathExists_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)FILE_PATH_EXISTS") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:CreateDirectory") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)CREATE_DIR") - field(VAL, "0" ) - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:CreateDirectory_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)CREATE_DIR") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -# Filename -record(waveform, "BL45P-EA-PANDA-02:HDF5:FileName") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA02.HDF,0,5)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-PANDA-02:HDF5:FileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:FileNumber") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)FILE_NUMBER") - field(VAL, "1") - info(asyn:READBACK, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:FileNumber_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)FILE_NUMBER") - field(SCAN, "I/O Intr") -} - -# Autoincrement flag -record(bo, "BL45P-EA-PANDA-02:HDF5:AutoIncrement") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)AUTO_INCREMENT") - field(VAL, "1") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:AutoIncrement_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)AUTO_INCREMENT") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# File template -record(waveform, "BL45P-EA-PANDA-02:HDF5:FileTemplate") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA02.HDF,0,5)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-PANDA-02:HDF5:FileTemplate_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)FILE_TEMPLATE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Full filename, including path -record(waveform, "BL45P-EA-PANDA-02:HDF5:FullFileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)FULL_FILE_NAME") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -# Autosave flag -record(bo, "BL45P-EA-PANDA-02:HDF5:AutoSave") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:AutoSave_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)AUTO_SAVE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# Write file -record(busy, "BL45P-EA-PANDA-02:HDF5:WriteFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)WRITE_FILE") - field(ZNAM, "Done") - field(ONAM, "Write") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:WriteFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)WRITE_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Writing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - - -# Read file -record(busy, "BL45P-EA-PANDA-02:HDF5:ReadFile") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)READ_FILE") - field(ZNAM, "Done") - field(ONAM, "Read") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:ReadFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)READ_FILE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Reading") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -# File data format -record(mbbo, "BL45P-EA-PANDA-02:HDF5:FileFormat") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)FILE_FORMAT") - field(VAL, "0") - field(ZRST, "Undefined") - field(ZRVL, "0") - field(ONST, "Invalid") - field(ONVL, "1") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:HDF5:FileFormat_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)FILE_FORMAT") - field(ZRST, "netCDF") - field(ZRVL, "0") - field(ONST, "Undefined") - field(ONVL, "1") - field(SCAN, "I/O Intr") -} - -# File save mode -record(mbbo, "BL45P-EA-PANDA-02:HDF5:FileWriteMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)WRITE_MODE") - field(VAL, "0") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:HDF5:FileWriteMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)WRITE_MODE") - field(ZRST, "Single") - field(ZRVL, "0") - field(ONST, "Capture") - field(ONVL, "1") - field(TWST, "Stream") - field(TWVL, "2") - field(SCAN, "I/O Intr") -} - -# Capture data -record(busy, "BL45P-EA-PANDA-02:HDF5:Capture") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)CAPTURE") - field(ZNAM, "Done") - field(ONAM, "Capture") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:Capture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)CAPTURE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Capturing") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:NumCapture") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)NUM_CAPTURE") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:NumCapture_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)NUM_CAPTURE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:NumCaptured_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)NUM_CAPTURED") - field(SCAN, "I/O Intr") -} - -# Delete driver file flag -record(bo, "BL45P-EA-PANDA-02:HDF5:DeleteDriverFile") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)DELETE_DRIVER_FILE") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:DeleteDriverFile_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)DELETE_DRIVER_FILE") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:WriteStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)WRITE_STATUS") - field(ZNAM, "Write OK") - field(ZSV, "NO_ALARM") - field(ONAM, "Write error") - field(OSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-EA-PANDA-02:HDF5:WriteMessage") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)WRITE_MESSAGE") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-02:HDF5:LazyOpen") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)FILE_LAZY_OPEN") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:LazyOpen_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)FILE_LAZY_OPEN") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:TempSuffix") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)FILE_TEMP_SUFFIX") - field(VAL, "") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:TempSuffix_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)FILE_TEMP_SUFFIX") - field(VAL, "") - field(SCAN, "I/O Intr") -} -#=================================================================# -# Template file: NDPluginBase.template -# Database for NDPluginBase, i.e. records common to all plugins -# Mark Rivers -# April 25, 2008 - -# Macros: -# % macro, P, Device Prefix -# % macro, R, Device Suffix -# % macro, PORT, Asyn Port name -# % macro, TIMEOUT, Timeout -# % macro, ADDR, Asyn Port address -# % macro, NDARRAY_PORT, Input Array Port -# % macro, NDARRAY_ADDR, Input Array Address -# % macro, ENABLED, Plugin Enabled at startup? -# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs - -#=================================================================# -# Template file: NDArrayBase.template -# Database for area detector control using asyn driver and standard asyn device support -# Mark Rivers -# March 9, 2008 - -################################################################### -# This record contains the version of ADCore # -################################################################### - -record(stringin, "BL45P-EA-PANDA-02:HDF5:ADCoreVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)ADCORE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the version of the driver or plugin # -################################################################### - -record(stringin, "BL45P-EA-PANDA-02:HDF5:DriverVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)DRIVER_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the asyn port name of this detector # -################################################################### - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PortName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)PORT_NAME_SELF") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records contain basic information about the detector # -################################################################### - -record(stringin, "BL45P-EA-PANDA-02:HDF5:Manufacturer_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)MANUFACTURER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:Model_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)MODEL") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:SerialNumber_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)SERIAL_NUMBER") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:SDKVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)SDK_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:FirmwareVersion_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)FIRMWARE_VERSION") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control acquisition start and stop # -################################################################### - -record(bo, "BL45P-EA-PANDA-02:HDF5:Acquire") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)ACQUIRE") - field(ZNAM, "Done") - field(ONAM, "Acquire") - field(VAL, "0") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:SetAcquireBusy") - info(asyn:READBACK, "1") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:Acquire_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)ACQUIRE") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-02:HDF5:SetAcquireBusy") -{ - field(INPA, "BL45P-EA-PANDA-02:HDF5:Acquire NPP") - field(CALC, "A") - field(OOPT, "Transition To Non-zero") - field(OUT, "BL45P-EA-PANDA-02:HDF5:AcquireBusy PP") -} - -record(busy, "BL45P-EA-PANDA-02:HDF5:AcquireBusy") { - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(VAL, "0") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:AcquireBusyCB") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)ACQUIRE_BUSY") - field(ZNAM, "Done") - field(ZSV, "NO_ALARM") - field(ONAM, "Acquiring") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-02:HDF5:ClearAcquireBusy") { - field(INPA, "BL45P-EA-PANDA-02:HDF5:AcquireBusyCB CP") - field(CALC, "A") - field(OOPT, "Transition To Zero") - field(OUT, "BL45P-EA-PANDA-02:HDF5:AcquireBusy PP") -} - -record(bo, "BL45P-EA-PANDA-02:HDF5:WaitForPlugins") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)WAIT_FOR_PLUGINS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") -} - -################################################################### -# These records are the array size and data type # -################################################################### -# The number of dimensions -record(longout, "BL45P-EA-PANDA-02:HDF5:NDimensions") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)ARRAY_NDIMENSIONS") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:NDimensions_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)ARRAY_NDIMENSIONS") - field(SCAN, "I/O Intr") -} - -# The array dimensions waveform records -record(waveform, "BL45P-EA-PANDA-02:HDF5:Dimensions") -{ - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(PANDA02.HDF,0,5)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim0SA") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim0SA") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize0") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize0") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim0SA") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim1SA") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim1SA") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize1") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize1") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim1SA") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim2SA") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim2SA") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize2") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize2") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim2SA") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim3SA") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim3SA") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize3") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize3") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim3SA") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim4SA") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim4SA") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize4") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize4") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim4SA") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim5SA") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim5SA") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize5") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize5") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim5SA") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim6SA") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim6SA") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize6") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize6") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim6SA") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim7SA") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim7SA") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize7") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize7") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim7SA") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim8SA") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim8SA") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize8") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize8") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim8SA") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim9SA") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim9SA") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize9") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize9") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim9SA") -} - - -record(waveform, "BL45P-EA-PANDA-02:HDF5:Dimensions_RBV") -{ - field(DTYP, "asynInt32ArrayIn") - field(INP, "@asyn(PANDA02.HDF,0,5)ARRAY_DIMENSIONS") - field(FTVL, "LONG") - field(NELM, "10") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim0SA_RBV") - field(SCAN, "I/O Intr") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim0SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "0") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize0_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize0_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim0SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim1SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim1SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "1") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize1_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize1_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim1SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim2SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim2SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "2") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize2_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize2_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim2SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim3SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim3SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "3") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize3_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize3_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim3SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim4SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim4SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "4") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize4_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize4_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim4SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim5SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim5SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "5") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize5_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize5_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim5SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim6SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim6SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "6") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize6_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize6_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim6SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim7SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim7SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "7") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize7_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize7_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim7SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim8SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim8SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "8") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize8_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize8_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim8SA_RBV") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:Dim9SA_RBV") -} - -record(subArray, "BL45P-EA-PANDA-02:HDF5:Dim9SA_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dimensions_RBV NPP NMS") - field(FTVL, "LONG") - field(MALM, "10") - field(NELM, "1") - field(INDX, "9") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:ArraySize9_RBV") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize9_RBV") -{ - field(INP, "BL45P-EA-PANDA-02:HDF5:Dim9SA_RBV") -} - - -record(mbbi, "BL45P-EA-PANDA-02:HDF5:BayerPattern_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)BAYER_PATTERN") - field(ZRST, "RGGB") - field(ZRVL, "0") - field(ONST, "GBRG") - field(ONVL, "1") - field(TWST, "GRBG") - field(TWVL, "2") - field(THST, "BGGR") - field(THVL, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)ARRAY_SIZE_X") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)ARRAY_SIZE_Y") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySizeZ_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)ARRAY_SIZE_Z") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArraySize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)ARRAY_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records have information on the compression # -################################################################### -record(stringin, "BL45P-EA-PANDA-02:HDF5:Codec_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)CODEC") - field(VAL, "") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:CompressedSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)COMPRESSED_SIZE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the data type # -################################################################### - -record(mbbo, "BL45P-EA-PANDA-02:HDF5:DataType") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:HDF5:DataType_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)DATA_TYPE") - field(ZRST, "Int8") - field(ZRVL, "0") - field(ONST, "UInt8") - field(ONVL, "1") - field(TWST, "Int16") - field(TWVL, "2") - field(THST, "UInt16") - field(THVL, "3") - field(FRST, "Int32") - field(FRVL, "4") - field(FVST, "UInt32") - field(FVVL, "5") - field(SXST, "Int64") - field(SXVL, "6") - field(SVST, "UInt64") - field(SVVL, "7") - field(EIST, "Float32") - field(EIVL, "8") - field(NIST, "Float64") - field(NIVL, "9") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the color mode # -# These choices must agree with NDColorMode_t in NDArray.h # -################################################################### - -record(mbbo, "BL45P-EA-PANDA-02:HDF5:ColorMode") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:HDF5:ColorMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)COLOR_MODE") - field(ZRST, "Mono") - field(ZRVL, "0") - field(ONST, "Bayer") - field(ONVL, "1") - field(TWST, "RGB1") - field(TWVL, "2") - field(THST, "RGB2") - field(THVL, "3") - field(FRST, "RGB3") - field(FRVL, "4") - field(FVST, "YUV444") - field(FVVL, "5") - field(SXST, "YUV422") - field(SXVL, "6") - field(SVST, "YUV421") - field(SVVL, "7") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records are the uniqueId and time stamps of the array # -################################################################### -record(longin, "BL45P-EA-PANDA-02:HDF5:UniqueId_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)UNIQUE_ID") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-EA-PANDA-02:HDF5:TimeStamp_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.HDF,0,5)TIME_STAMP") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:EpicsTSSec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)EPICS_TS_SEC") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:EpicsTSNsec_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)EPICS_TS_NSEC") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide statistics on array callbacks and # -# array callback rates # -################################################################### -record(longout, "BL45P-EA-PANDA-02:HDF5:ArrayCounter") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)ARRAY_COUNTER") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ArrayCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)ARRAY_COUNTER") - field(SCAN, "I/O Intr") -} - -# Updated rate calculation to use a smoothing factor w/ guard against negative values -record(calc, "BL45P-EA-PANDA-02:HDF5:ArrayRate_RBV") -{ - field(INPA, "BL45P-EA-PANDA-02:HDF5:ArrayRate_RBV.LB NPP NMS") # Previous counter value - field(INPB, "BL45P-EA-PANDA-02:HDF5:ArrayCounter_RBV NPP NMS") # Current counter value - field(INPC, "1.0") # Delta time in seconds - field(INPD, "BL45P-EA-PANDA-02:HDF5:ArrayRate_RBV.VAL NPP NMS") # Previous rate - field(INPE, "0.0") # Smoothing factor - field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") - field(PREC, "2" ) - field(EGU, "Hz" ) - field(SCAN, "1 second") -} - -################################################################### -# These records control NDArray callacks # -################################################################### -record(bo, "BL45P-EA-PANDA-02:HDF5:ArrayCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:ArrayCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)ARRAY_CALLBACKS") - field(ZNAM, "Disable") - field(ZSV, "NO_ALARM") - field(ONAM, "Enable") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains macro definitions for the attributes # -################################################################### - -record(waveform, "BL45P-EA-PANDA-02:HDF5:NDAttributesMacros") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA02.HDF,0,5)ND_ATTRIBUTES_MACROS") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record is the name of a file defining attributes # -################################################################### - -record(waveform, "BL45P-EA-PANDA-02:HDF5:NDAttributesFile") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA02.HDF,0,5)ND_ATTRIBUTES_FILE") - field(FTVL, "CHAR") - field(NELM, "256") - info(autosaveFields, "VAL") -} - -################################################################### -# This record defines the status of reading attributes file # -################################################################### - -record(mbbi, "BL45P-EA-PANDA-02:HDF5:NDAttributesStatus") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)ND_ATTRIBUTES_STATUS") - field(ZRVL, "0") - field(ZRST, "Attributes file OK") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "File not found") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "XML syntax error") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Macro substitution error") - field(THSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Status of NDArrayPool - number of buffers, memory used etc. # -################################################################### - -record(ai, "BL45P-EA-PANDA-02:HDF5:PoolMaxMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.HDF,0,5)POOL_MAX_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "Passive") - field(PINI, "YES") -} - -record(ai, "BL45P-EA-PANDA-02:HDF5:PoolUsedMem") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.HDF,0,5)POOL_USED_MEMORY") - field(PREC, "1") - field(EGU, "MB") - field(SCAN, "1 second") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:PoolAllocBuffers") - info(autosaveFields, "SCAN") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:PoolAllocBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)POOL_ALLOC_BUFFERS") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:PoolFreeBuffers") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:PoolFreeBuffers") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)POOL_FREE_BUFFERS") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:PoolUsedBuffers") -} - -record(calc, "BL45P-EA-PANDA-02:HDF5:PoolUsedBuffers") -{ - field(INPA, "BL45P-EA-PANDA-02:HDF5:PoolAllocBuffers NPP MS") - field(INPB, "BL45P-EA-PANDA-02:HDF5:PoolFreeBuffers NPP MS") - field(CALC, "A-B") -} - -record(bo, "BL45P-EA-PANDA-02:HDF5:EmptyFreeList") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)POOL_EMPTY_FREELIST") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:NumQueuedArrays") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)NUM_QUEUED_ARRAYS") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the type of plugin # -################################################################### - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PluginType_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)PLUGIN_TYPE") - field(VAL, "Unknown") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control the connection of the server to # -# an NDArray driver port and address # -################################################################### -# Array port name -record(stringout, "BL45P-EA-PANDA-02:HDF5:NDArrayPort") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)NDARRAY_PORT") - field(VAL, "PANDA02.POS") - info(autosaveFields, "VAL") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:NDArrayPort_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)NDARRAY_PORT") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:NDArrayAddress") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)NDARRAY_ADDR") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:NDArrayAddress_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)NDARRAY_ADDR") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control whether callbacks are enabled and # -# minimum time between callbacks # -################################################################### -record(bo, "BL45P-EA-PANDA-02:HDF5:EnableCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:EnableCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)ENABLE_CALLBACKS") - field(ZNAM, "Disable") - field(ONAM, "Enable") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-02:HDF5:MinCallbackTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.HDF,0,5)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-02:HDF5:MinCallbackTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.HDF,0,5)MIN_CALLBACK_TIME") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-02:HDF5:MaxArrayRate") -{ - field(DTYP, "Soft Channel") - field(OUT, "BL45P-EA-PANDA-02:HDF5:MaxArrayRate_COUT PP") - field(EGU, "Hz") - field(PREC, "3") - field(VAL, "0.0") - info(autosaveFields, "VAL") -} - -record(calcout, "BL45P-EA-PANDA-02:HDF5:MaxArrayRate_COUT") -{ - field(INPA, "BL45P-EA-PANDA-02:HDF5:MaxArrayRate") - field(CALC, "A=0?0:1.0/A") - field(OUT, "BL45P-EA-PANDA-02:HDF5:MinCallbackTime PP") -} - -record(calc, "BL45P-EA-PANDA-02:HDF5:MaxArrayRate_RBV") -{ - field(INPA, "BL45P-EA-PANDA-02:HDF5:MinCallbackTime_RBV CP") - field(CALC, "A=0?0:1.0/A") - field(EGU, "Hz") - field(PREC, "3") - field(SCAN, "Passive") -} - -record(ao, "BL45P-EA-PANDA-02:HDF5:MaxByteRate") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.HDF,0,5)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(VAL, "0.0") - field(DRVL, "0") - info(autosaveFields, "VAL") -} - -record(ai, "BL45P-EA-PANDA-02:HDF5:MaxByteRate_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.HDF,0,5)MAX_BYTE_RATE") - field(EGU, "s") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record contains the last execution time of the plugin # -################################################################### -record(ai, "BL45P-EA-PANDA-02:HDF5:ExecutionTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.HDF,0,5)EXECUTION_TIME") - field(EGU, "ms") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record requests that the plugin execute again with the # -# same NDArray # -################################################################### -record(bo, "BL45P-EA-PANDA-02:HDF5:ProcessPlugin") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)PROCESS_PLUGIN") - field(VAL, "1") -} - -################################################################### -# These records control whether callbacks block or not # -################################################################### -record(bo, "BL45P-EA-PANDA-02:HDF5:BlockingCallbacks") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "0") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:BlockingCallbacks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)BLOCKING_CALLBACKS") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - - -record(longout, "BL45P-EA-PANDA-02:HDF5:DroppedArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)DROPPED_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:DroppedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)DROPPED_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:QueueSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)QUEUE_SIZE") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:QueueSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)QUEUE_SIZE") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:QueueFreeLow") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-02:HDF5:QueueFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-PANDA-02:HDF5:QueueSize") - field(OUT, "BL45P-EA-PANDA-02:HDF5:QueueFree.LOW") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:QueueUseHIGH") -} - -# Set a HIGH warning level for the input queue fill level to 75% -# of the full size of the queue -record(calcout, "BL45P-EA-PANDA-02:HDF5:QueueUseHIGH") { - field(CALC, "A*0.75") - field(INPA, "BL45P-EA-PANDA-02:HDF5:QueueSize") - field(OUT, "BL45P-EA-PANDA-02:HDF5:QueueUse.HIGH") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:QueueUseHIHI") -} - -# Set a HIHI level for the input queue fill level to indicate an error -# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) -record(calcout, "BL45P-EA-PANDA-02:HDF5:QueueUseHIHI") { - field(CALC, "A*1.0") - field(INPA, "BL45P-EA-PANDA-02:HDF5:QueueSize") - field(OUT, "BL45P-EA-PANDA-02:HDF5:QueueUse.HIHI") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:QueueFree") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)QUEUE_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -# Display the fill level on the plugins input queue -record(calc, "BL45P-EA-PANDA-02:HDF5:QueueUse") { - field(CALC, "A-B") - field(INPA, "BL45P-EA-PANDA-02:HDF5:QueueSize") - field(INPB, "BL45P-EA-PANDA-02:HDF5:QueueFree CP") - field(SCAN, "Passive") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(HYST, "1") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:NumThreads") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)NUM_THREADS") - field(VAL, "1") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:NumThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)NUM_THREADS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:MaxThreads_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)MAX_THREADS") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records control output array sorting # -################################################################### -record(mbbo, "BL45P-EA-PANDA-02:HDF5:SortMode") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") -} - -record(mbbi, "BL45P-EA-PANDA-02:HDF5:SortMode_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)SORT_MODE") - field(ZRVL, "0") - field(ZRST, "Unsorted") - field(ONVL, "1") - field(ONST, "Sorted") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-02:HDF5:SortTime") { - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.HDF,0,5)SORT_TIME") - field(PREC, "3") - field(VAL, "0.1") -} - -record(ai, "BL45P-EA-PANDA-02:HDF5:SortTime_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.HDF,0,5)SORT_TIME") - field(PREC, "3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:SortSize") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)SORT_SIZE") - field(VAL, "20") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:SortSize_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)SORT_SIZE") - field(FLNK, "BL45P-EA-PANDA-02:HDF5:SortFreeLow") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:SortFree") { - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)SORT_FREE") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - field(LOLO, "0") - field(HYST, "1") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-EA-PANDA-02:HDF5:SortFreeLow") { - field(CALC, "A*0.25") - field(INPA, "BL45P-EA-PANDA-02:HDF5:SortSize") - field(OUT, "BL45P-EA-PANDA-02:HDF5:SortFree.LOW") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:DroppedOutputArrays") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)DROPPED_OUTPUT_ARRAYS") - field(VAL, "0") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:DroppedOutputArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)DROPPED_OUTPUT_ARRAYS") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:DisorderedArrays") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)DISORDERED_ARRAYS") - field(PINI, "YES") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:DisorderedArrays_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)DISORDERED_ARRAYS") - field(SCAN, "I/O Intr") -} - - - -################################################################### -# The asynRecord is used for mainly for trace mask # -################################################################### - -# Set ASYN_TRACEIO_HEX bit by default -record(asyn,"BL45P-EA-PANDA-02:HDF5:AsynIO") -{ - field(PORT, "PANDA02.HDF") - field(TIB2,"1") - info("ADType", "ADPlugin") -} - - -# Flush data to file -record(busy, "BL45P-EA-PANDA-02:HDF5:FlushNow") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_SWMRFlushNow") - field(ZNAM, "Done") - field(ONAM, "Flush") -} - -# We replace some fields in records defined in NDFile.template -# File data format -record(mbbo, "BL45P-EA-PANDA-02:HDF5:FileFormat") -{ - field(ZRST, "HDF5") - field(ZRVL, "0") - field(ONST, "Invalid") - field(ONVL, "1") -} - -record(mbbi, "BL45P-EA-PANDA-02:HDF5:FileFormat_RBV") -{ - field(ZRST, "HDF5") - field(ZRVL, "0") - field(ONST, "Undefined") - field(ONVL, "1") -} - -record(bo, "BL45P-EA-PANDA-02:HDF5:ChunkSizeAuto") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSizeAuto") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - field(VAL, "1") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:ChunkSizeAuto_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSizeAuto") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:NumRowChunks") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_nRowChunks") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:NumRowChunks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_nRowChunks") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:NumColChunks") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_nColChunks") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:NumColChunks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_nColChunks") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ChunkSize2") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize2") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ChunkSize2_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize2") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ChunkSize3") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize3") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ChunkSize3_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ChunkSize4") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize4") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ChunkSize4_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize4") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ChunkSize5") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize5") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ChunkSize5_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize5") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ChunkSize6") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize6") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ChunkSize6_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize6") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ChunkSize7") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize7") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ChunkSize7_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize7") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ChunkSize8") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize8") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ChunkSize8_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize8") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ChunkSize9") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize9") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ChunkSize9_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_chunkSize9") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:NumFramesChunks") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_nFramesChunks") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:NumFramesChunks_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_nFramesChunks") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:NDAttributeChunk") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_NDAttributeChunk") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:NDAttributeChunk_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_NDAttributeChunk") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:BoundaryAlign") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_chunkBoundaryAlign") - field(PINI, "YES") - field(VAL, "0") - field(EGU, "bytes") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:BoundaryAlign_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_chunkBoundaryAlign") - field(SCAN, "I/O Intr") - field(EGU, "bytes") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:BoundaryThreshold") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_chunkBoundaryThreshold") - field(PINI, "YES") - field(VAL, "1") - field(EGU, "bytes") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:BoundaryThreshold_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_chunkBoundaryThreshold") - field(SCAN, "I/O Intr") - field(EGU, "bytes") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:NumExtraDims") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_nExtraDims") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:NumExtraDims_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_nExtraDims") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimSizeN") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSizeN") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimSizeN_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSizeN") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:ExtraDimNameN_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimNameN") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimSizeX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSizeX") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimSizeX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSizeX") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:ExtraDimNameX_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimNameX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimSizeY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSizeY") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimSizeY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSizeY") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:ExtraDimNameY_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimNameY") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimSize3") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSize3") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimSize3_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSize3") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:ExtraDimName3_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimName3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimSize4") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSize4") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimSize4_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSize4") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:ExtraDimName4_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimName4") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimSize5") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSize5") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimSize5_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSize5") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:ExtraDimName5_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimName5") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimSize6") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSize6") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimSize6_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSize6") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:ExtraDimName6_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimName6") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimSize7") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSize7") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimSize7_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSize7") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:ExtraDimName7_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimName7") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimSize8") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSize8") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimSize8_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSize8") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:ExtraDimName8_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimName8") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimSize9") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSize9") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimSize9_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimSize9") - field(SCAN, "I/O Intr") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:ExtraDimName9_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimName9") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-02:HDF5:StoreAttr") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_storeAttributes") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:StoreAttr_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_storeAttributes") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(bo, "BL45P-EA-PANDA-02:HDF5:StorePerform") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_storePerformance") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:StorePerform_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_storePerformance") - field(SCAN, "I/O Intr") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -record(ai, "BL45P-EA-PANDA-02:HDF5:RunTime") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_totalRuntime") - field(SCAN, "I/O Intr") - field(PREC, "3") - field(EGU, "s") -} - -record(ai, "BL45P-EA-PANDA-02:HDF5:IOSpeed") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_totalIoSpeed") - field(SCAN, "I/O Intr") - field(PREC, "1") - field(EGU, "Mbit/s") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:NumFramesFlush") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_flushNthFrame") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:NumFramesFlush_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_flushNthFrame") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-PANDA-02:HDF5:Compression") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_compressionType") - field(PINI, "YES") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "N-bit") - field(ONVL, "1") - field(TWST, "szip") - field(TWVL, "2") - field(THST, "zlib") - field(THVL, "3") - field(FRST, "Blosc") - field(FRVL, "4") - field(FVST, "BSLZ4") - field(FVVL, "5") - field(SXST, "LZ4") - field(SXVL, "6") - field(SVST, "JPEG") - field(SVVL, "7") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:HDF5:Compression_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_compressionType") - field(SCAN, "I/O Intr") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "N-bit") - field(ONVL, "1") - field(TWST, "szip") - field(TWVL, "2") - field(THST, "zlib") - field(THVL, "3") - field(FRST, "Blosc") - field(FRVL, "4") - field(FVST, "BSLZ4") - field(FVVL, "5") - field(SXST, "LZ4") - field(SXVL, "6") - field(SVST, "JPEG") - field(SVVL, "7") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:NumDataBits") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_nbitsPrecision") - field(PINI, "YES") - field(EGU, "bit") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:NumDataBits_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_nbitsPrecision") - field(SCAN, "I/O Intr") - field(EGU, "bit") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:DataBitsOffset") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_nbitsOffset") - field(PINI, "YES") - field(EGU, "bit") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:DataBitsOffset_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_nbitsOffset") - field(SCAN, "I/O Intr") - field(EGU, "bit") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:SZipNumPixels") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_szipNumPixels") - field(PINI, "YES") - field(EGU, "bit") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:SZipNumPixels_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_szipNumPixels") - field(SCAN, "I/O Intr") - field(EGU, "bit") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ZLevel") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_zCompressLevel") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ZLevel_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_zCompressLevel") - field(SCAN, "I/O Intr") -} - -record(mbbo, "BL45P-EA-PANDA-02:HDF5:BloscShuffle") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_bloscShuffleType") - field(PINI, "YES") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "Byte") - field(ONVL, "1") - field(TWST, "Bit") - field(TWVL, "2") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:HDF5:BloscShuffle_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_bloscShuffleType") - field(SCAN, "I/O Intr") - field(ZRST, "None") - field(ZRVL, "0") - field(ONST, "Byte") - field(ONVL, "1") - field(TWST, "Bit") - field(TWVL, "2") -} - -record(mbbo, "BL45P-EA-PANDA-02:HDF5:BloscCompressor") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_bloscCompressor") - field(PINI, "YES") - field(ZRST, "BloscLZ") - field(ZRVL, "0") - field(ONST, "LZ4") - field(ONVL, "1") - field(TWST, "LZ4HC") - field(TWVL, "2") - field(THST, "SNAPPY") - field(THVL, "3") - field(FRST, "ZLIB") - field(FRVL, "4") - field(FVST, "ZSTD") - field(FVVL, "5") - info(autosaveFields, "VAL") -} - -record(mbbi, "BL45P-EA-PANDA-02:HDF5:BloscCompressor_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_bloscCompressor") - field(SCAN, "I/O Intr") - field(ZRST, "BloscLZ") - field(ZRVL, "0") - field(ONST, "LZ4") - field(ONVL, "1") - field(TWST, "LZ4HC") - field(TWVL, "2") - field(THST, "SNAPPY") - field(THVL, "3") - field(FRST, "ZLIB") - field(FRVL, "4") - field(FVST, "ZSTD") - field(FVVL, "5") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:BloscLevel") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_bloscCompressLevel") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:BloscLevel_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_bloscCompressLevel") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:JPEGQuality") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_jpegQuality") - field(VAL, "90") - field(DRVL, "1") - field(DRVH, "100") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:JPEGQuality_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_jpegQuality") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-02:HDF5:DimAttDatasets") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_dimAttDatasets") - field(PINI, "YES") - field(ZNAM, "No") - field(ONAM, "Yes") - info(autosaveFields, "VAL") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:DimAttDatasets_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_dimAttDatasets") - field(ZNAM, "No") - field(ONAM, "Yes") - field(SCAN, "I/O Intr") -} - -# File path. -# % autosave 2 -#record(waveform, "BL45P-EA-PANDA-02:HDF5:XMLPath") -#{ -# field(PINI, "YES") -# field(DTYP, "asynOctetWrite") -# field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_layoutDirectory") -# field(FTVL, "CHAR") -# field(NELM, "256") -#} - -record(waveform, "BL45P-EA-PANDA-02:HDF5:XMLErrorMsg_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_layoutErrorMsg") - field(FTVL, "CHAR") - field(NELM, "256") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:XMLValid_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_layoutValid") - field(ZNAM, "No") - field(ZSV, "MAJOR") - field(ONAM, "Yes") - field(OSV, "NO_ALARM") - field(SCAN, "I/O Intr") -} - -# Filename -# % autosave 2 -record(waveform, "BL45P-EA-PANDA-02:HDF5:XMLFileName") -{ - field(PINI, "YES") - field(DTYP, "asynOctetWrite") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_layoutFilename") - field(FTVL, "CHAR") - field(NELM, "2048") - info(autosaveFields, "VAL") -} - -record(waveform, "BL45P-EA-PANDA-02:HDF5:XMLFileName_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_layoutFilename") - field(FTVL, "CHAR") - field(NELM, "2048") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:SWMRSupported_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_SWMRSupported") - field(SCAN, "I/O Intr") - field(ZNAM, "Not Supported") - field(ONAM, "Supported") -} - -record(bo, "BL45P-EA-PANDA-02:HDF5:SWMRMode") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_SWMRMode") - field(PINI, "YES") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:SWMRMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_SWMRMode") - field(SCAN, "I/O Intr") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:SWMRActive_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_SWMRRunning") - field(SCAN, "I/O Intr") - field(ZNAM, "Off") - field(ONAM, "Active") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:SWMRCbCounter_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_SWMRCbCounter") - field(SCAN, "I/O Intr") -} - -record(bo, "BL45P-EA-PANDA-02:HDF5:PositionMode") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posRunning") - field(PINI, "YES") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(bi, "BL45P-EA-PANDA-02:HDF5:PositionMode_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posRunning") - field(SCAN, "I/O Intr") - field(ZNAM, "Off") - field(ONAM, "On") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosNameDimN") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDimN") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosNameDimN_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDimN") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosNameDimX") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDimX") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosNameDimX_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDimX") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosNameDimY") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDimY") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosNameDimY_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDimY") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosNameDim3") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDim3") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosNameDim3_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDim3") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosNameDim4") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDim4") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosNameDim4_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDim4") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosNameDim5") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDim5") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosNameDim5_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDim5") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosNameDim6") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDim6") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosNameDim6_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDim6") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosNameDim7") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDim7") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosNameDim7_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDim7") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosNameDim8") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDim8") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosNameDim8_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDim8") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosNameDim9") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDim9") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosNameDim9_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posNameDim9") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosIndexDimN") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDimN") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosIndexDimN_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDimN") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosIndexDimX") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDimX") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosIndexDimX_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDimX") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosIndexDimY") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDimY") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosIndexDimY_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDimY") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosIndexDim3") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDim3") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosIndexDim3_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDim3") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosIndexDim4") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDim4") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosIndexDim4_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDim4") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosIndexDim5") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDim5") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosIndexDim5_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDim5") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosIndexDim6") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDim6") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosIndexDim6_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDim6") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosIndexDim7") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDim7") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosIndexDim7_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDim7") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosIndexDim8") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDim8") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosIndexDim8_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDim8") - field(SCAN, "I/O Intr") -} - -record(stringout, "BL45P-EA-PANDA-02:HDF5:PosIndexDim9") -{ - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDim9") - field(PINI, "YES") -} - -record(stringin, "BL45P-EA-PANDA-02:HDF5:PosIndexDim9_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_posIndexDim9") - field(SCAN, "I/O Intr") -} - -record(ao, "BL45P-EA-PANDA-02:HDF5:FillValue") -{ - field(DTYP, "asynFloat64") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_fillValue") - field(PINI, "YES") - field(PREC, "1") -} - -record(ai, "BL45P-EA-PANDA-02:HDF5:FillValue_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_fillValue") - field(SCAN, "I/O Intr") - field(PREC, "1") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunkX") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunkX") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunkX_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunkX") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunkY") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunkY") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunkY_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunkY") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunk3") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunk3") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunk3_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunk3") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunk4") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunk4") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunk4_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunk4") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunk5") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunk5") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunk5_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunk5") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunk6") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunk6") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunk6_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunk6") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunk7") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunk7") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunk7_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunk7") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunk8") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunk8") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunk8_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunk8") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunk9") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunk9") - field(PINI, "YES") - info(autosaveFields, "VAL") -} - -record(longin, "BL45P-EA-PANDA-02:HDF5:ExtraDimChunk9_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(PANDA02.HDF,0,5)HDF5_extraDimChunk9") - field(SCAN, "I/O Intr") -} diff --git a/iocs/bl45p-ea-ioc-02/config/ioc.boot b/iocs/bl45p-ea-ioc-02/config/ioc.boot deleted file mode 100755 index 5a0253d..0000000 --- a/iocs/bl45p-ea-ioc-02/config/ioc.boot +++ /dev/null @@ -1,65 +0,0 @@ -# This file was automatically generated on Mon 21 Sep 2020 15:38:28 BST from -# source: /dls_sw/work/R3.14.12.7/support/BL45P-BUILDER/etc/makeIocs/BL45P-EA-IOC-02.xml -# -# *** Please do not edit this file: edit the source file instead. *** -# - -# GK Containers Testing April 2021 -# builder built IOCs can be converted to containers by dropping their DB and -# startup script in the config folder of the helm chart -# -# changes to boot script required -# rename to ioc.boot -# replace all hardcoded root folder with '$(TOP)' (no quotes) -# replace references to dbLoadRecords to pass '$(THIS_DIR)/dbname)' (but use double quotes) -# replace dbLoadDatabase param with dbd/ioc.dbd -# replace BL45P_MO_IOC_01_registerRecordDeviceDriver with ioc_registerRecordDeviceDriver - -cd "$(TOP)" - -epicsEnvSet "EPICS_CA_MAX_ARRAY_BYTES", '6000000' -epicsEnvSet "EPICS_TS_MIN_WEST", '0' - - -# Loading libraries -# ----------------- - -# Device initialisation -# --------------------- - -cd "$(TOP)" - -dbLoadDatabase "dbd/ioc.dbd" -ioc_registerRecordDeviceDriver(pdbbase) - -drvAsynIPPortConfigure("PANDA01.DRV_CTRL", "172.23.59.50:8888", 100, 0, 0) - -drvAsynIPPortConfigure("PANDA01.DRV_DATA", "172.23.59.50:8889", 100, 0, 0) - -# Create driver -ADPandABlocksConfig("PANDA01.DRV", "172.23.59.50", 100000, 1000, 0, 0) - -drvAsynIPPortConfigure("PANDA02.DRV_CTRL", "172.23.59.51:8888", 100, 0, 0) - -drvAsynIPPortConfigure("PANDA02.DRV_DATA", "172.23.59.51:8889", 100, 0, 0) - -# Create driver -ADPandABlocksConfig("PANDA02.DRV", "172.23.59.51", 100000, 1000, 0, 0) - -# NDPosPluginConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize) -NDPosPluginConfigure("PANDA01.POS", 1000, 0, "PANDA01.DRV", 0, 0, 0, 0, 0) - -# NDPosPluginConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize) -NDPosPluginConfigure("PANDA02.POS", 1000, 0, "PANDA02.DRV", 0, 0, 0, 0, 0) - -# NDFileHDF5Configure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) -NDFileHDF5Configure("PANDA01.HDF", 1000, 0, "PANDA01.POS", 0) - -# NDFileHDF5Configure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) -NDFileHDF5Configure("PANDA02.HDF", 1000, 0, "PANDA02.POS", 0) - -# Final ioc initialisation -# ------------------------ -cd "$(TOP)" -dbLoadRecords "$(THIS_DIR)/BL45P-EA-IOC-02_expanded.db" -iocInit diff --git a/iocs/bl45p-ea-ioc-02/config/start.sh b/iocs/bl45p-ea-ioc-02/config/start.sh deleted file mode 120000 index 1fea5d0..0000000 --- a/iocs/bl45p-ea-ioc-02/config/start.sh +++ /dev/null @@ -1 +0,0 @@ -../../start.sh \ No newline at end of file diff --git a/iocs/bl45p-ea-ioc-02/templates/ioc.yaml b/iocs/bl45p-ea-ioc-02/templates/ioc.yaml deleted file mode 100644 index b695a57..0000000 --- a/iocs/bl45p-ea-ioc-02/templates/ioc.yaml +++ /dev/null @@ -1,10 +0,0 @@ -{{ include "ioc-chart.ioc" . }} - -{{- /* - add the contents of every file in the config folder of this IOC helm chart - into the config map - this must include start.sh the startup script. -*/ -}} - -{{ (.Files.Glob "config/*").AsConfig | indent 2 }} - version.txt: | - IOC {{ .Release.Name }} version {{ .Chart.AppVersion }} diff --git a/iocs/bl45p-ea-ioc-02/values.yaml b/iocs/bl45p-ea-ioc-02/values.yaml deleted file mode 100644 index d8c84f9..0000000 --- a/iocs/bl45p-ea-ioc-02/values.yaml +++ /dev/null @@ -1 +0,0 @@ -base_image: ghcr.io/epics-containers/ioc-adpandablocks:4.14r1.0.run diff --git a/iocs/bl45p-mo-ioc-01.hand/Chart.yaml b/iocs/bl45p-mo-ioc-01.hand/Chart.yaml deleted file mode 100644 index 76bd62b..0000000 --- a/iocs/bl45p-mo-ioc-01.hand/Chart.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: v2 -name: bl45p-mo-ioc-01 -description: | - main motion IOC for the bl45p test beamline - -type: application - -# chart and app version - these are updated automatically by CI -version: 0.0.0-b0 -appVersion: 0.0.0-b0 - -dependencies: - - name: bl45p-chart - version: "1.0.0" - repository: file://../../bl45p-chart - import-values: - - beamline_defaults - - name: helm-ioc-lib - version: "1.6.1" - repository: oci://ghcr.io/epics-containers - import-values: - - defaults \ No newline at end of file diff --git a/iocs/bl45p-mo-ioc-01.hand/config/BL45P-MO-IOC-01_expanded.db b/iocs/bl45p-mo-ioc-01.hand/config/BL45P-MO-IOC-01_expanded.db deleted file mode 100644 index 85c48da..0000000 --- a/iocs/bl45p-mo-ioc-01.hand/config/BL45P-MO-IOC-01_expanded.db +++ /dev/null @@ -1,13679 +0,0 @@ -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(stringin, "BL45P-MO-IOC-01:DEMO") -{ - field(PINI, "YES") - field(VAL, "Hello Demo") -} - -# Used by Channel Access Security to determine access to this IOC. -record(mbbo, "BL45P-MO-IOC-01:ACCESS") -{ - field(DESC, "BL45P-MO-IOC-01 Acc Mode") - field(PINI, "YES") - field(ZRST, "Running") - field(ZRSV, "NO_ALARM") - field(ONST, "Maintenance") - field(ONSV, "MINOR") - field(TWST, "Test") - field(TWSV, "MINOR") - field(THST, "OFFLINE") - field(THSV, "MAJOR") - info(autosaveFields, "VAL") -} -record(stringin, "BL45P-MO-IOC-01:STARTTOD") -{ - field(DESC, "Time and date of startup") - field(DTYP, "Soft Timestamp") - field(PINI, "YES") - field(INP, "@%Y-%m-%d %H:%M:%S") -} -record(stringin, "BL45P-MO-IOC-01:TOD") -{ - field(DESC, "Current time and date") - field(DTYP, "Soft Timestamp") - field(SCAN, "1 second") - field(INP, "@%Y-%m-%d %H:%M:%S") -} -record(calcout, "BL45P-MO-IOC-01:HEARTBEAT") -{ - field(DESC, "1 Hz counter since startup") - field(CALC, "(A<2147483647)?A+1:1") - field(SCAN, "1 second") - field(INPA, "BL45P-MO-IOC-01:HEARTBEAT") -} -# if autosave is working, START_CNT creates a running count of -# number of times the IOC was started. -record(calcout, "BL45P-MO-IOC-01:START_CNT") -{ - field(DESC, "Increments at startup") - field(CALC, "A+1") - field(PINI, "YES") - field(INPA, "BL45P-MO-IOC-01:START_CNT") - info(autosaveFields_pass0, "VAL") -} -# -# Using an existing internal set of subroutines, this -# PV updates the Access Security mechanism dynamically. -# The .acf file is re-read. -# -record( sub, "BL45P-MO-IOC-01:READACF") -{ - field( DESC, "BL45P-MO-IOC-01 ACF Update") - field( INAM, "asSubInit") - field( SNAM, "asSubProcess") - field( BRSV, "INVALID") -} -record(sub, "BL45P-MO-IOC-01:SYSRESET") -{ - alias("BL45P-MO-IOC-01:SysReset") - field(DESC, "IOC Restart" ) - field(SNAM, "rebootProc") - field(BRSV,"INVALID") - field(L,"1") -} - -#% archiver 1 Monitor -#% alh -record(ai, "BL45P-MO-IOC-01:CA_CLNT_CNT") { - field(DESC, "Number of CA Clients") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@ca_clients") - field(HOPR, "200") - field(HIHI, "175") - field(HIGH, "100") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") -} - -#% archiver 1 Monitor -#% alh -record(ai, "BL45P-MO-IOC-01:CA_CONN_CNT") { - field(DESC, "Number of CA Connections") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@ca_connections") - field(HOPR, "5000") - field(HIHI, "4500") - field(HIGH, "4000") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") -} - -record(ai, "BL45P-MO-IOC-01:RECORD_CNT") { - field(DESC, "Number of Records") - field(PINI, "YES") - field(DTYP, "IOC stats") - field(INP, "@records") -} - -record(ai, "BL45P-MO-IOC-01:FD_MAX") { - field(DESC, "Max File Descriptors") - field(PINI, "YES") - field(DTYP, "IOC stats") - field(INP, "@maxfd") -} - -record(ai, "BL45P-MO-IOC-01:FD_CNT") { - field(DESC, "Allocated File Descriptors") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(FLNK, "BL45P-MO-IOC-01:FD_FREE PP MS") - field(INP, "@fd") -} - -#% archiver 1 Monitor -#% alh -record(calc, "BL45P-MO-IOC-01:FD_FREE") { - field(DESC, "Available FDs") - field(CALC, "B>0?B-A:C") - field(INPA, "BL45P-MO-IOC-01:FD_CNT NPP MS") - field(INPB, "BL45P-MO-IOC-01:FD_MAX NPP MS") - field(INPC, "1000") - field(HOPR, "150") - field(LOLO, "5") - field(LOW, "20") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR LOW LOLO LSV LLSV") -} - -#% archiver 1 Monitor -record(ai, "BL45P-MO-IOC-01:SYS_CPU_LOAD") { - field(DESC, "System CPU Load") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@sys_cpuload") - field(EGU, "%") - field(PREC, "1") - field(HOPR, "100") - field(HIHI, "80") - field(HIGH, "70") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") -} - -#% archiver 1 Monitor -#% alh -record(ai, "BL45P-MO-IOC-01:IOC_CPU_LOAD") { - alias("BL45P-MO-IOC-01:LOAD") - field(DESC, "IOC CPU Load") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@ioc_cpuload") - field(EGU, "%") - field(PREC, "1") - field(HOPR, "100") - field(HIHI, "80") - field(HIGH, "70") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") -} - -record(ai, "BL45P-MO-IOC-01:CPU_CNT") { - field(DESC, "Number of CPUs") - field(DTYP, "IOC stats") - field(INP, "@no_of_cpus") - field(PINI, "YES") -} - -#% archiver 1 Monitor -#% alh -record(ai, "BL45P-MO-IOC-01:SUSP_TASK_CNT") { - field(DESC, "Number Suspended Tasks") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@suspended_tasks") - field(HIHI, "1") - field(HHSV, "MAJOR") - info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") -} - -#% archiver 1 Monitor -record(ai, "BL45P-MO-IOC-01:MEM_USED") { - field(DESC, "Allocated Memory") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@allocated_bytes") - field(EGU, "byte") -} - -#% archiver 1 Monitor -record(ai, "BL45P-MO-IOC-01:MEM_FREE") { - field(DESC, "Free Memory") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@free_bytes") - field(EGU, "byte") - field(LLSV, "MAJOR") - field(LSV, "MINOR") - info(autosaveFields_pass0, "HOPR LOPR LOW LOLO LSV LLSV") -} - -record(ai, "BL45P-MO-IOC-01:MEM_MAX") { - field(DESC, "Maximum Memory") - field(SCAN, "I/O Intr") - field(DTYP, "IOC stats") - field(INP, "@total_bytes") - field(EGU, "byte") -} - -record(ao, "BL45P-MO-IOC-01:CA_UPD_TIME") { - field(DESC, "CA Check Update Period") - field(DTYP, "IOC stats") - field(OUT, "@ca_scan_rate") - field(EGU, "sec") - field(DRVH, "60") - field(DRVL, "1") - field(HOPR, "60") - field(VAL, "15") - field(PINI, "YES") -} - -record(ao, "BL45P-MO-IOC-01:FD_UPD_TIME") { - field(DESC, "FD Check Update Period") - field(DTYP, "IOC stats") - field(OUT, "@fd_scan_rate") - field(EGU, "sec") - field(DRVH, "60") - field(DRVL, "1") - field(HOPR, "60") - field(VAL, "20") - field(PINI, "YES") -} - -record(ao, "BL45P-MO-IOC-01:LOAD_UPD_TIME") { - field(DESC, "CPU Check Update Period") - field(DTYP, "IOC stats") - field(OUT, "@cpu_scan_rate") - field(EGU, "sec") - field(DRVH, "60") - field(DRVL, "1") - field(HOPR, "60") - field(VAL, "10") - field(PINI, "YES") -} - -record(ao, "BL45P-MO-IOC-01:MEM_UPD_TIME") { - field(DESC, "Memory Check Update Period") - field(DTYP, "IOC stats") - field(OUT, "@memory_scan_rate") - field(EGU, "sec") - field(DRVH, "60") - field(DRVL, "1") - field(HOPR, "60") - field(VAL, "10") - field(PINI, "YES") -} - -record(stringin, "BL45P-MO-IOC-01:ST_SCRIPT1") { - field(DESC, "Startup Script Part1") - field(DTYP, "IOC stats") - field(INP, "@startup_script_1") - field(PINI, "YES") -} - -record(stringin, "BL45P-MO-IOC-01:ST_SCRIPT2") { - field(DESC, "Startup Script Part2") - field(DTYP, "IOC stats") - field(INP, "@startup_script_2") - field(PINI, "YES") -} - -record(waveform, "BL45P-MO-IOC-01:ST_SCRIPT") { - field(DESC, "Startup Script") - field(DTYP, "IOC stats") - field(INP, "@startup_script") - field(NELM, "120") - field(FTVL, "CHAR") - field(PINI, "YES") -} - -record(stringin, "BL45P-MO-IOC-01:KERNEL_VERS") { - field(DESC, "Kernel Version") - field(DTYP, "IOC stats") - field(INP, "@kernel_ver") - field(PINI, "YES") -} - -record(stringin, "BL45P-MO-IOC-01:EPICS_VERS") { - field(DESC, "EPICS Version") - field(DTYP, "IOC stats") - field(INP, "@epics_ver") - field(PINI, "YES") -} - -record(waveform, "BL45P-MO-IOC-01:EPICS_VERSION") { - field(DESC, "EPICS Version") - field(DTYP, "IOC stats") - field(INP, "@epics_ver") - field(NELM, "120") - field(FTVL, "CHAR") - field(PINI, "YES") -} - -record(stringin, "BL45P-MO-IOC-01:HOSTNAME") { - field(DESC, "Host Name") - field(DTYP, "IOC stats") - field(INP, "@hostname") - field(PINI, "YES") -} - -record(stringin, "BL45P-MO-IOC-01:APP_DIR1") { - field(DESC, "Application Directory Part 1") - field(DTYP, "IOC stats") - field(INP, "@pwd1") - field(PINI, "YES") -} - -record(stringin, "BL45P-MO-IOC-01:APP_DIR2") { - field(DESC, "Application Directory Part 2") - field(DTYP, "IOC stats") - field(INP, "@pwd2") - field(PINI, "YES") -} - -record(waveform, "BL45P-MO-IOC-01:APP_DIR") { - field(DESC, "Application Directory") - field(DTYP, "IOC stats") - field(INP, "@pwd") - field(NELM, "160") - field(FTVL, "CHAR") - field(PINI, "YES") -} - -record(stringin, "BL45P-MO-IOC-01:UPTIME") { - field(DESC, "Elapsed Time since Start") - field(SCAN, "1 second") - field(DTYP, "IOC stats") - field(INP, "@up_time") - field(PINI, "YES") -} - -record(stringin, "BL45P-MO-IOC-01:ENGINEER") { - field(DESC, "Engineer") - field(DTYP, "IOC stats") - field(INP, "@engineer") - field(PINI, "YES") -} - -record(stringin, "BL45P-MO-IOC-01:LOCATION") { - field(DESC, "Location") - field(DTYP, "IOC stats") - field(INP, "@location") - field(PINI, "YES") -} - -record(ai, "BL45P-MO-IOC-01:PROCESS_ID") { - field(DESC, "Process ID") - field(PINI, "YES") - field(DTYP, "IOC stats") - field(INP, "@proc_id") -} - -record(ai, "BL45P-MO-IOC-01:PARENT_ID") { - field(DESC, "Parent Process ID") - field(PINI, "YES") - field(DTYP, "IOC stats") - field(INP, "@parent_proc_id") -} - -record(stringin, "BL45P-MO-IOC-01:DLSVER") { - field(DESC, "IOC version") - field(DTYP, "IOC stats") - field(INP, "@dlsver") - field(PINI, "YES") -} -record(ai, "BL45P-MO-IOC-01:GTIM_TIME") { - field(DESC, "Gen Time Secs since 1990") - field(SCAN, "1 second") - field(DTYP, "General Time") - field(PREC, "3") - field(INP, "@TIME") - field(EGU, "sec") -} - -record(bo, "BL45P-MO-IOC-01:GTIM_RESET") { - field(DESC, "Gen Time Error Reset") - field(DTYP, "General Time") - field(OUT, "@RSTERRCNT") - field(ZNAM, "Reset") - field(ONAM, "Reset") -} - -record(longin, "BL45P-MO-IOC-01:GTIM_ERR_CNT") { - field(DESC, "Gen Time Error Count") - field(DTYP, "General Time") - field(INP, "@GETERRCNT") - field(SCAN, "1 second") - field(HIHI, "1") - field(HHSV, "MAJOR") -} - -record(stringin, "BL45P-MO-IOC-01:GTIM_CUR_SRC") { - field(DESC, "Gen Time Current Provider") - field(DTYP, "General Time") - field(INP, "@BESTTCP") - field(SCAN, "1 second") -} - -record(stringin, "BL45P-MO-IOC-01:GTIM_EVT_SRC") { - field(DESC, "Gen Time Event Provider") - field(DTYP, "General Time") - field(INP, "@BESTTEP") - field(SCAN, "1 second") -} - -record(stringin, "BL45P-MO-IOC-01:GTIM_HI_SRC") { - field(DESC, "Gen Time Highest Provider") - field(DTYP, "General Time") - field(INP, "@TOPTCP") - field(SCAN, "1 second") -} -record(stringin, "BL45P-MO-IOC-01:CA_ADDR_LIST") { - field(DESC, "EPICS_CA_ADDR_LIST") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_ADDR_LIST") - field(PINI, "YES") -} -record(stringin, "BL45P-MO-IOC-01:CA_CONN_TIME") { - field(DESC, "EPICS_CA_CONN_TMO") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_CONN_TMO") - field(PINI, "YES") -} -record(stringin, "BL45P-MO-IOC-01:CA_AUTO_ADDR") { - field(DESC, "EPICS_CA_AUTO_ADDR_LIST") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_AUTO_ADDR_LIST") - field(PINI, "YES") -} -record(stringin, "BL45P-MO-IOC-01:CA_RPTR_PORT") { - field(DESC, "EPICS_CA_REPEATER_PORT") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_REPEATER_PORT") - field(PINI, "YES") -} -record(stringin, "BL45P-MO-IOC-01:CA_SRVR_PORT") { - field(DESC, "EPICS_CA_SERVER_PORT") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_SERVER_PORT") - field(PINI, "YES") -} -record(stringin, "BL45P-MO-IOC-01:CA_MAX_ARRAY") { - field(DESC, "EPICS_CA_MAX_ARRAY_BYTES") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_MAX_ARRAY_BYTES") - field(PINI, "YES") -} -record(stringin, "BL45P-MO-IOC-01:CA_SRCH_TIME") { - field(DESC, "EPICS_CA_MAX_SEARCH_PERIOD") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_MAX_SEARCH_PERIOD") - field(PINI, "YES") -} -record(stringin, "BL45P-MO-IOC-01:CA_BEAC_TIME") { - field(DESC, "EPICS_CA_BEACON_PERIOD") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_CA_BEACON_PERIOD") - field(PINI, "YES") -} -record(stringin, "BL45P-MO-IOC-01:TIMEZONE") { - field(DESC, "EPICS_TIMEZONE") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_TIMEZONE") - field(PINI, "YES") -} -record(stringin, "BL45P-MO-IOC-01:TS_NTP_INET") { - field(DESC, "EPICS_TS_NTP_INET") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_TS_NTP_INET") - field(PINI, "YES") -} -record(stringin, "BL45P-MO-IOC-01:IOC_LOG_PORT") { - field(DESC, "EPICS_IOC_LOG_PORT") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_IOC_LOG_PORT") - field(PINI, "YES") -} -record(stringin, "BL45P-MO-IOC-01:IOC_LOG_INET") { - field(DESC, "EPICS_IOC_LOG_INET") - field(DTYP, "IOC epics var") - field(INP, "@EPICS_IOC_LOG_INET") - field(PINI, "YES") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-MO-IOC-01:01HZ_MODE") { - field(DESC, "01HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-MO-IOC-01:01HZ_UPD_TIME") { - field(DESC, "01HZ Update Time") - field(SCAN, "10 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-MO-IOC-01:01HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-MO-IOC-01:02HZ_MODE") { - field(DESC, "02HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-MO-IOC-01:02HZ_UPD_TIME") { - field(DESC, "02HZ Update Time") - field(SCAN, "5 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-MO-IOC-01:02HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-MO-IOC-01:05HZ_MODE") { - field(DESC, "05HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-MO-IOC-01:05HZ_UPD_TIME") { - field(DESC, "05HZ Update Time") - field(SCAN, "2 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-MO-IOC-01:05HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-MO-IOC-01:1HZ_MODE") { - field(DESC, "1HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-MO-IOC-01:1HZ_UPD_TIME") { - field(DESC, "1HZ Update Time") - field(SCAN, "1 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-MO-IOC-01:1HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-MO-IOC-01:2HZ_MODE") { - field(DESC, "2HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-MO-IOC-01:2HZ_UPD_TIME") { - field(DESC, "2HZ Update Time") - field(SCAN, ".5 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-MO-IOC-01:2HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-MO-IOC-01:5HZ_MODE") { - field(DESC, "5HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-MO-IOC-01:5HZ_UPD_TIME") { - field(DESC, "5HZ Update Time") - field(SCAN, ".2 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-MO-IOC-01:5HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} -#% macro, __doc__, Create some records for reading IOC statistics and details. -#% macro, IOC, Device prefix - -record(bo, "BL45P-MO-IOC-01:10HZ_MODE") { - field(DESC, "10HZ Mode") - field(DOL, "1") - field(PINI, "YES") - field(ZNAM, "Relative") - field(ONAM, "Absolute") -} -record(sub, "BL45P-MO-IOC-01:10HZ_UPD_TIME") { - field(DESC, "10HZ Update Time") - field(SCAN, ".1 second") - field(EGU, "second") - field(PREC, "5") - field(MDEL, "0.00001") - field(HYST, "0.00002") - field(INAM, "scanMonInit") - field(SNAM, "scanMon") - field(HHSV, "MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV, "MAJOR") - field(BRSV, "INVALID") - field(INPA, "BL45P-MO-IOC-01:10HZ_MODE") - field(B, "1.0") - field(C, "5.0") -} - -record(calc, "BL45P-MO-IOC-01:SCANMON_SEVR") { - field(DESC, "ScanMon Max Severity") - field(SCAN, "1 second") - field(CALC, "0") - field(INPA, "BL45P-MO-IOC-01:01HZ_UPD_TIME.SEVR MS") - field(INPB, "BL45P-MO-IOC-01:02HZ_UPD_TIME.SEVR MS") - field(INPC, "BL45P-MO-IOC-01:05HZ_UPD_TIME.SEVR MS") - field(INPD, "BL45P-MO-IOC-01:1HZ_UPD_TIME.SEVR MS") - field(INPE, "BL45P-MO-IOC-01:2HZ_UPD_TIME.SEVR MS") - field(INPF, "BL45P-MO-IOC-01:5HZ_UPD_TIME.SEVR MS") - field(INPG, "BL45P-MO-IOC-01:10HZ_UPD_TIME.SEVR MS") -} - -# % macro, name, name for gui elements -# % macro, EDM_FILE, edm screen, defaults to ioc_stats_softdls.edl -# % macro, IOC, ioc name - -# % gui, MO1_STATS, edm, ioc_stats_softdls.edl, ioc=BL45P-MO-IOC-01 -# % gui, MO1_STATS, edmembed, ioc_embed.edl, ioc=BL45P-MO-IOC-01,EDM_FILE=ioc_stats_softdls.edl - - - -# This associates BOY screens with the template -# % gui, MO1_STATS, boydetail, devIocStatsApp_opi/iocStats_detail.opi, desc=BL45P-MO-IOC-01, IOC=BL45P-MO-IOC-01, name=MO1_STATS -# % gui, MO1_STATS, boyembed, devIocStatsApp_opi/iocStats_embed.opi, desc=BL45P-MO-IOC-01, IOC=BL45P-MO-IOC-01, name=MO1_STATS -# % gui, MO1_STATS, boyembed, devIocStatsApp_opi/iocStats_embed_box.opi, desc=BL45P-MO-IOC-01, IOC=BL45P-MO-IOC-01, name=MO1_STATS - -# These define what PVs a detail screen should contain -# % gui, MO1_STATS, readback, Startup Time,BL45P-MO-IOC-01:STARTOD -# % gui, MO1_STATS, readback, Current Time,BL45P-MO-IOC-01:TOD -# % gui, MO1_STATS, readback, Up Time,BL45P-MO-IOC-01:UPTIME -# % gui, MO1_STATS, readback, Heartbeat,BL45P-MO-IOC-01:HEARTBEAT -# % gui, MO1_STATS, readback, Records,BL45P-MO-IOC-01:RECORD_CNT -# % gui, MO1_STATS, readback, Host Name,BL45P-MO-IOC-01:HOSTNAME -# % gui, MO1_STATS, readback, User Name,BL45P-MO-IOC-01:ENGINEER -# % gui, MO1_STATS, readback, Location,BL45P-MO-IOC-01:LOCATION -# % gui, MO1_STATS, readback, CA Clients,BL45P-MO-IOC-01:CA_CLNT_CNT -# % gui, MO1_STATS, readback, CA PV Conns,BL45P-MO-IOC-01:CA_CONN_CNT -# % gui, MO1_STATS, readback, Susp Tasks,BL45P-MO-IOC-01:SUSP_TASK_CNT -# % gui, MO1_STATS, readback, EPICS Version,BL45P-MO-IOC-01:EPICS_VERS -# % gui, MO1_STATS, readback, OS Version,BL45P-MO-IOC-01:KERNEL_VERS -# % gui, MO1_STATS, readback, Application Directory,BL45P-MO-IOC-01:APP_DIR1 -# % gui, MO1_STATS, readback, Startup Script,BL45P-MO-IOC-01:ST_SCRIPT1 -# % gui, MO1_STATS, readback, Memory Free,BL45P-MO-IOC-01:MEM_FREE -# % gui, MO1_STATS, readback, Memory Used,BL45P-MO-IOC-01:MEM_USED -# % gui, MO1_STATS, readback, Memory Max,BL45P-MO-IOC-01:MEM_MAX -# % gui, MO1_STATS, readback, File Handles Free,BL45P-MO-IOC-01:FD_FREE -# % gui, MO1_STATS, readback, File Handles Max,BL45P-MO-IOC-01:FD_MAX -# % gui, MO1_STATS, readback, IOC CPU Load,BL45P-MO-IOC-01:IOC_CPU_LOAD -# % gui, MO1_STATS, readback, All CPUs Load,BL45P-MO-IOC-01:SYS_CPU_LOAD -# % gui, MO1_STATS, readback, System CPUs,BL45P-MO-IOC-01:CPU_CNT - -############################################################## -# -# Records to read asynPortDriver parameters from the param -# library for the class pmacController. -# -# The Asyn address is set as zero because that's what we use -# for controller parameters. -# -############################################################## - -# % macro, PORT, The asyn port for the pmac controller -# % macro, P, PV Prefix -# % macro, NAXES, Number of axes -# % macro, TIMEOUT, Timeout for controller communication -# % macro, FEEDRATE, feedrate below which we go into error -# % macro, CSG0, Name for Coordinate System Group 0 -# % macro, CSG1, Name for Coordinate System Group 1 -# % macro, CSG2, Name for Coordinate System Group 2 -# % macro, CSG3, Name for Coordinate System Group 3 -# % macro, CSG4, Name for Coordinate System Group 4 -# % macro, CSG5, Name for Coordinate System Group 5 -# % macro, CSG6, Name for Coordinate System Group 6 -# % macro, CSG7, Name for Coordinate System Group 7 - -# -# This associates an edm screen with the template -# % gui, BRICK1, edm, pmacController.edl, pmac=BL45P-MO-STEP-01 -# - -# -# allow query of this controller's Port Name -# -record(stringout, "BL45P-MO-STEP-01:Port") -{ - field(VAL, "BRICK1") - field(PINI, "YES") -} - -############################################################## -# Listing of combined Slow Poll Variables -############################################################## -record(waveform, "BL45P-MO-STEP-01:I_VARIABLES_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,0)PMAC_I_VARIABLES") - field(FTVL, "CHAR") - field(NELM, "20000") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-MO-STEP-01:P_VARIABLES_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,0)PMAC_P_VARIABLES") - field(FTVL, "CHAR") - field(NELM, "20000") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-MO-STEP-01:M_VARIABLES_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,0)PMAC_M_VARIABLES") - field(FTVL, "CHAR") - field(NELM, "20000") - field(SCAN, "I/O Intr") -} - -############################################################## -# Ensure all PVs are up to date with the current brick state -############################################################## -record(busy,"BL45P-MO-STEP-01:PollAllNow") { - field(DESC,"Poll brick status") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_C_POLLALLNOW") - field(ZNAM, "Done") - field(ONAM, "Polling") -} - -############################################################## -# Control deferred mode for all real 1axes in this brick -############################################################## -record(bo, "BL45P-MO-STEP-01:DeferMoves") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0,4)MOTOR_DEFER_MOVES") - field(VAL, "0") - field(ZNAM, "Defer Off") - field(ONAM, "Defer On") -} - -############################################################## -# Send stop all command -############################################################## -record(bo, "BL45P-MO-STEP-01:StopAll") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0,4)PMAC_C_STOPALL") -} - -############################################################## -# Control deferred mode for all real 1axes in this brick -############################################################## -record(bo, "BL45P-MO-STEP-01:KillAll") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0,4)PMAC_C_KILLALL") -} - -############################################################## -# Send arbitrary command to the geobrick controller -############################################################## -record(waveform, "BL45P-MO-STEP-01:SendCmd") -{ - field(DTYP, "asynOctetWrite") - field(FTVL, "CHAR") - field(INP, "@asyn(BRICK1,0,4)PMAC_C_WRITE_CMD") - field(NELM, "100") - field(SCAN, "Passive") -} - - -# a dummy real motor 0 with mres of 1, used by the CS axis mres DB logic in pmacDirectMotor.template -record(motor,"BL45P-MO-STEP-01:M0") -{ - field(DTYP,"Soft Channel") - field(MRES,"1") -} - -# /// -# /// Select a group of coordinate systems into the controller. -# /// -# % autosave 2 -record(mbbo, "BL45P-MO-STEP-01:COORDINATE_SYS_GROUP") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0,4)PMAC_C_COORDINATE_SYS_GROUP") - field(VAL, "0") - field(ZRST, "CS1-direct") - field(ZRVL, "0") - field(ONST, "CS2-kinematic") - field(ONVL, "1") - field(TWST, "") - field(TWVL, "2") - field(THST, "") - field(THVL, "3") - field(FRST, "") - field(FRVL, "4") - field(FVST, "") - field(FVVL, "5") - field(SXST, "") - field(SXVL, "6") - field(SVST, "") - field(SVVL, "7") -} - -# /// -# /// Read back the current group of coordinate systems into the controller. -# /// -record(mbbi, "BL45P-MO-STEP-01:COORDINATE_SYS_GROUP_RBV") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0,4)PMAC_C_COORDINATE_SYS_GROUP") - field(SCAN, "I/O Intr") - field(ZRST, "CS1-direct") - field(ZRVL, "0") - field(ONST, "CS2-kinematic") - field(ONVL, "1") - field(TWST, "") - field(TWVL, "2") - field(THST, "") - field(THVL, "3") - field(FRST, "") - field(FRVL, "4") - field(FVST, "") - field(FVVL, "5") - field(SXST, "") - field(SXVL, "6") - field(SVST, "") - field(SVVL, "7") -} - -# -# Control read only mode for axes -# -record(bo, "BL45P-MO-STEP-01:AxesReadonly") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0,4)PMAC_C_AXIS_READONLY") - field(VAL, "0") - field(ZNAM, "Read/Write") - field(ONAM, "Readonly") -} - -# -# Read back the readonly mode for axes -# -record(bi, "BL45P-MO-STEP-01:AxesReadonly_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0,4)PMAC_C_AXIS_READONLY") - field(SCAN, "I/O Intr") - field(ZNAM, "Read/Write") - field(ONAM, "Readonly") -} - -##################################################### -# Below are the records originally from -# pmacStatus.template -##################################################### - -# pmac type record -record(mbbi, "BL45P-MO-STEP-01:PMACTYPE") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(ZRVL, "604020") - field(ONVL, "602413") - field(TWVL, "603382") - field(THVL, "602404") - field(ZRST, "Power PMAC") - field(ONST, "Turbo PMAC2") - field(TWST, "Geobrick LV") - field(THST, "PMAC Clipper") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VIM_cid") -} - -# % archiver 10 Monitor -# This makes the component icon reflect the severity -# % gui, BRICK1, sevr -record(ai, "BL45P-MO-STEP-01:CPULOAD") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_C_CPU_USAGE") - field(PREC, "2") - field(EGU, "%") - field(HIGH, "60") - field(HSV, "MINOR") - field(HIHI, "80") - field(HHSV, "MAJOR") -} - -record(ai, "BL45P-MO-STEP-01:SERVO_FREQ") { - field(EGU, "Hz") - field(PREC, "1") -} - -record(longin, "BL45P-MO-STEP-01:READ_CTRLSTAT1") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_C_STATUS_BITS01") - field(FLNK, "BL45P-MO-STEP-01:CTRLSTAT:status1") -} - -# % archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:CTRLSTAT:status1") { - field(INP, "BL45P-MO-STEP-01:READ_CTRLSTAT1") -} - -record(longin, "BL45P-MO-STEP-01:READ_CTRLSTAT2") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_C_STATUS_BITS02") - field(FLNK, "BL45P-MO-STEP-01:CTRLSTAT:status2") -} - -# % archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:CTRLSTAT:status2") { - field(INP, "BL45P-MO-STEP-01:READ_CTRLSTAT2") -} - -record(longin, "BL45P-MO-STEP-01:READ_CTRLSTAT3") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_C_STATUS_BITS03") - field(FLNK, "BL45P-MO-STEP-01:CTRLSTAT:status3") -} - -# % archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:CTRLSTAT:status3") { - field(INP, "BL45P-MO-STEP-01:READ_CTRLSTAT3") -} - - -record(longin, "BL45P-MO-STEP-01:READ_PLCBITS00") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_C_PLC_BITS00") - field(FLNK, "BL45P-MO-STEP-01:PLCDISBITS00") -} - -# % archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:PLCDISBITS00") { - field(INP, "BL45P-MO-STEP-01:READ_PLCBITS00") -} - -record(longin, "BL45P-MO-STEP-01:READ_PLCBITS01") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_C_PLC_BITS01") - field(FLNK, "BL45P-MO-STEP-01:PLCDISBITS01") -} - -# % archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:PLCDISBITS01") { - field(INP, "BL45P-MO-STEP-01:READ_PLCBITS01") -} - -record(longin, "BL45P-MO-STEP-01:READ_GPIO_INP") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_C_GPIO_INPUTS") - field(FLNK, "BL45P-MO-STEP-01:GPIO_INP_BITS") -} - -# % archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:GPIO_INP_BITS") { - field(INP, "BL45P-MO-STEP-01:READ_GPIO_INP") -} - -record(longin, "BL45P-MO-STEP-01:READ_GPIO_OUT") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_C_GPIO_OUTPUTS") - field(FLNK, "BL45P-MO-STEP-01:GPIO_OP_BITS") -} - -# % archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:GPIO_OP_BITS") { - field(INP, "BL45P-MO-STEP-01:READ_GPIO_OUT") -} - -record(longin, "BL45P-MO-STEP-01:READ_PROGBITS") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_C_PROG_BITS") - field(FLNK, "BL45P-MO-STEP-01:PROGBITS") -} - -# % archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:PROGBITS") { - field(INP, "BL45P-MO-STEP-01:READ_PROGBITS") -} - -record(ai, "BL45P-MO-STEP-01:MACROERRS") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDM_M5035") -} - -record(seq, "BL45P-MO-STEP-01:AXIS1:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS2:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS3:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS4:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS5:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS6:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS7:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS8:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS9:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS10:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS11:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS12:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS13:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS14:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS15:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS16:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS17:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS18:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS19:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS20:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS21:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS22:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS23:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS24:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS25:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS26:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS27:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS28:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS29:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS30:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS31:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AXIS32:ReadBack") { -} - -record(seq, "BL45P-MO-STEP-01:AxisRB") { - field(LNK1, "BL45P-MO-STEP-01:AXIS1:ReadBack.PROC PP") - field(LNK2, "BL45P-MO-STEP-01:AXIS2:ReadBack.PROC PP") - field(LNK3, "BL45P-MO-STEP-01:AXIS3:ReadBack.PROC PP") - field(LNK4, "BL45P-MO-STEP-01:AXIS4:ReadBack.PROC PP") - field(LNK5, "BL45P-MO-STEP-01:AXIS5:ReadBack.PROC PP") - field(LNK6, "BL45P-MO-STEP-01:AXIS6:ReadBack.PROC PP") - field(LNK7, "BL45P-MO-STEP-01:AXIS7:ReadBack.PROC PP") - field(LNK8, "BL45P-MO-STEP-01:AXIS8:ReadBack.PROC PP") - field(LNK9, "BL45P-MO-STEP-01:AxisRB2.PROC PP") - field(DLY1, "0") - field(DLY2, "0.5") - field(DLY3, "0.5") - field(DLY4, "0.5") - field(DLY5, "0.5") - field(DLY6, "0.5") - field(DLY7, "0.5") - field(DLY8, "0.5") - field(DLY9, "0.5") - field(DOL1, "1") - field(DOL2, "1") - field(DOL3, "1") - field(DOL4, "1") - field(DOL5, "1") - field(DOL6, "1") - field(DOL7, "1") - field(DOL8, "1") - field(DOL9, "1") -} - -record(seq, "BL45P-MO-STEP-01:AxisRB2") { - field(LNK1, "BL45P-MO-STEP-01:AXIS9:ReadBack.PROC PP") - field(LNK2, "BL45P-MO-STEP-01:AXIS10:ReadBack.PROC PP") - field(LNK3, "BL45P-MO-STEP-01:AXIS11:ReadBack.PROC PP") - field(LNK4, "BL45P-MO-STEP-01:AXIS12:ReadBack.PROC PP") - field(LNK5, "BL45P-MO-STEP-01:AXIS13:ReadBack.PROC PP") - field(LNK6, "BL45P-MO-STEP-01:AXIS14:ReadBack.PROC PP") - field(LNK7, "BL45P-MO-STEP-01:AXIS15:ReadBack.PROC PP") - field(LNK8, "BL45P-MO-STEP-01:AXIS16:ReadBack.PROC PP") - field(LNK9, "BL45P-MO-STEP-01:AxisRB3.PROC PP") - field(DLY1, "0") - field(DLY2, "0.5") - field(DLY3, "0.5") - field(DLY4, "0.5") - field(DLY5, "0.5") - field(DLY6, "0.5") - field(DLY7, "0.5") - field(DLY8, "0.5") - field(DLY9, "0.5") - field(DOL1, "1") - field(DOL2, "1") - field(DOL3, "1") - field(DOL4, "1") - field(DOL5, "1") - field(DOL6, "1") - field(DOL7, "1") - field(DOL8, "1") - field(DOL9, "1") -} - -record(seq, "BL45P-MO-STEP-01:AxisRB3") { - field(LNK1, "BL45P-MO-STEP-01:AXIS17:ReadBack.PROC PP") - field(LNK2, "BL45P-MO-STEP-01:AXIS18:ReadBack.PROC PP") - field(LNK3, "BL45P-MO-STEP-01:AXIS19:ReadBack.PROC PP") - field(LNK4, "BL45P-MO-STEP-01:AXIS20:ReadBack.PROC PP") - field(LNK5, "BL45P-MO-STEP-01:AXIS21:ReadBack.PROC PP") - field(LNK6, "BL45P-MO-STEP-01:AXIS22:ReadBack.PROC PP") - field(LNK7, "BL45P-MO-STEP-01:AXIS23:ReadBack.PROC PP") - field(LNK8, "BL45P-MO-STEP-01:AXIS24:ReadBack.PROC PP") - field(LNK9, "BL45P-MO-STEP-01:AxisRB4.PROC PP") - field(DLY1, "0") - field(DLY2, "0.5") - field(DLY3, "0.5") - field(DLY4, "0.5") - field(DLY5, "0.5") - field(DLY6, "0.5") - field(DLY7, "0.5") - field(DLY8, "0.5") - field(DLY9, "0.5") - field(DOL1, "1") - field(DOL2, "1") - field(DOL3, "1") - field(DOL4, "1") - field(DOL5, "1") - field(DOL6, "1") - field(DOL7, "1") - field(DOL8, "1") - field(DOL9, "1") -} - -record(seq, "BL45P-MO-STEP-01:AxisRB4") { - field(LNK1, "BL45P-MO-STEP-01:AXIS25:ReadBack.PROC PP") - field(LNK2, "BL45P-MO-STEP-01:AXIS26:ReadBack.PROC PP") - field(LNK3, "BL45P-MO-STEP-01:AXIS27:ReadBack.PROC PP") - field(LNK4, "BL45P-MO-STEP-01:AXIS28:ReadBack.PROC PP") - field(LNK5, "BL45P-MO-STEP-01:AXIS29:ReadBack.PROC PP") - field(LNK6, "BL45P-MO-STEP-01:AXIS30:ReadBack.PROC PP") - field(LNK7, "BL45P-MO-STEP-01:AXIS31:ReadBack.PROC PP") - field(LNK8, "BL45P-MO-STEP-01:AXIS32:ReadBack.PROC PP") - field(DLY1, "0") - field(DLY2, "0.5") - field(DLY3, "0.5") - field(DLY4, "0.5") - field(DLY5, "0.5") - field(DLY6, "0.5") - field(DLY7, "0.5") - field(DLY8, "0.5") - field(DOL1, "1") - field(DOL2, "1") - field(DOL3, "1") - field(DOL4, "1") - field(DOL5, "1") - field(DOL6, "1") - field(DOL7, "1") - field(DOL8, "1") -} - -record(longin, "BL45P-MO-STEP-01:NAXES") { - field(PINI, "YES") - field(VAL, "8") -} - -############################################################## -# This record indicates if we have a controller problem -############################################################## - -# /// -# /// Record used to indicate if the controller has a problem. This is set in the -# /// controller poll loop, and is used to set the motor record axis status. -# /// -record(bi, "BL45P-MO-STEP-01:GLOBAL_PROBLEM_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0,4)PMAC_C_GLOBALSTATUS") - field(SCAN, "I/O Intr") - field(ZNAM, "Status OK") - field(ONAM, "Status Problem") -} - -############################################################## -# Monitor and set the PMAC feedrate -############################################################## - -# /// -# /// Get the PMAC feedrate. This is read in the controller poll loop. -# /// -record(ai, "BL45P-MO-STEP-01:FEEDRATE_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0,4)PMAC_C_FEEDRATE") - field(SCAN, "I/O Intr") - field(PREC, "2") -} - -# /// -# /// Set the PMAC feedrate limit. This determins if the current feedrate -# /// read from the controller is out of range, and will be used to set axis alarms. -# /// -record(longout, "BL45P-MO-STEP-01:FEEDRATE_LIMIT") -{ - field(PINI, "YES") - field(VAL, "100") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0,4)PMAC_C_FEEDRATE_LIMIT") - field(DRVH, "100") - field(DRVL, "0") -} - -# /// -# /// Set the PMAC feedrate limit. This writes a new feedrate to -# /// the controller. -# /// -record(longout, "BL45P-MO-STEP-01:FEEDRATE") -{ - field(PINI, "YES") - field(VAL, "100") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0,4)PMAC_C_FEEDRATE") - field(DRVH, "100") - field(DRVL, "0") -} - -# /// -# /// Record used to indicate if the feedrate is below the limit. This is set from the -# /// controller poll loop, and is used to set the motor record axis status. -# /// -record(bi, "BL45P-MO-STEP-01:FEEDRATE_PROBLEM_RBV") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0,4)PMAC_C_FEEDRATE_PROBLEM") - field(SCAN, "I/O Intr") - field(ZNAM, "Feedrate OK") - field(ONAM, "Feedrate Problem") -} - -################################################################### -# These records report the current comms statistics # -# # -################################################################### - -record(longin, "BL45P-MO-STEP-01:STAT_MSG_NO_RBV") { - field(DESC, "Number of messages sent") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_NO_OF_MSGS") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:STAT_TOTAL_WRITE_RBV") { - field(DESC, "Total bytes written") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_TBYTES_WRITE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:STAT_TOTAL_READ_RBV") { - field(DESC, "Total bytes read") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_TBYTES_READ") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:STAT_MSG_WRITE_RBV") { - field(DESC, "Last message bytes written") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_MBYTES_WRITE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:STAT_MSG_READ_RBV") { - field(DESC, "Last message bytes read") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_MBYTES_READ") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:STAT_MSG_TIME_RBV") { - field(DESC, "Last message time (ms)") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_MSG_TIME") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:STAT_MAX_WRITE_RBV") { - field(DESC, "Maximum written bytes") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_MAX_BYTES_WRITE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:STAT_MAX_READ_RBV") { - field(DESC, "Maximum read bytes") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_MAX_BYTES_READ") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:STAT_MAX_TIME_RBV") { - field(DESC, "Maximum time for message") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_MAX_TIME") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:STAT_AVE_WRITE_RBV") { - field(DESC, "Average written bytes") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_AVE_BYTES_WRITE") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:STAT_AVE_READ_RBV") { - field(DESC, "Average read bytes") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_AVE_BYTES_READ") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:STAT_AVE_TIME_RBV") { - field(DESC, "Average time for message") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_AVE_TIME") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:FAST_SIZE_RBV") { - field(DESC, "Size of fast PMAC store") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_FAST_STORE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-MO-STEP-01:REPORT_FAST") { - field(DESC, "Report the contents of fast store") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_C_REPORT_FAST") -} - -record(longin, "BL45P-MO-STEP-01:MEDIUM_SIZE_RBV") { - field(DESC, "Size of medium PMAC store") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_MEDIUM_STORE") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records support debugging # -# # -################################################################### - -record(longout, "BL45P-MO-STEP-01:REPORT_MEDIUM") { - field(DESC, "Report the contents of medium store") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_C_REPORT_MEDIUM") -} - -record(longin, "BL45P-MO-STEP-01:SLOW_SIZE_RBV") { - field(DESC, "Size of slow PMAC store") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_SLOW_STORE") - field(SCAN, "I/O Intr") -} - -record(longout, "BL45P-MO-STEP-01:REPORT_SLOW") { - field(DESC, "Report the contents of slow store") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_C_REPORT_SLOW") -} - -record(longout, "BL45P-MO-STEP-01:DEBUG_LEVEL"){ - field(DESC, "Set the debug level") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_C_DEBUG_LEVEL") -} - -record(longout, "BL45P-MO-STEP-01:DEBUG_AXISNO"){ - field(DESC, "Debug which axis (0 is controller)") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_C_DEBUG_AXIS") -} - -record(longout, "BL45P-MO-STEP-01:DEBUG_CSNO"){ - field(DESC, "Debug which CS (0 is main controller)") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_C_DEBUG_CS") -} - -record(longout, "BL45P-MO-STEP-01:DEBUG_EXECUTE"){ - field(DESC, "Apply the debug settings") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_C_DEBUG_CMD") -} - -record(mbbo, "BL45P-MO-STEP-01:DISABLE_POLL") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_C_DEBUG_POLL_OFF") - field(VAL, "0") - field(ZRST, "Enabled") - field(ZRVL, "0") - field(ONST, "Disabled") - field(ONVL, "1") -}# pmacStatus.template - device specific status PVs not compatible with -# power PMAC -# % macro, PORT, The asyn port for the pmac controller -# % macro, P, PV Prefix - - -record(longin, "BL45P-MO-STEP-01:I10") { - field(DESC, "Servo Interrupt Time") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_I10") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-MO-STEP-01:CALC_SERVO_FREQ") { - field(SCAN, "Passive") - field(DTYP, "Soft Channel") - field(CALC, "8388608000.0/A") - field(INPA, "BL45P-MO-STEP-01:I10 CP") - field(OOPT, "On Change") - field(DOPT, "Use CALC") - field(OUT, "BL45P-MO-STEP-01:SERVO_FREQ PP") -} - -# I3 value 0 to 3 I/O Handshake control -record(mbbi, "BL45P-MO-STEP-01:IO_HANDSHAKE") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(ZRVL, "0") - field(ONVL, "1") - field(TWVL, "2") - field(THVL, "3") - field(ZRST, "No Ack (0)") - field(ONST, "Dumb term (1)") - field(TWST, "Fast comms (2)") - field(THST, "Fastcomms+LF(3)") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_I3") - field(SCAN, "I/O Intr") -} - -# I5 PLC Program Control -record(mbbi, "BL45P-MO-STEP-01:PLC_CONTROL") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_I5") - field(ZRVL, "0") - field(ZRST, "NONE (0)") - field(ONVL, "1") - field(ONST, "PLC 0 (1)") - field(TWVL, "2") - field(TWST, "PLC 1-31 (2)") - field(THVL, "3") - field(THST, "ALL (3)") - field(SCAN, "I/O Intr") -} - -# I6 Error reporting mode -record(mbbi, "BL45P-MO-STEP-01:ERRREPMODE") { - field(PINI, "YES") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_I6") - field(SCAN, "I/O Intr") - field(ZRVL, "0") - field(ONVL, "1") - field(TWVL, "2") - field(THVL, "3") -# the character is given for invalid commands - field(ZRST, "BELL(0)") -#the form of the error message is {error message} - field(ONST, "BELL+ERR(1)") -#the character is given only for invalid commands from the host; -# there is no response to invalid commands issued from Turbo PMAC programs. - field(TWST, "BELL-PRG(2)") -#{error message} - field(THST, "BELL+CR+ERR(3)") -} - -# I56 DPRAM ASCII Communications Interrupt -record(bi, "BL45P-MO-STEP-01:DPRAM_COMMS_INT") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_I56") - field(ONAM, "ENABLED") - field(PINI, "YES") - field(SCAN, "I/O Intr") - field(ZNAM, "DISABLED") -} - -# I58 DPRAM ASCII Communications Enable -record(bi, "BL45P-MO-STEP-01:DPRAM_COMMS") { - field(SCAN, "I/O Intr") - field(PINI, "YES") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_I58") - field(ZNAM, "DISABLED") - field(ONAM, "ENABLED") -} - -# I90 VME Address modifier -record(mbbi, "BL45P-MO-STEP-01:VME_ADDR_MODE") { - field(SCAN, "I/O Intr") - field(PINI, "YES") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VHS_I90") - field(ZRVL, "0x29") - field(ONVL, "0x39") - field(TWVL, "0x09") - field(ZRST, "16-bit addr") - field(ONST, "24-bit addr") - field(TWST, "32-bit addr") -} - -# I97 VME DPRAM Base Address Bits A23-A20 -record(longin, "BL45P-MO-STEP-01:VME_DPRAMBASE") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VHS_I97") - field(PINI, "YES") -} - -# I95 VME Interrupt Level -record(longin, "BL45P-MO-STEP-01:VME_INTLVL") { - field(SCAN, "I/O Intr") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VHS_I95") - field(PINI, "YES") -} -# % macro, PMAC, Pmac/Geobrick name -# % macro, AXIS, Axis number -# % macro, PORT, Asyn port -record(stringout, "BL45P-MO-STEP-01:AXIS1:DESC") { - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STEP-01:AXIS1:POSITION") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#1P") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS1:FOLL_ERROR") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#1F") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS1:VELOCITY") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#1V") - field(PREC, "2") -} - -record(seq, "BL45P-MO-STEP-01:AXIS1:ReadBack") { - field(LNK1, "BL45P-MO-STEP-01:AXIS1:POSITION.PROC PP") - field(LNK2, "BL45P-MO-STEP-01:AXIS1:FOLL_ERROR.PROC PP") - field(LNK3, "BL45P-MO-STEP-01:AXIS1:VELOCITY.PROC PP") - field(LNK4, "BL45P-MO-STEP-01:AXIS1:status1.PROC PP") - field(DLY1, "0") - field(DLY2, "0.5") - field(DLY3, "0.5") - field(DLY4, "0.5") - field(DOL1, "1") - field(DOL2, "1") - field(DOL3, "1") - field(DOL4, "1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS1:READ_STAT1") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,1)PMAC_C_AXIS_BITS01") - field(FLNK, "BL45P-MO-STEP-01:AXIS1:status1") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS1:status1") { - field(INP, "BL45P-MO-STEP-01:AXIS1:READ_STAT1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS1:READ_STAT2") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,1)PMAC_C_AXIS_BITS02") - field(FLNK, "BL45P-MO-STEP-01:AXIS1:status2") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS1:status2") { - field(INP, "BL45P-MO-STEP-01:AXIS1:READ_STAT2") -} - -record(longin, "BL45P-MO-STEP-01:AXIS1:READ_STAT3") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,1)PMAC_C_AXIS_BITS03") - field(FLNK, "BL45P-MO-STEP-01:AXIS1:status3") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS1:status3") { - field(INP, "BL45P-MO-STEP-01:AXIS1:READ_STAT3") -} -# % macro, PMAC, Pmac/Geobrick name -# % macro, AXIS, Axis number -# % macro, PORT, Asyn port -record(stringout, "BL45P-MO-STEP-01:AXIS2:DESC") { - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STEP-01:AXIS2:POSITION") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#2P") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS2:FOLL_ERROR") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#2F") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS2:VELOCITY") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#2V") - field(PREC, "2") -} - -record(seq, "BL45P-MO-STEP-01:AXIS2:ReadBack") { - field(LNK1, "BL45P-MO-STEP-01:AXIS2:POSITION.PROC PP") - field(LNK2, "BL45P-MO-STEP-01:AXIS2:FOLL_ERROR.PROC PP") - field(LNK3, "BL45P-MO-STEP-01:AXIS2:VELOCITY.PROC PP") - field(LNK4, "BL45P-MO-STEP-01:AXIS2:status1.PROC PP") - field(DLY1, "0") - field(DLY2, "0.5") - field(DLY3, "0.5") - field(DLY4, "0.5") - field(DOL1, "1") - field(DOL2, "1") - field(DOL3, "1") - field(DOL4, "1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS2:READ_STAT1") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,2)PMAC_C_AXIS_BITS01") - field(FLNK, "BL45P-MO-STEP-01:AXIS2:status1") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS2:status1") { - field(INP, "BL45P-MO-STEP-01:AXIS2:READ_STAT1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS2:READ_STAT2") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,2)PMAC_C_AXIS_BITS02") - field(FLNK, "BL45P-MO-STEP-01:AXIS2:status2") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS2:status2") { - field(INP, "BL45P-MO-STEP-01:AXIS2:READ_STAT2") -} - -record(longin, "BL45P-MO-STEP-01:AXIS2:READ_STAT3") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,2)PMAC_C_AXIS_BITS03") - field(FLNK, "BL45P-MO-STEP-01:AXIS2:status3") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS2:status3") { - field(INP, "BL45P-MO-STEP-01:AXIS2:READ_STAT3") -} -# % macro, PMAC, Pmac/Geobrick name -# % macro, AXIS, Axis number -# % macro, PORT, Asyn port -record(stringout, "BL45P-MO-STEP-01:AXIS3:DESC") { - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STEP-01:AXIS3:POSITION") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#3P") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS3:FOLL_ERROR") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#3F") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS3:VELOCITY") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#3V") - field(PREC, "2") -} - -record(seq, "BL45P-MO-STEP-01:AXIS3:ReadBack") { - field(LNK1, "BL45P-MO-STEP-01:AXIS3:POSITION.PROC PP") - field(LNK2, "BL45P-MO-STEP-01:AXIS3:FOLL_ERROR.PROC PP") - field(LNK3, "BL45P-MO-STEP-01:AXIS3:VELOCITY.PROC PP") - field(LNK4, "BL45P-MO-STEP-01:AXIS3:status1.PROC PP") - field(DLY1, "0") - field(DLY2, "0.5") - field(DLY3, "0.5") - field(DLY4, "0.5") - field(DOL1, "1") - field(DOL2, "1") - field(DOL3, "1") - field(DOL4, "1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS3:READ_STAT1") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,3)PMAC_C_AXIS_BITS01") - field(FLNK, "BL45P-MO-STEP-01:AXIS3:status1") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS3:status1") { - field(INP, "BL45P-MO-STEP-01:AXIS3:READ_STAT1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS3:READ_STAT2") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,3)PMAC_C_AXIS_BITS02") - field(FLNK, "BL45P-MO-STEP-01:AXIS3:status2") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS3:status2") { - field(INP, "BL45P-MO-STEP-01:AXIS3:READ_STAT2") -} - -record(longin, "BL45P-MO-STEP-01:AXIS3:READ_STAT3") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,3)PMAC_C_AXIS_BITS03") - field(FLNK, "BL45P-MO-STEP-01:AXIS3:status3") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS3:status3") { - field(INP, "BL45P-MO-STEP-01:AXIS3:READ_STAT3") -} -# % macro, PMAC, Pmac/Geobrick name -# % macro, AXIS, Axis number -# % macro, PORT, Asyn port -record(stringout, "BL45P-MO-STEP-01:AXIS4:DESC") { - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STEP-01:AXIS4:POSITION") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#4P") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS4:FOLL_ERROR") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#4F") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS4:VELOCITY") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#4V") - field(PREC, "2") -} - -record(seq, "BL45P-MO-STEP-01:AXIS4:ReadBack") { - field(LNK1, "BL45P-MO-STEP-01:AXIS4:POSITION.PROC PP") - field(LNK2, "BL45P-MO-STEP-01:AXIS4:FOLL_ERROR.PROC PP") - field(LNK3, "BL45P-MO-STEP-01:AXIS4:VELOCITY.PROC PP") - field(LNK4, "BL45P-MO-STEP-01:AXIS4:status1.PROC PP") - field(DLY1, "0") - field(DLY2, "0.5") - field(DLY3, "0.5") - field(DLY4, "0.5") - field(DOL1, "1") - field(DOL2, "1") - field(DOL3, "1") - field(DOL4, "1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS4:READ_STAT1") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,4)PMAC_C_AXIS_BITS01") - field(FLNK, "BL45P-MO-STEP-01:AXIS4:status1") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS4:status1") { - field(INP, "BL45P-MO-STEP-01:AXIS4:READ_STAT1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS4:READ_STAT2") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,4)PMAC_C_AXIS_BITS02") - field(FLNK, "BL45P-MO-STEP-01:AXIS4:status2") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS4:status2") { - field(INP, "BL45P-MO-STEP-01:AXIS4:READ_STAT2") -} - -record(longin, "BL45P-MO-STEP-01:AXIS4:READ_STAT3") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,4)PMAC_C_AXIS_BITS03") - field(FLNK, "BL45P-MO-STEP-01:AXIS4:status3") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS4:status3") { - field(INP, "BL45P-MO-STEP-01:AXIS4:READ_STAT3") -} -# % macro, PMAC, Pmac/Geobrick name -# % macro, AXIS, Axis number -# % macro, PORT, Asyn port -record(stringout, "BL45P-MO-STEP-01:AXIS5:DESC") { - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STEP-01:AXIS5:POSITION") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#5P") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS5:FOLL_ERROR") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#5F") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS5:VELOCITY") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#5V") - field(PREC, "2") -} - -record(seq, "BL45P-MO-STEP-01:AXIS5:ReadBack") { - field(LNK1, "BL45P-MO-STEP-01:AXIS5:POSITION.PROC PP") - field(LNK2, "BL45P-MO-STEP-01:AXIS5:FOLL_ERROR.PROC PP") - field(LNK3, "BL45P-MO-STEP-01:AXIS5:VELOCITY.PROC PP") - field(LNK4, "BL45P-MO-STEP-01:AXIS5:status1.PROC PP") - field(DLY1, "0") - field(DLY2, "0.5") - field(DLY3, "0.5") - field(DLY4, "0.5") - field(DOL1, "1") - field(DOL2, "1") - field(DOL3, "1") - field(DOL4, "1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS5:READ_STAT1") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,5)PMAC_C_AXIS_BITS01") - field(FLNK, "BL45P-MO-STEP-01:AXIS5:status1") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS5:status1") { - field(INP, "BL45P-MO-STEP-01:AXIS5:READ_STAT1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS5:READ_STAT2") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,5)PMAC_C_AXIS_BITS02") - field(FLNK, "BL45P-MO-STEP-01:AXIS5:status2") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS5:status2") { - field(INP, "BL45P-MO-STEP-01:AXIS5:READ_STAT2") -} - -record(longin, "BL45P-MO-STEP-01:AXIS5:READ_STAT3") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,5)PMAC_C_AXIS_BITS03") - field(FLNK, "BL45P-MO-STEP-01:AXIS5:status3") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS5:status3") { - field(INP, "BL45P-MO-STEP-01:AXIS5:READ_STAT3") -} -# % macro, PMAC, Pmac/Geobrick name -# % macro, AXIS, Axis number -# % macro, PORT, Asyn port -record(stringout, "BL45P-MO-STEP-01:AXIS6:DESC") { - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STEP-01:AXIS6:POSITION") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#6P") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS6:FOLL_ERROR") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#6F") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS6:VELOCITY") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#6V") - field(PREC, "2") -} - -record(seq, "BL45P-MO-STEP-01:AXIS6:ReadBack") { - field(LNK1, "BL45P-MO-STEP-01:AXIS6:POSITION.PROC PP") - field(LNK2, "BL45P-MO-STEP-01:AXIS6:FOLL_ERROR.PROC PP") - field(LNK3, "BL45P-MO-STEP-01:AXIS6:VELOCITY.PROC PP") - field(LNK4, "BL45P-MO-STEP-01:AXIS6:status1.PROC PP") - field(DLY1, "0") - field(DLY2, "0.5") - field(DLY3, "0.5") - field(DLY4, "0.5") - field(DOL1, "1") - field(DOL2, "1") - field(DOL3, "1") - field(DOL4, "1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS6:READ_STAT1") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,6)PMAC_C_AXIS_BITS01") - field(FLNK, "BL45P-MO-STEP-01:AXIS6:status1") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS6:status1") { - field(INP, "BL45P-MO-STEP-01:AXIS6:READ_STAT1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS6:READ_STAT2") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,6)PMAC_C_AXIS_BITS02") - field(FLNK, "BL45P-MO-STEP-01:AXIS6:status2") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS6:status2") { - field(INP, "BL45P-MO-STEP-01:AXIS6:READ_STAT2") -} - -record(longin, "BL45P-MO-STEP-01:AXIS6:READ_STAT3") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,6)PMAC_C_AXIS_BITS03") - field(FLNK, "BL45P-MO-STEP-01:AXIS6:status3") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS6:status3") { - field(INP, "BL45P-MO-STEP-01:AXIS6:READ_STAT3") -} -# % macro, PMAC, Pmac/Geobrick name -# % macro, AXIS, Axis number -# % macro, PORT, Asyn port -record(stringout, "BL45P-MO-STEP-01:AXIS7:DESC") { - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STEP-01:AXIS7:POSITION") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#7P") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS7:FOLL_ERROR") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#7F") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS7:VELOCITY") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#7V") - field(PREC, "2") -} - -record(seq, "BL45P-MO-STEP-01:AXIS7:ReadBack") { - field(LNK1, "BL45P-MO-STEP-01:AXIS7:POSITION.PROC PP") - field(LNK2, "BL45P-MO-STEP-01:AXIS7:FOLL_ERROR.PROC PP") - field(LNK3, "BL45P-MO-STEP-01:AXIS7:VELOCITY.PROC PP") - field(LNK4, "BL45P-MO-STEP-01:AXIS7:status1.PROC PP") - field(DLY1, "0") - field(DLY2, "0.5") - field(DLY3, "0.5") - field(DLY4, "0.5") - field(DOL1, "1") - field(DOL2, "1") - field(DOL3, "1") - field(DOL4, "1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS7:READ_STAT1") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,7)PMAC_C_AXIS_BITS01") - field(FLNK, "BL45P-MO-STEP-01:AXIS7:status1") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS7:status1") { - field(INP, "BL45P-MO-STEP-01:AXIS7:READ_STAT1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS7:READ_STAT2") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,7)PMAC_C_AXIS_BITS02") - field(FLNK, "BL45P-MO-STEP-01:AXIS7:status2") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS7:status2") { - field(INP, "BL45P-MO-STEP-01:AXIS7:READ_STAT2") -} - -record(longin, "BL45P-MO-STEP-01:AXIS7:READ_STAT3") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,7)PMAC_C_AXIS_BITS03") - field(FLNK, "BL45P-MO-STEP-01:AXIS7:status3") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS7:status3") { - field(INP, "BL45P-MO-STEP-01:AXIS7:READ_STAT3") -} -# % macro, PMAC, Pmac/Geobrick name -# % macro, AXIS, Axis number -# % macro, PORT, Asyn port -record(stringout, "BL45P-MO-STEP-01:AXIS8:DESC") { - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STEP-01:AXIS8:POSITION") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#8P") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS8:FOLL_ERROR") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#8F") - field(PREC, "2") -} - -record(ai, "BL45P-MO-STEP-01:AXIS8:VELOCITY") { - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#8V") - field(PREC, "2") -} - -record(seq, "BL45P-MO-STEP-01:AXIS8:ReadBack") { - field(LNK1, "BL45P-MO-STEP-01:AXIS8:POSITION.PROC PP") - field(LNK2, "BL45P-MO-STEP-01:AXIS8:FOLL_ERROR.PROC PP") - field(LNK3, "BL45P-MO-STEP-01:AXIS8:VELOCITY.PROC PP") - field(LNK4, "BL45P-MO-STEP-01:AXIS8:status1.PROC PP") - field(DLY1, "0") - field(DLY2, "0.5") - field(DLY3, "0.5") - field(DLY4, "0.5") - field(DOL1, "1") - field(DOL2, "1") - field(DOL3, "1") - field(DOL4, "1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS8:READ_STAT1") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,8)PMAC_C_AXIS_BITS01") - field(FLNK, "BL45P-MO-STEP-01:AXIS8:status1") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS8:status1") { - field(INP, "BL45P-MO-STEP-01:AXIS8:READ_STAT1") -} - -record(longin, "BL45P-MO-STEP-01:AXIS8:READ_STAT2") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,8)PMAC_C_AXIS_BITS02") - field(FLNK, "BL45P-MO-STEP-01:AXIS8:status2") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS8:status2") { - field(INP, "BL45P-MO-STEP-01:AXIS8:READ_STAT2") -} - -record(longin, "BL45P-MO-STEP-01:AXIS8:READ_STAT3") { - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,8)PMAC_C_AXIS_BITS03") - field(FLNK, "BL45P-MO-STEP-01:AXIS8:status3") -} - -#% archiver 10 Monitor -record(mbbiDirect, "BL45P-MO-STEP-01:AXIS8:status3") { - field(INP, "BL45P-MO-STEP-01:AXIS8:READ_STAT3") -} -# % macro, PMAC, The P prefix for the motor controller (must match P in pmacController.template) - -# this template defines a motor with two names:- -# (1) root is BL45P-MO-SAMP-01:THETA, the macros fully define the name of the motor -# (2) 'numbered' names of the form BL45P-MO-STEP-01:Mx where x is the motor number -# names are both assigned to the same PV via aliases in the case basic_asyn_motor -# or simply duplicated for all other included templates, this approach works because -# the PVs all point to the same ASYN parameters and improves maintainability of this -# file - -# include motor record from the motor module -#% macro, __doc__, Basic template, including motor record and associated tags -#% macro, P , Device Prefix -#% macro, M , Device Suffix -#% macro, PORT , Asyn port for motor record -#% macro, ADDR , Address on controller -#% macro, DESC , Description, displayed on EDM screen -#% macro, MRES , Motor Step Size (EGU) -#% macro, DTYP , DTYP of record -#% macro, DIR , User Direction -#% macro, VBAS , Base Velocity (EGU/s) -#% macro, VELO , Velocity (EGU/s) -#% macro, VMAX , Max Velocity (EGU/s), defaults to VELO -#% macro, ACCL , Seconds to Velocity -#% macro, BDST , BL Distance (EGU) -#% macro, BVEL , BL Velocity (EGU/s) -#% macro, BACC , BL Seconds to Veloc. -#% macro, PREC , Display Precision -#% macro, EGU , Engineering Units -#% macro, DHLM , Dial High Limit -#% macro, DLLM , Dial Low Limit -#% macro, HLM , User High Limit -#% macro, LLM , User Low Limit -#% macro, HLSV , HW Lim. Violation Svr -#% macro, INIT , Startup commands -#% macro, SREV , Steps per Revolution -#% macro, RRES , Readback Step Size (EGU) -#% macro, TWV , Tweak Step Size (EGU) -#% macro, ERES , Encoder Step Size (EGU) -#% macro, JAR , Jog Acceleration (EGU/s^2) -#% macro, UEIP , Use Encoder If Present -#% macro, URIP , Use RDBL If Present -#% macro, RDBL , Readback Location, set URIP = 1 if you specify this -#% macro, RLNK , Readback output link -#% macro, RTRY , Max retry count -#% macro, DLY , Readback settle time (s) -#% macro, OFF , User Offset (EGU) -#% macro, RDBD , Retry Deadband (EGU) -#% macro, FOFF , Freeze Offset, 0=variable, 1=frozen -#% macro, ADEL , Alarm monitor deadband (EGU) -#% macro, NTM , New Target Monitor, only set to 0 for soft motors -#% macro, FEHIGH , HIGH limit for following error -#% macro, FEHIHI , HIHI limit for following error -#% macro, FEHHSV , HIHI alarm severity for following error -#% macro, FEHSV , HIGH alarm severity for following error -#% macro, SCALE , Scale factor, if pmacSetAxisScale is used this should be set -#% macro, HOMEVIS, If 1 then home is visible on the gui -#% macro, HOMEVISSTR, If HOMEVIS=0, then display this text on the gui instead -#% macro, name , Object name and gui association name -#% macro, alh , Set this to alh to add the motor to the alarm handler and send emails, -# set to '#' to comment out alh lines -#% macro, gda_name, Name to export this as to GDA -#% macro, gda_desc, Description to export this as to GDA - -# AUTOSAVE: level 0 = before record init, level 1 = before AND after record init -#% autosave 0 DVAL OFF -#% autosave 1 DIR DHLM DLLM TWV VBAS VELO ACCL BDST BVEL BACC RDBD EGU RTRY UEIP URIP DLY PREC DISA DISP FOFF OFF FRAC OMSL JVEL JAR ADEL MDEL -#% archiver 0.5 Monitor -#% archiver 0.5 Monitor RBV -#% archiver 10 Monitor OFF -#% archiver 10 Monitor MRES -#% gdatag,template,simpleMotor,,Sample Theta -#% gdatag,motor,rw,,RECORD,Motor -#% alh -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-SAMP-01:THETA - -# This associates an edm screen with the template -# % gui, SAMP01.THETA, edm, motor.edl, motor=BL45P-MO-SAMP-01:THETA -# % gui, SAMP01.THETA, edmembed, motor-embed-small.edl, motor=BL45P-MO-SAMP-01:THETA,filename=motor.edl,box-label=Sample Theta - -# This associates a BOY screen with the template -# % gui, SAMP01.THETA, boydetail, motorApp_opi/motor_detail.opi, P=BL45P-MO-SAMP-01,M=:THETA,DESC=Sample Theta, name=SAMP01.THETA -# % gui, SAMP01.THETA, boyembed, motorApp_opi/motor_embed_box.opi, P=BL45P-MO-SAMP-01,M=:THETA,DESC=Sample Theta, name=SAMP01.THETA -# % gui, SAMP01.THETA, boyembed, motorApp_opi/motor_embed.opi, P=BL45P-MO-SAMP-01,M=:THETA,DESC=Sample Theta, name=SAMP01.THETA -# FIXME: this should be in pmacUtil or tpmac -# % gui, SAMP01.THETA, boyembed, motorApp_opi/motor_homed_embed.opi, P=BL45P-MO-SAMP-01,M=:THETA - -# This makes the component icon reflect the status and severity -# % gui, SAMP01.THETA, status, .MOVN -# % gui, SAMP01.THETA, sevr - -# These define what PVs a motor detail screen should contain -# % gui, SAMP01.THETA, statusbits, Status, .MSTA, Direction Positive, Done, High Limit, Home Limit, Unused, Closed Loop, Following Error, At Home, Encoder Present, Problem, Moving, Gain Support, Comms Error, Low Limit, Homed -# % gui, SAMP01.THETA, statusbits, ELoss, :ELOSS, Encoder Loss, Amplifier Loss, Sys Fail -# % gui, SAMP01.THETA, command, ELoss Clear, :ELOSSRC.A -# % gui, SAMP01.THETA, statusbits, Limit Violation, .LVIO, Lim -# % gui, SAMP01.THETA, statusbits, At High Limit, .HLS, High -# % gui, SAMP01.THETA, statusbits, At Low Limit, .LLS, Low -# % gui, SAMP01.THETA, demand, User High Limit, .HLM -# % gui, SAMP01.THETA, demand, User Low Limit, .LLM -# % gui, SAMP01.THETA, demand, Dial High Limit, .DHLM -# % gui, SAMP01.THETA, demand, Dial Low Limit, .DLLM - -# % gui, SAMP01.THETA, demand, Motor demand, .VAL -# % gui, SAMP01.THETA, readback, Motor readback, .RBV -# % gui, SAMP01.THETA, command, Stop, .STOP -# % gui, SAMP01.THETA, command, Home Forward, .HOMF -# % gui, SAMP01.THETA, command, Home Reverse, .HOMR -# % gui, SAMP01.THETA, command, Jog Forward, .JOGF -# % gui, SAMP01.THETA, command, Jog Reverse, .JOGR -# % gui, SAMP01.THETA, command, Tweak Forward, .TWF -# % gui, SAMP01.THETA, command, Tweak Reverse, .TWR -# % gui, SAMP01.THETA, demand, Tweak Step, .TWV -# % gui, SAMP01.THETA, command, Kill, :KILL.PROC, Kill -# % gui, SAMP01.THETA, command, Sync VAL=RBV, .SYNC - -# % gui, SAMP01.THETA, enum, Direction, .DIR -# % gui, SAMP01.THETA, demand, User Offset, .OFF -# % gui, SAMP01.THETA, enum, Set/Use, .SET -# % gui, SAMP01.THETA, enum, Offset, .FOFF -# % gui, SAMP01.THETA, enum, Use Encoder, .UEIP - -# % gui, SAMP01.THETA, demand, Motor Step Size, .MRES -# % gui, SAMP01.THETA, readback, Steps per Rev, .SREV -# % gui, SAMP01.THETA, readback, EGUs per Rev, .UREV -# % gui, SAMP01.THETA, demand, Encoder Step Size, .ERES -# % gui, SAMP01.THETA, readback, Readback Step Size, .RRES -# % gui, SAMP01.THETA, readback, Use Encoder if Present, .UEIP - -# % gui, SAMP01.THETA, demand, Max Velocity, .VMAX -# % gui, SAMP01.THETA, demand, Base Velocity, .VBAS -# % gui, SAMP01.THETA, demand, Velocity, .VELO -# % gui, SAMP01.THETA, demand, Secs to Velocity, .ACCL -# % gui, SAMP01.THETA, demand, JVEL, .JVEL -# % gui, SAMP01.THETA, demand, Jog Acceleration, .JAR -# % gui, SAMP01.THETA, demand, Backlash Distance, .BDST -# % gui, SAMP01.THETA, demand, Backlash Velocity, .BVEL -# % gui, SAMP01.THETA, demand, Backlash Secs to Vel, .BACC -# % gui, SAMP01.THETA, demand, Move Fraction, .FRAC -# % gui, SAMP01.THETA, demand, Retry Deadband, .RDBD -# % gui, SAMP01.THETA, demand, Max Retrys, .RTRY - -# % gui, SAMP01.THETA, demand, PREC, .PREC -# % gui, SAMP01.THETA, demand, EGU, .EGU - -# % gui, SAMP01.THETA, demand, Output Specification, .OUT -# % gui, SAMP01.THETA, readback, Readback Location, .RDBL -# % gui, SAMP01.THETA, readback, Desired Output Loc, .DOL -# % gui, SAMP01.THETA, readback, Output Mode Select, .OMSL -# % gui, SAMP01.THETA, readback, Readback Out Link, .RLNK -# % gui, SAMP01.THETA, demand, DMOV Input Link, .DINP -# % gui, SAMP01.THETA, demand, RMP Input Link, .RINP -# % gui, SAMP01.THETA, demand, Stop Out Link, .STOO - - -record(motor,"BL45P-MO-SAMP-01:THETA") -{ - field(DESC,"Sample Theta") - field(DTYP,"asynMotor") - field(DIR,"0") - field(VELO,"180") - field(VBAS,"0") - field(ACCL,"0.5") - field(BDST,"0") - field(BVEL,"0") - field(BACC,"") - field(OUT,"@asyn(BRICK1,3)") - field(MRES,"0.036") - field(PREC,"3") - field(EGU,"deg") - field(DHLM,"10000000") - field(DLLM,"-10000000") - field(HLM,"") - field(LLM,"") - field(HLSV,"MAJOR") - field(INIT,"") - field(RTRY,"0") - field(DLY,"0") - field(HVEL,"0") - field(SREV, "1000") - field(RRES, "") - field(TWV, "1") - field(ERES, "") - field(JVEL, "180") - field(JAR, "") - field(UEIP, "0") - field(URIP, "0") - field(RDBL, "") - field(VMAX, "180") - field(OFF, "0") - field(RDBD, "") - field(FOFF, "0") - field(ADEL, "0") - field(NTM, "1") - field(SDIS, "BL45P-MO-SAMP-01:THETA:SDIS.VAL") - field(RLNK, "") -} - -# record that holds the ADDR -record(ao, "BL45P-MO-SAMP-01:THETA:ADDR") { - field(PINI, "YES") - field(VAL, "3") -} - -# record that holds the PORT -record(stringout, "BL45P-MO-SAMP-01:THETA:PORT") { - field(PINI, "YES") - field(VAL, "BRICK1") -} - -# record that holds the SCALE -record(ao, "BL45P-MO-SAMP-01:THETA:SCALE") { - field(PINI, "YES") - field(VAL, "1") -} - -# Write a 1 to this record over Channel Access to disable the motor record and prevent CA writes to any field -# including the demand field. -record(ai, "BL45P-MO-SAMP-01:THETA:USER:SDIS") { - field(VAL, "0") - field(FLNK, "BL45P-MO-SAMP-01:THETA:SDIS") -} - -# Note: This record forms part of the interface to auto-homing, which uses the "A" field to disable the motor record -# when homing. -# record that will disable and re-enable record if any of its inputs are non-zero -record(calcout, "BL45P-MO-SAMP-01:THETA:SDIS") { - field(DESC, "Disable on non-zero input") - field(INPL, "BL45P-MO-SAMP-01:THETA:USER:SDIS") - field(CALC, "(A|B|C|D|E|F|G|H|I|J|K|L)>0") - field(OUT, "BL45P-MO-SAMP-01:THETA.DISP PP") -} - -# dummy record that looks like a kill command -record(ao, "BL45P-MO-SAMP-01:THETA:KILL") { - field(VAL, "1") -} - -# dummy record that looks like eloss status -#% archiver 10 Monitor VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-SAMP-01:THETA:ELOSS -record(ai, "BL45P-MO-SAMP-01:THETA:ELOSS") { - field(PINI, "YES") - field(HIHI, "1") - field(HHSV, "MAJOR") -} - -# dummy record that looks like an eloss reset -record(calcout, "BL45P-MO-SAMP-01:THETA:ELOSSRC") { -} - -# check if SYNC has been pressed -record(calcout, "BL45P-MO-SAMP-01:THETA:CHECK_SYNC") { - field(INPA, "BL45P-MO-SAMP-01:THETA.SYNC CP") - field(CALC, "A>0") - field(OOPT, "When Non-zero") - field(OUT, "BL45P-MO-SAMP-01:THETA:MR_MOVE_WRITE.PROC PP") -} - -# dummy record that looks like a record to notify a CS about a raw motor move -record(longout, "BL45P-MO-SAMP-01:THETA:MR_MOVE_WRITE") { -} - -#Record to calculate the following error -#% archiver 1 Monitor -record(calc, "BL45P-MO-SAMP-01:THETA:FERROR") -{ - field(DESC,"Following Error") - field(INPA,"BL45P-MO-SAMP-01:THETA.RMP CP") - field(INPB,"BL45P-MO-SAMP-01:THETA.REP NPP") - field(INPC,"BL45P-MO-SAMP-01:THETA.MRES NPP") - field(INPD,"BL45P-MO-SAMP-01:THETA.ERES NPP") - field(CALC,"ABS((A*C)-(B*D))") - field(FLNK,"BL45P-MO-SAMP-01:THETA:FERRORMAX") - field(PREC,"3") - field(EGU, "deg") -} - -#Record to store the maximum following error -#% archiver 10 Monitor VAL -#% autosave 1 VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-SAMP-01:THETA:FERRORMAX -record(calc, "BL45P-MO-SAMP-01:THETA:FERRORMAX") -{ - field(DESC,"Following Error Max") - field(INPA,"BL45P-MO-SAMP-01:THETA:FERROR.VAL") - field(INPB,"BL45P-MO-SAMP-01:THETA:FERRORMAX.VAL") - field(CALC,"(A>B)?A:B") - field(HIGH,"0") - field(HIHI,"0") - field(HHSV,"NO_ALARM") - field(HSV, "NO_ALARM") - field(PREC,"3") - field(EGU, "deg") -} - -#Record to reset the maximum following error -record(bo, "BL45P-MO-SAMP-01:THETA:FEMAXRESET") -{ - field(DESC,"Reset max following error") - field(DTYP,"Soft Channel") - field(OUT, "BL45P-MO-SAMP-01:THETA:FERRORMAX.VAL") - field(VAL, "0") -} - - -#Record to determin HOME button visibility on the motor.edl screen. -record(bo, "BL45P-MO-SAMP-01:THETA:HOMEVIS") -{ - field(DESC,"Home button visibility") - field(DTYP,"Soft Channel") - field(VAL, "1") - field(ZNAM, "Invisible") - field(ONAM, "Visible") -} - -#Record to display a message if the HOME buttons are not visible (if HOMEVIS=0). -record(stringout, "BL45P-MO-SAMP-01:THETA:HOMEVISSTR") -{ - field(DESC, "Home visibility string") - field(DTYP,"Soft Channel") - field(VAL, "Absolute Encoder") -} - - -# numbered name aliases for all PVs in basic_asyn_motor.template -alias(BL45P-MO-SAMP-01:THETA, BL45P-MO-STEP-01:M3) -alias(BL45P-MO-SAMP-01:THETA:ADDR, BL45P-MO-STEP-01:M3:ADDR) -alias(BL45P-MO-SAMP-01:THETA:PORT, BL45P-MO-STEP-01:M3:PORT) -alias(BL45P-MO-SAMP-01:THETA:SCALE, BL45P-MO-STEP-01:M3:SCALE) -alias(BL45P-MO-SAMP-01:THETA:USER:SDIS, BL45P-MO-STEP-01M3:USER:SDIS) -alias(BL45P-MO-SAMP-01:THETA:SDIS, BL45P-MO-STEP-01:M3:SDIS) -alias(BL45P-MO-SAMP-01:THETA:KILL, BL45P-MO-STEP-01:M3:KILL) -alias(BL45P-MO-SAMP-01:THETA:ELOSS, BL45P-MO-STEP-01:M3:ELOSS) -alias(BL45P-MO-SAMP-01:THETA:ELOSSRC, BL45P-MO-STEP-01:M3:ELOSSRC) -alias(BL45P-MO-SAMP-01:THETA:MR_MOVE_WRITE, BL45P-MO-STEP-01:M3:MR_MOVE_WRITE) -alias(BL45P-MO-SAMP-01:THETA:CHECK_SYNC, BL45P-MO-STEP-01:M3:CHECK_SYNC) -alias(BL45P-MO-SAMP-01:THETA:FERROR, BL45P-MO-STEP-01:M3:FERROR) -alias(BL45P-MO-SAMP-01:THETA:FERRORMAX, BL45P-MO-STEP-01:M3:FERRORMAX) -alias(BL45P-MO-SAMP-01:THETA:FEMAXRESET, BL45P-MO-STEP-01:M3:FEMAXRESET) -alias(BL45P-MO-SAMP-01:THETA:HOMEVIS, BL45P-MO-STEP-01:M3:HOMEVIS) -alias(BL45P-MO-SAMP-01:THETA:HOMEVISSTR, BL45P-MO-STEP-01:M3:HOMEVISSTR) - - -############################################################ -# -# Template to allow coordinate system kinematics to know -# the resolution of each real motor -# -# Also to allow control of CS mappings of real motors -# -############################################################### - - -############################################################### -# Mres and Offset -############################################################### - -#calc mres to be written -record(calcout, "BL45P-MO-SAMP-01:THETA:MRES_CALC") { - field(CALC, "B?-A*C:A*C") - field(INPA, "BL45P-MO-SAMP-01:THETA.MRES CP") - field(INPB, "BL45P-MO-SAMP-01:THETA.DIR CP") - field(INPC, "BL45P-MO-SAMP-01:THETA:SCALE") - field(OUT, "BL45P-MO-SAMP-01:THETA:MRES_SET PP") - field(OOPT, "When Non-zero") -} - -record(ao, "BL45P-MO-SAMP-01:THETA:MRES_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4800+3`") - field(FLNK, "BL45P-MO-SAMP-01:THETA:MR_MOVE_WRITE") -} - -#calc offset to be written -record(calcout, "BL45P-MO-SAMP-01:THETA:OFF_SET_CALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-SAMP-01:THETA.OFF CP") - field(OUT, "BL45P-MO-SAMP-01:THETA:OFF_SET PP") -} - -record(ao, "BL45P-MO-SAMP-01:THETA:OFF_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4900+3`") - field(FLNK, "BL45P-MO-SAMP-01:THETA:MR_MOVE_WRITE") -} - - -############################################################### -# Coordinate System mapping control -############################################################### - -# Read back which CS number the axis is in -record(ai, "BL45P-MO-SAMP-01:THETA:CsRaw_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,3)PMAC_C_AXIS_CS") - field(PINI, "NO") - field(SCAN, "I/O Intr") -} - -# Set which CS the axis is in via CSController Port Name -record(mbbo, "BL45P-MO-SAMP-01:THETA:CsPort") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,3)PMAC_C_GROUP_CS_PORT") -} - -record(mbbi, "BL45P-MO-SAMP-01:THETA:CsPort_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,3)PMAC_C_GROUP_CS_PORT_RBV") - field(SCAN, "I/O Intr") -} - -# set the axis' CS assignment (one of A B C U V W X Y Z I) -record(stringout, "BL45P-MO-SAMP-01:THETA:CsAxis") { - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(BRICK1,3)PMAC_C_GROUP_ASSIGN") -} - -record(stringin, "BL45P-MO-SAMP-01:THETA:CsAxis_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,3)PMAC_C_GROUP_ASSIGN_RBV") - field(SCAN, "I/O Intr") -}# These are the supporting records for doing kill, eloss, and adding autohome -# support to a motor record - -#% macro, SPORT, Asyn port for eloss commands -# usually PMAC_S for pmacs, the name of the pmacAsynIpPort for bricks -#% macro, HOME, Prefix for autohome instance. Defaults to BL45P-MO-SAMP-01. If unspecified, -# the template contains enough records to keep the motor record happy -#% macro, PMAC, Prefix for pmacStatus instance. Needed to get axis descriptions -# onto pmacStatusAxis screen -#% macro, ALLOW_HOMED_SET, Set to a blank to allow this axis to have its homed -# status manually. This is set to a comment character by default. - -# disable motor when homing -record(calcout, "BL45P-MO-SAMP-01:THETA:SDIS") { -# field(INPA, "BL45P-MO-SAMP-01:HM:HOMING CP") -} - -# dummy record in case we aren't homing -record(busy, "BL45P-MO-SAMP-01:HM:HOMING") { -} - -# Monitor homing status -record(bi, "BL45P-MO-SAMP-01:THETA:HOMING") { - field(DESC, "Monitor homing status of autohome") - field(INP, "BL45P-MO-SAMP-01:HM:HOMING CP") - field(FLNK, "BL45P-MO-SAMP-01:THETA:HOMING_CALC") - field(ZNAM, "Done") - field(ONAM, "Busy") -} - -# report to the driver if this motor is being autohomed -record(calcout, BL45P-MO-SAMP-01:THETA:HOMING_CALC) -{ - field(PINI, 1) - field(INPA, "BL45P-MO-SAMP-01:THETA:HOMING") - field(CALC, "A") - field(OUT, "BL45P-MO-SAMP-01:THETA:HOMING_STATUS PP") -} - -# report to the driver if this motor is being autohomed -record(ao, BL45P-MO-SAMP-01:THETA:HOMING_STATUS) -{ - field(DESC, "driver update on autohome") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,3)HOMING_STATUS") -} - - -# reports position of motor without offset -record(ai, "BL45P-MO-SAMP-01:THETA:HMPOS_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#3P") - field(DESC, "Sample Theta") - field(SCAN, "I/O Intr") - field(PINI, "YES") - field(PREC, "3") - field(EGU, "deg") -} - -record(calcout, "BL45P-MO-SAMP-01:THETA:HMPOS:CALC") { - field(INPA, "BL45P-MO-SAMP-01:THETA.MRES CP") - field(INPB, "BL45P-MO-SAMP-01:THETA:SCALE") - field(INPC, "BL45P-MO-SAMP-01:THETA:HMPOS_RBV CP") - field(CALC, "A*B*C") - field(OUT, "BL45P-MO-SAMP-01:THETA:HMPOS PP") -} - -record(ai, "BL45P-MO-SAMP-01:THETA:HMPOS") { - field(DESC, "Sample Theta") - field(PREC, "3") - field(EGU, "deg") -} - -# at startup, tell autohome template about this motor -record(stringout, "BL45P-MO-SAMP-01:THETA:SETHMPV") { - field(PINI, "YES") - field(VAL, "BL45P-MO-SAMP-01:THETA") - field(OUT, "BL45P-MO-SAMP-01:HM:M3PV PP") -} - -record(stringout, "BL45P-MO-SAMP-01:HM:M3PV"){ -} - -# define a kill record -record(ao, "BL45P-MO-SAMP-01:THETA:KILL") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,3)PMAC_C_KILL_AXIS") - field(VAL, "0") -} - -record(calc, "BL45P-MO-SAMP-01:THETA:ELOSSVAR") { - field(CALC, "464+3") - field(PINI, "YES") -} - -record(ai, "BL45P-MO-SAMP-01:THETA:ELOSS") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_P`464+3`") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-MO-SAMP-01:THETA:ELOSSRC") { - field(OUT, "BL45P-MO-SAMP-01:THETA:SEND_ELOSSRC PP") - field(DESC, "Write 0 to A to reset Eloss") - field(CALC, "A") - field(A, "0") -} - -record(ao, "BL45P-MO-SAMP-01:THETA:SEND_ELOSSRC") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_VIS_P`464+3`") -} - -# Overwrite the description of pmacStatus -record(stringout, "BL45P-MO-STEP-01:AXIS3:DESC"){ - field(VAL, "SAMP01.THETA Sample Theta") -} - -#record(bo, "BL45P-MO-SAMP-01:THETA:HOMED") { -# field(DESC, "Set homed status for axis 3") -# field(ZNAM, "NOT HOMED") -# field(ONAM, "HOMED") -# field(FLNK, "BL45P-MO-SAMP-01:THETA:HOMEDSET") -#} - -#record(calcout, "BL45P-MO-SAMP-01:THETA:HOMEDSET") { -# field(DESC, "Homed status") -# field(DTYP, "stream") -# field(CALC, "A") -# field(INPA, "BL45P-MO-SAMP-01:THETA:HOMED") -# field(OUT, "@pmac.proto setIntVar(m345) BRICK1port") -#} -############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-SAMP-01:THETA:DirectDemand") -{ - field(FLNK, "BL45P-MO-SAMP-01:THETA:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-SAMP-01:THETA:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-SAMP-01:THETA:DirectDemand") - field(INPB, "BL45P-MO-SAMP-01:THETA:Mres PP") - field(INPC, "BL45P-MO-SAMP-01:THETA:Offset PP") - field(INPD, "BL45P-MO-SAMP-01:THETA:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-SAMP-01:THETA:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-SAMP-01:THETA:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-SAMP-01:THETA:DirectMotorSeq") - field(OUT, "@asyn(BRICK1,3,4)MOTOR_MOVE_ABS") - field(DESC, "Sample Theta") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-SAMP-01:THETA:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-SAMP-01:THETA:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-SAMP-01:THETA:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,3,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-SAMP-01:THETA:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,3,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-SAMP-01:THETA:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,3,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-SAMP-01:THETA:MresSource") -} - -record(scalcout, BL45P-MO-SAMP-01:THETA:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-SAMP-01:THETA:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-SAMP-01:THETA:Mres.INPA CA") - field(FLNK, "BL45P-MO-SAMP-01:THETA:OffsetSource") -} - -record(scalcout, "BL45P-MO-SAMP-01:THETA:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-SAMP-01:THETA:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-SAMP-01:THETA:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,3,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-SAMP-01:THETA:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-SAMP-01:THETA:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-SAMP-01:THETA:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-SAMP-01:THETA:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-SAMP-01:THETA:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-SAMP-01:THETA:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,3,4)PMAC_OFFSET") -} - -# add numbered name aliases for above 3 templates -############################################################ -# -# Template to allow coordinate system kinematics to know -# the resolution of each real motor -# -# Also to allow control of CS mappings of real motors -# -############################################################### - - -############################################################### -# Mres and Offset -############################################################### - -#calc mres to be written -record(calcout, "BL45P-MO-STEP-01:M3:MRES_CALC") { - field(CALC, "B?-A*C:A*C") - field(INPA, "BL45P-MO-STEP-01:M3.MRES CP") - field(INPB, "BL45P-MO-STEP-01:M3.DIR CP") - field(INPC, "BL45P-MO-STEP-01:M3:SCALE") - field(OUT, "BL45P-MO-STEP-01:M3:MRES_SET PP") - field(OOPT, "When Non-zero") -} - -record(ao, "BL45P-MO-STEP-01:M3:MRES_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4800+3`") - field(FLNK, "BL45P-MO-STEP-01:M3:MR_MOVE_WRITE") -} - -#calc offset to be written -record(calcout, "BL45P-MO-STEP-01:M3:OFF_SET_CALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-STEP-01:M3.OFF CP") - field(OUT, "BL45P-MO-STEP-01:M3:OFF_SET PP") -} - -record(ao, "BL45P-MO-STEP-01:M3:OFF_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4900+3`") - field(FLNK, "BL45P-MO-STEP-01:M3:MR_MOVE_WRITE") -} - - -############################################################### -# Coordinate System mapping control -############################################################### - -# Read back which CS number the axis is in -record(ai, "BL45P-MO-STEP-01:M3:CsRaw_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,3)PMAC_C_AXIS_CS") - field(PINI, "NO") - field(SCAN, "I/O Intr") -} - -# Set which CS the axis is in via CSController Port Name -record(mbbo, "BL45P-MO-STEP-01:M3:CsPort") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,3)PMAC_C_GROUP_CS_PORT") -} - -record(mbbi, "BL45P-MO-STEP-01:M3:CsPort_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,3)PMAC_C_GROUP_CS_PORT_RBV") - field(SCAN, "I/O Intr") -} - -# set the axis' CS assignment (one of A B C U V W X Y Z I) -record(stringout, "BL45P-MO-STEP-01:M3:CsAxis") { - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(BRICK1,3)PMAC_C_GROUP_ASSIGN") -} - -record(stringin, "BL45P-MO-STEP-01:M3:CsAxis_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,3)PMAC_C_GROUP_ASSIGN_RBV") - field(SCAN, "I/O Intr") -}# These are the supporting records for doing kill, eloss, and adding autohome -# support to a motor record - -#% macro, SPORT, Asyn port for eloss commands -# usually PMAC_S for pmacs, the name of the pmacAsynIpPort for bricks -#% macro, HOME, Prefix for autohome instance. Defaults to BL45P-MO-STEP-01:. If unspecified, -# the template contains enough records to keep the motor record happy -#% macro, PMAC, Prefix for pmacStatus instance. Needed to get axis descriptions -# onto pmacStatusAxis screen -#% macro, ALLOW_HOMED_SET, Set to a blank to allow this axis to have its homed -# status manually. This is set to a comment character by default. - -# disable motor when homing -record(calcout, "BL45P-MO-STEP-01:M3:SDIS") { -# field(INPA, "BL45P-MO-STEP-01::HM:HOMING CP") -} - -# dummy record in case we aren't homing -record(busy, "BL45P-MO-STEP-01::HM:HOMING") { -} - -# Monitor homing status -record(bi, "BL45P-MO-STEP-01:M3:HOMING") { - field(DESC, "Monitor homing status of autohome") - field(INP, "BL45P-MO-STEP-01::HM:HOMING CP") - field(FLNK, "BL45P-MO-STEP-01:M3:HOMING_CALC") - field(ZNAM, "Done") - field(ONAM, "Busy") -} - -# report to the driver if this motor is being autohomed -record(calcout, BL45P-MO-STEP-01:M3:HOMING_CALC) -{ - field(PINI, 1) - field(INPA, "BL45P-MO-STEP-01:M3:HOMING") - field(CALC, "A") - field(OUT, "BL45P-MO-STEP-01:M3:HOMING_STATUS PP") -} - -# report to the driver if this motor is being autohomed -record(ao, BL45P-MO-STEP-01:M3:HOMING_STATUS) -{ - field(DESC, "driver update on autohome") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,3)HOMING_STATUS") -} - - -# reports position of motor without offset -record(ai, "BL45P-MO-STEP-01:M3:HMPOS_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#3P") - field(DESC, "Sample Theta") - field(SCAN, "I/O Intr") - field(PINI, "YES") - field(PREC, "3") - field(EGU, "deg") -} - -record(calcout, "BL45P-MO-STEP-01:M3:HMPOS:CALC") { - field(INPA, "BL45P-MO-STEP-01:M3.MRES CP") - field(INPB, "BL45P-MO-STEP-01:M3:SCALE") - field(INPC, "BL45P-MO-STEP-01:M3:HMPOS_RBV CP") - field(CALC, "A*B*C") - field(OUT, "BL45P-MO-STEP-01:M3:HMPOS PP") -} - -record(ai, "BL45P-MO-STEP-01:M3:HMPOS") { - field(DESC, "Sample Theta") - field(PREC, "3") - field(EGU, "deg") -} - -# at startup, tell autohome template about this motor -record(stringout, "BL45P-MO-STEP-01:M3:SETHMPV") { - field(PINI, "YES") - field(VAL, "BL45P-MO-STEP-01:M3") - field(OUT, "BL45P-MO-STEP-01::HM:M3PV PP") -} - -record(stringout, "BL45P-MO-STEP-01::HM:M3PV"){ -} - -# define a kill record -record(ao, "BL45P-MO-STEP-01:M3:KILL") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,3)PMAC_C_KILL_AXIS") - field(VAL, "0") -} - -record(calc, "BL45P-MO-STEP-01:M3:ELOSSVAR") { - field(CALC, "464+3") - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STEP-01:M3:ELOSS") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_P`464+3`") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-MO-STEP-01:M3:ELOSSRC") { - field(OUT, "BL45P-MO-STEP-01:M3:SEND_ELOSSRC PP") - field(DESC, "Write 0 to A to reset Eloss") - field(CALC, "A") - field(A, "0") -} - -record(ao, "BL45P-MO-STEP-01:M3:SEND_ELOSSRC") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_VIS_P`464+3`") -} - -# Overwrite the description of pmacStatus -record(stringout, "BL45P-MO-STEP-01:AXIS3:DESC"){ - field(VAL, "SAMP01.THETA Sample Theta") -} - -#record(bo, "BL45P-MO-STEP-01:M3:HOMED") { -# field(DESC, "Set homed status for axis 3") -# field(ZNAM, "NOT HOMED") -# field(ONAM, "HOMED") -# field(FLNK, "BL45P-MO-STEP-01:M3:HOMEDSET") -#} - -#record(calcout, "BL45P-MO-STEP-01:M3:HOMEDSET") { -# field(DESC, "Homed status") -# field(DTYP, "stream") -# field(CALC, "A") -# field(INPA, "BL45P-MO-STEP-01:M3:HOMED") -# field(OUT, "@pmac.proto setIntVar(m345) BRICK1port") -#} -############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:M3:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:M3:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:M3:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:M3:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:M3:Mres PP") - field(INPC, "BL45P-MO-STEP-01:M3:Offset PP") - field(INPD, "BL45P-MO-STEP-01:M3:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:M3:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:M3:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:M3:DirectMotorSeq") - field(OUT, "@asyn(BRICK1,3,4)MOTOR_MOVE_ABS") - field(DESC, "Sample Theta") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:M3:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:M3:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:M3:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,3,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:M3:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,3,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:M3:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,3,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:M3:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:M3:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:M3:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:M3:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:M3:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:M3:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:M3:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:M3:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,3,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:M3:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:M3:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:M3:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:M3:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:M3:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:M3:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,3,4)PMAC_OFFSET") -}# % macro, PMAC, The P prefix for the motor controller (must match P in pmacController.template) - -# this template defines a motor with two names:- -# (1) root is BL45P-MO-CHOP-01:HOR, the macros fully define the name of the motor -# (2) 'numbered' names of the form BL45P-MO-STEP-01:Mx where x is the motor number -# names are both assigned to the same PV via aliases in the case basic_asyn_motor -# or simply duplicated for all other included templates, this approach works because -# the PVs all point to the same ASYN parameters and improves maintainability of this -# file - -# include motor record from the motor module -#% macro, __doc__, Basic template, including motor record and associated tags -#% macro, P , Device Prefix -#% macro, M , Device Suffix -#% macro, PORT , Asyn port for motor record -#% macro, ADDR , Address on controller -#% macro, DESC , Description, displayed on EDM screen -#% macro, MRES , Motor Step Size (EGU) -#% macro, DTYP , DTYP of record -#% macro, DIR , User Direction -#% macro, VBAS , Base Velocity (EGU/s) -#% macro, VELO , Velocity (EGU/s) -#% macro, VMAX , Max Velocity (EGU/s), defaults to VELO -#% macro, ACCL , Seconds to Velocity -#% macro, BDST , BL Distance (EGU) -#% macro, BVEL , BL Velocity (EGU/s) -#% macro, BACC , BL Seconds to Veloc. -#% macro, PREC , Display Precision -#% macro, EGU , Engineering Units -#% macro, DHLM , Dial High Limit -#% macro, DLLM , Dial Low Limit -#% macro, HLM , User High Limit -#% macro, LLM , User Low Limit -#% macro, HLSV , HW Lim. Violation Svr -#% macro, INIT , Startup commands -#% macro, SREV , Steps per Revolution -#% macro, RRES , Readback Step Size (EGU) -#% macro, TWV , Tweak Step Size (EGU) -#% macro, ERES , Encoder Step Size (EGU) -#% macro, JAR , Jog Acceleration (EGU/s^2) -#% macro, UEIP , Use Encoder If Present -#% macro, URIP , Use RDBL If Present -#% macro, RDBL , Readback Location, set URIP = 1 if you specify this -#% macro, RLNK , Readback output link -#% macro, RTRY , Max retry count -#% macro, DLY , Readback settle time (s) -#% macro, OFF , User Offset (EGU) -#% macro, RDBD , Retry Deadband (EGU) -#% macro, FOFF , Freeze Offset, 0=variable, 1=frozen -#% macro, ADEL , Alarm monitor deadband (EGU) -#% macro, NTM , New Target Monitor, only set to 0 for soft motors -#% macro, FEHIGH , HIGH limit for following error -#% macro, FEHIHI , HIHI limit for following error -#% macro, FEHHSV , HIHI alarm severity for following error -#% macro, FEHSV , HIGH alarm severity for following error -#% macro, SCALE , Scale factor, if pmacSetAxisScale is used this should be set -#% macro, HOMEVIS, If 1 then home is visible on the gui -#% macro, HOMEVISSTR, If HOMEVIS=0, then display this text on the gui instead -#% macro, name , Object name and gui association name -#% macro, alh , Set this to alh to add the motor to the alarm handler and send emails, -# set to '#' to comment out alh lines -#% macro, gda_name, Name to export this as to GDA -#% macro, gda_desc, Description to export this as to GDA - -# AUTOSAVE: level 0 = before record init, level 1 = before AND after record init -#% autosave 0 DVAL OFF -#% autosave 1 DIR DHLM DLLM TWV VBAS VELO ACCL BDST BVEL BACC RDBD EGU RTRY UEIP URIP DLY PREC DISA DISP FOFF OFF FRAC OMSL JVEL JAR ADEL MDEL -#% archiver 0.5 Monitor -#% archiver 0.5 Monitor RBV -#% archiver 10 Monitor OFF -#% archiver 10 Monitor MRES -#% gdatag,template,simpleMotor,,X Chopper -#% gdatag,motor,rw,,RECORD,Motor -#% alh -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-CHOP-01:HOR - -# This associates an edm screen with the template -# % gui, CHOP01.X, edm, motor.edl, motor=BL45P-MO-CHOP-01:HOR -# % gui, CHOP01.X, edmembed, motor-embed-small.edl, motor=BL45P-MO-CHOP-01:HOR,filename=motor.edl,box-label=X Chopper - -# This associates a BOY screen with the template -# % gui, CHOP01.X, boydetail, motorApp_opi/motor_detail.opi, P=BL45P-MO-CHOP-01,M=:HOR,DESC=X Chopper, name=CHOP01.X -# % gui, CHOP01.X, boyembed, motorApp_opi/motor_embed_box.opi, P=BL45P-MO-CHOP-01,M=:HOR,DESC=X Chopper, name=CHOP01.X -# % gui, CHOP01.X, boyembed, motorApp_opi/motor_embed.opi, P=BL45P-MO-CHOP-01,M=:HOR,DESC=X Chopper, name=CHOP01.X -# FIXME: this should be in pmacUtil or tpmac -# % gui, CHOP01.X, boyembed, motorApp_opi/motor_homed_embed.opi, P=BL45P-MO-CHOP-01,M=:HOR - -# This makes the component icon reflect the status and severity -# % gui, CHOP01.X, status, .MOVN -# % gui, CHOP01.X, sevr - -# These define what PVs a motor detail screen should contain -# % gui, CHOP01.X, statusbits, Status, .MSTA, Direction Positive, Done, High Limit, Home Limit, Unused, Closed Loop, Following Error, At Home, Encoder Present, Problem, Moving, Gain Support, Comms Error, Low Limit, Homed -# % gui, CHOP01.X, statusbits, ELoss, :ELOSS, Encoder Loss, Amplifier Loss, Sys Fail -# % gui, CHOP01.X, command, ELoss Clear, :ELOSSRC.A -# % gui, CHOP01.X, statusbits, Limit Violation, .LVIO, Lim -# % gui, CHOP01.X, statusbits, At High Limit, .HLS, High -# % gui, CHOP01.X, statusbits, At Low Limit, .LLS, Low -# % gui, CHOP01.X, demand, User High Limit, .HLM -# % gui, CHOP01.X, demand, User Low Limit, .LLM -# % gui, CHOP01.X, demand, Dial High Limit, .DHLM -# % gui, CHOP01.X, demand, Dial Low Limit, .DLLM - -# % gui, CHOP01.X, demand, Motor demand, .VAL -# % gui, CHOP01.X, readback, Motor readback, .RBV -# % gui, CHOP01.X, command, Stop, .STOP -# % gui, CHOP01.X, command, Home Forward, .HOMF -# % gui, CHOP01.X, command, Home Reverse, .HOMR -# % gui, CHOP01.X, command, Jog Forward, .JOGF -# % gui, CHOP01.X, command, Jog Reverse, .JOGR -# % gui, CHOP01.X, command, Tweak Forward, .TWF -# % gui, CHOP01.X, command, Tweak Reverse, .TWR -# % gui, CHOP01.X, demand, Tweak Step, .TWV -# % gui, CHOP01.X, command, Kill, :KILL.PROC, Kill -# % gui, CHOP01.X, command, Sync VAL=RBV, .SYNC - -# % gui, CHOP01.X, enum, Direction, .DIR -# % gui, CHOP01.X, demand, User Offset, .OFF -# % gui, CHOP01.X, enum, Set/Use, .SET -# % gui, CHOP01.X, enum, Offset, .FOFF -# % gui, CHOP01.X, enum, Use Encoder, .UEIP - -# % gui, CHOP01.X, demand, Motor Step Size, .MRES -# % gui, CHOP01.X, readback, Steps per Rev, .SREV -# % gui, CHOP01.X, readback, EGUs per Rev, .UREV -# % gui, CHOP01.X, demand, Encoder Step Size, .ERES -# % gui, CHOP01.X, readback, Readback Step Size, .RRES -# % gui, CHOP01.X, readback, Use Encoder if Present, .UEIP - -# % gui, CHOP01.X, demand, Max Velocity, .VMAX -# % gui, CHOP01.X, demand, Base Velocity, .VBAS -# % gui, CHOP01.X, demand, Velocity, .VELO -# % gui, CHOP01.X, demand, Secs to Velocity, .ACCL -# % gui, CHOP01.X, demand, JVEL, .JVEL -# % gui, CHOP01.X, demand, Jog Acceleration, .JAR -# % gui, CHOP01.X, demand, Backlash Distance, .BDST -# % gui, CHOP01.X, demand, Backlash Velocity, .BVEL -# % gui, CHOP01.X, demand, Backlash Secs to Vel, .BACC -# % gui, CHOP01.X, demand, Move Fraction, .FRAC -# % gui, CHOP01.X, demand, Retry Deadband, .RDBD -# % gui, CHOP01.X, demand, Max Retrys, .RTRY - -# % gui, CHOP01.X, demand, PREC, .PREC -# % gui, CHOP01.X, demand, EGU, .EGU - -# % gui, CHOP01.X, demand, Output Specification, .OUT -# % gui, CHOP01.X, readback, Readback Location, .RDBL -# % gui, CHOP01.X, readback, Desired Output Loc, .DOL -# % gui, CHOP01.X, readback, Output Mode Select, .OMSL -# % gui, CHOP01.X, readback, Readback Out Link, .RLNK -# % gui, CHOP01.X, demand, DMOV Input Link, .DINP -# % gui, CHOP01.X, demand, RMP Input Link, .RINP -# % gui, CHOP01.X, demand, Stop Out Link, .STOO - - -record(motor,"BL45P-MO-CHOP-01:HOR") -{ - field(DESC,"X Chopper") - field(DTYP,"asynMotor") - field(DIR,"0") - field(VELO,"43") - field(VBAS,"0") - field(ACCL,"0.5") - field(BDST,"0") - field(BVEL,"0") - field(BACC,"") - field(OUT,"@asyn(BRICK1,4)") - field(MRES,"0.000043") - field(PREC,"5") - field(EGU,"deg") - field(DHLM,"10000000") - field(DLLM,"-10000000") - field(HLM,"") - field(LLM,"") - field(HLSV,"MAJOR") - field(INIT,"") - field(RTRY,"0") - field(DLY,"0") - field(HVEL,"0") - field(SREV, "1000") - field(RRES, "") - field(TWV, "1") - field(ERES, "") - field(JVEL, "43") - field(JAR, "") - field(UEIP, "0") - field(URIP, "0") - field(RDBL, "") - field(VMAX, "43") - field(OFF, "0") - field(RDBD, "") - field(FOFF, "0") - field(ADEL, "0") - field(NTM, "1") - field(SDIS, "BL45P-MO-CHOP-01:HOR:SDIS.VAL") - field(RLNK, "") -} - -# record that holds the ADDR -record(ao, "BL45P-MO-CHOP-01:HOR:ADDR") { - field(PINI, "YES") - field(VAL, "4") -} - -# record that holds the PORT -record(stringout, "BL45P-MO-CHOP-01:HOR:PORT") { - field(PINI, "YES") - field(VAL, "BRICK1") -} - -# record that holds the SCALE -record(ao, "BL45P-MO-CHOP-01:HOR:SCALE") { - field(PINI, "YES") - field(VAL, "1") -} - -# Write a 1 to this record over Channel Access to disable the motor record and prevent CA writes to any field -# including the demand field. -record(ai, "BL45P-MO-CHOP-01:HOR:USER:SDIS") { - field(VAL, "0") - field(FLNK, "BL45P-MO-CHOP-01:HOR:SDIS") -} - -# Note: This record forms part of the interface to auto-homing, which uses the "A" field to disable the motor record -# when homing. -# record that will disable and re-enable record if any of its inputs are non-zero -record(calcout, "BL45P-MO-CHOP-01:HOR:SDIS") { - field(DESC, "Disable on non-zero input") - field(INPL, "BL45P-MO-CHOP-01:HOR:USER:SDIS") - field(CALC, "(A|B|C|D|E|F|G|H|I|J|K|L)>0") - field(OUT, "BL45P-MO-CHOP-01:HOR.DISP PP") -} - -# dummy record that looks like a kill command -record(ao, "BL45P-MO-CHOP-01:HOR:KILL") { - field(VAL, "1") -} - -# dummy record that looks like eloss status -#% archiver 10 Monitor VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-CHOP-01:HOR:ELOSS -record(ai, "BL45P-MO-CHOP-01:HOR:ELOSS") { - field(PINI, "YES") - field(HIHI, "1") - field(HHSV, "MAJOR") -} - -# dummy record that looks like an eloss reset -record(calcout, "BL45P-MO-CHOP-01:HOR:ELOSSRC") { -} - -# check if SYNC has been pressed -record(calcout, "BL45P-MO-CHOP-01:HOR:CHECK_SYNC") { - field(INPA, "BL45P-MO-CHOP-01:HOR.SYNC CP") - field(CALC, "A>0") - field(OOPT, "When Non-zero") - field(OUT, "BL45P-MO-CHOP-01:HOR:MR_MOVE_WRITE.PROC PP") -} - -# dummy record that looks like a record to notify a CS about a raw motor move -record(longout, "BL45P-MO-CHOP-01:HOR:MR_MOVE_WRITE") { -} - -#Record to calculate the following error -#% archiver 1 Monitor -record(calc, "BL45P-MO-CHOP-01:HOR:FERROR") -{ - field(DESC,"Following Error") - field(INPA,"BL45P-MO-CHOP-01:HOR.RMP CP") - field(INPB,"BL45P-MO-CHOP-01:HOR.REP NPP") - field(INPC,"BL45P-MO-CHOP-01:HOR.MRES NPP") - field(INPD,"BL45P-MO-CHOP-01:HOR.ERES NPP") - field(CALC,"ABS((A*C)-(B*D))") - field(FLNK,"BL45P-MO-CHOP-01:HOR:FERRORMAX") - field(PREC,"5") - field(EGU, "deg") -} - -#Record to store the maximum following error -#% archiver 10 Monitor VAL -#% autosave 1 VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-CHOP-01:HOR:FERRORMAX -record(calc, "BL45P-MO-CHOP-01:HOR:FERRORMAX") -{ - field(DESC,"Following Error Max") - field(INPA,"BL45P-MO-CHOP-01:HOR:FERROR.VAL") - field(INPB,"BL45P-MO-CHOP-01:HOR:FERRORMAX.VAL") - field(CALC,"(A>B)?A:B") - field(HIGH,"0") - field(HIHI,"0") - field(HHSV,"NO_ALARM") - field(HSV, "NO_ALARM") - field(PREC,"5") - field(EGU, "deg") -} - -#Record to reset the maximum following error -record(bo, "BL45P-MO-CHOP-01:HOR:FEMAXRESET") -{ - field(DESC,"Reset max following error") - field(DTYP,"Soft Channel") - field(OUT, "BL45P-MO-CHOP-01:HOR:FERRORMAX.VAL") - field(VAL, "0") -} - - -#Record to determin HOME button visibility on the motor.edl screen. -record(bo, "BL45P-MO-CHOP-01:HOR:HOMEVIS") -{ - field(DESC,"Home button visibility") - field(DTYP,"Soft Channel") - field(VAL, "0") - field(ZNAM, "Invisible") - field(ONAM, "Visible") -} - -#Record to display a message if the HOME buttons are not visible (if HOMEVIS=0). -record(stringout, "BL45P-MO-CHOP-01:HOR:HOMEVISSTR") -{ - field(DESC, "Home visibility string") - field(DTYP,"Soft Channel") - field(VAL, "Absolute Encoder") -} - - -# numbered name aliases for all PVs in basic_asyn_motor.template -alias(BL45P-MO-CHOP-01:HOR, BL45P-MO-STEP-01:M4) -alias(BL45P-MO-CHOP-01:HOR:ADDR, BL45P-MO-STEP-01:M4:ADDR) -alias(BL45P-MO-CHOP-01:HOR:PORT, BL45P-MO-STEP-01:M4:PORT) -alias(BL45P-MO-CHOP-01:HOR:SCALE, BL45P-MO-STEP-01:M4:SCALE) -alias(BL45P-MO-CHOP-01:HOR:USER:SDIS, BL45P-MO-STEP-01M4:USER:SDIS) -alias(BL45P-MO-CHOP-01:HOR:SDIS, BL45P-MO-STEP-01:M4:SDIS) -alias(BL45P-MO-CHOP-01:HOR:KILL, BL45P-MO-STEP-01:M4:KILL) -alias(BL45P-MO-CHOP-01:HOR:ELOSS, BL45P-MO-STEP-01:M4:ELOSS) -alias(BL45P-MO-CHOP-01:HOR:ELOSSRC, BL45P-MO-STEP-01:M4:ELOSSRC) -alias(BL45P-MO-CHOP-01:HOR:MR_MOVE_WRITE, BL45P-MO-STEP-01:M4:MR_MOVE_WRITE) -alias(BL45P-MO-CHOP-01:HOR:CHECK_SYNC, BL45P-MO-STEP-01:M4:CHECK_SYNC) -alias(BL45P-MO-CHOP-01:HOR:FERROR, BL45P-MO-STEP-01:M4:FERROR) -alias(BL45P-MO-CHOP-01:HOR:FERRORMAX, BL45P-MO-STEP-01:M4:FERRORMAX) -alias(BL45P-MO-CHOP-01:HOR:FEMAXRESET, BL45P-MO-STEP-01:M4:FEMAXRESET) -alias(BL45P-MO-CHOP-01:HOR:HOMEVIS, BL45P-MO-STEP-01:M4:HOMEVIS) -alias(BL45P-MO-CHOP-01:HOR:HOMEVISSTR, BL45P-MO-STEP-01:M4:HOMEVISSTR) - - -############################################################ -# -# Template to allow coordinate system kinematics to know -# the resolution of each real motor -# -# Also to allow control of CS mappings of real motors -# -############################################################### - - -############################################################### -# Mres and Offset -############################################################### - -#calc mres to be written -record(calcout, "BL45P-MO-CHOP-01:HOR:MRES_CALC") { - field(CALC, "B?-A*C:A*C") - field(INPA, "BL45P-MO-CHOP-01:HOR.MRES CP") - field(INPB, "BL45P-MO-CHOP-01:HOR.DIR CP") - field(INPC, "BL45P-MO-CHOP-01:HOR:SCALE") - field(OUT, "BL45P-MO-CHOP-01:HOR:MRES_SET PP") - field(OOPT, "When Non-zero") -} - -record(ao, "BL45P-MO-CHOP-01:HOR:MRES_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4800+4`") - field(FLNK, "BL45P-MO-CHOP-01:HOR:MR_MOVE_WRITE") -} - -#calc offset to be written -record(calcout, "BL45P-MO-CHOP-01:HOR:OFF_SET_CALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-CHOP-01:HOR.OFF CP") - field(OUT, "BL45P-MO-CHOP-01:HOR:OFF_SET PP") -} - -record(ao, "BL45P-MO-CHOP-01:HOR:OFF_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4900+4`") - field(FLNK, "BL45P-MO-CHOP-01:HOR:MR_MOVE_WRITE") -} - - -############################################################### -# Coordinate System mapping control -############################################################### - -# Read back which CS number the axis is in -record(ai, "BL45P-MO-CHOP-01:HOR:CsRaw_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,4)PMAC_C_AXIS_CS") - field(PINI, "NO") - field(SCAN, "I/O Intr") -} - -# Set which CS the axis is in via CSController Port Name -record(mbbo, "BL45P-MO-CHOP-01:HOR:CsPort") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,4)PMAC_C_GROUP_CS_PORT") -} - -record(mbbi, "BL45P-MO-CHOP-01:HOR:CsPort_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,4)PMAC_C_GROUP_CS_PORT_RBV") - field(SCAN, "I/O Intr") -} - -# set the axis' CS assignment (one of A B C U V W X Y Z I) -record(stringout, "BL45P-MO-CHOP-01:HOR:CsAxis") { - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(BRICK1,4)PMAC_C_GROUP_ASSIGN") -} - -record(stringin, "BL45P-MO-CHOP-01:HOR:CsAxis_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,4)PMAC_C_GROUP_ASSIGN_RBV") - field(SCAN, "I/O Intr") -}# These are the supporting records for doing kill, eloss, and adding autohome -# support to a motor record - -#% macro, SPORT, Asyn port for eloss commands -# usually PMAC_S for pmacs, the name of the pmacAsynIpPort for bricks -#% macro, HOME, Prefix for autohome instance. Defaults to BL45P-MO-CHOP-01. If unspecified, -# the template contains enough records to keep the motor record happy -#% macro, PMAC, Prefix for pmacStatus instance. Needed to get axis descriptions -# onto pmacStatusAxis screen -#% macro, ALLOW_HOMED_SET, Set to a blank to allow this axis to have its homed -# status manually. This is set to a comment character by default. - -# disable motor when homing -record(calcout, "BL45P-MO-CHOP-01:HOR:SDIS") { -# field(INPA, "BL45P-MO-CHOP-01:HM:HOMING CP") -} - -# dummy record in case we aren't homing -record(busy, "BL45P-MO-CHOP-01:HM:HOMING") { -} - -# Monitor homing status -record(bi, "BL45P-MO-CHOP-01:HOR:HOMING") { - field(DESC, "Monitor homing status of autohome") - field(INP, "BL45P-MO-CHOP-01:HM:HOMING CP") - field(FLNK, "BL45P-MO-CHOP-01:HOR:HOMING_CALC") - field(ZNAM, "Done") - field(ONAM, "Busy") -} - -# report to the driver if this motor is being autohomed -record(calcout, BL45P-MO-CHOP-01:HOR:HOMING_CALC) -{ - field(PINI, 1) - field(INPA, "BL45P-MO-CHOP-01:HOR:HOMING") - field(CALC, "A") - field(OUT, "BL45P-MO-CHOP-01:HOR:HOMING_STATUS PP") -} - -# report to the driver if this motor is being autohomed -record(ao, BL45P-MO-CHOP-01:HOR:HOMING_STATUS) -{ - field(DESC, "driver update on autohome") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,4)HOMING_STATUS") -} - - -# reports position of motor without offset -record(ai, "BL45P-MO-CHOP-01:HOR:HMPOS_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#4P") - field(DESC, "X Chopper") - field(SCAN, "I/O Intr") - field(PINI, "YES") - field(PREC, "5") - field(EGU, "deg") -} - -record(calcout, "BL45P-MO-CHOP-01:HOR:HMPOS:CALC") { - field(INPA, "BL45P-MO-CHOP-01:HOR.MRES CP") - field(INPB, "BL45P-MO-CHOP-01:HOR:SCALE") - field(INPC, "BL45P-MO-CHOP-01:HOR:HMPOS_RBV CP") - field(CALC, "A*B*C") - field(OUT, "BL45P-MO-CHOP-01:HOR:HMPOS PP") -} - -record(ai, "BL45P-MO-CHOP-01:HOR:HMPOS") { - field(DESC, "X Chopper") - field(PREC, "5") - field(EGU, "deg") -} - -# at startup, tell autohome template about this motor -record(stringout, "BL45P-MO-CHOP-01:HOR:SETHMPV") { - field(PINI, "YES") - field(VAL, "BL45P-MO-CHOP-01:HOR") - field(OUT, "BL45P-MO-CHOP-01:HM:M4PV PP") -} - -record(stringout, "BL45P-MO-CHOP-01:HM:M4PV"){ -} - -# define a kill record -record(ao, "BL45P-MO-CHOP-01:HOR:KILL") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,4)PMAC_C_KILL_AXIS") - field(VAL, "0") -} - -record(calc, "BL45P-MO-CHOP-01:HOR:ELOSSVAR") { - field(CALC, "464+4") - field(PINI, "YES") -} - -record(ai, "BL45P-MO-CHOP-01:HOR:ELOSS") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_P`464+4`") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-MO-CHOP-01:HOR:ELOSSRC") { - field(OUT, "BL45P-MO-CHOP-01:HOR:SEND_ELOSSRC PP") - field(DESC, "Write 0 to A to reset Eloss") - field(CALC, "A") - field(A, "0") -} - -record(ao, "BL45P-MO-CHOP-01:HOR:SEND_ELOSSRC") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_VIS_P`464+4`") -} - -# Overwrite the description of pmacStatus -record(stringout, "BL45P-MO-STEP-01:AXIS4:DESC"){ - field(VAL, "CHOP01.X X Chopper") -} - -#record(bo, "BL45P-MO-CHOP-01:HOR:HOMED") { -# field(DESC, "Set homed status for axis 4") -# field(ZNAM, "NOT HOMED") -# field(ONAM, "HOMED") -# field(FLNK, "BL45P-MO-CHOP-01:HOR:HOMEDSET") -#} - -#record(calcout, "BL45P-MO-CHOP-01:HOR:HOMEDSET") { -# field(DESC, "Homed status") -# field(DTYP, "stream") -# field(CALC, "A") -# field(INPA, "BL45P-MO-CHOP-01:HOR:HOMED") -# field(OUT, "@pmac.proto setIntVar(m445) BRICK1port") -#} -############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-CHOP-01:HOR:DirectDemand") -{ - field(FLNK, "BL45P-MO-CHOP-01:HOR:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-CHOP-01:HOR:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-CHOP-01:HOR:DirectDemand") - field(INPB, "BL45P-MO-CHOP-01:HOR:Mres PP") - field(INPC, "BL45P-MO-CHOP-01:HOR:Offset PP") - field(INPD, "BL45P-MO-CHOP-01:HOR:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-CHOP-01:HOR:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-CHOP-01:HOR:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-CHOP-01:HOR:DirectMotorSeq") - field(OUT, "@asyn(BRICK1,4,4)MOTOR_MOVE_ABS") - field(DESC, "X Chopper") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-CHOP-01:HOR:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-CHOP-01:HOR:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-CHOP-01:HOR:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,4,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-CHOP-01:HOR:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,4,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-CHOP-01:HOR:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,4,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-CHOP-01:HOR:MresSource") -} - -record(scalcout, BL45P-MO-CHOP-01:HOR:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-CHOP-01:HOR:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-CHOP-01:HOR:Mres.INPA CA") - field(FLNK, "BL45P-MO-CHOP-01:HOR:OffsetSource") -} - -record(scalcout, "BL45P-MO-CHOP-01:HOR:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-CHOP-01:HOR:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-CHOP-01:HOR:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,4,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-CHOP-01:HOR:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-CHOP-01:HOR:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-CHOP-01:HOR:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-CHOP-01:HOR:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-CHOP-01:HOR:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-CHOP-01:HOR:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,4,4)PMAC_OFFSET") -} - -# add numbered name aliases for above 3 templates -############################################################ -# -# Template to allow coordinate system kinematics to know -# the resolution of each real motor -# -# Also to allow control of CS mappings of real motors -# -############################################################### - - -############################################################### -# Mres and Offset -############################################################### - -#calc mres to be written -record(calcout, "BL45P-MO-STEP-01:M4:MRES_CALC") { - field(CALC, "B?-A*C:A*C") - field(INPA, "BL45P-MO-STEP-01:M4.MRES CP") - field(INPB, "BL45P-MO-STEP-01:M4.DIR CP") - field(INPC, "BL45P-MO-STEP-01:M4:SCALE") - field(OUT, "BL45P-MO-STEP-01:M4:MRES_SET PP") - field(OOPT, "When Non-zero") -} - -record(ao, "BL45P-MO-STEP-01:M4:MRES_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4800+4`") - field(FLNK, "BL45P-MO-STEP-01:M4:MR_MOVE_WRITE") -} - -#calc offset to be written -record(calcout, "BL45P-MO-STEP-01:M4:OFF_SET_CALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-STEP-01:M4.OFF CP") - field(OUT, "BL45P-MO-STEP-01:M4:OFF_SET PP") -} - -record(ao, "BL45P-MO-STEP-01:M4:OFF_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4900+4`") - field(FLNK, "BL45P-MO-STEP-01:M4:MR_MOVE_WRITE") -} - - -############################################################### -# Coordinate System mapping control -############################################################### - -# Read back which CS number the axis is in -record(ai, "BL45P-MO-STEP-01:M4:CsRaw_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,4)PMAC_C_AXIS_CS") - field(PINI, "NO") - field(SCAN, "I/O Intr") -} - -# Set which CS the axis is in via CSController Port Name -record(mbbo, "BL45P-MO-STEP-01:M4:CsPort") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,4)PMAC_C_GROUP_CS_PORT") -} - -record(mbbi, "BL45P-MO-STEP-01:M4:CsPort_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,4)PMAC_C_GROUP_CS_PORT_RBV") - field(SCAN, "I/O Intr") -} - -# set the axis' CS assignment (one of A B C U V W X Y Z I) -record(stringout, "BL45P-MO-STEP-01:M4:CsAxis") { - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(BRICK1,4)PMAC_C_GROUP_ASSIGN") -} - -record(stringin, "BL45P-MO-STEP-01:M4:CsAxis_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,4)PMAC_C_GROUP_ASSIGN_RBV") - field(SCAN, "I/O Intr") -}# These are the supporting records for doing kill, eloss, and adding autohome -# support to a motor record - -#% macro, SPORT, Asyn port for eloss commands -# usually PMAC_S for pmacs, the name of the pmacAsynIpPort for bricks -#% macro, HOME, Prefix for autohome instance. Defaults to BL45P-MO-STEP-01:. If unspecified, -# the template contains enough records to keep the motor record happy -#% macro, PMAC, Prefix for pmacStatus instance. Needed to get axis descriptions -# onto pmacStatusAxis screen -#% macro, ALLOW_HOMED_SET, Set to a blank to allow this axis to have its homed -# status manually. This is set to a comment character by default. - -# disable motor when homing -record(calcout, "BL45P-MO-STEP-01:M4:SDIS") { -# field(INPA, "BL45P-MO-STEP-01::HM:HOMING CP") -} - -# dummy record in case we aren't homing -record(busy, "BL45P-MO-STEP-01::HM:HOMING") { -} - -# Monitor homing status -record(bi, "BL45P-MO-STEP-01:M4:HOMING") { - field(DESC, "Monitor homing status of autohome") - field(INP, "BL45P-MO-STEP-01::HM:HOMING CP") - field(FLNK, "BL45P-MO-STEP-01:M4:HOMING_CALC") - field(ZNAM, "Done") - field(ONAM, "Busy") -} - -# report to the driver if this motor is being autohomed -record(calcout, BL45P-MO-STEP-01:M4:HOMING_CALC) -{ - field(PINI, 1) - field(INPA, "BL45P-MO-STEP-01:M4:HOMING") - field(CALC, "A") - field(OUT, "BL45P-MO-STEP-01:M4:HOMING_STATUS PP") -} - -# report to the driver if this motor is being autohomed -record(ao, BL45P-MO-STEP-01:M4:HOMING_STATUS) -{ - field(DESC, "driver update on autohome") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,4)HOMING_STATUS") -} - - -# reports position of motor without offset -record(ai, "BL45P-MO-STEP-01:M4:HMPOS_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#4P") - field(DESC, "X Chopper") - field(SCAN, "I/O Intr") - field(PINI, "YES") - field(PREC, "5") - field(EGU, "deg") -} - -record(calcout, "BL45P-MO-STEP-01:M4:HMPOS:CALC") { - field(INPA, "BL45P-MO-STEP-01:M4.MRES CP") - field(INPB, "BL45P-MO-STEP-01:M4:SCALE") - field(INPC, "BL45P-MO-STEP-01:M4:HMPOS_RBV CP") - field(CALC, "A*B*C") - field(OUT, "BL45P-MO-STEP-01:M4:HMPOS PP") -} - -record(ai, "BL45P-MO-STEP-01:M4:HMPOS") { - field(DESC, "X Chopper") - field(PREC, "5") - field(EGU, "deg") -} - -# at startup, tell autohome template about this motor -record(stringout, "BL45P-MO-STEP-01:M4:SETHMPV") { - field(PINI, "YES") - field(VAL, "BL45P-MO-STEP-01:M4") - field(OUT, "BL45P-MO-STEP-01::HM:M4PV PP") -} - -record(stringout, "BL45P-MO-STEP-01::HM:M4PV"){ -} - -# define a kill record -record(ao, "BL45P-MO-STEP-01:M4:KILL") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,4)PMAC_C_KILL_AXIS") - field(VAL, "0") -} - -record(calc, "BL45P-MO-STEP-01:M4:ELOSSVAR") { - field(CALC, "464+4") - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STEP-01:M4:ELOSS") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_P`464+4`") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-MO-STEP-01:M4:ELOSSRC") { - field(OUT, "BL45P-MO-STEP-01:M4:SEND_ELOSSRC PP") - field(DESC, "Write 0 to A to reset Eloss") - field(CALC, "A") - field(A, "0") -} - -record(ao, "BL45P-MO-STEP-01:M4:SEND_ELOSSRC") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_VIS_P`464+4`") -} - -# Overwrite the description of pmacStatus -record(stringout, "BL45P-MO-STEP-01:AXIS4:DESC"){ - field(VAL, "CHOP01.X X Chopper") -} - -#record(bo, "BL45P-MO-STEP-01:M4:HOMED") { -# field(DESC, "Set homed status for axis 4") -# field(ZNAM, "NOT HOMED") -# field(ONAM, "HOMED") -# field(FLNK, "BL45P-MO-STEP-01:M4:HOMEDSET") -#} - -#record(calcout, "BL45P-MO-STEP-01:M4:HOMEDSET") { -# field(DESC, "Homed status") -# field(DTYP, "stream") -# field(CALC, "A") -# field(INPA, "BL45P-MO-STEP-01:M4:HOMED") -# field(OUT, "@pmac.proto setIntVar(m445) BRICK1port") -#} -############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:M4:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:M4:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:M4:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:M4:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:M4:Mres PP") - field(INPC, "BL45P-MO-STEP-01:M4:Offset PP") - field(INPD, "BL45P-MO-STEP-01:M4:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:M4:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:M4:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:M4:DirectMotorSeq") - field(OUT, "@asyn(BRICK1,4,4)MOTOR_MOVE_ABS") - field(DESC, "X Chopper") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:M4:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:M4:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:M4:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,4,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:M4:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,4,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:M4:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,4,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:M4:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:M4:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:M4:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:M4:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:M4:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:M4:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:M4:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:M4:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,4,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:M4:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:M4:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:M4:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:M4:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:M4:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:M4:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,4,4)PMAC_OFFSET") -}# % macro, PMAC, The P prefix for the motor controller (must match P in pmacController.template) - -# this template defines a motor with two names:- -# (1) root is BL45P-MO-CHOP-01:VER, the macros fully define the name of the motor -# (2) 'numbered' names of the form BL45P-MO-STEP-01:Mx where x is the motor number -# names are both assigned to the same PV via aliases in the case basic_asyn_motor -# or simply duplicated for all other included templates, this approach works because -# the PVs all point to the same ASYN parameters and improves maintainability of this -# file - -# include motor record from the motor module -#% macro, __doc__, Basic template, including motor record and associated tags -#% macro, P , Device Prefix -#% macro, M , Device Suffix -#% macro, PORT , Asyn port for motor record -#% macro, ADDR , Address on controller -#% macro, DESC , Description, displayed on EDM screen -#% macro, MRES , Motor Step Size (EGU) -#% macro, DTYP , DTYP of record -#% macro, DIR , User Direction -#% macro, VBAS , Base Velocity (EGU/s) -#% macro, VELO , Velocity (EGU/s) -#% macro, VMAX , Max Velocity (EGU/s), defaults to VELO -#% macro, ACCL , Seconds to Velocity -#% macro, BDST , BL Distance (EGU) -#% macro, BVEL , BL Velocity (EGU/s) -#% macro, BACC , BL Seconds to Veloc. -#% macro, PREC , Display Precision -#% macro, EGU , Engineering Units -#% macro, DHLM , Dial High Limit -#% macro, DLLM , Dial Low Limit -#% macro, HLM , User High Limit -#% macro, LLM , User Low Limit -#% macro, HLSV , HW Lim. Violation Svr -#% macro, INIT , Startup commands -#% macro, SREV , Steps per Revolution -#% macro, RRES , Readback Step Size (EGU) -#% macro, TWV , Tweak Step Size (EGU) -#% macro, ERES , Encoder Step Size (EGU) -#% macro, JAR , Jog Acceleration (EGU/s^2) -#% macro, UEIP , Use Encoder If Present -#% macro, URIP , Use RDBL If Present -#% macro, RDBL , Readback Location, set URIP = 1 if you specify this -#% macro, RLNK , Readback output link -#% macro, RTRY , Max retry count -#% macro, DLY , Readback settle time (s) -#% macro, OFF , User Offset (EGU) -#% macro, RDBD , Retry Deadband (EGU) -#% macro, FOFF , Freeze Offset, 0=variable, 1=frozen -#% macro, ADEL , Alarm monitor deadband (EGU) -#% macro, NTM , New Target Monitor, only set to 0 for soft motors -#% macro, FEHIGH , HIGH limit for following error -#% macro, FEHIHI , HIHI limit for following error -#% macro, FEHHSV , HIHI alarm severity for following error -#% macro, FEHSV , HIGH alarm severity for following error -#% macro, SCALE , Scale factor, if pmacSetAxisScale is used this should be set -#% macro, HOMEVIS, If 1 then home is visible on the gui -#% macro, HOMEVISSTR, If HOMEVIS=0, then display this text on the gui instead -#% macro, name , Object name and gui association name -#% macro, alh , Set this to alh to add the motor to the alarm handler and send emails, -# set to '#' to comment out alh lines -#% macro, gda_name, Name to export this as to GDA -#% macro, gda_desc, Description to export this as to GDA - -# AUTOSAVE: level 0 = before record init, level 1 = before AND after record init -#% autosave 0 DVAL OFF -#% autosave 1 DIR DHLM DLLM TWV VBAS VELO ACCL BDST BVEL BACC RDBD EGU RTRY UEIP URIP DLY PREC DISA DISP FOFF OFF FRAC OMSL JVEL JAR ADEL MDEL -#% archiver 0.5 Monitor -#% archiver 0.5 Monitor RBV -#% archiver 10 Monitor OFF -#% archiver 10 Monitor MRES -#% gdatag,template,simpleMotor,,Y Chopper -#% gdatag,motor,rw,,RECORD,Motor -#% alh -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-CHOP-01:VER - -# This associates an edm screen with the template -# % gui, CHOP01.Y, edm, motor.edl, motor=BL45P-MO-CHOP-01:VER -# % gui, CHOP01.Y, edmembed, motor-embed-small.edl, motor=BL45P-MO-CHOP-01:VER,filename=motor.edl,box-label=Y Chopper - -# This associates a BOY screen with the template -# % gui, CHOP01.Y, boydetail, motorApp_opi/motor_detail.opi, P=BL45P-MO-CHOP-01,M=:VER,DESC=Y Chopper, name=CHOP01.Y -# % gui, CHOP01.Y, boyembed, motorApp_opi/motor_embed_box.opi, P=BL45P-MO-CHOP-01,M=:VER,DESC=Y Chopper, name=CHOP01.Y -# % gui, CHOP01.Y, boyembed, motorApp_opi/motor_embed.opi, P=BL45P-MO-CHOP-01,M=:VER,DESC=Y Chopper, name=CHOP01.Y -# FIXME: this should be in pmacUtil or tpmac -# % gui, CHOP01.Y, boyembed, motorApp_opi/motor_homed_embed.opi, P=BL45P-MO-CHOP-01,M=:VER - -# This makes the component icon reflect the status and severity -# % gui, CHOP01.Y, status, .MOVN -# % gui, CHOP01.Y, sevr - -# These define what PVs a motor detail screen should contain -# % gui, CHOP01.Y, statusbits, Status, .MSTA, Direction Positive, Done, High Limit, Home Limit, Unused, Closed Loop, Following Error, At Home, Encoder Present, Problem, Moving, Gain Support, Comms Error, Low Limit, Homed -# % gui, CHOP01.Y, statusbits, ELoss, :ELOSS, Encoder Loss, Amplifier Loss, Sys Fail -# % gui, CHOP01.Y, command, ELoss Clear, :ELOSSRC.A -# % gui, CHOP01.Y, statusbits, Limit Violation, .LVIO, Lim -# % gui, CHOP01.Y, statusbits, At High Limit, .HLS, High -# % gui, CHOP01.Y, statusbits, At Low Limit, .LLS, Low -# % gui, CHOP01.Y, demand, User High Limit, .HLM -# % gui, CHOP01.Y, demand, User Low Limit, .LLM -# % gui, CHOP01.Y, demand, Dial High Limit, .DHLM -# % gui, CHOP01.Y, demand, Dial Low Limit, .DLLM - -# % gui, CHOP01.Y, demand, Motor demand, .VAL -# % gui, CHOP01.Y, readback, Motor readback, .RBV -# % gui, CHOP01.Y, command, Stop, .STOP -# % gui, CHOP01.Y, command, Home Forward, .HOMF -# % gui, CHOP01.Y, command, Home Reverse, .HOMR -# % gui, CHOP01.Y, command, Jog Forward, .JOGF -# % gui, CHOP01.Y, command, Jog Reverse, .JOGR -# % gui, CHOP01.Y, command, Tweak Forward, .TWF -# % gui, CHOP01.Y, command, Tweak Reverse, .TWR -# % gui, CHOP01.Y, demand, Tweak Step, .TWV -# % gui, CHOP01.Y, command, Kill, :KILL.PROC, Kill -# % gui, CHOP01.Y, command, Sync VAL=RBV, .SYNC - -# % gui, CHOP01.Y, enum, Direction, .DIR -# % gui, CHOP01.Y, demand, User Offset, .OFF -# % gui, CHOP01.Y, enum, Set/Use, .SET -# % gui, CHOP01.Y, enum, Offset, .FOFF -# % gui, CHOP01.Y, enum, Use Encoder, .UEIP - -# % gui, CHOP01.Y, demand, Motor Step Size, .MRES -# % gui, CHOP01.Y, readback, Steps per Rev, .SREV -# % gui, CHOP01.Y, readback, EGUs per Rev, .UREV -# % gui, CHOP01.Y, demand, Encoder Step Size, .ERES -# % gui, CHOP01.Y, readback, Readback Step Size, .RRES -# % gui, CHOP01.Y, readback, Use Encoder if Present, .UEIP - -# % gui, CHOP01.Y, demand, Max Velocity, .VMAX -# % gui, CHOP01.Y, demand, Base Velocity, .VBAS -# % gui, CHOP01.Y, demand, Velocity, .VELO -# % gui, CHOP01.Y, demand, Secs to Velocity, .ACCL -# % gui, CHOP01.Y, demand, JVEL, .JVEL -# % gui, CHOP01.Y, demand, Jog Acceleration, .JAR -# % gui, CHOP01.Y, demand, Backlash Distance, .BDST -# % gui, CHOP01.Y, demand, Backlash Velocity, .BVEL -# % gui, CHOP01.Y, demand, Backlash Secs to Vel, .BACC -# % gui, CHOP01.Y, demand, Move Fraction, .FRAC -# % gui, CHOP01.Y, demand, Retry Deadband, .RDBD -# % gui, CHOP01.Y, demand, Max Retrys, .RTRY - -# % gui, CHOP01.Y, demand, PREC, .PREC -# % gui, CHOP01.Y, demand, EGU, .EGU - -# % gui, CHOP01.Y, demand, Output Specification, .OUT -# % gui, CHOP01.Y, readback, Readback Location, .RDBL -# % gui, CHOP01.Y, readback, Desired Output Loc, .DOL -# % gui, CHOP01.Y, readback, Output Mode Select, .OMSL -# % gui, CHOP01.Y, readback, Readback Out Link, .RLNK -# % gui, CHOP01.Y, demand, DMOV Input Link, .DINP -# % gui, CHOP01.Y, demand, RMP Input Link, .RINP -# % gui, CHOP01.Y, demand, Stop Out Link, .STOO - - -record(motor,"BL45P-MO-CHOP-01:VER") -{ - field(DESC,"Y Chopper") - field(DTYP,"asynMotor") - field(DIR,"0") - field(VELO,"720") - field(VBAS,"0") - field(ACCL,"0.01") - field(BDST,"0") - field(BVEL,"0") - field(BACC,"") - field(OUT,"@asyn(BRICK1,5)") - field(MRES,"0.000687") - field(PREC,"5") - field(EGU,"deg") - field(DHLM,"10000000") - field(DLLM,"-10000000") - field(HLM,"") - field(LLM,"") - field(HLSV,"MAJOR") - field(INIT,"") - field(RTRY,"0") - field(DLY,"0") - field(HVEL,"0") - field(SREV, "1000") - field(RRES, "") - field(TWV, "1") - field(ERES, "") - field(JVEL, "720") - field(JAR, "") - field(UEIP, "0") - field(URIP, "0") - field(RDBL, "") - field(VMAX, "720") - field(OFF, "0") - field(RDBD, "") - field(FOFF, "0") - field(ADEL, "0") - field(NTM, "1") - field(SDIS, "BL45P-MO-CHOP-01:VER:SDIS.VAL") - field(RLNK, "") -} - -# record that holds the ADDR -record(ao, "BL45P-MO-CHOP-01:VER:ADDR") { - field(PINI, "YES") - field(VAL, "5") -} - -# record that holds the PORT -record(stringout, "BL45P-MO-CHOP-01:VER:PORT") { - field(PINI, "YES") - field(VAL, "BRICK1") -} - -# record that holds the SCALE -record(ao, "BL45P-MO-CHOP-01:VER:SCALE") { - field(PINI, "YES") - field(VAL, "1") -} - -# Write a 1 to this record over Channel Access to disable the motor record and prevent CA writes to any field -# including the demand field. -record(ai, "BL45P-MO-CHOP-01:VER:USER:SDIS") { - field(VAL, "0") - field(FLNK, "BL45P-MO-CHOP-01:VER:SDIS") -} - -# Note: This record forms part of the interface to auto-homing, which uses the "A" field to disable the motor record -# when homing. -# record that will disable and re-enable record if any of its inputs are non-zero -record(calcout, "BL45P-MO-CHOP-01:VER:SDIS") { - field(DESC, "Disable on non-zero input") - field(INPL, "BL45P-MO-CHOP-01:VER:USER:SDIS") - field(CALC, "(A|B|C|D|E|F|G|H|I|J|K|L)>0") - field(OUT, "BL45P-MO-CHOP-01:VER.DISP PP") -} - -# dummy record that looks like a kill command -record(ao, "BL45P-MO-CHOP-01:VER:KILL") { - field(VAL, "1") -} - -# dummy record that looks like eloss status -#% archiver 10 Monitor VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-CHOP-01:VER:ELOSS -record(ai, "BL45P-MO-CHOP-01:VER:ELOSS") { - field(PINI, "YES") - field(HIHI, "1") - field(HHSV, "MAJOR") -} - -# dummy record that looks like an eloss reset -record(calcout, "BL45P-MO-CHOP-01:VER:ELOSSRC") { -} - -# check if SYNC has been pressed -record(calcout, "BL45P-MO-CHOP-01:VER:CHECK_SYNC") { - field(INPA, "BL45P-MO-CHOP-01:VER.SYNC CP") - field(CALC, "A>0") - field(OOPT, "When Non-zero") - field(OUT, "BL45P-MO-CHOP-01:VER:MR_MOVE_WRITE.PROC PP") -} - -# dummy record that looks like a record to notify a CS about a raw motor move -record(longout, "BL45P-MO-CHOP-01:VER:MR_MOVE_WRITE") { -} - -#Record to calculate the following error -#% archiver 1 Monitor -record(calc, "BL45P-MO-CHOP-01:VER:FERROR") -{ - field(DESC,"Following Error") - field(INPA,"BL45P-MO-CHOP-01:VER.RMP CP") - field(INPB,"BL45P-MO-CHOP-01:VER.REP NPP") - field(INPC,"BL45P-MO-CHOP-01:VER.MRES NPP") - field(INPD,"BL45P-MO-CHOP-01:VER.ERES NPP") - field(CALC,"ABS((A*C)-(B*D))") - field(FLNK,"BL45P-MO-CHOP-01:VER:FERRORMAX") - field(PREC,"5") - field(EGU, "deg") -} - -#Record to store the maximum following error -#% archiver 10 Monitor VAL -#% autosave 1 VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-CHOP-01:VER:FERRORMAX -record(calc, "BL45P-MO-CHOP-01:VER:FERRORMAX") -{ - field(DESC,"Following Error Max") - field(INPA,"BL45P-MO-CHOP-01:VER:FERROR.VAL") - field(INPB,"BL45P-MO-CHOP-01:VER:FERRORMAX.VAL") - field(CALC,"(A>B)?A:B") - field(HIGH,"0") - field(HIHI,"0") - field(HHSV,"NO_ALARM") - field(HSV, "NO_ALARM") - field(PREC,"5") - field(EGU, "deg") -} - -#Record to reset the maximum following error -record(bo, "BL45P-MO-CHOP-01:VER:FEMAXRESET") -{ - field(DESC,"Reset max following error") - field(DTYP,"Soft Channel") - field(OUT, "BL45P-MO-CHOP-01:VER:FERRORMAX.VAL") - field(VAL, "0") -} - - -#Record to determin HOME button visibility on the motor.edl screen. -record(bo, "BL45P-MO-CHOP-01:VER:HOMEVIS") -{ - field(DESC,"Home button visibility") - field(DTYP,"Soft Channel") - field(VAL, "0") - field(ZNAM, "Invisible") - field(ONAM, "Visible") -} - -#Record to display a message if the HOME buttons are not visible (if HOMEVIS=0). -record(stringout, "BL45P-MO-CHOP-01:VER:HOMEVISSTR") -{ - field(DESC, "Home visibility string") - field(DTYP,"Soft Channel") - field(VAL, "Absolute Encoder") -} - - -# numbered name aliases for all PVs in basic_asyn_motor.template -alias(BL45P-MO-CHOP-01:VER, BL45P-MO-STEP-01:M5) -alias(BL45P-MO-CHOP-01:VER:ADDR, BL45P-MO-STEP-01:M5:ADDR) -alias(BL45P-MO-CHOP-01:VER:PORT, BL45P-MO-STEP-01:M5:PORT) -alias(BL45P-MO-CHOP-01:VER:SCALE, BL45P-MO-STEP-01:M5:SCALE) -alias(BL45P-MO-CHOP-01:VER:USER:SDIS, BL45P-MO-STEP-01M5:USER:SDIS) -alias(BL45P-MO-CHOP-01:VER:SDIS, BL45P-MO-STEP-01:M5:SDIS) -alias(BL45P-MO-CHOP-01:VER:KILL, BL45P-MO-STEP-01:M5:KILL) -alias(BL45P-MO-CHOP-01:VER:ELOSS, BL45P-MO-STEP-01:M5:ELOSS) -alias(BL45P-MO-CHOP-01:VER:ELOSSRC, BL45P-MO-STEP-01:M5:ELOSSRC) -alias(BL45P-MO-CHOP-01:VER:MR_MOVE_WRITE, BL45P-MO-STEP-01:M5:MR_MOVE_WRITE) -alias(BL45P-MO-CHOP-01:VER:CHECK_SYNC, BL45P-MO-STEP-01:M5:CHECK_SYNC) -alias(BL45P-MO-CHOP-01:VER:FERROR, BL45P-MO-STEP-01:M5:FERROR) -alias(BL45P-MO-CHOP-01:VER:FERRORMAX, BL45P-MO-STEP-01:M5:FERRORMAX) -alias(BL45P-MO-CHOP-01:VER:FEMAXRESET, BL45P-MO-STEP-01:M5:FEMAXRESET) -alias(BL45P-MO-CHOP-01:VER:HOMEVIS, BL45P-MO-STEP-01:M5:HOMEVIS) -alias(BL45P-MO-CHOP-01:VER:HOMEVISSTR, BL45P-MO-STEP-01:M5:HOMEVISSTR) - - -############################################################ -# -# Template to allow coordinate system kinematics to know -# the resolution of each real motor -# -# Also to allow control of CS mappings of real motors -# -############################################################### - - -############################################################### -# Mres and Offset -############################################################### - -#calc mres to be written -record(calcout, "BL45P-MO-CHOP-01:VER:MRES_CALC") { - field(CALC, "B?-A*C:A*C") - field(INPA, "BL45P-MO-CHOP-01:VER.MRES CP") - field(INPB, "BL45P-MO-CHOP-01:VER.DIR CP") - field(INPC, "BL45P-MO-CHOP-01:VER:SCALE") - field(OUT, "BL45P-MO-CHOP-01:VER:MRES_SET PP") - field(OOPT, "When Non-zero") -} - -record(ao, "BL45P-MO-CHOP-01:VER:MRES_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4800+5`") - field(FLNK, "BL45P-MO-CHOP-01:VER:MR_MOVE_WRITE") -} - -#calc offset to be written -record(calcout, "BL45P-MO-CHOP-01:VER:OFF_SET_CALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-CHOP-01:VER.OFF CP") - field(OUT, "BL45P-MO-CHOP-01:VER:OFF_SET PP") -} - -record(ao, "BL45P-MO-CHOP-01:VER:OFF_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4900+5`") - field(FLNK, "BL45P-MO-CHOP-01:VER:MR_MOVE_WRITE") -} - - -############################################################### -# Coordinate System mapping control -############################################################### - -# Read back which CS number the axis is in -record(ai, "BL45P-MO-CHOP-01:VER:CsRaw_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,5)PMAC_C_AXIS_CS") - field(PINI, "NO") - field(SCAN, "I/O Intr") -} - -# Set which CS the axis is in via CSController Port Name -record(mbbo, "BL45P-MO-CHOP-01:VER:CsPort") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,5)PMAC_C_GROUP_CS_PORT") -} - -record(mbbi, "BL45P-MO-CHOP-01:VER:CsPort_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,5)PMAC_C_GROUP_CS_PORT_RBV") - field(SCAN, "I/O Intr") -} - -# set the axis' CS assignment (one of A B C U V W X Y Z I) -record(stringout, "BL45P-MO-CHOP-01:VER:CsAxis") { - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(BRICK1,5)PMAC_C_GROUP_ASSIGN") -} - -record(stringin, "BL45P-MO-CHOP-01:VER:CsAxis_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,5)PMAC_C_GROUP_ASSIGN_RBV") - field(SCAN, "I/O Intr") -}# These are the supporting records for doing kill, eloss, and adding autohome -# support to a motor record - -#% macro, SPORT, Asyn port for eloss commands -# usually PMAC_S for pmacs, the name of the pmacAsynIpPort for bricks -#% macro, HOME, Prefix for autohome instance. Defaults to BL45P-MO-CHOP-01. If unspecified, -# the template contains enough records to keep the motor record happy -#% macro, PMAC, Prefix for pmacStatus instance. Needed to get axis descriptions -# onto pmacStatusAxis screen -#% macro, ALLOW_HOMED_SET, Set to a blank to allow this axis to have its homed -# status manually. This is set to a comment character by default. - -# disable motor when homing -record(calcout, "BL45P-MO-CHOP-01:VER:SDIS") { -# field(INPA, "BL45P-MO-CHOP-01:HM:HOMING CP") -} - -# dummy record in case we aren't homing -record(busy, "BL45P-MO-CHOP-01:HM:HOMING") { -} - -# Monitor homing status -record(bi, "BL45P-MO-CHOP-01:VER:HOMING") { - field(DESC, "Monitor homing status of autohome") - field(INP, "BL45P-MO-CHOP-01:HM:HOMING CP") - field(FLNK, "BL45P-MO-CHOP-01:VER:HOMING_CALC") - field(ZNAM, "Done") - field(ONAM, "Busy") -} - -# report to the driver if this motor is being autohomed -record(calcout, BL45P-MO-CHOP-01:VER:HOMING_CALC) -{ - field(PINI, 1) - field(INPA, "BL45P-MO-CHOP-01:VER:HOMING") - field(CALC, "A") - field(OUT, "BL45P-MO-CHOP-01:VER:HOMING_STATUS PP") -} - -# report to the driver if this motor is being autohomed -record(ao, BL45P-MO-CHOP-01:VER:HOMING_STATUS) -{ - field(DESC, "driver update on autohome") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,5)HOMING_STATUS") -} - - -# reports position of motor without offset -record(ai, "BL45P-MO-CHOP-01:VER:HMPOS_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#5P") - field(DESC, "Y Chopper") - field(SCAN, "I/O Intr") - field(PINI, "YES") - field(PREC, "5") - field(EGU, "deg") -} - -record(calcout, "BL45P-MO-CHOP-01:VER:HMPOS:CALC") { - field(INPA, "BL45P-MO-CHOP-01:VER.MRES CP") - field(INPB, "BL45P-MO-CHOP-01:VER:SCALE") - field(INPC, "BL45P-MO-CHOP-01:VER:HMPOS_RBV CP") - field(CALC, "A*B*C") - field(OUT, "BL45P-MO-CHOP-01:VER:HMPOS PP") -} - -record(ai, "BL45P-MO-CHOP-01:VER:HMPOS") { - field(DESC, "Y Chopper") - field(PREC, "5") - field(EGU, "deg") -} - -# at startup, tell autohome template about this motor -record(stringout, "BL45P-MO-CHOP-01:VER:SETHMPV") { - field(PINI, "YES") - field(VAL, "BL45P-MO-CHOP-01:VER") - field(OUT, "BL45P-MO-CHOP-01:HM:M5PV PP") -} - -record(stringout, "BL45P-MO-CHOP-01:HM:M5PV"){ -} - -# define a kill record -record(ao, "BL45P-MO-CHOP-01:VER:KILL") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,5)PMAC_C_KILL_AXIS") - field(VAL, "0") -} - -record(calc, "BL45P-MO-CHOP-01:VER:ELOSSVAR") { - field(CALC, "464+5") - field(PINI, "YES") -} - -record(ai, "BL45P-MO-CHOP-01:VER:ELOSS") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_P`464+5`") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-MO-CHOP-01:VER:ELOSSRC") { - field(OUT, "BL45P-MO-CHOP-01:VER:SEND_ELOSSRC PP") - field(DESC, "Write 0 to A to reset Eloss") - field(CALC, "A") - field(A, "0") -} - -record(ao, "BL45P-MO-CHOP-01:VER:SEND_ELOSSRC") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_VIS_P`464+5`") -} - -# Overwrite the description of pmacStatus -record(stringout, "BL45P-MO-STEP-01:AXIS5:DESC"){ - field(VAL, "CHOP01.Y Y Chopper") -} - -#record(bo, "BL45P-MO-CHOP-01:VER:HOMED") { -# field(DESC, "Set homed status for axis 5") -# field(ZNAM, "NOT HOMED") -# field(ONAM, "HOMED") -# field(FLNK, "BL45P-MO-CHOP-01:VER:HOMEDSET") -#} - -#record(calcout, "BL45P-MO-CHOP-01:VER:HOMEDSET") { -# field(DESC, "Homed status") -# field(DTYP, "stream") -# field(CALC, "A") -# field(INPA, "BL45P-MO-CHOP-01:VER:HOMED") -# field(OUT, "@pmac.proto setIntVar(m545) BRICK1port") -#} -############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-CHOP-01:VER:DirectDemand") -{ - field(FLNK, "BL45P-MO-CHOP-01:VER:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-CHOP-01:VER:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-CHOP-01:VER:DirectDemand") - field(INPB, "BL45P-MO-CHOP-01:VER:Mres PP") - field(INPC, "BL45P-MO-CHOP-01:VER:Offset PP") - field(INPD, "BL45P-MO-CHOP-01:VER:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-CHOP-01:VER:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-CHOP-01:VER:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-CHOP-01:VER:DirectMotorSeq") - field(OUT, "@asyn(BRICK1,5,4)MOTOR_MOVE_ABS") - field(DESC, "Y Chopper") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-CHOP-01:VER:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-CHOP-01:VER:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-CHOP-01:VER:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,5,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-CHOP-01:VER:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,5,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-CHOP-01:VER:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,5,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-CHOP-01:VER:MresSource") -} - -record(scalcout, BL45P-MO-CHOP-01:VER:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-CHOP-01:VER:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-CHOP-01:VER:Mres.INPA CA") - field(FLNK, "BL45P-MO-CHOP-01:VER:OffsetSource") -} - -record(scalcout, "BL45P-MO-CHOP-01:VER:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-CHOP-01:VER:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-CHOP-01:VER:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,5,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-CHOP-01:VER:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-CHOP-01:VER:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-CHOP-01:VER:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-CHOP-01:VER:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-CHOP-01:VER:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-CHOP-01:VER:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,5,4)PMAC_OFFSET") -} - -# add numbered name aliases for above 3 templates -############################################################ -# -# Template to allow coordinate system kinematics to know -# the resolution of each real motor -# -# Also to allow control of CS mappings of real motors -# -############################################################### - - -############################################################### -# Mres and Offset -############################################################### - -#calc mres to be written -record(calcout, "BL45P-MO-STEP-01:M5:MRES_CALC") { - field(CALC, "B?-A*C:A*C") - field(INPA, "BL45P-MO-STEP-01:M5.MRES CP") - field(INPB, "BL45P-MO-STEP-01:M5.DIR CP") - field(INPC, "BL45P-MO-STEP-01:M5:SCALE") - field(OUT, "BL45P-MO-STEP-01:M5:MRES_SET PP") - field(OOPT, "When Non-zero") -} - -record(ao, "BL45P-MO-STEP-01:M5:MRES_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4800+5`") - field(FLNK, "BL45P-MO-STEP-01:M5:MR_MOVE_WRITE") -} - -#calc offset to be written -record(calcout, "BL45P-MO-STEP-01:M5:OFF_SET_CALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-STEP-01:M5.OFF CP") - field(OUT, "BL45P-MO-STEP-01:M5:OFF_SET PP") -} - -record(ao, "BL45P-MO-STEP-01:M5:OFF_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4900+5`") - field(FLNK, "BL45P-MO-STEP-01:M5:MR_MOVE_WRITE") -} - - -############################################################### -# Coordinate System mapping control -############################################################### - -# Read back which CS number the axis is in -record(ai, "BL45P-MO-STEP-01:M5:CsRaw_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,5)PMAC_C_AXIS_CS") - field(PINI, "NO") - field(SCAN, "I/O Intr") -} - -# Set which CS the axis is in via CSController Port Name -record(mbbo, "BL45P-MO-STEP-01:M5:CsPort") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,5)PMAC_C_GROUP_CS_PORT") -} - -record(mbbi, "BL45P-MO-STEP-01:M5:CsPort_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,5)PMAC_C_GROUP_CS_PORT_RBV") - field(SCAN, "I/O Intr") -} - -# set the axis' CS assignment (one of A B C U V W X Y Z I) -record(stringout, "BL45P-MO-STEP-01:M5:CsAxis") { - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(BRICK1,5)PMAC_C_GROUP_ASSIGN") -} - -record(stringin, "BL45P-MO-STEP-01:M5:CsAxis_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,5)PMAC_C_GROUP_ASSIGN_RBV") - field(SCAN, "I/O Intr") -}# These are the supporting records for doing kill, eloss, and adding autohome -# support to a motor record - -#% macro, SPORT, Asyn port for eloss commands -# usually PMAC_S for pmacs, the name of the pmacAsynIpPort for bricks -#% macro, HOME, Prefix for autohome instance. Defaults to BL45P-MO-STEP-01:. If unspecified, -# the template contains enough records to keep the motor record happy -#% macro, PMAC, Prefix for pmacStatus instance. Needed to get axis descriptions -# onto pmacStatusAxis screen -#% macro, ALLOW_HOMED_SET, Set to a blank to allow this axis to have its homed -# status manually. This is set to a comment character by default. - -# disable motor when homing -record(calcout, "BL45P-MO-STEP-01:M5:SDIS") { -# field(INPA, "BL45P-MO-STEP-01::HM:HOMING CP") -} - -# dummy record in case we aren't homing -record(busy, "BL45P-MO-STEP-01::HM:HOMING") { -} - -# Monitor homing status -record(bi, "BL45P-MO-STEP-01:M5:HOMING") { - field(DESC, "Monitor homing status of autohome") - field(INP, "BL45P-MO-STEP-01::HM:HOMING CP") - field(FLNK, "BL45P-MO-STEP-01:M5:HOMING_CALC") - field(ZNAM, "Done") - field(ONAM, "Busy") -} - -# report to the driver if this motor is being autohomed -record(calcout, BL45P-MO-STEP-01:M5:HOMING_CALC) -{ - field(PINI, 1) - field(INPA, "BL45P-MO-STEP-01:M5:HOMING") - field(CALC, "A") - field(OUT, "BL45P-MO-STEP-01:M5:HOMING_STATUS PP") -} - -# report to the driver if this motor is being autohomed -record(ao, BL45P-MO-STEP-01:M5:HOMING_STATUS) -{ - field(DESC, "driver update on autohome") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,5)HOMING_STATUS") -} - - -# reports position of motor without offset -record(ai, "BL45P-MO-STEP-01:M5:HMPOS_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#5P") - field(DESC, "Y Chopper") - field(SCAN, "I/O Intr") - field(PINI, "YES") - field(PREC, "5") - field(EGU, "deg") -} - -record(calcout, "BL45P-MO-STEP-01:M5:HMPOS:CALC") { - field(INPA, "BL45P-MO-STEP-01:M5.MRES CP") - field(INPB, "BL45P-MO-STEP-01:M5:SCALE") - field(INPC, "BL45P-MO-STEP-01:M5:HMPOS_RBV CP") - field(CALC, "A*B*C") - field(OUT, "BL45P-MO-STEP-01:M5:HMPOS PP") -} - -record(ai, "BL45P-MO-STEP-01:M5:HMPOS") { - field(DESC, "Y Chopper") - field(PREC, "5") - field(EGU, "deg") -} - -# at startup, tell autohome template about this motor -record(stringout, "BL45P-MO-STEP-01:M5:SETHMPV") { - field(PINI, "YES") - field(VAL, "BL45P-MO-STEP-01:M5") - field(OUT, "BL45P-MO-STEP-01::HM:M5PV PP") -} - -record(stringout, "BL45P-MO-STEP-01::HM:M5PV"){ -} - -# define a kill record -record(ao, "BL45P-MO-STEP-01:M5:KILL") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,5)PMAC_C_KILL_AXIS") - field(VAL, "0") -} - -record(calc, "BL45P-MO-STEP-01:M5:ELOSSVAR") { - field(CALC, "464+5") - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STEP-01:M5:ELOSS") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_P`464+5`") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-MO-STEP-01:M5:ELOSSRC") { - field(OUT, "BL45P-MO-STEP-01:M5:SEND_ELOSSRC PP") - field(DESC, "Write 0 to A to reset Eloss") - field(CALC, "A") - field(A, "0") -} - -record(ao, "BL45P-MO-STEP-01:M5:SEND_ELOSSRC") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_VIS_P`464+5`") -} - -# Overwrite the description of pmacStatus -record(stringout, "BL45P-MO-STEP-01:AXIS5:DESC"){ - field(VAL, "CHOP01.Y Y Chopper") -} - -#record(bo, "BL45P-MO-STEP-01:M5:HOMED") { -# field(DESC, "Set homed status for axis 5") -# field(ZNAM, "NOT HOMED") -# field(ONAM, "HOMED") -# field(FLNK, "BL45P-MO-STEP-01:M5:HOMEDSET") -#} - -#record(calcout, "BL45P-MO-STEP-01:M5:HOMEDSET") { -# field(DESC, "Homed status") -# field(DTYP, "stream") -# field(CALC, "A") -# field(INPA, "BL45P-MO-STEP-01:M5:HOMED") -# field(OUT, "@pmac.proto setIntVar(m545) BRICK1port") -#} -############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:M5:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:M5:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:M5:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:M5:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:M5:Mres PP") - field(INPC, "BL45P-MO-STEP-01:M5:Offset PP") - field(INPD, "BL45P-MO-STEP-01:M5:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:M5:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:M5:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:M5:DirectMotorSeq") - field(OUT, "@asyn(BRICK1,5,4)MOTOR_MOVE_ABS") - field(DESC, "Y Chopper") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:M5:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:M5:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:M5:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,5,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:M5:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,5,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:M5:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,5,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:M5:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:M5:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:M5:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:M5:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:M5:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:M5:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:M5:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:M5:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,5,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:M5:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:M5:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:M5:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:M5:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:M5:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:M5:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,5,4)PMAC_OFFSET") -}# % macro, PMAC, The P prefix for the motor controller (must match P in pmacController.template) - -# this template defines a motor with two names:- -# (1) root is BL45P-MO-STAGE-01:X, the macros fully define the name of the motor -# (2) 'numbered' names of the form BL45P-MO-STEP-01:Mx where x is the motor number -# names are both assigned to the same PV via aliases in the case basic_asyn_motor -# or simply duplicated for all other included templates, this approach works because -# the PVs all point to the same ASYN parameters and improves maintainability of this -# file - -# include motor record from the motor module -#% macro, __doc__, Basic template, including motor record and associated tags -#% macro, P , Device Prefix -#% macro, M , Device Suffix -#% macro, PORT , Asyn port for motor record -#% macro, ADDR , Address on controller -#% macro, DESC , Description, displayed on EDM screen -#% macro, MRES , Motor Step Size (EGU) -#% macro, DTYP , DTYP of record -#% macro, DIR , User Direction -#% macro, VBAS , Base Velocity (EGU/s) -#% macro, VELO , Velocity (EGU/s) -#% macro, VMAX , Max Velocity (EGU/s), defaults to VELO -#% macro, ACCL , Seconds to Velocity -#% macro, BDST , BL Distance (EGU) -#% macro, BVEL , BL Velocity (EGU/s) -#% macro, BACC , BL Seconds to Veloc. -#% macro, PREC , Display Precision -#% macro, EGU , Engineering Units -#% macro, DHLM , Dial High Limit -#% macro, DLLM , Dial Low Limit -#% macro, HLM , User High Limit -#% macro, LLM , User Low Limit -#% macro, HLSV , HW Lim. Violation Svr -#% macro, INIT , Startup commands -#% macro, SREV , Steps per Revolution -#% macro, RRES , Readback Step Size (EGU) -#% macro, TWV , Tweak Step Size (EGU) -#% macro, ERES , Encoder Step Size (EGU) -#% macro, JAR , Jog Acceleration (EGU/s^2) -#% macro, UEIP , Use Encoder If Present -#% macro, URIP , Use RDBL If Present -#% macro, RDBL , Readback Location, set URIP = 1 if you specify this -#% macro, RLNK , Readback output link -#% macro, RTRY , Max retry count -#% macro, DLY , Readback settle time (s) -#% macro, OFF , User Offset (EGU) -#% macro, RDBD , Retry Deadband (EGU) -#% macro, FOFF , Freeze Offset, 0=variable, 1=frozen -#% macro, ADEL , Alarm monitor deadband (EGU) -#% macro, NTM , New Target Monitor, only set to 0 for soft motors -#% macro, FEHIGH , HIGH limit for following error -#% macro, FEHIHI , HIHI limit for following error -#% macro, FEHHSV , HIHI alarm severity for following error -#% macro, FEHSV , HIGH alarm severity for following error -#% macro, SCALE , Scale factor, if pmacSetAxisScale is used this should be set -#% macro, HOMEVIS, If 1 then home is visible on the gui -#% macro, HOMEVISSTR, If HOMEVIS=0, then display this text on the gui instead -#% macro, name , Object name and gui association name -#% macro, alh , Set this to alh to add the motor to the alarm handler and send emails, -# set to '#' to comment out alh lines -#% macro, gda_name, Name to export this as to GDA -#% macro, gda_desc, Description to export this as to GDA - -# AUTOSAVE: level 0 = before record init, level 1 = before AND after record init -#% autosave 0 DVAL OFF -#% autosave 1 DIR DHLM DLLM TWV VBAS VELO ACCL BDST BVEL BACC RDBD EGU RTRY UEIP URIP DLY PREC DISA DISP FOFF OFF FRAC OMSL JVEL JAR ADEL MDEL -#% archiver 0.5 Monitor -#% archiver 0.5 Monitor RBV -#% archiver 10 Monitor OFF -#% archiver 10 Monitor MRES -#% gdatag,template,simpleMotor,,X Stage -#% gdatag,motor,rw,,RECORD,Motor -#% alh -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:X - -# This associates an edm screen with the template -# % gui, SAMP01.X, edm, motor.edl, motor=BL45P-MO-STAGE-01:X -# % gui, SAMP01.X, edmembed, motor-embed-small.edl, motor=BL45P-MO-STAGE-01:X,filename=motor.edl,box-label=X Stage - -# This associates a BOY screen with the template -# % gui, SAMP01.X, boydetail, motorApp_opi/motor_detail.opi, P=BL45P-MO-STAGE-01,M=:X,DESC=X Stage, name=SAMP01.X -# % gui, SAMP01.X, boyembed, motorApp_opi/motor_embed_box.opi, P=BL45P-MO-STAGE-01,M=:X,DESC=X Stage, name=SAMP01.X -# % gui, SAMP01.X, boyembed, motorApp_opi/motor_embed.opi, P=BL45P-MO-STAGE-01,M=:X,DESC=X Stage, name=SAMP01.X -# FIXME: this should be in pmacUtil or tpmac -# % gui, SAMP01.X, boyembed, motorApp_opi/motor_homed_embed.opi, P=BL45P-MO-STAGE-01,M=:X - -# This makes the component icon reflect the status and severity -# % gui, SAMP01.X, status, .MOVN -# % gui, SAMP01.X, sevr - -# These define what PVs a motor detail screen should contain -# % gui, SAMP01.X, statusbits, Status, .MSTA, Direction Positive, Done, High Limit, Home Limit, Unused, Closed Loop, Following Error, At Home, Encoder Present, Problem, Moving, Gain Support, Comms Error, Low Limit, Homed -# % gui, SAMP01.X, statusbits, ELoss, :ELOSS, Encoder Loss, Amplifier Loss, Sys Fail -# % gui, SAMP01.X, command, ELoss Clear, :ELOSSRC.A -# % gui, SAMP01.X, statusbits, Limit Violation, .LVIO, Lim -# % gui, SAMP01.X, statusbits, At High Limit, .HLS, High -# % gui, SAMP01.X, statusbits, At Low Limit, .LLS, Low -# % gui, SAMP01.X, demand, User High Limit, .HLM -# % gui, SAMP01.X, demand, User Low Limit, .LLM -# % gui, SAMP01.X, demand, Dial High Limit, .DHLM -# % gui, SAMP01.X, demand, Dial Low Limit, .DLLM - -# % gui, SAMP01.X, demand, Motor demand, .VAL -# % gui, SAMP01.X, readback, Motor readback, .RBV -# % gui, SAMP01.X, command, Stop, .STOP -# % gui, SAMP01.X, command, Home Forward, .HOMF -# % gui, SAMP01.X, command, Home Reverse, .HOMR -# % gui, SAMP01.X, command, Jog Forward, .JOGF -# % gui, SAMP01.X, command, Jog Reverse, .JOGR -# % gui, SAMP01.X, command, Tweak Forward, .TWF -# % gui, SAMP01.X, command, Tweak Reverse, .TWR -# % gui, SAMP01.X, demand, Tweak Step, .TWV -# % gui, SAMP01.X, command, Kill, :KILL.PROC, Kill -# % gui, SAMP01.X, command, Sync VAL=RBV, .SYNC - -# % gui, SAMP01.X, enum, Direction, .DIR -# % gui, SAMP01.X, demand, User Offset, .OFF -# % gui, SAMP01.X, enum, Set/Use, .SET -# % gui, SAMP01.X, enum, Offset, .FOFF -# % gui, SAMP01.X, enum, Use Encoder, .UEIP - -# % gui, SAMP01.X, demand, Motor Step Size, .MRES -# % gui, SAMP01.X, readback, Steps per Rev, .SREV -# % gui, SAMP01.X, readback, EGUs per Rev, .UREV -# % gui, SAMP01.X, demand, Encoder Step Size, .ERES -# % gui, SAMP01.X, readback, Readback Step Size, .RRES -# % gui, SAMP01.X, readback, Use Encoder if Present, .UEIP - -# % gui, SAMP01.X, demand, Max Velocity, .VMAX -# % gui, SAMP01.X, demand, Base Velocity, .VBAS -# % gui, SAMP01.X, demand, Velocity, .VELO -# % gui, SAMP01.X, demand, Secs to Velocity, .ACCL -# % gui, SAMP01.X, demand, JVEL, .JVEL -# % gui, SAMP01.X, demand, Jog Acceleration, .JAR -# % gui, SAMP01.X, demand, Backlash Distance, .BDST -# % gui, SAMP01.X, demand, Backlash Velocity, .BVEL -# % gui, SAMP01.X, demand, Backlash Secs to Vel, .BACC -# % gui, SAMP01.X, demand, Move Fraction, .FRAC -# % gui, SAMP01.X, demand, Retry Deadband, .RDBD -# % gui, SAMP01.X, demand, Max Retrys, .RTRY - -# % gui, SAMP01.X, demand, PREC, .PREC -# % gui, SAMP01.X, demand, EGU, .EGU - -# % gui, SAMP01.X, demand, Output Specification, .OUT -# % gui, SAMP01.X, readback, Readback Location, .RDBL -# % gui, SAMP01.X, readback, Desired Output Loc, .DOL -# % gui, SAMP01.X, readback, Output Mode Select, .OMSL -# % gui, SAMP01.X, readback, Readback Out Link, .RLNK -# % gui, SAMP01.X, demand, DMOV Input Link, .DINP -# % gui, SAMP01.X, demand, RMP Input Link, .RINP -# % gui, SAMP01.X, demand, Stop Out Link, .STOO - - -record(motor,"BL45P-MO-STAGE-01:X") -{ - field(DESC,"X Stage") - field(DTYP,"asynMotor") - field(DIR,"0") - field(VELO,"5") - field(VBAS,"0") - field(ACCL,"0.5") - field(BDST,"0") - field(BVEL,"0") - field(BACC,"") - field(OUT,"@asyn(BRICK1,6)") - field(MRES,"0.0001") - field(PREC,"3") - field(EGU,"mm") - field(DHLM,"50.5") - field(DLLM,"0.1") - field(HLM,"") - field(LLM,"") - field(HLSV,"MAJOR") - field(INIT,"") - field(RTRY,"0") - field(DLY,"0") - field(HVEL,"0") - field(SREV, "1000") - field(RRES, "") - field(TWV, "1") - field(ERES, "") - field(JVEL, "5") - field(JAR, "") - field(UEIP, "0") - field(URIP, "0") - field(RDBL, "") - field(VMAX, "5") - field(OFF, "0") - field(RDBD, "") - field(FOFF, "0") - field(ADEL, "0") - field(NTM, "1") - field(SDIS, "BL45P-MO-STAGE-01:X:SDIS.VAL") - field(RLNK, "") -} - -# record that holds the ADDR -record(ao, "BL45P-MO-STAGE-01:X:ADDR") { - field(PINI, "YES") - field(VAL, "6") -} - -# record that holds the PORT -record(stringout, "BL45P-MO-STAGE-01:X:PORT") { - field(PINI, "YES") - field(VAL, "BRICK1") -} - -# record that holds the SCALE -record(ao, "BL45P-MO-STAGE-01:X:SCALE") { - field(PINI, "YES") - field(VAL, "1") -} - -# Write a 1 to this record over Channel Access to disable the motor record and prevent CA writes to any field -# including the demand field. -record(ai, "BL45P-MO-STAGE-01:X:USER:SDIS") { - field(VAL, "0") - field(FLNK, "BL45P-MO-STAGE-01:X:SDIS") -} - -# Note: This record forms part of the interface to auto-homing, which uses the "A" field to disable the motor record -# when homing. -# record that will disable and re-enable record if any of its inputs are non-zero -record(calcout, "BL45P-MO-STAGE-01:X:SDIS") { - field(DESC, "Disable on non-zero input") - field(INPL, "BL45P-MO-STAGE-01:X:USER:SDIS") - field(CALC, "(A|B|C|D|E|F|G|H|I|J|K|L)>0") - field(OUT, "BL45P-MO-STAGE-01:X.DISP PP") -} - -# dummy record that looks like a kill command -record(ao, "BL45P-MO-STAGE-01:X:KILL") { - field(VAL, "1") -} - -# dummy record that looks like eloss status -#% archiver 10 Monitor VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:X:ELOSS -record(ai, "BL45P-MO-STAGE-01:X:ELOSS") { - field(PINI, "YES") - field(HIHI, "1") - field(HHSV, "MAJOR") -} - -# dummy record that looks like an eloss reset -record(calcout, "BL45P-MO-STAGE-01:X:ELOSSRC") { -} - -# check if SYNC has been pressed -record(calcout, "BL45P-MO-STAGE-01:X:CHECK_SYNC") { - field(INPA, "BL45P-MO-STAGE-01:X.SYNC CP") - field(CALC, "A>0") - field(OOPT, "When Non-zero") - field(OUT, "BL45P-MO-STAGE-01:X:MR_MOVE_WRITE.PROC PP") -} - -# dummy record that looks like a record to notify a CS about a raw motor move -record(longout, "BL45P-MO-STAGE-01:X:MR_MOVE_WRITE") { -} - -#Record to calculate the following error -#% archiver 1 Monitor -record(calc, "BL45P-MO-STAGE-01:X:FERROR") -{ - field(DESC,"Following Error") - field(INPA,"BL45P-MO-STAGE-01:X.RMP CP") - field(INPB,"BL45P-MO-STAGE-01:X.REP NPP") - field(INPC,"BL45P-MO-STAGE-01:X.MRES NPP") - field(INPD,"BL45P-MO-STAGE-01:X.ERES NPP") - field(CALC,"ABS((A*C)-(B*D))") - field(FLNK,"BL45P-MO-STAGE-01:X:FERRORMAX") - field(PREC,"3") - field(EGU, "mm") -} - -#Record to store the maximum following error -#% archiver 10 Monitor VAL -#% autosave 1 VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:X:FERRORMAX -record(calc, "BL45P-MO-STAGE-01:X:FERRORMAX") -{ - field(DESC,"Following Error Max") - field(INPA,"BL45P-MO-STAGE-01:X:FERROR.VAL") - field(INPB,"BL45P-MO-STAGE-01:X:FERRORMAX.VAL") - field(CALC,"(A>B)?A:B") - field(HIGH,"0") - field(HIHI,"0") - field(HHSV,"NO_ALARM") - field(HSV, "NO_ALARM") - field(PREC,"3") - field(EGU, "mm") -} - -#Record to reset the maximum following error -record(bo, "BL45P-MO-STAGE-01:X:FEMAXRESET") -{ - field(DESC,"Reset max following error") - field(DTYP,"Soft Channel") - field(OUT, "BL45P-MO-STAGE-01:X:FERRORMAX.VAL") - field(VAL, "0") -} - - -#Record to determin HOME button visibility on the motor.edl screen. -record(bo, "BL45P-MO-STAGE-01:X:HOMEVIS") -{ - field(DESC,"Home button visibility") - field(DTYP,"Soft Channel") - field(VAL, "1") - field(ZNAM, "Invisible") - field(ONAM, "Visible") -} - -#Record to display a message if the HOME buttons are not visible (if HOMEVIS=0). -record(stringout, "BL45P-MO-STAGE-01:X:HOMEVISSTR") -{ - field(DESC, "Home visibility string") - field(DTYP,"Soft Channel") - field(VAL, "Use motor summary screen") -} - - -# numbered name aliases for all PVs in basic_asyn_motor.template -alias(BL45P-MO-STAGE-01:X, BL45P-MO-STEP-01:M6) -alias(BL45P-MO-STAGE-01:X:ADDR, BL45P-MO-STEP-01:M6:ADDR) -alias(BL45P-MO-STAGE-01:X:PORT, BL45P-MO-STEP-01:M6:PORT) -alias(BL45P-MO-STAGE-01:X:SCALE, BL45P-MO-STEP-01:M6:SCALE) -alias(BL45P-MO-STAGE-01:X:USER:SDIS, BL45P-MO-STEP-01M6:USER:SDIS) -alias(BL45P-MO-STAGE-01:X:SDIS, BL45P-MO-STEP-01:M6:SDIS) -alias(BL45P-MO-STAGE-01:X:KILL, BL45P-MO-STEP-01:M6:KILL) -alias(BL45P-MO-STAGE-01:X:ELOSS, BL45P-MO-STEP-01:M6:ELOSS) -alias(BL45P-MO-STAGE-01:X:ELOSSRC, BL45P-MO-STEP-01:M6:ELOSSRC) -alias(BL45P-MO-STAGE-01:X:MR_MOVE_WRITE, BL45P-MO-STEP-01:M6:MR_MOVE_WRITE) -alias(BL45P-MO-STAGE-01:X:CHECK_SYNC, BL45P-MO-STEP-01:M6:CHECK_SYNC) -alias(BL45P-MO-STAGE-01:X:FERROR, BL45P-MO-STEP-01:M6:FERROR) -alias(BL45P-MO-STAGE-01:X:FERRORMAX, BL45P-MO-STEP-01:M6:FERRORMAX) -alias(BL45P-MO-STAGE-01:X:FEMAXRESET, BL45P-MO-STEP-01:M6:FEMAXRESET) -alias(BL45P-MO-STAGE-01:X:HOMEVIS, BL45P-MO-STEP-01:M6:HOMEVIS) -alias(BL45P-MO-STAGE-01:X:HOMEVISSTR, BL45P-MO-STEP-01:M6:HOMEVISSTR) - - -############################################################ -# -# Template to allow coordinate system kinematics to know -# the resolution of each real motor -# -# Also to allow control of CS mappings of real motors -# -############################################################### - - -############################################################### -# Mres and Offset -############################################################### - -#calc mres to be written -record(calcout, "BL45P-MO-STAGE-01:X:MRES_CALC") { - field(CALC, "B?-A*C:A*C") - field(INPA, "BL45P-MO-STAGE-01:X.MRES CP") - field(INPB, "BL45P-MO-STAGE-01:X.DIR CP") - field(INPC, "BL45P-MO-STAGE-01:X:SCALE") - field(OUT, "BL45P-MO-STAGE-01:X:MRES_SET PP") - field(OOPT, "When Non-zero") -} - -record(ao, "BL45P-MO-STAGE-01:X:MRES_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4800+6`") - field(FLNK, "BL45P-MO-STAGE-01:X:MR_MOVE_WRITE") -} - -#calc offset to be written -record(calcout, "BL45P-MO-STAGE-01:X:OFF_SET_CALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-STAGE-01:X.OFF CP") - field(OUT, "BL45P-MO-STAGE-01:X:OFF_SET PP") -} - -record(ao, "BL45P-MO-STAGE-01:X:OFF_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4900+6`") - field(FLNK, "BL45P-MO-STAGE-01:X:MR_MOVE_WRITE") -} - - -############################################################### -# Coordinate System mapping control -############################################################### - -# Read back which CS number the axis is in -record(ai, "BL45P-MO-STAGE-01:X:CsRaw_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,6)PMAC_C_AXIS_CS") - field(PINI, "NO") - field(SCAN, "I/O Intr") -} - -# Set which CS the axis is in via CSController Port Name -record(mbbo, "BL45P-MO-STAGE-01:X:CsPort") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,6)PMAC_C_GROUP_CS_PORT") -} - -record(mbbi, "BL45P-MO-STAGE-01:X:CsPort_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,6)PMAC_C_GROUP_CS_PORT_RBV") - field(SCAN, "I/O Intr") -} - -# set the axis' CS assignment (one of A B C U V W X Y Z I) -record(stringout, "BL45P-MO-STAGE-01:X:CsAxis") { - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(BRICK1,6)PMAC_C_GROUP_ASSIGN") -} - -record(stringin, "BL45P-MO-STAGE-01:X:CsAxis_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,6)PMAC_C_GROUP_ASSIGN_RBV") - field(SCAN, "I/O Intr") -}# These are the supporting records for doing kill, eloss, and adding autohome -# support to a motor record - -#% macro, SPORT, Asyn port for eloss commands -# usually PMAC_S for pmacs, the name of the pmacAsynIpPort for bricks -#% macro, HOME, Prefix for autohome instance. Defaults to BL45P-MO-STAGE-01. If unspecified, -# the template contains enough records to keep the motor record happy -#% macro, PMAC, Prefix for pmacStatus instance. Needed to get axis descriptions -# onto pmacStatusAxis screen -#% macro, ALLOW_HOMED_SET, Set to a blank to allow this axis to have its homed -# status manually. This is set to a comment character by default. - -# disable motor when homing -record(calcout, "BL45P-MO-STAGE-01:X:SDIS") { -# field(INPA, "BL45P-MO-STAGE-01:HM:HOMING CP") -} - -# dummy record in case we aren't homing -record(busy, "BL45P-MO-STAGE-01:HM:HOMING") { -} - -# Monitor homing status -record(bi, "BL45P-MO-STAGE-01:X:HOMING") { - field(DESC, "Monitor homing status of autohome") - field(INP, "BL45P-MO-STAGE-01:HM:HOMING CP") - field(FLNK, "BL45P-MO-STAGE-01:X:HOMING_CALC") - field(ZNAM, "Done") - field(ONAM, "Busy") -} - -# report to the driver if this motor is being autohomed -record(calcout, BL45P-MO-STAGE-01:X:HOMING_CALC) -{ - field(PINI, 1) - field(INPA, "BL45P-MO-STAGE-01:X:HOMING") - field(CALC, "A") - field(OUT, "BL45P-MO-STAGE-01:X:HOMING_STATUS PP") -} - -# report to the driver if this motor is being autohomed -record(ao, BL45P-MO-STAGE-01:X:HOMING_STATUS) -{ - field(DESC, "driver update on autohome") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,6)HOMING_STATUS") -} - - -# reports position of motor without offset -record(ai, "BL45P-MO-STAGE-01:X:HMPOS_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#6P") - field(DESC, "X Stage") - field(SCAN, "I/O Intr") - field(PINI, "YES") - field(PREC, "3") - field(EGU, "mm") -} - -record(calcout, "BL45P-MO-STAGE-01:X:HMPOS:CALC") { - field(INPA, "BL45P-MO-STAGE-01:X.MRES CP") - field(INPB, "BL45P-MO-STAGE-01:X:SCALE") - field(INPC, "BL45P-MO-STAGE-01:X:HMPOS_RBV CP") - field(CALC, "A*B*C") - field(OUT, "BL45P-MO-STAGE-01:X:HMPOS PP") -} - -record(ai, "BL45P-MO-STAGE-01:X:HMPOS") { - field(DESC, "X Stage") - field(PREC, "3") - field(EGU, "mm") -} - -# at startup, tell autohome template about this motor -record(stringout, "BL45P-MO-STAGE-01:X:SETHMPV") { - field(PINI, "YES") - field(VAL, "BL45P-MO-STAGE-01:X") - field(OUT, "BL45P-MO-STAGE-01:HM:M6PV PP") -} - -record(stringout, "BL45P-MO-STAGE-01:HM:M6PV"){ -} - -# define a kill record -record(ao, "BL45P-MO-STAGE-01:X:KILL") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,6)PMAC_C_KILL_AXIS") - field(VAL, "0") -} - -record(calc, "BL45P-MO-STAGE-01:X:ELOSSVAR") { - field(CALC, "464+6") - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STAGE-01:X:ELOSS") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_P`464+6`") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-MO-STAGE-01:X:ELOSSRC") { - field(OUT, "BL45P-MO-STAGE-01:X:SEND_ELOSSRC PP") - field(DESC, "Write 0 to A to reset Eloss") - field(CALC, "A") - field(A, "0") -} - -record(ao, "BL45P-MO-STAGE-01:X:SEND_ELOSSRC") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_VIS_P`464+6`") -} - -# Overwrite the description of pmacStatus -record(stringout, "BL45P-MO-STEP-01:AXIS6:DESC"){ - field(VAL, "SAMP01.X X Stage") -} - -#record(bo, "BL45P-MO-STAGE-01:X:HOMED") { -# field(DESC, "Set homed status for axis 6") -# field(ZNAM, "NOT HOMED") -# field(ONAM, "HOMED") -# field(FLNK, "BL45P-MO-STAGE-01:X:HOMEDSET") -#} - -#record(calcout, "BL45P-MO-STAGE-01:X:HOMEDSET") { -# field(DESC, "Homed status") -# field(DTYP, "stream") -# field(CALC, "A") -# field(INPA, "BL45P-MO-STAGE-01:X:HOMED") -# field(OUT, "@pmac.proto setIntVar(m645) BRICK1port") -#} -############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STAGE-01:X:DirectDemand") -{ - field(FLNK, "BL45P-MO-STAGE-01:X:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STAGE-01:X:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STAGE-01:X:DirectDemand") - field(INPB, "BL45P-MO-STAGE-01:X:Mres PP") - field(INPC, "BL45P-MO-STAGE-01:X:Offset PP") - field(INPD, "BL45P-MO-STAGE-01:X:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STAGE-01:X:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STAGE-01:X:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STAGE-01:X:DirectMotorSeq") - field(OUT, "@asyn(BRICK1,6,4)MOTOR_MOVE_ABS") - field(DESC, "X Stage") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STAGE-01:X:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STAGE-01:X:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STAGE-01:X:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,6,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STAGE-01:X:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,6,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STAGE-01:X:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,6,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STAGE-01:X:MresSource") -} - -record(scalcout, BL45P-MO-STAGE-01:X:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STAGE-01:X:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STAGE-01:X:Mres.INPA CA") - field(FLNK, "BL45P-MO-STAGE-01:X:OffsetSource") -} - -record(scalcout, "BL45P-MO-STAGE-01:X:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STAGE-01:X:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STAGE-01:X:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,6,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STAGE-01:X:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STAGE-01:X:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STAGE-01:X:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STAGE-01:X:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STAGE-01:X:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STAGE-01:X:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,6,4)PMAC_OFFSET") -} - -# add numbered name aliases for above 3 templates -############################################################ -# -# Template to allow coordinate system kinematics to know -# the resolution of each real motor -# -# Also to allow control of CS mappings of real motors -# -############################################################### - - -############################################################### -# Mres and Offset -############################################################### - -#calc mres to be written -record(calcout, "BL45P-MO-STEP-01:M6:MRES_CALC") { - field(CALC, "B?-A*C:A*C") - field(INPA, "BL45P-MO-STEP-01:M6.MRES CP") - field(INPB, "BL45P-MO-STEP-01:M6.DIR CP") - field(INPC, "BL45P-MO-STEP-01:M6:SCALE") - field(OUT, "BL45P-MO-STEP-01:M6:MRES_SET PP") - field(OOPT, "When Non-zero") -} - -record(ao, "BL45P-MO-STEP-01:M6:MRES_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4800+6`") - field(FLNK, "BL45P-MO-STEP-01:M6:MR_MOVE_WRITE") -} - -#calc offset to be written -record(calcout, "BL45P-MO-STEP-01:M6:OFF_SET_CALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-STEP-01:M6.OFF CP") - field(OUT, "BL45P-MO-STEP-01:M6:OFF_SET PP") -} - -record(ao, "BL45P-MO-STEP-01:M6:OFF_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4900+6`") - field(FLNK, "BL45P-MO-STEP-01:M6:MR_MOVE_WRITE") -} - - -############################################################### -# Coordinate System mapping control -############################################################### - -# Read back which CS number the axis is in -record(ai, "BL45P-MO-STEP-01:M6:CsRaw_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,6)PMAC_C_AXIS_CS") - field(PINI, "NO") - field(SCAN, "I/O Intr") -} - -# Set which CS the axis is in via CSController Port Name -record(mbbo, "BL45P-MO-STEP-01:M6:CsPort") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,6)PMAC_C_GROUP_CS_PORT") -} - -record(mbbi, "BL45P-MO-STEP-01:M6:CsPort_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,6)PMAC_C_GROUP_CS_PORT_RBV") - field(SCAN, "I/O Intr") -} - -# set the axis' CS assignment (one of A B C U V W X Y Z I) -record(stringout, "BL45P-MO-STEP-01:M6:CsAxis") { - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(BRICK1,6)PMAC_C_GROUP_ASSIGN") -} - -record(stringin, "BL45P-MO-STEP-01:M6:CsAxis_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,6)PMAC_C_GROUP_ASSIGN_RBV") - field(SCAN, "I/O Intr") -}# These are the supporting records for doing kill, eloss, and adding autohome -# support to a motor record - -#% macro, SPORT, Asyn port for eloss commands -# usually PMAC_S for pmacs, the name of the pmacAsynIpPort for bricks -#% macro, HOME, Prefix for autohome instance. Defaults to BL45P-MO-STEP-01:. If unspecified, -# the template contains enough records to keep the motor record happy -#% macro, PMAC, Prefix for pmacStatus instance. Needed to get axis descriptions -# onto pmacStatusAxis screen -#% macro, ALLOW_HOMED_SET, Set to a blank to allow this axis to have its homed -# status manually. This is set to a comment character by default. - -# disable motor when homing -record(calcout, "BL45P-MO-STEP-01:M6:SDIS") { -# field(INPA, "BL45P-MO-STEP-01::HM:HOMING CP") -} - -# dummy record in case we aren't homing -record(busy, "BL45P-MO-STEP-01::HM:HOMING") { -} - -# Monitor homing status -record(bi, "BL45P-MO-STEP-01:M6:HOMING") { - field(DESC, "Monitor homing status of autohome") - field(INP, "BL45P-MO-STEP-01::HM:HOMING CP") - field(FLNK, "BL45P-MO-STEP-01:M6:HOMING_CALC") - field(ZNAM, "Done") - field(ONAM, "Busy") -} - -# report to the driver if this motor is being autohomed -record(calcout, BL45P-MO-STEP-01:M6:HOMING_CALC) -{ - field(PINI, 1) - field(INPA, "BL45P-MO-STEP-01:M6:HOMING") - field(CALC, "A") - field(OUT, "BL45P-MO-STEP-01:M6:HOMING_STATUS PP") -} - -# report to the driver if this motor is being autohomed -record(ao, BL45P-MO-STEP-01:M6:HOMING_STATUS) -{ - field(DESC, "driver update on autohome") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,6)HOMING_STATUS") -} - - -# reports position of motor without offset -record(ai, "BL45P-MO-STEP-01:M6:HMPOS_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#6P") - field(DESC, "X Stage") - field(SCAN, "I/O Intr") - field(PINI, "YES") - field(PREC, "3") - field(EGU, "mm") -} - -record(calcout, "BL45P-MO-STEP-01:M6:HMPOS:CALC") { - field(INPA, "BL45P-MO-STEP-01:M6.MRES CP") - field(INPB, "BL45P-MO-STEP-01:M6:SCALE") - field(INPC, "BL45P-MO-STEP-01:M6:HMPOS_RBV CP") - field(CALC, "A*B*C") - field(OUT, "BL45P-MO-STEP-01:M6:HMPOS PP") -} - -record(ai, "BL45P-MO-STEP-01:M6:HMPOS") { - field(DESC, "X Stage") - field(PREC, "3") - field(EGU, "mm") -} - -# at startup, tell autohome template about this motor -record(stringout, "BL45P-MO-STEP-01:M6:SETHMPV") { - field(PINI, "YES") - field(VAL, "BL45P-MO-STEP-01:M6") - field(OUT, "BL45P-MO-STEP-01::HM:M6PV PP") -} - -record(stringout, "BL45P-MO-STEP-01::HM:M6PV"){ -} - -# define a kill record -record(ao, "BL45P-MO-STEP-01:M6:KILL") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,6)PMAC_C_KILL_AXIS") - field(VAL, "0") -} - -record(calc, "BL45P-MO-STEP-01:M6:ELOSSVAR") { - field(CALC, "464+6") - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STEP-01:M6:ELOSS") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_P`464+6`") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-MO-STEP-01:M6:ELOSSRC") { - field(OUT, "BL45P-MO-STEP-01:M6:SEND_ELOSSRC PP") - field(DESC, "Write 0 to A to reset Eloss") - field(CALC, "A") - field(A, "0") -} - -record(ao, "BL45P-MO-STEP-01:M6:SEND_ELOSSRC") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_VIS_P`464+6`") -} - -# Overwrite the description of pmacStatus -record(stringout, "BL45P-MO-STEP-01:AXIS6:DESC"){ - field(VAL, "SAMP01.X X Stage") -} - -#record(bo, "BL45P-MO-STEP-01:M6:HOMED") { -# field(DESC, "Set homed status for axis 6") -# field(ZNAM, "NOT HOMED") -# field(ONAM, "HOMED") -# field(FLNK, "BL45P-MO-STEP-01:M6:HOMEDSET") -#} - -#record(calcout, "BL45P-MO-STEP-01:M6:HOMEDSET") { -# field(DESC, "Homed status") -# field(DTYP, "stream") -# field(CALC, "A") -# field(INPA, "BL45P-MO-STEP-01:M6:HOMED") -# field(OUT, "@pmac.proto setIntVar(m645) BRICK1port") -#} -############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:M6:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:M6:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:M6:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:M6:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:M6:Mres PP") - field(INPC, "BL45P-MO-STEP-01:M6:Offset PP") - field(INPD, "BL45P-MO-STEP-01:M6:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:M6:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:M6:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:M6:DirectMotorSeq") - field(OUT, "@asyn(BRICK1,6,4)MOTOR_MOVE_ABS") - field(DESC, "X Stage") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:M6:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:M6:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:M6:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,6,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:M6:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,6,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:M6:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,6,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:M6:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:M6:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:M6:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:M6:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:M6:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:M6:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:M6:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:M6:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,6,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:M6:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:M6:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:M6:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:M6:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:M6:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:M6:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,6,4)PMAC_OFFSET") -}# % macro, PMAC, The P prefix for the motor controller (must match P in pmacController.template) - -# this template defines a motor with two names:- -# (1) root is BL45P-MO-STAGE-01:Y, the macros fully define the name of the motor -# (2) 'numbered' names of the form BL45P-MO-STEP-01:Mx where x is the motor number -# names are both assigned to the same PV via aliases in the case basic_asyn_motor -# or simply duplicated for all other included templates, this approach works because -# the PVs all point to the same ASYN parameters and improves maintainability of this -# file - -# include motor record from the motor module -#% macro, __doc__, Basic template, including motor record and associated tags -#% macro, P , Device Prefix -#% macro, M , Device Suffix -#% macro, PORT , Asyn port for motor record -#% macro, ADDR , Address on controller -#% macro, DESC , Description, displayed on EDM screen -#% macro, MRES , Motor Step Size (EGU) -#% macro, DTYP , DTYP of record -#% macro, DIR , User Direction -#% macro, VBAS , Base Velocity (EGU/s) -#% macro, VELO , Velocity (EGU/s) -#% macro, VMAX , Max Velocity (EGU/s), defaults to VELO -#% macro, ACCL , Seconds to Velocity -#% macro, BDST , BL Distance (EGU) -#% macro, BVEL , BL Velocity (EGU/s) -#% macro, BACC , BL Seconds to Veloc. -#% macro, PREC , Display Precision -#% macro, EGU , Engineering Units -#% macro, DHLM , Dial High Limit -#% macro, DLLM , Dial Low Limit -#% macro, HLM , User High Limit -#% macro, LLM , User Low Limit -#% macro, HLSV , HW Lim. Violation Svr -#% macro, INIT , Startup commands -#% macro, SREV , Steps per Revolution -#% macro, RRES , Readback Step Size (EGU) -#% macro, TWV , Tweak Step Size (EGU) -#% macro, ERES , Encoder Step Size (EGU) -#% macro, JAR , Jog Acceleration (EGU/s^2) -#% macro, UEIP , Use Encoder If Present -#% macro, URIP , Use RDBL If Present -#% macro, RDBL , Readback Location, set URIP = 1 if you specify this -#% macro, RLNK , Readback output link -#% macro, RTRY , Max retry count -#% macro, DLY , Readback settle time (s) -#% macro, OFF , User Offset (EGU) -#% macro, RDBD , Retry Deadband (EGU) -#% macro, FOFF , Freeze Offset, 0=variable, 1=frozen -#% macro, ADEL , Alarm monitor deadband (EGU) -#% macro, NTM , New Target Monitor, only set to 0 for soft motors -#% macro, FEHIGH , HIGH limit for following error -#% macro, FEHIHI , HIHI limit for following error -#% macro, FEHHSV , HIHI alarm severity for following error -#% macro, FEHSV , HIGH alarm severity for following error -#% macro, SCALE , Scale factor, if pmacSetAxisScale is used this should be set -#% macro, HOMEVIS, If 1 then home is visible on the gui -#% macro, HOMEVISSTR, If HOMEVIS=0, then display this text on the gui instead -#% macro, name , Object name and gui association name -#% macro, alh , Set this to alh to add the motor to the alarm handler and send emails, -# set to '#' to comment out alh lines -#% macro, gda_name, Name to export this as to GDA -#% macro, gda_desc, Description to export this as to GDA - -# AUTOSAVE: level 0 = before record init, level 1 = before AND after record init -#% autosave 0 DVAL OFF -#% autosave 1 DIR DHLM DLLM TWV VBAS VELO ACCL BDST BVEL BACC RDBD EGU RTRY UEIP URIP DLY PREC DISA DISP FOFF OFF FRAC OMSL JVEL JAR ADEL MDEL -#% archiver 0.5 Monitor -#% archiver 0.5 Monitor RBV -#% archiver 10 Monitor OFF -#% archiver 10 Monitor MRES -#% gdatag,template,simpleMotor,,Y Stage -#% gdatag,motor,rw,,RECORD,Motor -#% alh -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:Y - -# This associates an edm screen with the template -# % gui, SAMP01.Y, edm, motor.edl, motor=BL45P-MO-STAGE-01:Y -# % gui, SAMP01.Y, edmembed, motor-embed-small.edl, motor=BL45P-MO-STAGE-01:Y,filename=motor.edl,box-label=Y Stage - -# This associates a BOY screen with the template -# % gui, SAMP01.Y, boydetail, motorApp_opi/motor_detail.opi, P=BL45P-MO-STAGE-01,M=:Y,DESC=Y Stage, name=SAMP01.Y -# % gui, SAMP01.Y, boyembed, motorApp_opi/motor_embed_box.opi, P=BL45P-MO-STAGE-01,M=:Y,DESC=Y Stage, name=SAMP01.Y -# % gui, SAMP01.Y, boyembed, motorApp_opi/motor_embed.opi, P=BL45P-MO-STAGE-01,M=:Y,DESC=Y Stage, name=SAMP01.Y -# FIXME: this should be in pmacUtil or tpmac -# % gui, SAMP01.Y, boyembed, motorApp_opi/motor_homed_embed.opi, P=BL45P-MO-STAGE-01,M=:Y - -# This makes the component icon reflect the status and severity -# % gui, SAMP01.Y, status, .MOVN -# % gui, SAMP01.Y, sevr - -# These define what PVs a motor detail screen should contain -# % gui, SAMP01.Y, statusbits, Status, .MSTA, Direction Positive, Done, High Limit, Home Limit, Unused, Closed Loop, Following Error, At Home, Encoder Present, Problem, Moving, Gain Support, Comms Error, Low Limit, Homed -# % gui, SAMP01.Y, statusbits, ELoss, :ELOSS, Encoder Loss, Amplifier Loss, Sys Fail -# % gui, SAMP01.Y, command, ELoss Clear, :ELOSSRC.A -# % gui, SAMP01.Y, statusbits, Limit Violation, .LVIO, Lim -# % gui, SAMP01.Y, statusbits, At High Limit, .HLS, High -# % gui, SAMP01.Y, statusbits, At Low Limit, .LLS, Low -# % gui, SAMP01.Y, demand, User High Limit, .HLM -# % gui, SAMP01.Y, demand, User Low Limit, .LLM -# % gui, SAMP01.Y, demand, Dial High Limit, .DHLM -# % gui, SAMP01.Y, demand, Dial Low Limit, .DLLM - -# % gui, SAMP01.Y, demand, Motor demand, .VAL -# % gui, SAMP01.Y, readback, Motor readback, .RBV -# % gui, SAMP01.Y, command, Stop, .STOP -# % gui, SAMP01.Y, command, Home Forward, .HOMF -# % gui, SAMP01.Y, command, Home Reverse, .HOMR -# % gui, SAMP01.Y, command, Jog Forward, .JOGF -# % gui, SAMP01.Y, command, Jog Reverse, .JOGR -# % gui, SAMP01.Y, command, Tweak Forward, .TWF -# % gui, SAMP01.Y, command, Tweak Reverse, .TWR -# % gui, SAMP01.Y, demand, Tweak Step, .TWV -# % gui, SAMP01.Y, command, Kill, :KILL.PROC, Kill -# % gui, SAMP01.Y, command, Sync VAL=RBV, .SYNC - -# % gui, SAMP01.Y, enum, Direction, .DIR -# % gui, SAMP01.Y, demand, User Offset, .OFF -# % gui, SAMP01.Y, enum, Set/Use, .SET -# % gui, SAMP01.Y, enum, Offset, .FOFF -# % gui, SAMP01.Y, enum, Use Encoder, .UEIP - -# % gui, SAMP01.Y, demand, Motor Step Size, .MRES -# % gui, SAMP01.Y, readback, Steps per Rev, .SREV -# % gui, SAMP01.Y, readback, EGUs per Rev, .UREV -# % gui, SAMP01.Y, demand, Encoder Step Size, .ERES -# % gui, SAMP01.Y, readback, Readback Step Size, .RRES -# % gui, SAMP01.Y, readback, Use Encoder if Present, .UEIP - -# % gui, SAMP01.Y, demand, Max Velocity, .VMAX -# % gui, SAMP01.Y, demand, Base Velocity, .VBAS -# % gui, SAMP01.Y, demand, Velocity, .VELO -# % gui, SAMP01.Y, demand, Secs to Velocity, .ACCL -# % gui, SAMP01.Y, demand, JVEL, .JVEL -# % gui, SAMP01.Y, demand, Jog Acceleration, .JAR -# % gui, SAMP01.Y, demand, Backlash Distance, .BDST -# % gui, SAMP01.Y, demand, Backlash Velocity, .BVEL -# % gui, SAMP01.Y, demand, Backlash Secs to Vel, .BACC -# % gui, SAMP01.Y, demand, Move Fraction, .FRAC -# % gui, SAMP01.Y, demand, Retry Deadband, .RDBD -# % gui, SAMP01.Y, demand, Max Retrys, .RTRY - -# % gui, SAMP01.Y, demand, PREC, .PREC -# % gui, SAMP01.Y, demand, EGU, .EGU - -# % gui, SAMP01.Y, demand, Output Specification, .OUT -# % gui, SAMP01.Y, readback, Readback Location, .RDBL -# % gui, SAMP01.Y, readback, Desired Output Loc, .DOL -# % gui, SAMP01.Y, readback, Output Mode Select, .OMSL -# % gui, SAMP01.Y, readback, Readback Out Link, .RLNK -# % gui, SAMP01.Y, demand, DMOV Input Link, .DINP -# % gui, SAMP01.Y, demand, RMP Input Link, .RINP -# % gui, SAMP01.Y, demand, Stop Out Link, .STOO - - -record(motor,"BL45P-MO-STAGE-01:Y") -{ - field(DESC,"Y Stage") - field(DTYP,"asynMotor") - field(DIR,"0") - field(VELO,"5") - field(VBAS,"0") - field(ACCL,"0.5") - field(BDST,"0") - field(BVEL,"0") - field(BACC,"") - field(OUT,"@asyn(BRICK1,7)") - field(MRES,"0.0005") - field(PREC,"3") - field(EGU,"mm") - field(DHLM,"12") - field(DLLM,"-0.05") - field(HLM,"") - field(LLM,"") - field(HLSV,"MAJOR") - field(INIT,"") - field(RTRY,"0") - field(DLY,"0") - field(HVEL,"0") - field(SREV, "1000") - field(RRES, "") - field(TWV, "1") - field(ERES, "") - field(JVEL, "5") - field(JAR, "") - field(UEIP, "0") - field(URIP, "0") - field(RDBL, "") - field(VMAX, "5") - field(OFF, "0") - field(RDBD, "") - field(FOFF, "0") - field(ADEL, "0") - field(NTM, "1") - field(SDIS, "BL45P-MO-STAGE-01:Y:SDIS.VAL") - field(RLNK, "") -} - -# record that holds the ADDR -record(ao, "BL45P-MO-STAGE-01:Y:ADDR") { - field(PINI, "YES") - field(VAL, "7") -} - -# record that holds the PORT -record(stringout, "BL45P-MO-STAGE-01:Y:PORT") { - field(PINI, "YES") - field(VAL, "BRICK1") -} - -# record that holds the SCALE -record(ao, "BL45P-MO-STAGE-01:Y:SCALE") { - field(PINI, "YES") - field(VAL, "1") -} - -# Write a 1 to this record over Channel Access to disable the motor record and prevent CA writes to any field -# including the demand field. -record(ai, "BL45P-MO-STAGE-01:Y:USER:SDIS") { - field(VAL, "0") - field(FLNK, "BL45P-MO-STAGE-01:Y:SDIS") -} - -# Note: This record forms part of the interface to auto-homing, which uses the "A" field to disable the motor record -# when homing. -# record that will disable and re-enable record if any of its inputs are non-zero -record(calcout, "BL45P-MO-STAGE-01:Y:SDIS") { - field(DESC, "Disable on non-zero input") - field(INPL, "BL45P-MO-STAGE-01:Y:USER:SDIS") - field(CALC, "(A|B|C|D|E|F|G|H|I|J|K|L)>0") - field(OUT, "BL45P-MO-STAGE-01:Y.DISP PP") -} - -# dummy record that looks like a kill command -record(ao, "BL45P-MO-STAGE-01:Y:KILL") { - field(VAL, "1") -} - -# dummy record that looks like eloss status -#% archiver 10 Monitor VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:Y:ELOSS -record(ai, "BL45P-MO-STAGE-01:Y:ELOSS") { - field(PINI, "YES") - field(HIHI, "1") - field(HHSV, "MAJOR") -} - -# dummy record that looks like an eloss reset -record(calcout, "BL45P-MO-STAGE-01:Y:ELOSSRC") { -} - -# check if SYNC has been pressed -record(calcout, "BL45P-MO-STAGE-01:Y:CHECK_SYNC") { - field(INPA, "BL45P-MO-STAGE-01:Y.SYNC CP") - field(CALC, "A>0") - field(OOPT, "When Non-zero") - field(OUT, "BL45P-MO-STAGE-01:Y:MR_MOVE_WRITE.PROC PP") -} - -# dummy record that looks like a record to notify a CS about a raw motor move -record(longout, "BL45P-MO-STAGE-01:Y:MR_MOVE_WRITE") { -} - -#Record to calculate the following error -#% archiver 1 Monitor -record(calc, "BL45P-MO-STAGE-01:Y:FERROR") -{ - field(DESC,"Following Error") - field(INPA,"BL45P-MO-STAGE-01:Y.RMP CP") - field(INPB,"BL45P-MO-STAGE-01:Y.REP NPP") - field(INPC,"BL45P-MO-STAGE-01:Y.MRES NPP") - field(INPD,"BL45P-MO-STAGE-01:Y.ERES NPP") - field(CALC,"ABS((A*C)-(B*D))") - field(FLNK,"BL45P-MO-STAGE-01:Y:FERRORMAX") - field(PREC,"3") - field(EGU, "mm") -} - -#Record to store the maximum following error -#% archiver 10 Monitor VAL -#% autosave 1 VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:Y:FERRORMAX -record(calc, "BL45P-MO-STAGE-01:Y:FERRORMAX") -{ - field(DESC,"Following Error Max") - field(INPA,"BL45P-MO-STAGE-01:Y:FERROR.VAL") - field(INPB,"BL45P-MO-STAGE-01:Y:FERRORMAX.VAL") - field(CALC,"(A>B)?A:B") - field(HIGH,"0") - field(HIHI,"0") - field(HHSV,"NO_ALARM") - field(HSV, "NO_ALARM") - field(PREC,"3") - field(EGU, "mm") -} - -#Record to reset the maximum following error -record(bo, "BL45P-MO-STAGE-01:Y:FEMAXRESET") -{ - field(DESC,"Reset max following error") - field(DTYP,"Soft Channel") - field(OUT, "BL45P-MO-STAGE-01:Y:FERRORMAX.VAL") - field(VAL, "0") -} - - -#Record to determin HOME button visibility on the motor.edl screen. -record(bo, "BL45P-MO-STAGE-01:Y:HOMEVIS") -{ - field(DESC,"Home button visibility") - field(DTYP,"Soft Channel") - field(VAL, "1") - field(ZNAM, "Invisible") - field(ONAM, "Visible") -} - -#Record to display a message if the HOME buttons are not visible (if HOMEVIS=0). -record(stringout, "BL45P-MO-STAGE-01:Y:HOMEVISSTR") -{ - field(DESC, "Home visibility string") - field(DTYP,"Soft Channel") - field(VAL, "Use motor summary screen") -} - - -# numbered name aliases for all PVs in basic_asyn_motor.template -alias(BL45P-MO-STAGE-01:Y, BL45P-MO-STEP-01:M7) -alias(BL45P-MO-STAGE-01:Y:ADDR, BL45P-MO-STEP-01:M7:ADDR) -alias(BL45P-MO-STAGE-01:Y:PORT, BL45P-MO-STEP-01:M7:PORT) -alias(BL45P-MO-STAGE-01:Y:SCALE, BL45P-MO-STEP-01:M7:SCALE) -alias(BL45P-MO-STAGE-01:Y:USER:SDIS, BL45P-MO-STEP-01M7:USER:SDIS) -alias(BL45P-MO-STAGE-01:Y:SDIS, BL45P-MO-STEP-01:M7:SDIS) -alias(BL45P-MO-STAGE-01:Y:KILL, BL45P-MO-STEP-01:M7:KILL) -alias(BL45P-MO-STAGE-01:Y:ELOSS, BL45P-MO-STEP-01:M7:ELOSS) -alias(BL45P-MO-STAGE-01:Y:ELOSSRC, BL45P-MO-STEP-01:M7:ELOSSRC) -alias(BL45P-MO-STAGE-01:Y:MR_MOVE_WRITE, BL45P-MO-STEP-01:M7:MR_MOVE_WRITE) -alias(BL45P-MO-STAGE-01:Y:CHECK_SYNC, BL45P-MO-STEP-01:M7:CHECK_SYNC) -alias(BL45P-MO-STAGE-01:Y:FERROR, BL45P-MO-STEP-01:M7:FERROR) -alias(BL45P-MO-STAGE-01:Y:FERRORMAX, BL45P-MO-STEP-01:M7:FERRORMAX) -alias(BL45P-MO-STAGE-01:Y:FEMAXRESET, BL45P-MO-STEP-01:M7:FEMAXRESET) -alias(BL45P-MO-STAGE-01:Y:HOMEVIS, BL45P-MO-STEP-01:M7:HOMEVIS) -alias(BL45P-MO-STAGE-01:Y:HOMEVISSTR, BL45P-MO-STEP-01:M7:HOMEVISSTR) - - -############################################################ -# -# Template to allow coordinate system kinematics to know -# the resolution of each real motor -# -# Also to allow control of CS mappings of real motors -# -############################################################### - - -############################################################### -# Mres and Offset -############################################################### - -#calc mres to be written -record(calcout, "BL45P-MO-STAGE-01:Y:MRES_CALC") { - field(CALC, "B?-A*C:A*C") - field(INPA, "BL45P-MO-STAGE-01:Y.MRES CP") - field(INPB, "BL45P-MO-STAGE-01:Y.DIR CP") - field(INPC, "BL45P-MO-STAGE-01:Y:SCALE") - field(OUT, "BL45P-MO-STAGE-01:Y:MRES_SET PP") - field(OOPT, "When Non-zero") -} - -record(ao, "BL45P-MO-STAGE-01:Y:MRES_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4800+7`") - field(FLNK, "BL45P-MO-STAGE-01:Y:MR_MOVE_WRITE") -} - -#calc offset to be written -record(calcout, "BL45P-MO-STAGE-01:Y:OFF_SET_CALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-STAGE-01:Y.OFF CP") - field(OUT, "BL45P-MO-STAGE-01:Y:OFF_SET PP") -} - -record(ao, "BL45P-MO-STAGE-01:Y:OFF_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4900+7`") - field(FLNK, "BL45P-MO-STAGE-01:Y:MR_MOVE_WRITE") -} - - -############################################################### -# Coordinate System mapping control -############################################################### - -# Read back which CS number the axis is in -record(ai, "BL45P-MO-STAGE-01:Y:CsRaw_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,7)PMAC_C_AXIS_CS") - field(PINI, "NO") - field(SCAN, "I/O Intr") -} - -# Set which CS the axis is in via CSController Port Name -record(mbbo, "BL45P-MO-STAGE-01:Y:CsPort") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,7)PMAC_C_GROUP_CS_PORT") -} - -record(mbbi, "BL45P-MO-STAGE-01:Y:CsPort_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,7)PMAC_C_GROUP_CS_PORT_RBV") - field(SCAN, "I/O Intr") -} - -# set the axis' CS assignment (one of A B C U V W X Y Z I) -record(stringout, "BL45P-MO-STAGE-01:Y:CsAxis") { - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(BRICK1,7)PMAC_C_GROUP_ASSIGN") -} - -record(stringin, "BL45P-MO-STAGE-01:Y:CsAxis_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,7)PMAC_C_GROUP_ASSIGN_RBV") - field(SCAN, "I/O Intr") -}# These are the supporting records for doing kill, eloss, and adding autohome -# support to a motor record - -#% macro, SPORT, Asyn port for eloss commands -# usually PMAC_S for pmacs, the name of the pmacAsynIpPort for bricks -#% macro, HOME, Prefix for autohome instance. Defaults to BL45P-MO-STAGE-01. If unspecified, -# the template contains enough records to keep the motor record happy -#% macro, PMAC, Prefix for pmacStatus instance. Needed to get axis descriptions -# onto pmacStatusAxis screen -#% macro, ALLOW_HOMED_SET, Set to a blank to allow this axis to have its homed -# status manually. This is set to a comment character by default. - -# disable motor when homing -record(calcout, "BL45P-MO-STAGE-01:Y:SDIS") { -# field(INPA, "BL45P-MO-STAGE-01:HM:HOMING CP") -} - -# dummy record in case we aren't homing -record(busy, "BL45P-MO-STAGE-01:HM:HOMING") { -} - -# Monitor homing status -record(bi, "BL45P-MO-STAGE-01:Y:HOMING") { - field(DESC, "Monitor homing status of autohome") - field(INP, "BL45P-MO-STAGE-01:HM:HOMING CP") - field(FLNK, "BL45P-MO-STAGE-01:Y:HOMING_CALC") - field(ZNAM, "Done") - field(ONAM, "Busy") -} - -# report to the driver if this motor is being autohomed -record(calcout, BL45P-MO-STAGE-01:Y:HOMING_CALC) -{ - field(PINI, 1) - field(INPA, "BL45P-MO-STAGE-01:Y:HOMING") - field(CALC, "A") - field(OUT, "BL45P-MO-STAGE-01:Y:HOMING_STATUS PP") -} - -# report to the driver if this motor is being autohomed -record(ao, BL45P-MO-STAGE-01:Y:HOMING_STATUS) -{ - field(DESC, "driver update on autohome") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,7)HOMING_STATUS") -} - - -# reports position of motor without offset -record(ai, "BL45P-MO-STAGE-01:Y:HMPOS_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#7P") - field(DESC, "Y Stage") - field(SCAN, "I/O Intr") - field(PINI, "YES") - field(PREC, "3") - field(EGU, "mm") -} - -record(calcout, "BL45P-MO-STAGE-01:Y:HMPOS:CALC") { - field(INPA, "BL45P-MO-STAGE-01:Y.MRES CP") - field(INPB, "BL45P-MO-STAGE-01:Y:SCALE") - field(INPC, "BL45P-MO-STAGE-01:Y:HMPOS_RBV CP") - field(CALC, "A*B*C") - field(OUT, "BL45P-MO-STAGE-01:Y:HMPOS PP") -} - -record(ai, "BL45P-MO-STAGE-01:Y:HMPOS") { - field(DESC, "Y Stage") - field(PREC, "3") - field(EGU, "mm") -} - -# at startup, tell autohome template about this motor -record(stringout, "BL45P-MO-STAGE-01:Y:SETHMPV") { - field(PINI, "YES") - field(VAL, "BL45P-MO-STAGE-01:Y") - field(OUT, "BL45P-MO-STAGE-01:HM:M7PV PP") -} - -record(stringout, "BL45P-MO-STAGE-01:HM:M7PV"){ -} - -# define a kill record -record(ao, "BL45P-MO-STAGE-01:Y:KILL") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,7)PMAC_C_KILL_AXIS") - field(VAL, "0") -} - -record(calc, "BL45P-MO-STAGE-01:Y:ELOSSVAR") { - field(CALC, "464+7") - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STAGE-01:Y:ELOSS") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_P`464+7`") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-MO-STAGE-01:Y:ELOSSRC") { - field(OUT, "BL45P-MO-STAGE-01:Y:SEND_ELOSSRC PP") - field(DESC, "Write 0 to A to reset Eloss") - field(CALC, "A") - field(A, "0") -} - -record(ao, "BL45P-MO-STAGE-01:Y:SEND_ELOSSRC") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_VIS_P`464+7`") -} - -# Overwrite the description of pmacStatus -record(stringout, "BL45P-MO-STEP-01:AXIS7:DESC"){ - field(VAL, "SAMP01.Y Y Stage") -} - -#record(bo, "BL45P-MO-STAGE-01:Y:HOMED") { -# field(DESC, "Set homed status for axis 7") -# field(ZNAM, "NOT HOMED") -# field(ONAM, "HOMED") -# field(FLNK, "BL45P-MO-STAGE-01:Y:HOMEDSET") -#} - -#record(calcout, "BL45P-MO-STAGE-01:Y:HOMEDSET") { -# field(DESC, "Homed status") -# field(DTYP, "stream") -# field(CALC, "A") -# field(INPA, "BL45P-MO-STAGE-01:Y:HOMED") -# field(OUT, "@pmac.proto setIntVar(m745) BRICK1port") -#} -############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STAGE-01:Y:DirectDemand") -{ - field(FLNK, "BL45P-MO-STAGE-01:Y:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STAGE-01:Y:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STAGE-01:Y:DirectDemand") - field(INPB, "BL45P-MO-STAGE-01:Y:Mres PP") - field(INPC, "BL45P-MO-STAGE-01:Y:Offset PP") - field(INPD, "BL45P-MO-STAGE-01:Y:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STAGE-01:Y:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STAGE-01:Y:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STAGE-01:Y:DirectMotorSeq") - field(OUT, "@asyn(BRICK1,7,4)MOTOR_MOVE_ABS") - field(DESC, "Y Stage") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STAGE-01:Y:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STAGE-01:Y:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STAGE-01:Y:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,7,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STAGE-01:Y:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,7,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STAGE-01:Y:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,7,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STAGE-01:Y:MresSource") -} - -record(scalcout, BL45P-MO-STAGE-01:Y:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STAGE-01:Y:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STAGE-01:Y:Mres.INPA CA") - field(FLNK, "BL45P-MO-STAGE-01:Y:OffsetSource") -} - -record(scalcout, "BL45P-MO-STAGE-01:Y:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STAGE-01:Y:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STAGE-01:Y:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,7,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STAGE-01:Y:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STAGE-01:Y:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STAGE-01:Y:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STAGE-01:Y:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STAGE-01:Y:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STAGE-01:Y:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,7,4)PMAC_OFFSET") -} - -# add numbered name aliases for above 3 templates -############################################################ -# -# Template to allow coordinate system kinematics to know -# the resolution of each real motor -# -# Also to allow control of CS mappings of real motors -# -############################################################### - - -############################################################### -# Mres and Offset -############################################################### - -#calc mres to be written -record(calcout, "BL45P-MO-STEP-01:M7:MRES_CALC") { - field(CALC, "B?-A*C:A*C") - field(INPA, "BL45P-MO-STEP-01:M7.MRES CP") - field(INPB, "BL45P-MO-STEP-01:M7.DIR CP") - field(INPC, "BL45P-MO-STEP-01:M7:SCALE") - field(OUT, "BL45P-MO-STEP-01:M7:MRES_SET PP") - field(OOPT, "When Non-zero") -} - -record(ao, "BL45P-MO-STEP-01:M7:MRES_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4800+7`") - field(FLNK, "BL45P-MO-STEP-01:M7:MR_MOVE_WRITE") -} - -#calc offset to be written -record(calcout, "BL45P-MO-STEP-01:M7:OFF_SET_CALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-STEP-01:M7.OFF CP") - field(OUT, "BL45P-MO-STEP-01:M7:OFF_SET PP") -} - -record(ao, "BL45P-MO-STEP-01:M7:OFF_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4900+7`") - field(FLNK, "BL45P-MO-STEP-01:M7:MR_MOVE_WRITE") -} - - -############################################################### -# Coordinate System mapping control -############################################################### - -# Read back which CS number the axis is in -record(ai, "BL45P-MO-STEP-01:M7:CsRaw_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,7)PMAC_C_AXIS_CS") - field(PINI, "NO") - field(SCAN, "I/O Intr") -} - -# Set which CS the axis is in via CSController Port Name -record(mbbo, "BL45P-MO-STEP-01:M7:CsPort") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,7)PMAC_C_GROUP_CS_PORT") -} - -record(mbbi, "BL45P-MO-STEP-01:M7:CsPort_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,7)PMAC_C_GROUP_CS_PORT_RBV") - field(SCAN, "I/O Intr") -} - -# set the axis' CS assignment (one of A B C U V W X Y Z I) -record(stringout, "BL45P-MO-STEP-01:M7:CsAxis") { - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(BRICK1,7)PMAC_C_GROUP_ASSIGN") -} - -record(stringin, "BL45P-MO-STEP-01:M7:CsAxis_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,7)PMAC_C_GROUP_ASSIGN_RBV") - field(SCAN, "I/O Intr") -}# These are the supporting records for doing kill, eloss, and adding autohome -# support to a motor record - -#% macro, SPORT, Asyn port for eloss commands -# usually PMAC_S for pmacs, the name of the pmacAsynIpPort for bricks -#% macro, HOME, Prefix for autohome instance. Defaults to BL45P-MO-STEP-01:. If unspecified, -# the template contains enough records to keep the motor record happy -#% macro, PMAC, Prefix for pmacStatus instance. Needed to get axis descriptions -# onto pmacStatusAxis screen -#% macro, ALLOW_HOMED_SET, Set to a blank to allow this axis to have its homed -# status manually. This is set to a comment character by default. - -# disable motor when homing -record(calcout, "BL45P-MO-STEP-01:M7:SDIS") { -# field(INPA, "BL45P-MO-STEP-01::HM:HOMING CP") -} - -# dummy record in case we aren't homing -record(busy, "BL45P-MO-STEP-01::HM:HOMING") { -} - -# Monitor homing status -record(bi, "BL45P-MO-STEP-01:M7:HOMING") { - field(DESC, "Monitor homing status of autohome") - field(INP, "BL45P-MO-STEP-01::HM:HOMING CP") - field(FLNK, "BL45P-MO-STEP-01:M7:HOMING_CALC") - field(ZNAM, "Done") - field(ONAM, "Busy") -} - -# report to the driver if this motor is being autohomed -record(calcout, BL45P-MO-STEP-01:M7:HOMING_CALC) -{ - field(PINI, 1) - field(INPA, "BL45P-MO-STEP-01:M7:HOMING") - field(CALC, "A") - field(OUT, "BL45P-MO-STEP-01:M7:HOMING_STATUS PP") -} - -# report to the driver if this motor is being autohomed -record(ao, BL45P-MO-STEP-01:M7:HOMING_STATUS) -{ - field(DESC, "driver update on autohome") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,7)HOMING_STATUS") -} - - -# reports position of motor without offset -record(ai, "BL45P-MO-STEP-01:M7:HMPOS_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#7P") - field(DESC, "Y Stage") - field(SCAN, "I/O Intr") - field(PINI, "YES") - field(PREC, "3") - field(EGU, "mm") -} - -record(calcout, "BL45P-MO-STEP-01:M7:HMPOS:CALC") { - field(INPA, "BL45P-MO-STEP-01:M7.MRES CP") - field(INPB, "BL45P-MO-STEP-01:M7:SCALE") - field(INPC, "BL45P-MO-STEP-01:M7:HMPOS_RBV CP") - field(CALC, "A*B*C") - field(OUT, "BL45P-MO-STEP-01:M7:HMPOS PP") -} - -record(ai, "BL45P-MO-STEP-01:M7:HMPOS") { - field(DESC, "Y Stage") - field(PREC, "3") - field(EGU, "mm") -} - -# at startup, tell autohome template about this motor -record(stringout, "BL45P-MO-STEP-01:M7:SETHMPV") { - field(PINI, "YES") - field(VAL, "BL45P-MO-STEP-01:M7") - field(OUT, "BL45P-MO-STEP-01::HM:M7PV PP") -} - -record(stringout, "BL45P-MO-STEP-01::HM:M7PV"){ -} - -# define a kill record -record(ao, "BL45P-MO-STEP-01:M7:KILL") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,7)PMAC_C_KILL_AXIS") - field(VAL, "0") -} - -record(calc, "BL45P-MO-STEP-01:M7:ELOSSVAR") { - field(CALC, "464+7") - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STEP-01:M7:ELOSS") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_P`464+7`") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-MO-STEP-01:M7:ELOSSRC") { - field(OUT, "BL45P-MO-STEP-01:M7:SEND_ELOSSRC PP") - field(DESC, "Write 0 to A to reset Eloss") - field(CALC, "A") - field(A, "0") -} - -record(ao, "BL45P-MO-STEP-01:M7:SEND_ELOSSRC") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_VIS_P`464+7`") -} - -# Overwrite the description of pmacStatus -record(stringout, "BL45P-MO-STEP-01:AXIS7:DESC"){ - field(VAL, "SAMP01.Y Y Stage") -} - -#record(bo, "BL45P-MO-STEP-01:M7:HOMED") { -# field(DESC, "Set homed status for axis 7") -# field(ZNAM, "NOT HOMED") -# field(ONAM, "HOMED") -# field(FLNK, "BL45P-MO-STEP-01:M7:HOMEDSET") -#} - -#record(calcout, "BL45P-MO-STEP-01:M7:HOMEDSET") { -# field(DESC, "Homed status") -# field(DTYP, "stream") -# field(CALC, "A") -# field(INPA, "BL45P-MO-STEP-01:M7:HOMED") -# field(OUT, "@pmac.proto setIntVar(m745) BRICK1port") -#} -############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:M7:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:M7:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:M7:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:M7:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:M7:Mres PP") - field(INPC, "BL45P-MO-STEP-01:M7:Offset PP") - field(INPD, "BL45P-MO-STEP-01:M7:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:M7:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:M7:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:M7:DirectMotorSeq") - field(OUT, "@asyn(BRICK1,7,4)MOTOR_MOVE_ABS") - field(DESC, "Y Stage") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:M7:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:M7:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:M7:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,7,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:M7:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,7,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:M7:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,7,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:M7:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:M7:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:M7:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:M7:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:M7:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:M7:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:M7:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:M7:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,7,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:M7:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:M7:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:M7:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:M7:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:M7:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:M7:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,7,4)PMAC_OFFSET") -}# % macro, PMAC, The P prefix for the motor controller (must match P in pmacController.template) - -# this template defines a motor with two names:- -# (1) root is BL45P-MO-STAGE-01:Z, the macros fully define the name of the motor -# (2) 'numbered' names of the form BL45P-MO-STEP-01:Mx where x is the motor number -# names are both assigned to the same PV via aliases in the case basic_asyn_motor -# or simply duplicated for all other included templates, this approach works because -# the PVs all point to the same ASYN parameters and improves maintainability of this -# file - -# include motor record from the motor module -#% macro, __doc__, Basic template, including motor record and associated tags -#% macro, P , Device Prefix -#% macro, M , Device Suffix -#% macro, PORT , Asyn port for motor record -#% macro, ADDR , Address on controller -#% macro, DESC , Description, displayed on EDM screen -#% macro, MRES , Motor Step Size (EGU) -#% macro, DTYP , DTYP of record -#% macro, DIR , User Direction -#% macro, VBAS , Base Velocity (EGU/s) -#% macro, VELO , Velocity (EGU/s) -#% macro, VMAX , Max Velocity (EGU/s), defaults to VELO -#% macro, ACCL , Seconds to Velocity -#% macro, BDST , BL Distance (EGU) -#% macro, BVEL , BL Velocity (EGU/s) -#% macro, BACC , BL Seconds to Veloc. -#% macro, PREC , Display Precision -#% macro, EGU , Engineering Units -#% macro, DHLM , Dial High Limit -#% macro, DLLM , Dial Low Limit -#% macro, HLM , User High Limit -#% macro, LLM , User Low Limit -#% macro, HLSV , HW Lim. Violation Svr -#% macro, INIT , Startup commands -#% macro, SREV , Steps per Revolution -#% macro, RRES , Readback Step Size (EGU) -#% macro, TWV , Tweak Step Size (EGU) -#% macro, ERES , Encoder Step Size (EGU) -#% macro, JAR , Jog Acceleration (EGU/s^2) -#% macro, UEIP , Use Encoder If Present -#% macro, URIP , Use RDBL If Present -#% macro, RDBL , Readback Location, set URIP = 1 if you specify this -#% macro, RLNK , Readback output link -#% macro, RTRY , Max retry count -#% macro, DLY , Readback settle time (s) -#% macro, OFF , User Offset (EGU) -#% macro, RDBD , Retry Deadband (EGU) -#% macro, FOFF , Freeze Offset, 0=variable, 1=frozen -#% macro, ADEL , Alarm monitor deadband (EGU) -#% macro, NTM , New Target Monitor, only set to 0 for soft motors -#% macro, FEHIGH , HIGH limit for following error -#% macro, FEHIHI , HIHI limit for following error -#% macro, FEHHSV , HIHI alarm severity for following error -#% macro, FEHSV , HIGH alarm severity for following error -#% macro, SCALE , Scale factor, if pmacSetAxisScale is used this should be set -#% macro, HOMEVIS, If 1 then home is visible on the gui -#% macro, HOMEVISSTR, If HOMEVIS=0, then display this text on the gui instead -#% macro, name , Object name and gui association name -#% macro, alh , Set this to alh to add the motor to the alarm handler and send emails, -# set to '#' to comment out alh lines -#% macro, gda_name, Name to export this as to GDA -#% macro, gda_desc, Description to export this as to GDA - -# AUTOSAVE: level 0 = before record init, level 1 = before AND after record init -#% autosave 0 DVAL OFF -#% autosave 1 DIR DHLM DLLM TWV VBAS VELO ACCL BDST BVEL BACC RDBD EGU RTRY UEIP URIP DLY PREC DISA DISP FOFF OFF FRAC OMSL JVEL JAR ADEL MDEL -#% archiver 0.5 Monitor -#% archiver 0.5 Monitor RBV -#% archiver 10 Monitor OFF -#% archiver 10 Monitor MRES -#% gdatag,template,simpleMotor,,Z Stage -#% gdatag,motor,rw,,RECORD,Motor -#% alh -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:Z - -# This associates an edm screen with the template -# % gui, SAMP01.Z, edm, motor.edl, motor=BL45P-MO-STAGE-01:Z -# % gui, SAMP01.Z, edmembed, motor-embed-small.edl, motor=BL45P-MO-STAGE-01:Z,filename=motor.edl,box-label=Z Stage - -# This associates a BOY screen with the template -# % gui, SAMP01.Z, boydetail, motorApp_opi/motor_detail.opi, P=BL45P-MO-STAGE-01,M=:Z,DESC=Z Stage, name=SAMP01.Z -# % gui, SAMP01.Z, boyembed, motorApp_opi/motor_embed_box.opi, P=BL45P-MO-STAGE-01,M=:Z,DESC=Z Stage, name=SAMP01.Z -# % gui, SAMP01.Z, boyembed, motorApp_opi/motor_embed.opi, P=BL45P-MO-STAGE-01,M=:Z,DESC=Z Stage, name=SAMP01.Z -# FIXME: this should be in pmacUtil or tpmac -# % gui, SAMP01.Z, boyembed, motorApp_opi/motor_homed_embed.opi, P=BL45P-MO-STAGE-01,M=:Z - -# This makes the component icon reflect the status and severity -# % gui, SAMP01.Z, status, .MOVN -# % gui, SAMP01.Z, sevr - -# These define what PVs a motor detail screen should contain -# % gui, SAMP01.Z, statusbits, Status, .MSTA, Direction Positive, Done, High Limit, Home Limit, Unused, Closed Loop, Following Error, At Home, Encoder Present, Problem, Moving, Gain Support, Comms Error, Low Limit, Homed -# % gui, SAMP01.Z, statusbits, ELoss, :ELOSS, Encoder Loss, Amplifier Loss, Sys Fail -# % gui, SAMP01.Z, command, ELoss Clear, :ELOSSRC.A -# % gui, SAMP01.Z, statusbits, Limit Violation, .LVIO, Lim -# % gui, SAMP01.Z, statusbits, At High Limit, .HLS, High -# % gui, SAMP01.Z, statusbits, At Low Limit, .LLS, Low -# % gui, SAMP01.Z, demand, User High Limit, .HLM -# % gui, SAMP01.Z, demand, User Low Limit, .LLM -# % gui, SAMP01.Z, demand, Dial High Limit, .DHLM -# % gui, SAMP01.Z, demand, Dial Low Limit, .DLLM - -# % gui, SAMP01.Z, demand, Motor demand, .VAL -# % gui, SAMP01.Z, readback, Motor readback, .RBV -# % gui, SAMP01.Z, command, Stop, .STOP -# % gui, SAMP01.Z, command, Home Forward, .HOMF -# % gui, SAMP01.Z, command, Home Reverse, .HOMR -# % gui, SAMP01.Z, command, Jog Forward, .JOGF -# % gui, SAMP01.Z, command, Jog Reverse, .JOGR -# % gui, SAMP01.Z, command, Tweak Forward, .TWF -# % gui, SAMP01.Z, command, Tweak Reverse, .TWR -# % gui, SAMP01.Z, demand, Tweak Step, .TWV -# % gui, SAMP01.Z, command, Kill, :KILL.PROC, Kill -# % gui, SAMP01.Z, command, Sync VAL=RBV, .SYNC - -# % gui, SAMP01.Z, enum, Direction, .DIR -# % gui, SAMP01.Z, demand, User Offset, .OFF -# % gui, SAMP01.Z, enum, Set/Use, .SET -# % gui, SAMP01.Z, enum, Offset, .FOFF -# % gui, SAMP01.Z, enum, Use Encoder, .UEIP - -# % gui, SAMP01.Z, demand, Motor Step Size, .MRES -# % gui, SAMP01.Z, readback, Steps per Rev, .SREV -# % gui, SAMP01.Z, readback, EGUs per Rev, .UREV -# % gui, SAMP01.Z, demand, Encoder Step Size, .ERES -# % gui, SAMP01.Z, readback, Readback Step Size, .RRES -# % gui, SAMP01.Z, readback, Use Encoder if Present, .UEIP - -# % gui, SAMP01.Z, demand, Max Velocity, .VMAX -# % gui, SAMP01.Z, demand, Base Velocity, .VBAS -# % gui, SAMP01.Z, demand, Velocity, .VELO -# % gui, SAMP01.Z, demand, Secs to Velocity, .ACCL -# % gui, SAMP01.Z, demand, JVEL, .JVEL -# % gui, SAMP01.Z, demand, Jog Acceleration, .JAR -# % gui, SAMP01.Z, demand, Backlash Distance, .BDST -# % gui, SAMP01.Z, demand, Backlash Velocity, .BVEL -# % gui, SAMP01.Z, demand, Backlash Secs to Vel, .BACC -# % gui, SAMP01.Z, demand, Move Fraction, .FRAC -# % gui, SAMP01.Z, demand, Retry Deadband, .RDBD -# % gui, SAMP01.Z, demand, Max Retrys, .RTRY - -# % gui, SAMP01.Z, demand, PREC, .PREC -# % gui, SAMP01.Z, demand, EGU, .EGU - -# % gui, SAMP01.Z, demand, Output Specification, .OUT -# % gui, SAMP01.Z, readback, Readback Location, .RDBL -# % gui, SAMP01.Z, readback, Desired Output Loc, .DOL -# % gui, SAMP01.Z, readback, Output Mode Select, .OMSL -# % gui, SAMP01.Z, readback, Readback Out Link, .RLNK -# % gui, SAMP01.Z, demand, DMOV Input Link, .DINP -# % gui, SAMP01.Z, demand, RMP Input Link, .RINP -# % gui, SAMP01.Z, demand, Stop Out Link, .STOO - - -record(motor,"BL45P-MO-STAGE-01:Z") -{ - field(DESC,"Z Stage") - field(DTYP,"asynMotor") - field(DIR,"0") - field(VELO,"5") - field(VBAS,"0") - field(ACCL,"0.5") - field(BDST,"0") - field(BVEL,"0") - field(BACC,"") - field(OUT,"@asyn(BRICK1,8)") - field(MRES,"0.0005") - field(PREC,"3") - field(EGU,"mm") - field(DHLM,"12") - field(DLLM,"-0.05") - field(HLM,"") - field(LLM,"") - field(HLSV,"MAJOR") - field(INIT,"") - field(RTRY,"0") - field(DLY,"0") - field(HVEL,"0") - field(SREV, "1000") - field(RRES, "") - field(TWV, "1") - field(ERES, "") - field(JVEL, "5") - field(JAR, "") - field(UEIP, "0") - field(URIP, "0") - field(RDBL, "") - field(VMAX, "5") - field(OFF, "0") - field(RDBD, "") - field(FOFF, "0") - field(ADEL, "0") - field(NTM, "1") - field(SDIS, "BL45P-MO-STAGE-01:Z:SDIS.VAL") - field(RLNK, "") -} - -# record that holds the ADDR -record(ao, "BL45P-MO-STAGE-01:Z:ADDR") { - field(PINI, "YES") - field(VAL, "8") -} - -# record that holds the PORT -record(stringout, "BL45P-MO-STAGE-01:Z:PORT") { - field(PINI, "YES") - field(VAL, "BRICK1") -} - -# record that holds the SCALE -record(ao, "BL45P-MO-STAGE-01:Z:SCALE") { - field(PINI, "YES") - field(VAL, "1") -} - -# Write a 1 to this record over Channel Access to disable the motor record and prevent CA writes to any field -# including the demand field. -record(ai, "BL45P-MO-STAGE-01:Z:USER:SDIS") { - field(VAL, "0") - field(FLNK, "BL45P-MO-STAGE-01:Z:SDIS") -} - -# Note: This record forms part of the interface to auto-homing, which uses the "A" field to disable the motor record -# when homing. -# record that will disable and re-enable record if any of its inputs are non-zero -record(calcout, "BL45P-MO-STAGE-01:Z:SDIS") { - field(DESC, "Disable on non-zero input") - field(INPL, "BL45P-MO-STAGE-01:Z:USER:SDIS") - field(CALC, "(A|B|C|D|E|F|G|H|I|J|K|L)>0") - field(OUT, "BL45P-MO-STAGE-01:Z.DISP PP") -} - -# dummy record that looks like a kill command -record(ao, "BL45P-MO-STAGE-01:Z:KILL") { - field(VAL, "1") -} - -# dummy record that looks like eloss status -#% archiver 10 Monitor VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:Z:ELOSS -record(ai, "BL45P-MO-STAGE-01:Z:ELOSS") { - field(PINI, "YES") - field(HIHI, "1") - field(HHSV, "MAJOR") -} - -# dummy record that looks like an eloss reset -record(calcout, "BL45P-MO-STAGE-01:Z:ELOSSRC") { -} - -# check if SYNC has been pressed -record(calcout, "BL45P-MO-STAGE-01:Z:CHECK_SYNC") { - field(INPA, "BL45P-MO-STAGE-01:Z.SYNC CP") - field(CALC, "A>0") - field(OOPT, "When Non-zero") - field(OUT, "BL45P-MO-STAGE-01:Z:MR_MOVE_WRITE.PROC PP") -} - -# dummy record that looks like a record to notify a CS about a raw motor move -record(longout, "BL45P-MO-STAGE-01:Z:MR_MOVE_WRITE") { -} - -#Record to calculate the following error -#% archiver 1 Monitor -record(calc, "BL45P-MO-STAGE-01:Z:FERROR") -{ - field(DESC,"Following Error") - field(INPA,"BL45P-MO-STAGE-01:Z.RMP CP") - field(INPB,"BL45P-MO-STAGE-01:Z.REP NPP") - field(INPC,"BL45P-MO-STAGE-01:Z.MRES NPP") - field(INPD,"BL45P-MO-STAGE-01:Z.ERES NPP") - field(CALC,"ABS((A*C)-(B*D))") - field(FLNK,"BL45P-MO-STAGE-01:Z:FERRORMAX") - field(PREC,"3") - field(EGU, "mm") -} - -#Record to store the maximum following error -#% archiver 10 Monitor VAL -#% autosave 1 VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:Z:FERRORMAX -record(calc, "BL45P-MO-STAGE-01:Z:FERRORMAX") -{ - field(DESC,"Following Error Max") - field(INPA,"BL45P-MO-STAGE-01:Z:FERROR.VAL") - field(INPB,"BL45P-MO-STAGE-01:Z:FERRORMAX.VAL") - field(CALC,"(A>B)?A:B") - field(HIGH,"0") - field(HIHI,"0") - field(HHSV,"NO_ALARM") - field(HSV, "NO_ALARM") - field(PREC,"3") - field(EGU, "mm") -} - -#Record to reset the maximum following error -record(bo, "BL45P-MO-STAGE-01:Z:FEMAXRESET") -{ - field(DESC,"Reset max following error") - field(DTYP,"Soft Channel") - field(OUT, "BL45P-MO-STAGE-01:Z:FERRORMAX.VAL") - field(VAL, "0") -} - - -#Record to determin HOME button visibility on the motor.edl screen. -record(bo, "BL45P-MO-STAGE-01:Z:HOMEVIS") -{ - field(DESC,"Home button visibility") - field(DTYP,"Soft Channel") - field(VAL, "1") - field(ZNAM, "Invisible") - field(ONAM, "Visible") -} - -#Record to display a message if the HOME buttons are not visible (if HOMEVIS=0). -record(stringout, "BL45P-MO-STAGE-01:Z:HOMEVISSTR") -{ - field(DESC, "Home visibility string") - field(DTYP,"Soft Channel") - field(VAL, "Use motor summary screen") -} - - -# numbered name aliases for all PVs in basic_asyn_motor.template -alias(BL45P-MO-STAGE-01:Z, BL45P-MO-STEP-01:M8) -alias(BL45P-MO-STAGE-01:Z:ADDR, BL45P-MO-STEP-01:M8:ADDR) -alias(BL45P-MO-STAGE-01:Z:PORT, BL45P-MO-STEP-01:M8:PORT) -alias(BL45P-MO-STAGE-01:Z:SCALE, BL45P-MO-STEP-01:M8:SCALE) -alias(BL45P-MO-STAGE-01:Z:USER:SDIS, BL45P-MO-STEP-01M8:USER:SDIS) -alias(BL45P-MO-STAGE-01:Z:SDIS, BL45P-MO-STEP-01:M8:SDIS) -alias(BL45P-MO-STAGE-01:Z:KILL, BL45P-MO-STEP-01:M8:KILL) -alias(BL45P-MO-STAGE-01:Z:ELOSS, BL45P-MO-STEP-01:M8:ELOSS) -alias(BL45P-MO-STAGE-01:Z:ELOSSRC, BL45P-MO-STEP-01:M8:ELOSSRC) -alias(BL45P-MO-STAGE-01:Z:MR_MOVE_WRITE, BL45P-MO-STEP-01:M8:MR_MOVE_WRITE) -alias(BL45P-MO-STAGE-01:Z:CHECK_SYNC, BL45P-MO-STEP-01:M8:CHECK_SYNC) -alias(BL45P-MO-STAGE-01:Z:FERROR, BL45P-MO-STEP-01:M8:FERROR) -alias(BL45P-MO-STAGE-01:Z:FERRORMAX, BL45P-MO-STEP-01:M8:FERRORMAX) -alias(BL45P-MO-STAGE-01:Z:FEMAXRESET, BL45P-MO-STEP-01:M8:FEMAXRESET) -alias(BL45P-MO-STAGE-01:Z:HOMEVIS, BL45P-MO-STEP-01:M8:HOMEVIS) -alias(BL45P-MO-STAGE-01:Z:HOMEVISSTR, BL45P-MO-STEP-01:M8:HOMEVISSTR) - - -############################################################ -# -# Template to allow coordinate system kinematics to know -# the resolution of each real motor -# -# Also to allow control of CS mappings of real motors -# -############################################################### - - -############################################################### -# Mres and Offset -############################################################### - -#calc mres to be written -record(calcout, "BL45P-MO-STAGE-01:Z:MRES_CALC") { - field(CALC, "B?-A*C:A*C") - field(INPA, "BL45P-MO-STAGE-01:Z.MRES CP") - field(INPB, "BL45P-MO-STAGE-01:Z.DIR CP") - field(INPC, "BL45P-MO-STAGE-01:Z:SCALE") - field(OUT, "BL45P-MO-STAGE-01:Z:MRES_SET PP") - field(OOPT, "When Non-zero") -} - -record(ao, "BL45P-MO-STAGE-01:Z:MRES_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4800+8`") - field(FLNK, "BL45P-MO-STAGE-01:Z:MR_MOVE_WRITE") -} - -#calc offset to be written -record(calcout, "BL45P-MO-STAGE-01:Z:OFF_SET_CALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-STAGE-01:Z.OFF CP") - field(OUT, "BL45P-MO-STAGE-01:Z:OFF_SET PP") -} - -record(ao, "BL45P-MO-STAGE-01:Z:OFF_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4900+8`") - field(FLNK, "BL45P-MO-STAGE-01:Z:MR_MOVE_WRITE") -} - - -############################################################### -# Coordinate System mapping control -############################################################### - -# Read back which CS number the axis is in -record(ai, "BL45P-MO-STAGE-01:Z:CsRaw_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,8)PMAC_C_AXIS_CS") - field(PINI, "NO") - field(SCAN, "I/O Intr") -} - -# Set which CS the axis is in via CSController Port Name -record(mbbo, "BL45P-MO-STAGE-01:Z:CsPort") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,8)PMAC_C_GROUP_CS_PORT") -} - -record(mbbi, "BL45P-MO-STAGE-01:Z:CsPort_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,8)PMAC_C_GROUP_CS_PORT_RBV") - field(SCAN, "I/O Intr") -} - -# set the axis' CS assignment (one of A B C U V W X Y Z I) -record(stringout, "BL45P-MO-STAGE-01:Z:CsAxis") { - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(BRICK1,8)PMAC_C_GROUP_ASSIGN") -} - -record(stringin, "BL45P-MO-STAGE-01:Z:CsAxis_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,8)PMAC_C_GROUP_ASSIGN_RBV") - field(SCAN, "I/O Intr") -}# These are the supporting records for doing kill, eloss, and adding autohome -# support to a motor record - -#% macro, SPORT, Asyn port for eloss commands -# usually PMAC_S for pmacs, the name of the pmacAsynIpPort for bricks -#% macro, HOME, Prefix for autohome instance. Defaults to BL45P-MO-STAGE-01. If unspecified, -# the template contains enough records to keep the motor record happy -#% macro, PMAC, Prefix for pmacStatus instance. Needed to get axis descriptions -# onto pmacStatusAxis screen -#% macro, ALLOW_HOMED_SET, Set to a blank to allow this axis to have its homed -# status manually. This is set to a comment character by default. - -# disable motor when homing -record(calcout, "BL45P-MO-STAGE-01:Z:SDIS") { -# field(INPA, "BL45P-MO-STAGE-01:HM:HOMING CP") -} - -# dummy record in case we aren't homing -record(busy, "BL45P-MO-STAGE-01:HM:HOMING") { -} - -# Monitor homing status -record(bi, "BL45P-MO-STAGE-01:Z:HOMING") { - field(DESC, "Monitor homing status of autohome") - field(INP, "BL45P-MO-STAGE-01:HM:HOMING CP") - field(FLNK, "BL45P-MO-STAGE-01:Z:HOMING_CALC") - field(ZNAM, "Done") - field(ONAM, "Busy") -} - -# report to the driver if this motor is being autohomed -record(calcout, BL45P-MO-STAGE-01:Z:HOMING_CALC) -{ - field(PINI, 1) - field(INPA, "BL45P-MO-STAGE-01:Z:HOMING") - field(CALC, "A") - field(OUT, "BL45P-MO-STAGE-01:Z:HOMING_STATUS PP") -} - -# report to the driver if this motor is being autohomed -record(ao, BL45P-MO-STAGE-01:Z:HOMING_STATUS) -{ - field(DESC, "driver update on autohome") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,8)HOMING_STATUS") -} - - -# reports position of motor without offset -record(ai, "BL45P-MO-STAGE-01:Z:HMPOS_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#8P") - field(DESC, "Z Stage") - field(SCAN, "I/O Intr") - field(PINI, "YES") - field(PREC, "3") - field(EGU, "mm") -} - -record(calcout, "BL45P-MO-STAGE-01:Z:HMPOS:CALC") { - field(INPA, "BL45P-MO-STAGE-01:Z.MRES CP") - field(INPB, "BL45P-MO-STAGE-01:Z:SCALE") - field(INPC, "BL45P-MO-STAGE-01:Z:HMPOS_RBV CP") - field(CALC, "A*B*C") - field(OUT, "BL45P-MO-STAGE-01:Z:HMPOS PP") -} - -record(ai, "BL45P-MO-STAGE-01:Z:HMPOS") { - field(DESC, "Z Stage") - field(PREC, "3") - field(EGU, "mm") -} - -# at startup, tell autohome template about this motor -record(stringout, "BL45P-MO-STAGE-01:Z:SETHMPV") { - field(PINI, "YES") - field(VAL, "BL45P-MO-STAGE-01:Z") - field(OUT, "BL45P-MO-STAGE-01:HM:M8PV PP") -} - -record(stringout, "BL45P-MO-STAGE-01:HM:M8PV"){ -} - -# define a kill record -record(ao, "BL45P-MO-STAGE-01:Z:KILL") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,8)PMAC_C_KILL_AXIS") - field(VAL, "0") -} - -record(calc, "BL45P-MO-STAGE-01:Z:ELOSSVAR") { - field(CALC, "464+8") - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STAGE-01:Z:ELOSS") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_P`464+8`") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-MO-STAGE-01:Z:ELOSSRC") { - field(OUT, "BL45P-MO-STAGE-01:Z:SEND_ELOSSRC PP") - field(DESC, "Write 0 to A to reset Eloss") - field(CALC, "A") - field(A, "0") -} - -record(ao, "BL45P-MO-STAGE-01:Z:SEND_ELOSSRC") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_VIS_P`464+8`") -} - -# Overwrite the description of pmacStatus -record(stringout, "BL45P-MO-STEP-01:AXIS8:DESC"){ - field(VAL, "SAMP01.Z Z Stage") -} - -#record(bo, "BL45P-MO-STAGE-01:Z:HOMED") { -# field(DESC, "Set homed status for axis 8") -# field(ZNAM, "NOT HOMED") -# field(ONAM, "HOMED") -# field(FLNK, "BL45P-MO-STAGE-01:Z:HOMEDSET") -#} - -#record(calcout, "BL45P-MO-STAGE-01:Z:HOMEDSET") { -# field(DESC, "Homed status") -# field(DTYP, "stream") -# field(CALC, "A") -# field(INPA, "BL45P-MO-STAGE-01:Z:HOMED") -# field(OUT, "@pmac.proto setIntVar(m845) BRICK1port") -#} -############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STAGE-01:Z:DirectDemand") -{ - field(FLNK, "BL45P-MO-STAGE-01:Z:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STAGE-01:Z:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STAGE-01:Z:DirectDemand") - field(INPB, "BL45P-MO-STAGE-01:Z:Mres PP") - field(INPC, "BL45P-MO-STAGE-01:Z:Offset PP") - field(INPD, "BL45P-MO-STAGE-01:Z:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STAGE-01:Z:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STAGE-01:Z:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STAGE-01:Z:DirectMotorSeq") - field(OUT, "@asyn(BRICK1,8,4)MOTOR_MOVE_ABS") - field(DESC, "Z Stage") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STAGE-01:Z:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STAGE-01:Z:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STAGE-01:Z:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,8,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STAGE-01:Z:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,8,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STAGE-01:Z:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,8,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STAGE-01:Z:MresSource") -} - -record(scalcout, BL45P-MO-STAGE-01:Z:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STAGE-01:Z:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STAGE-01:Z:Mres.INPA CA") - field(FLNK, "BL45P-MO-STAGE-01:Z:OffsetSource") -} - -record(scalcout, "BL45P-MO-STAGE-01:Z:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STAGE-01:Z:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STAGE-01:Z:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,8,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STAGE-01:Z:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STAGE-01:Z:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STAGE-01:Z:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STAGE-01:Z:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STAGE-01:Z:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STAGE-01:Z:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,8,4)PMAC_OFFSET") -} - -# add numbered name aliases for above 3 templates -############################################################ -# -# Template to allow coordinate system kinematics to know -# the resolution of each real motor -# -# Also to allow control of CS mappings of real motors -# -############################################################### - - -############################################################### -# Mres and Offset -############################################################### - -#calc mres to be written -record(calcout, "BL45P-MO-STEP-01:M8:MRES_CALC") { - field(CALC, "B?-A*C:A*C") - field(INPA, "BL45P-MO-STEP-01:M8.MRES CP") - field(INPB, "BL45P-MO-STEP-01:M8.DIR CP") - field(INPC, "BL45P-MO-STEP-01:M8:SCALE") - field(OUT, "BL45P-MO-STEP-01:M8:MRES_SET PP") - field(OOPT, "When Non-zero") -} - -record(ao, "BL45P-MO-STEP-01:M8:MRES_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4800+8`") - field(FLNK, "BL45P-MO-STEP-01:M8:MR_MOVE_WRITE") -} - -#calc offset to be written -record(calcout, "BL45P-MO-STEP-01:M8:OFF_SET_CALC") { - field(CALC, "A") - field(INPA, "BL45P-MO-STEP-01:M8.OFF CP") - field(OUT, "BL45P-MO-STEP-01:M8:OFF_SET PP") -} - -record(ao, "BL45P-MO-STEP-01:M8:OFF_SET") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PMAC_WD_P`4900+8`") - field(FLNK, "BL45P-MO-STEP-01:M8:MR_MOVE_WRITE") -} - - -############################################################### -# Coordinate System mapping control -############################################################### - -# Read back which CS number the axis is in -record(ai, "BL45P-MO-STEP-01:M8:CsRaw_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,8)PMAC_C_AXIS_CS") - field(PINI, "NO") - field(SCAN, "I/O Intr") -} - -# Set which CS the axis is in via CSController Port Name -record(mbbo, "BL45P-MO-STEP-01:M8:CsPort") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,8)PMAC_C_GROUP_CS_PORT") -} - -record(mbbi, "BL45P-MO-STEP-01:M8:CsPort_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,8)PMAC_C_GROUP_CS_PORT_RBV") - field(SCAN, "I/O Intr") -} - -# set the axis' CS assignment (one of A B C U V W X Y Z I) -record(stringout, "BL45P-MO-STEP-01:M8:CsAxis") { - field(DTYP, "asynOctetWrite") - field(OUT, "@asyn(BRICK1,8)PMAC_C_GROUP_ASSIGN") -} - -record(stringin, "BL45P-MO-STEP-01:M8:CsAxis_RBV") { - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,8)PMAC_C_GROUP_ASSIGN_RBV") - field(SCAN, "I/O Intr") -}# These are the supporting records for doing kill, eloss, and adding autohome -# support to a motor record - -#% macro, SPORT, Asyn port for eloss commands -# usually PMAC_S for pmacs, the name of the pmacAsynIpPort for bricks -#% macro, HOME, Prefix for autohome instance. Defaults to BL45P-MO-STEP-01:. If unspecified, -# the template contains enough records to keep the motor record happy -#% macro, PMAC, Prefix for pmacStatus instance. Needed to get axis descriptions -# onto pmacStatusAxis screen -#% macro, ALLOW_HOMED_SET, Set to a blank to allow this axis to have its homed -# status manually. This is set to a comment character by default. - -# disable motor when homing -record(calcout, "BL45P-MO-STEP-01:M8:SDIS") { -# field(INPA, "BL45P-MO-STEP-01::HM:HOMING CP") -} - -# dummy record in case we aren't homing -record(busy, "BL45P-MO-STEP-01::HM:HOMING") { -} - -# Monitor homing status -record(bi, "BL45P-MO-STEP-01:M8:HOMING") { - field(DESC, "Monitor homing status of autohome") - field(INP, "BL45P-MO-STEP-01::HM:HOMING CP") - field(FLNK, "BL45P-MO-STEP-01:M8:HOMING_CALC") - field(ZNAM, "Done") - field(ONAM, "Busy") -} - -# report to the driver if this motor is being autohomed -record(calcout, BL45P-MO-STEP-01:M8:HOMING_CALC) -{ - field(PINI, 1) - field(INPA, "BL45P-MO-STEP-01:M8:HOMING") - field(CALC, "A") - field(OUT, "BL45P-MO-STEP-01:M8:HOMING_STATUS PP") -} - -# report to the driver if this motor is being autohomed -record(ao, BL45P-MO-STEP-01:M8:HOMING_STATUS) -{ - field(DESC, "driver update on autohome") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,8)HOMING_STATUS") -} - - -# reports position of motor without offset -record(ai, "BL45P-MO-STEP-01:M8:HMPOS_RBV") { - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_VDF_#8P") - field(DESC, "Z Stage") - field(SCAN, "I/O Intr") - field(PINI, "YES") - field(PREC, "3") - field(EGU, "mm") -} - -record(calcout, "BL45P-MO-STEP-01:M8:HMPOS:CALC") { - field(INPA, "BL45P-MO-STEP-01:M8.MRES CP") - field(INPB, "BL45P-MO-STEP-01:M8:SCALE") - field(INPC, "BL45P-MO-STEP-01:M8:HMPOS_RBV CP") - field(CALC, "A*B*C") - field(OUT, "BL45P-MO-STEP-01:M8:HMPOS PP") -} - -record(ai, "BL45P-MO-STEP-01:M8:HMPOS") { - field(DESC, "Z Stage") - field(PREC, "3") - field(EGU, "mm") -} - -# at startup, tell autohome template about this motor -record(stringout, "BL45P-MO-STEP-01:M8:SETHMPV") { - field(PINI, "YES") - field(VAL, "BL45P-MO-STEP-01:M8") - field(OUT, "BL45P-MO-STEP-01::HM:M8PV PP") -} - -record(stringout, "BL45P-MO-STEP-01::HM:M8PV"){ -} - -# define a kill record -record(ao, "BL45P-MO-STEP-01:M8:KILL") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,8)PMAC_C_KILL_AXIS") - field(VAL, "0") -} - -record(calc, "BL45P-MO-STEP-01:M8:ELOSSVAR") { - field(CALC, "464+8") - field(PINI, "YES") -} - -record(ai, "BL45P-MO-STEP-01:M8:ELOSS") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_VIS_P`464+8`") - field(SCAN, "I/O Intr") -} - -record(calcout, "BL45P-MO-STEP-01:M8:ELOSSRC") { - field(OUT, "BL45P-MO-STEP-01:M8:SEND_ELOSSRC PP") - field(DESC, "Write 0 to A to reset Eloss") - field(CALC, "A") - field(A, "0") -} - -record(ao, "BL45P-MO-STEP-01:M8:SEND_ELOSSRC") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_VIS_P`464+8`") -} - -# Overwrite the description of pmacStatus -record(stringout, "BL45P-MO-STEP-01:AXIS8:DESC"){ - field(VAL, "SAMP01.Z Z Stage") -} - -#record(bo, "BL45P-MO-STEP-01:M8:HOMED") { -# field(DESC, "Set homed status for axis 8") -# field(ZNAM, "NOT HOMED") -# field(ONAM, "HOMED") -# field(FLNK, "BL45P-MO-STEP-01:M8:HOMEDSET") -#} - -#record(calcout, "BL45P-MO-STEP-01:M8:HOMEDSET") { -# field(DESC, "Homed status") -# field(DTYP, "stream") -# field(CALC, "A") -# field(INPA, "BL45P-MO-STEP-01:M8:HOMED") -# field(OUT, "@pmac.proto setIntVar(m845) BRICK1port") -#} -############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:M8:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:M8:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:M8:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:M8:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:M8:Mres PP") - field(INPC, "BL45P-MO-STEP-01:M8:Offset PP") - field(INPD, "BL45P-MO-STEP-01:M8:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:M8:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:M8:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:M8:DirectMotorSeq") - field(OUT, "@asyn(BRICK1,8,4)MOTOR_MOVE_ABS") - field(DESC, "Z Stage") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:M8:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:M8:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:M8:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,8,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:M8:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,8,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:M8:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(BRICK1,8,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:M8:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:M8:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:M8:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:M8:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:M8:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:M8:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:M8:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:M8:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,8,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:M8:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:M8:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:M8:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:M8:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:M8:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:M8:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,8,4)PMAC_OFFSET") -}############################################################## -# -# Records to read asynPortDriver parameters from the param -# library for the class pmacCsController. -# -# The Asyn address is set as zero because that's what we use -# for controller parameters. -# -############################################################## - -# % macro, PORT, The asyn port for the pmac cs controller -# % macro, PARENTPORT, The asyn port for the parent pmac controller -# % macro, TIMEOUT, Timeout for controller communication -# % macro, PMAC, PV Prefix for the motor controller -# % macro, CS, Coordinate System Number for the cs controller - -# -# allow query of this CS controller's Parent's Port Name -# -record(stringout, "BL45P-MO-STEP-01:CS1:ParentPort") -{ - field(VAL, "BRICK1") - field(PINI, "YES") -} - -# -# allow query of this CS controller's Port Name -# -record(stringout, "BL45P-MO-STEP-01:CS1:Port") -{ - field(VAL, "CS1") - field(PINI, "YES") -} - -# -# abort motion in this CS -# -record(bo, "BL45P-MO-STEP-01:CS1:Abort") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,0,4)PMAC_C_ABORT") -} - -############################################################## -# Control deferred mode for all axes in this CS -############################################################## -record(bo, "BL45P-MO-STEP-01:CS1:DeferMoves") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,0,4)MOTOR_DEFER_MOVES") - field(VAL, "0") - field(ZNAM, "Defer Off") - field(ONAM, "Defer On") -} - - -############################################################## -# Control the time of programmed moves -# 0 = fast as possible -# -1 = controlled by CS default feedrate isx89 -# >0 = take at least this many milli-secs to move -############################################################## -# % autosave 2 -record(ao, "BL45P-MO-STEP-01:CS1:CsMoveTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,0,4)PMAC_C_CS_MOVE_TIME") - field(VAL, "-1") -} - -record(ai, "BL45P-MO-STEP-01:CS1:CsMoveTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(CS1,0,4)PMAC_C_CS_MOVE_TIME") - field(SCAN, "I/O Intr") -} - -############################################################## -# Record of the Kinematics on the PMAC -############################################################## - -record(waveform, "BL45P-MO-STEP-01:CS1:FWD_KINEMATIC_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(CS1,0)PMAC_CS_FWD_KIN") - field(FTVL, "CHAR") - field(NELM, "20000") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-MO-STEP-01:CS1:INV_KINEMATIC_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(CS1,0)PMAC_CS_INV_KIN") - field(FTVL, "CHAR") - field(NELM, "20000") - field(SCAN, "I/O Intr") -} - -############################################################## -# Listing of combined Q Variables (slow poll) -############################################################## -record(waveform, "BL45P-MO-STEP-01:CS1:Q_VARIABLES_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(CS1,0)PMAC_CS_Q_VARIABLES") - field(FTVL, "CHAR") - field(NELM, "20000") - field(SCAN, "I/O Intr") -} - -############################################################## -# Immediate demands for each CS motor -############################################################## -############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS1:M1:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS1:M1:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M1:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS1:M1:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS1:M1:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS1:M1:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS1:M1:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS1:M1:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS1:M1:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS1:M1:DirectMotorSeq") - field(OUT, "@asyn(CS1,1,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor A") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS1:M1:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS1:M1:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS1:M1:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,1,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS1:M1:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,1,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS1:M1:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS1,1,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS1:M1:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS1:M1:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M1:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS1:M1:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS1:M1:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M1:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M1:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS1:M1:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,1,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS1:M1:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M1:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS1:M1:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS1:M1:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M1:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS1:M1:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,1,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS1:M2:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS1:M2:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M2:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS1:M2:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS1:M2:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS1:M2:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS1:M2:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS1:M2:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS1:M2:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS1:M2:DirectMotorSeq") - field(OUT, "@asyn(CS1,2,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor B") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS1:M2:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS1:M2:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS1:M2:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,2,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS1:M2:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,2,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS1:M2:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS1,2,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS1:M2:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS1:M2:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M2:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS1:M2:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS1:M2:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M2:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M2:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS1:M2:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,2,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS1:M2:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M2:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS1:M2:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS1:M2:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M2:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS1:M2:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,2,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS1:M3:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS1:M3:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M3:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS1:M3:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS1:M3:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS1:M3:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS1:M3:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS1:M3:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS1:M3:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS1:M3:DirectMotorSeq") - field(OUT, "@asyn(CS1,3,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor C") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS1:M3:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS1:M3:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS1:M3:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,3,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS1:M3:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,3,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS1:M3:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS1,3,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS1:M3:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS1:M3:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M3:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS1:M3:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS1:M3:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M3:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M3:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS1:M3:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,3,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS1:M3:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M3:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS1:M3:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS1:M3:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M3:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS1:M3:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,3,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS1:M4:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS1:M4:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M4:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS1:M4:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS1:M4:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS1:M4:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS1:M4:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS1:M4:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS1:M4:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS1:M4:DirectMotorSeq") - field(OUT, "@asyn(CS1,4,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor U") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS1:M4:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS1:M4:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS1:M4:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,4,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS1:M4:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,4,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS1:M4:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS1,4,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS1:M4:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS1:M4:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M4:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS1:M4:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS1:M4:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M4:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M4:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS1:M4:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,4,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS1:M4:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M4:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS1:M4:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS1:M4:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M4:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS1:M4:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,4,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS1:M5:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS1:M5:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M5:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS1:M5:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS1:M5:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS1:M5:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS1:M5:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS1:M5:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS1:M5:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS1:M5:DirectMotorSeq") - field(OUT, "@asyn(CS1,5,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor V") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS1:M5:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS1:M5:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS1:M5:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,5,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS1:M5:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,5,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS1:M5:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS1,5,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS1:M5:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS1:M5:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M5:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS1:M5:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS1:M5:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M5:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M5:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS1:M5:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,5,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS1:M5:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M5:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS1:M5:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS1:M5:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M5:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS1:M5:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,5,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS1:M6:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS1:M6:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M6:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS1:M6:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS1:M6:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS1:M6:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS1:M6:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS1:M6:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS1:M6:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS1:M6:DirectMotorSeq") - field(OUT, "@asyn(CS1,6,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor W") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS1:M6:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS1:M6:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS1:M6:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,6,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS1:M6:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,6,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS1:M6:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS1,6,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS1:M6:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS1:M6:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M6:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS1:M6:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS1:M6:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M6:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M6:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS1:M6:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,6,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS1:M6:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M6:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS1:M6:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS1:M6:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M6:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS1:M6:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,6,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS1:M7:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS1:M7:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M7:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS1:M7:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS1:M7:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS1:M7:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS1:M7:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS1:M7:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS1:M7:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS1:M7:DirectMotorSeq") - field(OUT, "@asyn(CS1,7,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor X") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS1:M7:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS1:M7:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS1:M7:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,7,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS1:M7:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,7,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS1:M7:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS1,7,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS1:M7:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS1:M7:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M7:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS1:M7:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS1:M7:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M7:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M7:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS1:M7:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,7,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS1:M7:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M7:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS1:M7:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS1:M7:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M7:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS1:M7:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,7,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS1:M8:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS1:M8:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M8:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS1:M8:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS1:M8:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS1:M8:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS1:M8:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS1:M8:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS1:M8:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS1:M8:DirectMotorSeq") - field(OUT, "@asyn(CS1,8,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor Y") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS1:M8:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS1:M8:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS1:M8:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,8,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS1:M8:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,8,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS1:M8:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS1,8,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS1:M8:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS1:M8:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M8:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS1:M8:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS1:M8:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M8:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M8:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS1:M8:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,8,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS1:M8:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M8:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS1:M8:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS1:M8:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M8:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS1:M8:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,8,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS1:M9:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS1:M9:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M9:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS1:M9:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS1:M9:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS1:M9:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS1:M9:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS1:M9:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS1:M9:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS1:M9:DirectMotorSeq") - field(OUT, "@asyn(CS1,9,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor Z") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS1:M9:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS1:M9:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS1:M9:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,9,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS1:M9:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS1,9,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS1:M9:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS1,9,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS1:M9:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS1:M9:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M9:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS1:M9:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS1:M9:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS1:M9:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M9:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS1:M9:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,9,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS1:M9:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS1:M9:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS1:M9:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS1:M9:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS1:M9:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS1:M9:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS1,9,4)PMAC_OFFSET") -}############################################################## -# -# Records to read asynPortDriver parameters from the param -# library for the class pmacCsController. -# -# The Asyn address is set as zero because that's what we use -# for controller parameters. -# -############################################################## - -# % macro, PORT, The asyn port for the pmac cs controller -# % macro, PARENTPORT, The asyn port for the parent pmac controller -# % macro, TIMEOUT, Timeout for controller communication -# % macro, PMAC, PV Prefix for the motor controller -# % macro, CS, Coordinate System Number for the cs controller - -# -# allow query of this CS controller's Parent's Port Name -# -record(stringout, "BL45P-MO-STEP-01:CS2:ParentPort") -{ - field(VAL, "BRICK1") - field(PINI, "YES") -} - -# -# allow query of this CS controller's Port Name -# -record(stringout, "BL45P-MO-STEP-01:CS2:Port") -{ - field(VAL, "CS2") - field(PINI, "YES") -} - -# -# abort motion in this CS -# -record(bo, "BL45P-MO-STEP-01:CS2:Abort") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,0,4)PMAC_C_ABORT") -} - -############################################################## -# Control deferred mode for all axes in this CS -############################################################## -record(bo, "BL45P-MO-STEP-01:CS2:DeferMoves") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,0,4)MOTOR_DEFER_MOVES") - field(VAL, "0") - field(ZNAM, "Defer Off") - field(ONAM, "Defer On") -} - - -############################################################## -# Control the time of programmed moves -# 0 = fast as possible -# -1 = controlled by CS default feedrate isx89 -# >0 = take at least this many milli-secs to move -############################################################## -# % autosave 2 -record(ao, "BL45P-MO-STEP-01:CS2:CsMoveTime") -{ - field(PINI, "YES") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,0,4)PMAC_C_CS_MOVE_TIME") - field(VAL, "-1") -} - -record(ai, "BL45P-MO-STEP-01:CS2:CsMoveTime_RBV") -{ - field(DTYP, "asynFloat64") - field(INP, "@asyn(CS2,0,4)PMAC_C_CS_MOVE_TIME") - field(SCAN, "I/O Intr") -} - -############################################################## -# Record of the Kinematics on the PMAC -############################################################## - -record(waveform, "BL45P-MO-STEP-01:CS2:FWD_KINEMATIC_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(CS2,0)PMAC_CS_FWD_KIN") - field(FTVL, "CHAR") - field(NELM, "20000") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-MO-STEP-01:CS2:INV_KINEMATIC_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(CS2,0)PMAC_CS_INV_KIN") - field(FTVL, "CHAR") - field(NELM, "20000") - field(SCAN, "I/O Intr") -} - -############################################################## -# Listing of combined Q Variables (slow poll) -############################################################## -record(waveform, "BL45P-MO-STEP-01:CS2:Q_VARIABLES_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(CS2,0)PMAC_CS_Q_VARIABLES") - field(FTVL, "CHAR") - field(NELM, "20000") - field(SCAN, "I/O Intr") -} - -############################################################## -# Immediate demands for each CS motor -############################################################## -############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS2:M1:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS2:M1:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M1:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS2:M1:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS2:M1:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS2:M1:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS2:M1:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS2:M1:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS2:M1:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS2:M1:DirectMotorSeq") - field(OUT, "@asyn(CS2,1,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor A") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS2:M1:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS2:M1:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS2:M1:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,1,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS2:M1:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,1,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS2:M1:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS2,1,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS2:M1:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS2:M1:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M1:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS2:M1:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS2:M1:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M1:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M1:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS2:M1:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,1,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS2:M1:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M1:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS2:M1:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS2:M1:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M1:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS2:M1:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,1,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS2:M2:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS2:M2:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M2:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS2:M2:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS2:M2:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS2:M2:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS2:M2:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS2:M2:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS2:M2:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS2:M2:DirectMotorSeq") - field(OUT, "@asyn(CS2,2,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor B") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS2:M2:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS2:M2:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS2:M2:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,2,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS2:M2:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,2,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS2:M2:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS2,2,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS2:M2:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS2:M2:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M2:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS2:M2:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS2:M2:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M2:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M2:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS2:M2:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,2,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS2:M2:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M2:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS2:M2:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS2:M2:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M2:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS2:M2:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,2,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS2:M3:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS2:M3:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M3:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS2:M3:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS2:M3:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS2:M3:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS2:M3:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS2:M3:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS2:M3:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS2:M3:DirectMotorSeq") - field(OUT, "@asyn(CS2,3,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor C") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS2:M3:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS2:M3:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS2:M3:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,3,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS2:M3:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,3,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS2:M3:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS2,3,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS2:M3:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS2:M3:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M3:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS2:M3:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS2:M3:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M3:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M3:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS2:M3:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,3,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS2:M3:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M3:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS2:M3:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS2:M3:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M3:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS2:M3:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,3,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS2:M4:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS2:M4:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M4:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS2:M4:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS2:M4:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS2:M4:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS2:M4:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS2:M4:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS2:M4:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS2:M4:DirectMotorSeq") - field(OUT, "@asyn(CS2,4,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor U") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS2:M4:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS2:M4:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS2:M4:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,4,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS2:M4:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,4,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS2:M4:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS2,4,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS2:M4:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS2:M4:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M4:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS2:M4:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS2:M4:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M4:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M4:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS2:M4:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,4,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS2:M4:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M4:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS2:M4:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS2:M4:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M4:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS2:M4:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,4,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS2:M5:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS2:M5:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M5:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS2:M5:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS2:M5:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS2:M5:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS2:M5:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS2:M5:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS2:M5:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS2:M5:DirectMotorSeq") - field(OUT, "@asyn(CS2,5,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor V") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS2:M5:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS2:M5:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS2:M5:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,5,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS2:M5:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,5,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS2:M5:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS2,5,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS2:M5:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS2:M5:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M5:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS2:M5:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS2:M5:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M5:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M5:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS2:M5:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,5,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS2:M5:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M5:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS2:M5:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS2:M5:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M5:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS2:M5:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,5,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS2:M6:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS2:M6:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M6:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS2:M6:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS2:M6:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS2:M6:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS2:M6:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS2:M6:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS2:M6:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS2:M6:DirectMotorSeq") - field(OUT, "@asyn(CS2,6,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor W") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS2:M6:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS2:M6:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS2:M6:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,6,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS2:M6:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,6,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS2:M6:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS2,6,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS2:M6:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS2:M6:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M6:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS2:M6:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS2:M6:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M6:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M6:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS2:M6:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,6,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS2:M6:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M6:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS2:M6:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS2:M6:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M6:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS2:M6:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,6,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS2:M7:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS2:M7:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M7:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS2:M7:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS2:M7:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS2:M7:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS2:M7:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS2:M7:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS2:M7:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS2:M7:DirectMotorSeq") - field(OUT, "@asyn(CS2,7,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor X") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS2:M7:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS2:M7:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS2:M7:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,7,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS2:M7:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,7,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS2:M7:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS2,7,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS2:M7:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS2:M7:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M7:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS2:M7:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS2:M7:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M7:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M7:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS2:M7:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,7,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS2:M7:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M7:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS2:M7:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS2:M7:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M7:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS2:M7:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,7,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS2:M8:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS2:M8:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M8:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS2:M8:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS2:M8:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS2:M8:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS2:M8:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS2:M8:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS2:M8:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS2:M8:DirectMotorSeq") - field(OUT, "@asyn(CS2,8,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor Y") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS2:M8:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS2:M8:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS2:M8:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,8,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS2:M8:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,8,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS2:M8:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS2,8,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS2:M8:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS2:M8:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M8:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS2:M8:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS2:M8:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M8:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M8:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS2:M8:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,8,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS2:M8:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M8:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS2:M8:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS2:M8:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M8:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS2:M8:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,8,4)PMAC_OFFSET") -}############################################################## -# -# A record to sit along side each motor record and give direct -# access to the driver without any motor record logic -# may be used with virtual and real motors -# -# This template requires that all real motors mentioned have -# a real underlying motor record (to determine MRES) this is -# not required for virtual motors -# -# This currently only supports demand but could be extended -# to totally replace motor record (perhaps) -# -############################################################## - -# % macro, PORT, The asyn port (motor controller or CS controller) -# % macro, ADDR, The asyn address (real or CS axis number) -# % macro, DESC, Description -# % macro, PMAC, PV Prefix for the motor controller -# % macro, P, PV Prefix for direct motors -# % macro, M, Motor PV suffix ('Mx' for real and 'CSx:My' for CS axes) - -############################################################## -# Set immediate demand for this motor -############################################################## -#% archiver 0.5 Monitor -record(ao, "BL45P-MO-STEP-01:CS2:M9:DirectDemand") -{ - field(FLNK, "BL45P-MO-STEP-01:CS2:M9:DirectCountsCalc.PROC") - field(PREC, 4) -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M9:DirectCountsCalc") -{ - field(INPA, "BL45P-MO-STEP-01:CS2:M9:DirectDemand") - field(INPB, "BL45P-MO-STEP-01:CS2:M9:Mres PP") - field(INPC, "BL45P-MO-STEP-01:CS2:M9:Offset PP") - field(INPD, "BL45P-MO-STEP-01:CS2:M9:SCALE") - field(CALC, "(A-C)/B*D") - field(OUT, "BL45P-MO-STEP-01:CS2:M9:RawDirectDemand PP") -} - -record(ao, "BL45P-MO-STEP-01:CS2:M9:RawDirectDemand") -{ - field(DTYP, "asynFloat64") - field(FLNK, "BL45P-MO-STEP-01:CS2:M9:DirectMotorSeq") - field(OUT, "@asyn(CS2,9,4)MOTOR_MOVE_ABS") - field(DESC, "CS Motor Z") -} - -# busy record to make ca_put_callback return only once the motor is done moving -record(seq, "BL45P-MO-STEP-01:CS2:M9:DirectMotorSeq") -{ - field(LNK1, "BL45P-MO-STEP-01:CS2:M9:DirectMotorBusy PP") - field(DO1, "1") -} - -record(busy, "BL45P-MO-STEP-01:CS2:M9:DirectMotorBusy") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,9,4)MOTOR_STATUS_MOVING") - field(ZNAM, "Idle") - field(ONAM, "Moving") - field(PINI, "1") - field(VAL, "0") -} - - -# record that holds the SCALE -# this overrides the definition in basic_asyn_motor.template and connects it to the -# asyn parameter that tracks the scale factor in the driver. This is set by calling -# pmacSetAxisScale (for CS axes this function is exposed to startup via -# pmacSetCoordStepsPerUnit) - -record(ao, "BL45P-MO-STEP-01:CS2:M9:SCALE") { - field(DTYP, "asynInt32") - field(OUT, "@asyn(CS2,9,4)PMAC_MOTOR_SCALE") -} - -############################################################## -# Database logic to set the correct ASLO and OFF on -# DirectDemand so that it can be commanded in EGUs -# -# The Mres and Offset are copied into ALSO and OFF from -# the appropriate real motor determined by DirectMotorNumber. -# -# For CS motors DirectMotorNumber is set by the driver when it -# maps a CS motor directly to a real motor. -# -# If as CS motor is not directly mapped then it wants an -# mres of 1 but the scaling means this usually translates -# to 0.0001. -# -# For real motors DirectMotorNumber is always reported as the -# motor's own number -# -# The calculation in MresSource handles linking in the -# correct real_motor mres or the value 1 for kinematic CS axes -# -############################################################## -record(longin, "BL45P-MO-STEP-01:CS2:M9:DirectMotorNumber") -{ - field(PINI, 1) - field(VAL, 0) - field(DTYP, "asynInt32") - field(SCAN, "I/O Intr") - field(INP, "@asyn(CS2,9,4)PMAC_REAL_MOTOR_NUMBER") - field(FLNK, "BL45P-MO-STEP-01:CS2:M9:MresSource") -} - -record(scalcout, BL45P-MO-STEP-01:CS2:M9:MresSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M9:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.MRES CPP',A)):1") - field(OUT, "BL45P-MO-STEP-01:CS2:M9:Mres.INPA CA") - field(FLNK, "BL45P-MO-STEP-01:CS2:M9:OffsetSource") -} - -record(scalcout, "BL45P-MO-STEP-01:CS2:M9:Mres") -{ - field(INPA, "1") # to be overwritten by MresSource - field(CALC, "A") - field(VAL, 1) - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M9:MresDrv PP") - field(PREC, 6) -} - -record(ao,"BL45P-MO-STEP-01:CS2:M9:MresDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,9,4)PMAC_MRES") -} - -# todo non zero offset in CS kinematic axes no supported -record(scalcout, BL45P-MO-STEP-01:CS2:M9:OffsetSource) -{ - field(DTYP, "Soft Channel") - field(INPA, "BL45P-MO-STEP-01:CS2:M9:DirectMotorNumber") - field(CALC, "A?(PRINTF('BL45P-MO-STEP-01:M%d.OFF CPP',A)):0") - field(OUT, "BL45P-MO-STEP-01:CS2:M9:Offset.INPA CA") -} - - -record(scalcout, BL45P-MO-STEP-01:CS2:M9:Offset) -{ - field(INPA, "0") # to be overwritten by OffsetSource - field(CALC, "A") - field(PINI, "YES") - field(OUT, "BL45P-MO-STEP-01:CS2:M9:OffsetDrv PP") - field(PREC, 4) -} - - -record(ao,"BL45P-MO-STEP-01:CS2:M9:OffsetDrv") { - field(DTYP, "asynFloat64") - field(OUT, "@asyn(CS2,9,4)PMAC_OFFSET") -}# % macro, PORT, The asyn port for the pmac controller -# % macro, PMAC, PV Prefix for the motor controller -# % macro, NPOINTS, Number of points that can be built at any time -# % macro, MAXPOINTS, Maximum number of points in a scan -# % macro, NAxes, Number of axes -# % macro, PREC, precision of axis defnitions - - -# -# allow query of parent's Port Name -# -record(stringout, "BL45P-MO-STEP-01:ParentPort") -{ - field(VAL, "BRICK1") - field(PINI, "YES") -} - -## -## Records to read the motion program and driver versions -## -record(ai, "BL45P-MO-STEP-01:ProgramVersion_RBV") { - field(DESC, "Motion Program Version") - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_PROG_V") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-MO-STEP-01:DriverVersion_RBV") { - field(DESC, "EPICS Driver Version") - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_CODE_V") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:ProfileNaxes") { - field(PINI, "YES") - field(VAL, "8") -} - -## -## Record to read the number of axes selected for the current -## trajectory scan -## -record(longin, "BL45P-MO-STEP-01:ProfileNumAxes_RBV") { - field(DESC, "Number of axes selected") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PROFILE_NUM_AXES") - field(SCAN, "I/O Intr") -} - -record(longout,"BL45P-MO-STEP-01:ProfileNumPoints") { - field(DESC, "# of points in profile") - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_NUM_POINTS") - field(VAL, "4000000") -} - -## -## Records to specify the number of motion points that define -## the trajectory scan -## -record(longin, "BL45P-MO-STEP-01:ProfileNumPoints_RBV") { - field(DESC, "Number of points defined") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PROFILE_NUM_POINTS") - field(SCAN, "I/O Intr") -} - - -## -## Records to specify the number of motion points to build -## into the scan currently -## -record(longout,"BL45P-MO-STEP-01:ProfilePointsToBuild") { - field(DESC, "# of points to build/append") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_NUM_BUILD") - field(VAL, "0") -} - -record(longin, "BL45P-MO-STEP-01:ProfilePointsToBuild_RBV") { - field(DESC, "# of points to build/append") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PROFILE_NUM_BUILD") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:ProfilePointsBuilt_RBV") { - field(DESC, "# of points built into scan") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PROFILE_POINTS_BUILT") - field(SCAN, "I/O Intr") -} - -## -## Record to read the current executing point of trajectory scan -## -record(longin, "BL45P-MO-STEP-01:ProfileCurrentPoint_RBV") { - field(DESC, "Currently executing point") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PROFILE_CURRENT_POINT") - field(SCAN, "I/O Intr") -} - - -## -## Records to set the current time mode for the trajectory scan -## FIXED => A single value is used for each point -## ARRAY => An array of time points is supplied -## -record(bo, "BL45P-MO-STEP-01:ProfileTimeMode") -{ - field(DESC, "Time mode for trajectory scan") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_TIME_MODE") - field(ZNAM, "FIXED") - field(ONAM, "ARRAY") - field(VAL, "1") - field(PINI, "YES") -} - -record(bi, "BL45P-MO-STEP-01:ProfileTimeMode_RBV") -{ - field(DESC, "Time mode for trajectory scan") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PROFILE_TIME_MODE") - field(ZNAM, "FIXED") - field(ONAM, "ARRAY") - field(SCAN, "I/O Intr") -} - -## -## Records to specify the fixed time between points -## -record(ao, "BL45P-MO-STEP-01:ProfileFixedTime") { - field(DESC, "Fixed time between points") - field(DTYP, "asynFloat64") - field(OUT, "@asyn(BRICK1,0)PROFILE_FIXED_TIME") - field(PINI, "NO") -} - -record(ai, "BL45P-MO-STEP-01:ProfileFixedTime_RBV") { - field(DESC, "Fixed time between points") - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PROFILE_FIXED_TIME") - field(SCAN, "I/O Intr") -} - -## -## Record to specify the array of times between points -## -record(waveform, "BL45P-MO-STEP-01:ProfileTimeArray") -{ - field(PINI, "NO") - field(DTYP, "asynFloat64ArrayOut") - field(INP, "@asyn(BRICK1,0)PROFILE_TIME_ARRAY") - field(FTVL, "DOUBLE") - field(NELM, "500000") -} - -## Record to specify the User profile called at each point -record(waveform,"BL45P-MO-STEP-01:UserArray") { - field(DESC, "User profile call at each point") - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(BRICK1,0)PMAC_PROFILE_USER") - field(NELM, "500000") - field(FTVL, "LONG") - field(PREC, "3") -} - -## Record to specific the Velocity mode to use at each point -record(waveform,"BL45P-MO-STEP-01:VelocityMode") { - field(DESC, "Velocity mode at each point") - field(DTYP, "asynInt32ArrayOut") - field(INP, "@asyn(BRICK1,0)PMAC_PROFILE_VELMODE") - field(NELM, "500000") - field(FTVL, "LONG") - field(PREC, "3") -} - - -################################################################### -# These records control trajectory scan building (pre-execute) # -# # -################################################################### - -#record(stringout, "BL45P-MO-STEP-01:ProfileCsName") { -# field(DTYP, "asynOctetWrite") -# field(OUT, "@asyn(BRICK1,0)PMAC_C_TRAJ_CS_PORT") -#} - -record(mbbo, "BL45P-MO-STEP-01:ProfileCsName") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1 0)PMAC_C_TRAJ_CS_PORT") - field(PINI, "YES") - field(VAL, "0") -} - -#record(stringin, "BL45P-MO-STEP-01:ProfileCsName_RBV") { -# field(DTYP, "asynOctetRead") -# field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_CS_PORT") -# field(SCAN, "I/O Intr") -#} - -record(mbbi, "BL45P-MO-STEP-01:ProfileCsName_RBV") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1 0)PMAC_C_TRAJ_CS_PORT") - field(SCAN, "I/O Intr") - field(VAL, "0") -} - -################################################################### -# These records control trajectory scan building (pre-execute) # -# # -################################################################### - -record(bo,"BL45P-MO-STEP-01:ProfileBuild") { - field(DESC,"Build and check profile") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_BUILD") - field(ZNAM, "Done") - field(ONAM, "Build") -} - -record(mbbi, "BL45P-MO-STEP-01:ProfileBuildState_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PROFILE_BUILD_STATE") - field(ZRVL, "0") - field(ZRST, "Done") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "Busy") - field(ONSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(mbbi, "BL45P-MO-STEP-01:ProfileBuildStatus_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PROFILE_BUILD_STATUS") - field(ZRVL, "0") - field(ZRST, "Undefined") - field(ZRSV, "INVALID") - field(ONVL, "1") - field(ONST, "Success") - field(ONSV, "NO_ALARM") - field(TWVL, "2") - field(TWST, "Failure") - field(TWSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-MO-STEP-01:ProfileBuildMessage_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,0)PROFILE_BUILD_MESSAGE") - field(FTVL, "CHAR") - field(NELM, "1000") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control trajectory scan appending (points can # -# only be appended after a scan has been built) # -################################################################### - -record(bo,"BL45P-MO-STEP-01:ProfileAppend") { - field(DESC,"Append points to profile") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_APPEND") - field(ZNAM, "Done") - field(ONAM, "Append") -} - -record(mbbi, "BL45P-MO-STEP-01:ProfileAppendState_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PROFILE_APPEND_STATE") - field(ZRVL, "0") - field(ZRST, "Done") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "Busy") - field(ONSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(mbbi, "BL45P-MO-STEP-01:ProfileAppendStatus_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PROFILE_APPEND_STATUS") - field(ZRVL, "0") - field(ZRST, "Undefined") - field(ZRSV, "INVALID") - field(ONVL, "1") - field(ONST, "Success") - field(ONSV, "NO_ALARM") - field(TWVL, "2") - field(TWST, "Failure") - field(TWSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-MO-STEP-01:ProfileAppendMessage_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,0)PROFILE_APPEND_MESSAGE") - field(FTVL, "CHAR") - field(NELM, "1000") - field(SCAN, "I/O Intr") -} - - -################################################################### -# These records control trajectory scan execution # -# # -################################################################### - -record(busy,"BL45P-MO-STEP-01:ProfileExecute") { - field(DESC,"Execute the profile") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_EXECUTE") - field(ZNAM, "Done") - field(ONAM, "Execute") -} - -record(mbbi, "BL45P-MO-STEP-01:ProfileExecuteState_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PROFILE_EXECUTE_STATE") - field(ZRVL, "0") - field(ZRST, "Done") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "Move start") - field(ONSV, "MINOR") - field(TWVL, "2") - field(TWST, "Executing") - field(TWSV, "MINOR") - field(THVL, "3") - field(THST, "Flyback") - field(THSV, "MINOR") - field(SCAN, "I/O Intr") -} - -record(mbbi, "BL45P-MO-STEP-01:ProfileExecuteStatus_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PROFILE_EXECUTE_STATUS") - field(ZRVL, "0") - field(ZRST, "Undefined") - field(ZRSV, "INVALID") - field(ONVL, "1") - field(ONST, "Success") - field(ONSV, "NO_ALARM") - field(TWVL, "2") - field(TWST, "Failure") - field(TWSV, "MAJOR") - field(THVL, "3") - field(THST, "Abort") - field(THSV, "MAJOR") - field(FRVL, "4") - field(FRST, "Timeout") - field(FRSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -record(waveform, "BL45P-MO-STEP-01:ProfileExecuteMessage_RBV") -{ - field(DTYP, "asynOctetRead") - field(INP, "@asyn(BRICK1,0)PROFILE_EXECUTE_MESSAGE") - field(FTVL, "CHAR") - field(NELM, "1000") - field(SCAN, "I/O Intr") -} - -################################################################### -# This record aborts a trajectory scan # -# # -################################################################### - -record(busy,"BL45P-MO-STEP-01:ProfileAbort") { - field(DESC,"Abort currently executing profile") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_ABORT") - field(ZNAM, "Done") - field(ONAM, "Abort") -} - -################################################################### -# These records are to set and read the motion program number # -# # -################################################################### - -record(longout, "BL45P-MO-STEP-01:TscanProgNo") { - field(DESC, "Trajectory program number") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PMAC_C_TRAJ_PROG") -} - -record(longin, "BL45P-MO-STEP-01:TscanProgNo_RBV") { - field(DESC, "Trajectory program number") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_PROG") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records provide status feedback # -# # -################################################################### - -record(longin, "BL45P-MO-STEP-01:BufferAAddress_RBV") { - field(DESC, "PMAC address of buffer A") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_ADRA") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:BufferBAddress_RBV") { - field(DESC, "PMAC address of buffer B") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_ADRB") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:BufferLength_RBV") { - field(DESC, "Length of trajectory buffers") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_LENGTH") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:CurrentIndex_RBV") { - field(DESC, "Current PMAC index of buffer") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_INDEX") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:TotalPoints_RBV") { - field(DESC, "Total points scanned") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_POINTS") - field(SCAN, "I/O Intr") -} - -record(bi, "BL45P-MO-STEP-01:CurrentBuffer_RBV") { - field(DESC, "Current PMAC buffer in use") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_CBUFF") - field(ZNAM, "A") - field(ONAM, "B") - field(SCAN, "I/O Intr") -} - -record(mbbi, "BL45P-MO-STEP-01:TrajectoryStatus_RBV") { - field(DESC, "Current PMAC trajectory status") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_STATUS") - field(ZRVL, "0") - field(ONVL, "1") - field(TWVL, "2") - field(THVL, "3") - field(ZRST, "Idle") - field(ONST, "Running") - field(TWST, "Finished") - field(THST, "Error") - field(SCAN, "I/O Intr") -} - -################################################################### -# These records report the current EPICS filled buffer ptrs # -# # -################################################################### - -record(longin, "BL45P-MO-STEP-01:EpicsBufferAPtr_RBV") { - field(DESC, "Current EPICS buffer A Ptr") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_FILLA") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:EpicsBufferBPtr_RBV") { - field(DESC, "Current EPICS buffer B Ptr") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_FILLB") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-MO-STEP-01:TscanTime_RBV") { - field(DESC, "Time of scan (s)") - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_TIME") - field(SCAN, "I/O Intr") -} - -record(longin, "BL45P-MO-STEP-01:TscanCs_RBV") { - field(DESC, "CS Number of current scan") - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_CS") - field(SCAN, "I/O Intr") -} - -record(ai, "BL45P-MO-STEP-01:TscanPercent_RBV") { - field(DESC, "Time of scan (s)") - field(DTYP, "asynFloat64") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_PERCENT") - field(SCAN, "I/O Intr") - field(EGU, "%") -} - -record(mbbi, "BL45P-MO-STEP-01:TscanExtStatus_RBV") { - field(DTYP, "asynInt32") - field(INP, "@asyn(BRICK1,0)PMAC_C_TRAJ_ESTATUS") - field(ZRVL, "0") - field(ZRST, "Good") - field(ZRSV, "NO_ALARM") - field(ONVL, "1") - field(ONST, "Bad") - field(ONSV, "MAJOR") - field(SCAN, "I/O Intr") -} - -################################################################### -# Axis A Trajectory Scan Records # -# # -################################################################### - -record(bo,"BL45P-MO-STEP-01:A:UseAxis") { - field(DESC, "Use axis A in scan") - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_USE_AXIS_A") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -# Target position array for this axis -record(waveform,"BL45P-MO-STEP-01:A:Positions") { - field(DESC, "Axis A positions") - field(DTYP, "asynFloat64ArrayOut") - field(INP, "@asyn(BRICK1,0)PROFILE_POSITIONS_A") - field(NELM, "500000") - field(FTVL, "DOUBLE") - field(PREC, "3") - field(PINI, "YES") -} - -record(longout,"BL45P-MO-STEP-01:A:NoOfPts") { - field(DESC, "Axis A Qty Points") - field(SCAN, "1 second") - field(OMSL, "closed_loop") - field(DOL, "BL45P-MO-STEP-01:A:Positions.NORD") -} - -################################################################### -# Axis B Trajectory Scan Records # -# # -################################################################### - -record(bo,"BL45P-MO-STEP-01:B:UseAxis") { - field(DESC, "Use axis B in scan") - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_USE_AXIS_B") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -# Target position array for this axis -record(waveform,"BL45P-MO-STEP-01:B:Positions") { - field(DESC, "Axis B positions") - field(DTYP, "asynFloat64ArrayOut") - field(INP, "@asyn(BRICK1,0)PROFILE_POSITIONS_B") - field(NELM, "500000") - field(FTVL, "DOUBLE") - field(PREC, "3") - field(PINI, "YES") -} - -record(longout,"BL45P-MO-STEP-01:B:NoOfPts") { - field(DESC, "Axis B Qty Points") - field(SCAN, "1 second") - field(OMSL, "closed_loop") - field(DOL, "BL45P-MO-STEP-01:B:Positions.NORD") -} - - -################################################################### -# Axis C Trajectory Scan Records # -# # -################################################################### - -record(bo,"BL45P-MO-STEP-01:C:UseAxis") { - field(DESC, "Use axis C in scan") - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_USE_AXIS_C") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -# Target position array for this axis -record(waveform,"BL45P-MO-STEP-01:C:Positions") { - field(DESC, "Axis C positions") - field(DTYP, "asynFloat64ArrayOut") - field(INP, "@asyn(BRICK1,0)PROFILE_POSITIONS_C") - field(NELM, "500000") - field(FTVL, "DOUBLE") - field(PREC, "3") - field(PINI, "YES") -} - -record(longout,"BL45P-MO-STEP-01:C:NoOfPts") { - field(DESC, "Axis C Qty Points") - field(SCAN, "1 second") - field(OMSL, "closed_loop") - field(DOL, "BL45P-MO-STEP-01:C:Positions.NORD") -} - - -################################################################### -# Axis U Trajectory Scan Records # -# # -################################################################### - -record(bo,"BL45P-MO-STEP-01:U:UseAxis") { - field(DESC, "Use axis U in scan") - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_USE_AXIS_U") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -# Target position array for this axis -record(waveform,"BL45P-MO-STEP-01:U:Positions") { - field(DESC, "Axis U positions") - field(DTYP, "asynFloat64ArrayOut") - field(INP, "@asyn(BRICK1,0)PROFILE_POSITIONS_U") - field(NELM, "500000") - field(FTVL, "DOUBLE") - field(PREC, "3") - field(PINI, "YES") -} - -record(longout,"BL45P-MO-STEP-01:U:NoOfPts") { - field(DESC, "Axis U Qty Points") - field(SCAN, "1 second") - field(OMSL, "closed_loop") - field(DOL, "BL45P-MO-STEP-01:U:Positions.NORD") -} - - -################################################################### -# Axis V Trajectory Scan Records # -# # -################################################################### - -record(bo,"BL45P-MO-STEP-01:V:UseAxis") { - field(DESC, "Use axis V in scan") - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_USE_AXIS_V") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -# Target position array for this axis -record(waveform,"BL45P-MO-STEP-01:V:Positions") { - field(DESC, "Axis V positions") - field(DTYP, "asynFloat64ArrayOut") - field(INP, "@asyn(BRICK1,0)PROFILE_POSITIONS_V") - field(NELM, "500000") - field(FTVL, "DOUBLE") - field(PREC, "3") - field(PINI, "YES") -} - -record(longout,"BL45P-MO-STEP-01:V:NoOfPts") { - field(DESC, "Axis V Qty Points") - field(SCAN, "1 second") - field(OMSL, "closed_loop") - field(DOL, "BL45P-MO-STEP-01:V:Positions.NORD") -} - -################################################################### -# Axis W Trajectory Scan Records # -# # -################################################################### - -record(bo,"BL45P-MO-STEP-01:W:UseAxis") { - field(DESC, "Use axis W in scan") - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_USE_AXIS_W") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -# Target position array for this axis -record(waveform,"BL45P-MO-STEP-01:W:Positions") { - field(DESC, "Axis W positions") - field(DTYP, "asynFloat64ArrayOut") - field(INP, "@asyn(BRICK1,0)PROFILE_POSITIONS_W") - field(NELM, "500000") - field(FTVL, "DOUBLE") - field(PREC, "3") - field(PINI, "YES") -} - -record(longout,"BL45P-MO-STEP-01:W:NoOfPts") { - field(DESC, "Axis W Qty Points") - field(SCAN, "1 second") - field(OMSL, "closed_loop") - field(DOL, "BL45P-MO-STEP-01:W:Positions.NORD") -} - -################################################################### -# Axis X Trajectory Scan Records # -# # -################################################################### - -record(bo,"BL45P-MO-STEP-01:X:UseAxis") { - field(DESC, "Use axis X in scan") - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_USE_AXIS_X") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -# Target position array for this axis -record(waveform,"BL45P-MO-STEP-01:X:Positions") { - field(DESC, "Axis X positions") - field(DTYP, "asynFloat64ArrayOut") - field(INP, "@asyn(BRICK1,0)PROFILE_POSITIONS_X") - field(NELM, "500000") - field(FTVL, "DOUBLE") - field(PREC, "3") - field(PINI, "YES") -} - -record(longout,"BL45P-MO-STEP-01:X:NoOfPts") { - field(DESC, "Axis X Qty Points") - field(SCAN, "1 second") - field(OMSL, "closed_loop") - field(DOL, "BL45P-MO-STEP-01:X:Positions.NORD") -} - -################################################################### -# Axis Y Trajectory Scan Records # -# # -################################################################### - -record(bo,"BL45P-MO-STEP-01:Y:UseAxis") { - field(DESC, "Use axis Y in scan") - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_USE_AXIS_Y") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -# Target position array for this axis -record(waveform,"BL45P-MO-STEP-01:Y:Positions") { - field(DESC, "Axis Y positions") - field(DTYP, "asynFloat64ArrayOut") - field(INP, "@asyn(BRICK1,0)PROFILE_POSITIONS_Y") - field(NELM, "500000") - field(FTVL, "DOUBLE") - field(PREC, "3") - field(PINI, "YES") -} - -record(longout,"BL45P-MO-STEP-01:Y:NoOfPts") { - field(DESC, "Axis Y Qty Points") - field(SCAN, "1 second") - field(OMSL, "closed_loop") - field(DOL, "BL45P-MO-STEP-01:Y:Positions.NORD") -} - -################################################################### -# Axis Z Trajectory Scan Records # -# # -################################################################### - -record(bo,"BL45P-MO-STEP-01:Z:UseAxis") { - field(DESC, "Use axis Z in scan") - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn(BRICK1,0)PROFILE_USE_AXIS_Z") - field(VAL, "0") - field(ZNAM, "No") - field(ONAM, "Yes") -} - -# Target position array for this axis -record(waveform,"BL45P-MO-STEP-01:Z:Positions") { - field(DESC, "Axis Z positions") - field(DTYP, "asynFloat64ArrayOut") - field(INP, "@asyn(BRICK1,0)PROFILE_POSITIONS_Z") - field(NELM, "500000") - field(FTVL, "DOUBLE") - field(PREC, "3") - field(PINI, "YES") -} - -record(longout,"BL45P-MO-STEP-01:Z:NoOfPts") { - field(DESC, "Axis Z Qty Points") - field(SCAN, "1 second") - field(OMSL, "closed_loop") - field(DOL, "BL45P-MO-STEP-01:Z:Positions.NORD") -} - -# A Coordinate system axis. - -# macros listed here are those not described in basic_asyn_motor.template -# % macro, PMAC, The P prefix for the motor controller (must match P in pmacController.template) -# % macro, CS, The CS num for this axis (must match CS in pmacCsController.template) - -#% macro, __doc__, Basic template, including motor record and associated tags -#% macro, P , Device Prefix -#% macro, M , Device Suffix -#% macro, PORT , Asyn port for motor record -#% macro, ADDR , Address on controller -#% macro, DESC , Description, displayed on EDM screen -#% macro, MRES , Motor Step Size (EGU) -#% macro, DTYP , DTYP of record -#% macro, DIR , User Direction -#% macro, VBAS , Base Velocity (EGU/s) -#% macro, VELO , Velocity (EGU/s) -#% macro, VMAX , Max Velocity (EGU/s), defaults to VELO -#% macro, ACCL , Seconds to Velocity -#% macro, BDST , BL Distance (EGU) -#% macro, BVEL , BL Velocity (EGU/s) -#% macro, BACC , BL Seconds to Veloc. -#% macro, PREC , Display Precision -#% macro, EGU , Engineering Units -#% macro, DHLM , Dial High Limit -#% macro, DLLM , Dial Low Limit -#% macro, HLM , User High Limit -#% macro, LLM , User Low Limit -#% macro, HLSV , HW Lim. Violation Svr -#% macro, INIT , Startup commands -#% macro, SREV , Steps per Revolution -#% macro, RRES , Readback Step Size (EGU) -#% macro, TWV , Tweak Step Size (EGU) -#% macro, ERES , Encoder Step Size (EGU) -#% macro, JAR , Jog Acceleration (EGU/s^2) -#% macro, UEIP , Use Encoder If Present -#% macro, URIP , Use RDBL If Present -#% macro, RDBL , Readback Location, set URIP = 1 if you specify this -#% macro, RLNK , Readback output link -#% macro, RTRY , Max retry count -#% macro, DLY , Readback settle time (s) -#% macro, OFF , User Offset (EGU) -#% macro, RDBD , Retry Deadband (EGU) -#% macro, FOFF , Freeze Offset, 0=variable, 1=frozen -#% macro, ADEL , Alarm monitor deadband (EGU) -#% macro, NTM , New Target Monitor, only set to 0 for soft motors -#% macro, FEHIGH , HIGH limit for following error -#% macro, FEHIHI , HIHI limit for following error -#% macro, FEHHSV , HIHI alarm severity for following error -#% macro, FEHSV , HIGH alarm severity for following error -#% macro, SCALE , Scale factor, if pmacSetAxisScale is used this should be set -#% macro, HOMEVIS, If 1 then home is visible on the gui -#% macro, HOMEVISSTR, If HOMEVIS=0, then display this text on the gui instead -#% macro, name , Object name and gui association name -#% macro, alh , Set this to alh to add the motor to the alarm handler and send emails, -# set to '#' to comment out alh lines -#% macro, gda_name, Name to export this as to GDA -#% macro, gda_desc, Description to export this as to GDA - -# AUTOSAVE: level 0 = before record init, level 1 = before AND after record init -#% autosave 0 DVAL OFF -#% autosave 1 DIR DHLM DLLM TWV VBAS VELO ACCL BDST BVEL BACC RDBD EGU RTRY UEIP URIP DLY PREC DISA DISP FOFF OFF FRAC OMSL JVEL JAR ADEL MDEL -#% archiver 0.5 Monitor -#% archiver 0.5 Monitor RBV -#% archiver 10 Monitor OFF -#% archiver 10 Monitor MRES -#% gdatag,template,simpleMotor,,Virtual X -#% gdatag,motor,rw,,RECORD,Motor -#% alh -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:VX - -# This associates an edm screen with the template -# % gui, SAMP01.VX, edm, motor.edl, motor=BL45P-MO-STAGE-01:VX -# % gui, SAMP01.VX, edmembed, motor-embed-small.edl, motor=BL45P-MO-STAGE-01:VX,filename=motor.edl,box-label=Virtual X - -# This associates a BOY screen with the template -# % gui, SAMP01.VX, boydetail, motorApp_opi/motor_detail.opi, P=BL45P-MO-STAGE-01,M=:VX,DESC=Virtual X, name=SAMP01.VX -# % gui, SAMP01.VX, boyembed, motorApp_opi/motor_embed_box.opi, P=BL45P-MO-STAGE-01,M=:VX,DESC=Virtual X, name=SAMP01.VX -# % gui, SAMP01.VX, boyembed, motorApp_opi/motor_embed.opi, P=BL45P-MO-STAGE-01,M=:VX,DESC=Virtual X, name=SAMP01.VX -# FIXME: this should be in pmacUtil or tpmac -# % gui, SAMP01.VX, boyembed, motorApp_opi/motor_homed_embed.opi, P=BL45P-MO-STAGE-01,M=:VX - -# This makes the component icon reflect the status and severity -# % gui, SAMP01.VX, status, .MOVN -# % gui, SAMP01.VX, sevr - -# These define what PVs a motor detail screen should contain -# % gui, SAMP01.VX, statusbits, Status, .MSTA, Direction Positive, Done, High Limit, Home Limit, Unused, Closed Loop, Following Error, At Home, Encoder Present, Problem, Moving, Gain Support, Comms Error, Low Limit, Homed -# % gui, SAMP01.VX, statusbits, ELoss, :ELOSS, Encoder Loss, Amplifier Loss, Sys Fail -# % gui, SAMP01.VX, command, ELoss Clear, :ELOSSRC.A -# % gui, SAMP01.VX, statusbits, Limit Violation, .LVIO, Lim -# % gui, SAMP01.VX, statusbits, At High Limit, .HLS, High -# % gui, SAMP01.VX, statusbits, At Low Limit, .LLS, Low -# % gui, SAMP01.VX, demand, User High Limit, .HLM -# % gui, SAMP01.VX, demand, User Low Limit, .LLM -# % gui, SAMP01.VX, demand, Dial High Limit, .DHLM -# % gui, SAMP01.VX, demand, Dial Low Limit, .DLLM - -# % gui, SAMP01.VX, demand, Motor demand, .VAL -# % gui, SAMP01.VX, readback, Motor readback, .RBV -# % gui, SAMP01.VX, command, Stop, .STOP -# % gui, SAMP01.VX, command, Home Forward, .HOMF -# % gui, SAMP01.VX, command, Home Reverse, .HOMR -# % gui, SAMP01.VX, command, Jog Forward, .JOGF -# % gui, SAMP01.VX, command, Jog Reverse, .JOGR -# % gui, SAMP01.VX, command, Tweak Forward, .TWF -# % gui, SAMP01.VX, command, Tweak Reverse, .TWR -# % gui, SAMP01.VX, demand, Tweak Step, .TWV -# % gui, SAMP01.VX, command, Kill, :KILL.PROC, Kill -# % gui, SAMP01.VX, command, Sync VAL=RBV, .SYNC - -# % gui, SAMP01.VX, enum, Direction, .DIR -# % gui, SAMP01.VX, demand, User Offset, .OFF -# % gui, SAMP01.VX, enum, Set/Use, .SET -# % gui, SAMP01.VX, enum, Offset, .FOFF -# % gui, SAMP01.VX, enum, Use Encoder, .UEIP - -# % gui, SAMP01.VX, demand, Motor Step Size, .MRES -# % gui, SAMP01.VX, readback, Steps per Rev, .SREV -# % gui, SAMP01.VX, readback, EGUs per Rev, .UREV -# % gui, SAMP01.VX, demand, Encoder Step Size, .ERES -# % gui, SAMP01.VX, readback, Readback Step Size, .RRES -# % gui, SAMP01.VX, readback, Use Encoder if Present, .UEIP - -# % gui, SAMP01.VX, demand, Max Velocity, .VMAX -# % gui, SAMP01.VX, demand, Base Velocity, .VBAS -# % gui, SAMP01.VX, demand, Velocity, .VELO -# % gui, SAMP01.VX, demand, Secs to Velocity, .ACCL -# % gui, SAMP01.VX, demand, JVEL, .JVEL -# % gui, SAMP01.VX, demand, Jog Acceleration, .JAR -# % gui, SAMP01.VX, demand, Backlash Distance, .BDST -# % gui, SAMP01.VX, demand, Backlash Velocity, .BVEL -# % gui, SAMP01.VX, demand, Backlash Secs to Vel, .BACC -# % gui, SAMP01.VX, demand, Move Fraction, .FRAC -# % gui, SAMP01.VX, demand, Retry Deadband, .RDBD -# % gui, SAMP01.VX, demand, Max Retrys, .RTRY - -# % gui, SAMP01.VX, demand, PREC, .PREC -# % gui, SAMP01.VX, demand, EGU, .EGU - -# % gui, SAMP01.VX, demand, Output Specification, .OUT -# % gui, SAMP01.VX, readback, Readback Location, .RDBL -# % gui, SAMP01.VX, readback, Desired Output Loc, .DOL -# % gui, SAMP01.VX, readback, Output Mode Select, .OMSL -# % gui, SAMP01.VX, readback, Readback Out Link, .RLNK -# % gui, SAMP01.VX, demand, DMOV Input Link, .DINP -# % gui, SAMP01.VX, demand, RMP Input Link, .RINP -# % gui, SAMP01.VX, demand, Stop Out Link, .STOO - - -record(motor,"BL45P-MO-STAGE-01:VX") -{ - field(DESC,"Virtual X") - field(DTYP,"asynMotor") - field(DIR,"0") - field(VELO,".5") - field(VBAS,"0") - field(ACCL,"0.5") - field(BDST,"0") - field(BVEL,"0") - field(BACC,"") - field(OUT,"@asyn(CS2,7)") - field(MRES,".0001") - field(PREC,"3") - field(EGU,"mm") - field(DHLM,"100") - field(DLLM,"-100") - field(HLM,"") - field(LLM,"") - field(HLSV,"MAJOR") - field(INIT,"") - field(RTRY,"0") - field(DLY,"0") - field(HVEL,"0") - field(SREV, "1000") - field(RRES, "") - field(TWV, "1") - field(ERES, "") - field(JVEL, ".5") - field(JAR, "") - field(UEIP, "0") - field(URIP, "0") - field(RDBL, "") - field(VMAX, ".5") - field(OFF, "0") - field(RDBD, "") - field(FOFF, "0") - field(ADEL, "0") - field(NTM, "1") - field(SDIS, "BL45P-MO-STAGE-01:VX:SDIS.VAL") - field(RLNK, "") -} - -# record that holds the ADDR -record(ao, "BL45P-MO-STAGE-01:VX:ADDR") { - field(PINI, "YES") - field(VAL, "7") -} - -# record that holds the PORT -record(stringout, "BL45P-MO-STAGE-01:VX:PORT") { - field(PINI, "YES") - field(VAL, "CS2") -} - -# record that holds the SCALE -record(ao, "BL45P-MO-STAGE-01:VX:SCALE") { - field(PINI, "YES") - field(VAL, "1") -} - -# Write a 1 to this record over Channel Access to disable the motor record and prevent CA writes to any field -# including the demand field. -record(ai, "BL45P-MO-STAGE-01:VX:USER:SDIS") { - field(VAL, "0") - field(FLNK, "BL45P-MO-STAGE-01:VX:SDIS") -} - -# Note: This record forms part of the interface to auto-homing, which uses the "A" field to disable the motor record -# when homing. -# record that will disable and re-enable record if any of its inputs are non-zero -record(calcout, "BL45P-MO-STAGE-01:VX:SDIS") { - field(DESC, "Disable on non-zero input") - field(INPL, "BL45P-MO-STAGE-01:VX:USER:SDIS") - field(CALC, "(A|B|C|D|E|F|G|H|I|J|K|L)>0") - field(OUT, "BL45P-MO-STAGE-01:VX.DISP PP") -} - -# dummy record that looks like a kill command -record(ao, "BL45P-MO-STAGE-01:VX:KILL") { - field(VAL, "1") -} - -# dummy record that looks like eloss status -#% archiver 10 Monitor VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:VX:ELOSS -record(ai, "BL45P-MO-STAGE-01:VX:ELOSS") { - field(PINI, "YES") - field(HIHI, "1") - field(HHSV, "MAJOR") -} - -# dummy record that looks like an eloss reset -record(calcout, "BL45P-MO-STAGE-01:VX:ELOSSRC") { -} - -# check if SYNC has been pressed -record(calcout, "BL45P-MO-STAGE-01:VX:CHECK_SYNC") { - field(INPA, "BL45P-MO-STAGE-01:VX.SYNC CP") - field(CALC, "A>0") - field(OOPT, "When Non-zero") - field(OUT, "BL45P-MO-STAGE-01:VX:MR_MOVE_WRITE.PROC PP") -} - -# dummy record that looks like a record to notify a CS about a raw motor move -record(longout, "BL45P-MO-STAGE-01:VX:MR_MOVE_WRITE") { -} - -#Record to calculate the following error -#% archiver 1 Monitor -record(calc, "BL45P-MO-STAGE-01:VX:FERROR") -{ - field(DESC,"Following Error") - field(INPA,"BL45P-MO-STAGE-01:VX.RMP CP") - field(INPB,"BL45P-MO-STAGE-01:VX.REP NPP") - field(INPC,"BL45P-MO-STAGE-01:VX.MRES NPP") - field(INPD,"BL45P-MO-STAGE-01:VX.ERES NPP") - field(CALC,"ABS((A*C)-(B*D))") - field(FLNK,"BL45P-MO-STAGE-01:VX:FERRORMAX") - field(PREC,"3") - field(EGU, "mm") -} - -#Record to store the maximum following error -#% archiver 10 Monitor VAL -#% autosave 1 VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:VX:FERRORMAX -record(calc, "BL45P-MO-STAGE-01:VX:FERRORMAX") -{ - field(DESC,"Following Error Max") - field(INPA,"BL45P-MO-STAGE-01:VX:FERROR.VAL") - field(INPB,"BL45P-MO-STAGE-01:VX:FERRORMAX.VAL") - field(CALC,"(A>B)?A:B") - field(HIGH,"0") - field(HIHI,"0") - field(HHSV,"NO_ALARM") - field(HSV, "NO_ALARM") - field(PREC,"3") - field(EGU, "mm") -} - -#Record to reset the maximum following error -record(bo, "BL45P-MO-STAGE-01:VX:FEMAXRESET") -{ - field(DESC,"Reset max following error") - field(DTYP,"Soft Channel") - field(OUT, "BL45P-MO-STAGE-01:VX:FERRORMAX.VAL") - field(VAL, "0") -} - - -#Record to determin HOME button visibility on the motor.edl screen. -record(bo, "BL45P-MO-STAGE-01:VX:HOMEVIS") -{ - field(DESC,"Home button visibility") - field(DTYP,"Soft Channel") - field(VAL, "1") - field(ZNAM, "Invisible") - field(ONAM, "Visible") -} - -#Record to display a message if the HOME buttons are not visible (if HOMEVIS=0). -record(stringout, "BL45P-MO-STAGE-01:VX:HOMEVISSTR") -{ - field(DESC, "Home visibility string") - field(DTYP,"Soft Channel") - field(VAL, "Use motor summary screen") -} - - -record(stringin, "BL45P-MO-STAGE-01:VX:CS_PORT_NAME") { - field(DESC, "Port name for CS") - field(VAL, "CS2") -} - -# add alias for standard CS axis name -alias(BL45P-MO-STAGE-01:VX, BL45P-MO-STEP-01:CS2:M7)# A Coordinate system axis. - -# macros listed here are those not described in basic_asyn_motor.template -# % macro, PMAC, The P prefix for the motor controller (must match P in pmacController.template) -# % macro, CS, The CS num for this axis (must match CS in pmacCsController.template) - -#% macro, __doc__, Basic template, including motor record and associated tags -#% macro, P , Device Prefix -#% macro, M , Device Suffix -#% macro, PORT , Asyn port for motor record -#% macro, ADDR , Address on controller -#% macro, DESC , Description, displayed on EDM screen -#% macro, MRES , Motor Step Size (EGU) -#% macro, DTYP , DTYP of record -#% macro, DIR , User Direction -#% macro, VBAS , Base Velocity (EGU/s) -#% macro, VELO , Velocity (EGU/s) -#% macro, VMAX , Max Velocity (EGU/s), defaults to VELO -#% macro, ACCL , Seconds to Velocity -#% macro, BDST , BL Distance (EGU) -#% macro, BVEL , BL Velocity (EGU/s) -#% macro, BACC , BL Seconds to Veloc. -#% macro, PREC , Display Precision -#% macro, EGU , Engineering Units -#% macro, DHLM , Dial High Limit -#% macro, DLLM , Dial Low Limit -#% macro, HLM , User High Limit -#% macro, LLM , User Low Limit -#% macro, HLSV , HW Lim. Violation Svr -#% macro, INIT , Startup commands -#% macro, SREV , Steps per Revolution -#% macro, RRES , Readback Step Size (EGU) -#% macro, TWV , Tweak Step Size (EGU) -#% macro, ERES , Encoder Step Size (EGU) -#% macro, JAR , Jog Acceleration (EGU/s^2) -#% macro, UEIP , Use Encoder If Present -#% macro, URIP , Use RDBL If Present -#% macro, RDBL , Readback Location, set URIP = 1 if you specify this -#% macro, RLNK , Readback output link -#% macro, RTRY , Max retry count -#% macro, DLY , Readback settle time (s) -#% macro, OFF , User Offset (EGU) -#% macro, RDBD , Retry Deadband (EGU) -#% macro, FOFF , Freeze Offset, 0=variable, 1=frozen -#% macro, ADEL , Alarm monitor deadband (EGU) -#% macro, NTM , New Target Monitor, only set to 0 for soft motors -#% macro, FEHIGH , HIGH limit for following error -#% macro, FEHIHI , HIHI limit for following error -#% macro, FEHHSV , HIHI alarm severity for following error -#% macro, FEHSV , HIGH alarm severity for following error -#% macro, SCALE , Scale factor, if pmacSetAxisScale is used this should be set -#% macro, HOMEVIS, If 1 then home is visible on the gui -#% macro, HOMEVISSTR, If HOMEVIS=0, then display this text on the gui instead -#% macro, name , Object name and gui association name -#% macro, alh , Set this to alh to add the motor to the alarm handler and send emails, -# set to '#' to comment out alh lines -#% macro, gda_name, Name to export this as to GDA -#% macro, gda_desc, Description to export this as to GDA - -# AUTOSAVE: level 0 = before record init, level 1 = before AND after record init -#% autosave 0 DVAL OFF -#% autosave 1 DIR DHLM DLLM TWV VBAS VELO ACCL BDST BVEL BACC RDBD EGU RTRY UEIP URIP DLY PREC DISA DISP FOFF OFF FRAC OMSL JVEL JAR ADEL MDEL -#% archiver 0.5 Monitor -#% archiver 0.5 Monitor RBV -#% archiver 10 Monitor OFF -#% archiver 10 Monitor MRES -#% gdatag,template,simpleMotor,,Virtual Y -#% gdatag,motor,rw,,RECORD,Motor -#% alh -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:VY - -# This associates an edm screen with the template -# % gui, SAMP01.VY, edm, motor.edl, motor=BL45P-MO-STAGE-01:VY -# % gui, SAMP01.VY, edmembed, motor-embed-small.edl, motor=BL45P-MO-STAGE-01:VY,filename=motor.edl,box-label=Virtual Y - -# This associates a BOY screen with the template -# % gui, SAMP01.VY, boydetail, motorApp_opi/motor_detail.opi, P=BL45P-MO-STAGE-01,M=:VY,DESC=Virtual Y, name=SAMP01.VY -# % gui, SAMP01.VY, boyembed, motorApp_opi/motor_embed_box.opi, P=BL45P-MO-STAGE-01,M=:VY,DESC=Virtual Y, name=SAMP01.VY -# % gui, SAMP01.VY, boyembed, motorApp_opi/motor_embed.opi, P=BL45P-MO-STAGE-01,M=:VY,DESC=Virtual Y, name=SAMP01.VY -# FIXME: this should be in pmacUtil or tpmac -# % gui, SAMP01.VY, boyembed, motorApp_opi/motor_homed_embed.opi, P=BL45P-MO-STAGE-01,M=:VY - -# This makes the component icon reflect the status and severity -# % gui, SAMP01.VY, status, .MOVN -# % gui, SAMP01.VY, sevr - -# These define what PVs a motor detail screen should contain -# % gui, SAMP01.VY, statusbits, Status, .MSTA, Direction Positive, Done, High Limit, Home Limit, Unused, Closed Loop, Following Error, At Home, Encoder Present, Problem, Moving, Gain Support, Comms Error, Low Limit, Homed -# % gui, SAMP01.VY, statusbits, ELoss, :ELOSS, Encoder Loss, Amplifier Loss, Sys Fail -# % gui, SAMP01.VY, command, ELoss Clear, :ELOSSRC.A -# % gui, SAMP01.VY, statusbits, Limit Violation, .LVIO, Lim -# % gui, SAMP01.VY, statusbits, At High Limit, .HLS, High -# % gui, SAMP01.VY, statusbits, At Low Limit, .LLS, Low -# % gui, SAMP01.VY, demand, User High Limit, .HLM -# % gui, SAMP01.VY, demand, User Low Limit, .LLM -# % gui, SAMP01.VY, demand, Dial High Limit, .DHLM -# % gui, SAMP01.VY, demand, Dial Low Limit, .DLLM - -# % gui, SAMP01.VY, demand, Motor demand, .VAL -# % gui, SAMP01.VY, readback, Motor readback, .RBV -# % gui, SAMP01.VY, command, Stop, .STOP -# % gui, SAMP01.VY, command, Home Forward, .HOMF -# % gui, SAMP01.VY, command, Home Reverse, .HOMR -# % gui, SAMP01.VY, command, Jog Forward, .JOGF -# % gui, SAMP01.VY, command, Jog Reverse, .JOGR -# % gui, SAMP01.VY, command, Tweak Forward, .TWF -# % gui, SAMP01.VY, command, Tweak Reverse, .TWR -# % gui, SAMP01.VY, demand, Tweak Step, .TWV -# % gui, SAMP01.VY, command, Kill, :KILL.PROC, Kill -# % gui, SAMP01.VY, command, Sync VAL=RBV, .SYNC - -# % gui, SAMP01.VY, enum, Direction, .DIR -# % gui, SAMP01.VY, demand, User Offset, .OFF -# % gui, SAMP01.VY, enum, Set/Use, .SET -# % gui, SAMP01.VY, enum, Offset, .FOFF -# % gui, SAMP01.VY, enum, Use Encoder, .UEIP - -# % gui, SAMP01.VY, demand, Motor Step Size, .MRES -# % gui, SAMP01.VY, readback, Steps per Rev, .SREV -# % gui, SAMP01.VY, readback, EGUs per Rev, .UREV -# % gui, SAMP01.VY, demand, Encoder Step Size, .ERES -# % gui, SAMP01.VY, readback, Readback Step Size, .RRES -# % gui, SAMP01.VY, readback, Use Encoder if Present, .UEIP - -# % gui, SAMP01.VY, demand, Max Velocity, .VMAX -# % gui, SAMP01.VY, demand, Base Velocity, .VBAS -# % gui, SAMP01.VY, demand, Velocity, .VELO -# % gui, SAMP01.VY, demand, Secs to Velocity, .ACCL -# % gui, SAMP01.VY, demand, JVEL, .JVEL -# % gui, SAMP01.VY, demand, Jog Acceleration, .JAR -# % gui, SAMP01.VY, demand, Backlash Distance, .BDST -# % gui, SAMP01.VY, demand, Backlash Velocity, .BVEL -# % gui, SAMP01.VY, demand, Backlash Secs to Vel, .BACC -# % gui, SAMP01.VY, demand, Move Fraction, .FRAC -# % gui, SAMP01.VY, demand, Retry Deadband, .RDBD -# % gui, SAMP01.VY, demand, Max Retrys, .RTRY - -# % gui, SAMP01.VY, demand, PREC, .PREC -# % gui, SAMP01.VY, demand, EGU, .EGU - -# % gui, SAMP01.VY, demand, Output Specification, .OUT -# % gui, SAMP01.VY, readback, Readback Location, .RDBL -# % gui, SAMP01.VY, readback, Desired Output Loc, .DOL -# % gui, SAMP01.VY, readback, Output Mode Select, .OMSL -# % gui, SAMP01.VY, readback, Readback Out Link, .RLNK -# % gui, SAMP01.VY, demand, DMOV Input Link, .DINP -# % gui, SAMP01.VY, demand, RMP Input Link, .RINP -# % gui, SAMP01.VY, demand, Stop Out Link, .STOO - - -record(motor,"BL45P-MO-STAGE-01:VY") -{ - field(DESC,"Virtual Y") - field(DTYP,"asynMotor") - field(DIR,"0") - field(VELO,".5") - field(VBAS,"0") - field(ACCL,"0.5") - field(BDST,"0") - field(BVEL,"0") - field(BACC,"") - field(OUT,"@asyn(CS2,8)") - field(MRES,".0001") - field(PREC,"3") - field(EGU,"mm") - field(DHLM,"100") - field(DLLM,"-100") - field(HLM,"") - field(LLM,"") - field(HLSV,"MAJOR") - field(INIT,"") - field(RTRY,"0") - field(DLY,"0") - field(HVEL,"0") - field(SREV, "1000") - field(RRES, "") - field(TWV, "1") - field(ERES, "") - field(JVEL, ".5") - field(JAR, "") - field(UEIP, "0") - field(URIP, "0") - field(RDBL, "") - field(VMAX, ".5") - field(OFF, "0") - field(RDBD, "") - field(FOFF, "0") - field(ADEL, "0") - field(NTM, "1") - field(SDIS, "BL45P-MO-STAGE-01:VY:SDIS.VAL") - field(RLNK, "") -} - -# record that holds the ADDR -record(ao, "BL45P-MO-STAGE-01:VY:ADDR") { - field(PINI, "YES") - field(VAL, "8") -} - -# record that holds the PORT -record(stringout, "BL45P-MO-STAGE-01:VY:PORT") { - field(PINI, "YES") - field(VAL, "CS2") -} - -# record that holds the SCALE -record(ao, "BL45P-MO-STAGE-01:VY:SCALE") { - field(PINI, "YES") - field(VAL, "1") -} - -# Write a 1 to this record over Channel Access to disable the motor record and prevent CA writes to any field -# including the demand field. -record(ai, "BL45P-MO-STAGE-01:VY:USER:SDIS") { - field(VAL, "0") - field(FLNK, "BL45P-MO-STAGE-01:VY:SDIS") -} - -# Note: This record forms part of the interface to auto-homing, which uses the "A" field to disable the motor record -# when homing. -# record that will disable and re-enable record if any of its inputs are non-zero -record(calcout, "BL45P-MO-STAGE-01:VY:SDIS") { - field(DESC, "Disable on non-zero input") - field(INPL, "BL45P-MO-STAGE-01:VY:USER:SDIS") - field(CALC, "(A|B|C|D|E|F|G|H|I|J|K|L)>0") - field(OUT, "BL45P-MO-STAGE-01:VY.DISP PP") -} - -# dummy record that looks like a kill command -record(ao, "BL45P-MO-STAGE-01:VY:KILL") { - field(VAL, "1") -} - -# dummy record that looks like eloss status -#% archiver 10 Monitor VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:VY:ELOSS -record(ai, "BL45P-MO-STAGE-01:VY:ELOSS") { - field(PINI, "YES") - field(HIHI, "1") - field(HHSV, "MAJOR") -} - -# dummy record that looks like an eloss reset -record(calcout, "BL45P-MO-STAGE-01:VY:ELOSSRC") { -} - -# check if SYNC has been pressed -record(calcout, "BL45P-MO-STAGE-01:VY:CHECK_SYNC") { - field(INPA, "BL45P-MO-STAGE-01:VY.SYNC CP") - field(CALC, "A>0") - field(OOPT, "When Non-zero") - field(OUT, "BL45P-MO-STAGE-01:VY:MR_MOVE_WRITE.PROC PP") -} - -# dummy record that looks like a record to notify a CS about a raw motor move -record(longout, "BL45P-MO-STAGE-01:VY:MR_MOVE_WRITE") { -} - -#Record to calculate the following error -#% archiver 1 Monitor -record(calc, "BL45P-MO-STAGE-01:VY:FERROR") -{ - field(DESC,"Following Error") - field(INPA,"BL45P-MO-STAGE-01:VY.RMP CP") - field(INPB,"BL45P-MO-STAGE-01:VY.REP NPP") - field(INPC,"BL45P-MO-STAGE-01:VY.MRES NPP") - field(INPD,"BL45P-MO-STAGE-01:VY.ERES NPP") - field(CALC,"ABS((A*C)-(B*D))") - field(FLNK,"BL45P-MO-STAGE-01:VY:FERRORMAX") - field(PREC,"3") - field(EGU, "mm") -} - -#Record to store the maximum following error -#% archiver 10 Monitor VAL -#% autosave 1 VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:VY:FERRORMAX -record(calc, "BL45P-MO-STAGE-01:VY:FERRORMAX") -{ - field(DESC,"Following Error Max") - field(INPA,"BL45P-MO-STAGE-01:VY:FERROR.VAL") - field(INPB,"BL45P-MO-STAGE-01:VY:FERRORMAX.VAL") - field(CALC,"(A>B)?A:B") - field(HIGH,"0") - field(HIHI,"0") - field(HHSV,"NO_ALARM") - field(HSV, "NO_ALARM") - field(PREC,"3") - field(EGU, "mm") -} - -#Record to reset the maximum following error -record(bo, "BL45P-MO-STAGE-01:VY:FEMAXRESET") -{ - field(DESC,"Reset max following error") - field(DTYP,"Soft Channel") - field(OUT, "BL45P-MO-STAGE-01:VY:FERRORMAX.VAL") - field(VAL, "0") -} - - -#Record to determin HOME button visibility on the motor.edl screen. -record(bo, "BL45P-MO-STAGE-01:VY:HOMEVIS") -{ - field(DESC,"Home button visibility") - field(DTYP,"Soft Channel") - field(VAL, "1") - field(ZNAM, "Invisible") - field(ONAM, "Visible") -} - -#Record to display a message if the HOME buttons are not visible (if HOMEVIS=0). -record(stringout, "BL45P-MO-STAGE-01:VY:HOMEVISSTR") -{ - field(DESC, "Home visibility string") - field(DTYP,"Soft Channel") - field(VAL, "Use motor summary screen") -} - - -record(stringin, "BL45P-MO-STAGE-01:VY:CS_PORT_NAME") { - field(DESC, "Port name for CS") - field(VAL, "CS2") -} - -# add alias for standard CS axis name -alias(BL45P-MO-STAGE-01:VY, BL45P-MO-STEP-01:CS2:M8)# A Coordinate system axis. - -# macros listed here are those not described in basic_asyn_motor.template -# % macro, PMAC, The P prefix for the motor controller (must match P in pmacController.template) -# % macro, CS, The CS num for this axis (must match CS in pmacCsController.template) - -#% macro, __doc__, Basic template, including motor record and associated tags -#% macro, P , Device Prefix -#% macro, M , Device Suffix -#% macro, PORT , Asyn port for motor record -#% macro, ADDR , Address on controller -#% macro, DESC , Description, displayed on EDM screen -#% macro, MRES , Motor Step Size (EGU) -#% macro, DTYP , DTYP of record -#% macro, DIR , User Direction -#% macro, VBAS , Base Velocity (EGU/s) -#% macro, VELO , Velocity (EGU/s) -#% macro, VMAX , Max Velocity (EGU/s), defaults to VELO -#% macro, ACCL , Seconds to Velocity -#% macro, BDST , BL Distance (EGU) -#% macro, BVEL , BL Velocity (EGU/s) -#% macro, BACC , BL Seconds to Veloc. -#% macro, PREC , Display Precision -#% macro, EGU , Engineering Units -#% macro, DHLM , Dial High Limit -#% macro, DLLM , Dial Low Limit -#% macro, HLM , User High Limit -#% macro, LLM , User Low Limit -#% macro, HLSV , HW Lim. Violation Svr -#% macro, INIT , Startup commands -#% macro, SREV , Steps per Revolution -#% macro, RRES , Readback Step Size (EGU) -#% macro, TWV , Tweak Step Size (EGU) -#% macro, ERES , Encoder Step Size (EGU) -#% macro, JAR , Jog Acceleration (EGU/s^2) -#% macro, UEIP , Use Encoder If Present -#% macro, URIP , Use RDBL If Present -#% macro, RDBL , Readback Location, set URIP = 1 if you specify this -#% macro, RLNK , Readback output link -#% macro, RTRY , Max retry count -#% macro, DLY , Readback settle time (s) -#% macro, OFF , User Offset (EGU) -#% macro, RDBD , Retry Deadband (EGU) -#% macro, FOFF , Freeze Offset, 0=variable, 1=frozen -#% macro, ADEL , Alarm monitor deadband (EGU) -#% macro, NTM , New Target Monitor, only set to 0 for soft motors -#% macro, FEHIGH , HIGH limit for following error -#% macro, FEHIHI , HIHI limit for following error -#% macro, FEHHSV , HIHI alarm severity for following error -#% macro, FEHSV , HIGH alarm severity for following error -#% macro, SCALE , Scale factor, if pmacSetAxisScale is used this should be set -#% macro, HOMEVIS, If 1 then home is visible on the gui -#% macro, HOMEVISSTR, If HOMEVIS=0, then display this text on the gui instead -#% macro, name , Object name and gui association name -#% macro, alh , Set this to alh to add the motor to the alarm handler and send emails, -# set to '#' to comment out alh lines -#% macro, gda_name, Name to export this as to GDA -#% macro, gda_desc, Description to export this as to GDA - -# AUTOSAVE: level 0 = before record init, level 1 = before AND after record init -#% autosave 0 DVAL OFF -#% autosave 1 DIR DHLM DLLM TWV VBAS VELO ACCL BDST BVEL BACC RDBD EGU RTRY UEIP URIP DLY PREC DISA DISP FOFF OFF FRAC OMSL JVEL JAR ADEL MDEL -#% archiver 0.5 Monitor -#% archiver 0.5 Monitor RBV -#% archiver 10 Monitor OFF -#% archiver 10 Monitor MRES -#% gdatag,template,simpleMotor,,Virtual Z -#% gdatag,motor,rw,,RECORD,Motor -#% alh -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:VZ - -# This associates an edm screen with the template -# % gui, SAMP01.VZ, edm, motor.edl, motor=BL45P-MO-STAGE-01:VZ -# % gui, SAMP01.VZ, edmembed, motor-embed-small.edl, motor=BL45P-MO-STAGE-01:VZ,filename=motor.edl,box-label=Virtual Z - -# This associates a BOY screen with the template -# % gui, SAMP01.VZ, boydetail, motorApp_opi/motor_detail.opi, P=BL45P-MO-STAGE-01,M=:VZ,DESC=Virtual Z, name=SAMP01.VZ -# % gui, SAMP01.VZ, boyembed, motorApp_opi/motor_embed_box.opi, P=BL45P-MO-STAGE-01,M=:VZ,DESC=Virtual Z, name=SAMP01.VZ -# % gui, SAMP01.VZ, boyembed, motorApp_opi/motor_embed.opi, P=BL45P-MO-STAGE-01,M=:VZ,DESC=Virtual Z, name=SAMP01.VZ -# FIXME: this should be in pmacUtil or tpmac -# % gui, SAMP01.VZ, boyembed, motorApp_opi/motor_homed_embed.opi, P=BL45P-MO-STAGE-01,M=:VZ - -# This makes the component icon reflect the status and severity -# % gui, SAMP01.VZ, status, .MOVN -# % gui, SAMP01.VZ, sevr - -# These define what PVs a motor detail screen should contain -# % gui, SAMP01.VZ, statusbits, Status, .MSTA, Direction Positive, Done, High Limit, Home Limit, Unused, Closed Loop, Following Error, At Home, Encoder Present, Problem, Moving, Gain Support, Comms Error, Low Limit, Homed -# % gui, SAMP01.VZ, statusbits, ELoss, :ELOSS, Encoder Loss, Amplifier Loss, Sys Fail -# % gui, SAMP01.VZ, command, ELoss Clear, :ELOSSRC.A -# % gui, SAMP01.VZ, statusbits, Limit Violation, .LVIO, Lim -# % gui, SAMP01.VZ, statusbits, At High Limit, .HLS, High -# % gui, SAMP01.VZ, statusbits, At Low Limit, .LLS, Low -# % gui, SAMP01.VZ, demand, User High Limit, .HLM -# % gui, SAMP01.VZ, demand, User Low Limit, .LLM -# % gui, SAMP01.VZ, demand, Dial High Limit, .DHLM -# % gui, SAMP01.VZ, demand, Dial Low Limit, .DLLM - -# % gui, SAMP01.VZ, demand, Motor demand, .VAL -# % gui, SAMP01.VZ, readback, Motor readback, .RBV -# % gui, SAMP01.VZ, command, Stop, .STOP -# % gui, SAMP01.VZ, command, Home Forward, .HOMF -# % gui, SAMP01.VZ, command, Home Reverse, .HOMR -# % gui, SAMP01.VZ, command, Jog Forward, .JOGF -# % gui, SAMP01.VZ, command, Jog Reverse, .JOGR -# % gui, SAMP01.VZ, command, Tweak Forward, .TWF -# % gui, SAMP01.VZ, command, Tweak Reverse, .TWR -# % gui, SAMP01.VZ, demand, Tweak Step, .TWV -# % gui, SAMP01.VZ, command, Kill, :KILL.PROC, Kill -# % gui, SAMP01.VZ, command, Sync VAL=RBV, .SYNC - -# % gui, SAMP01.VZ, enum, Direction, .DIR -# % gui, SAMP01.VZ, demand, User Offset, .OFF -# % gui, SAMP01.VZ, enum, Set/Use, .SET -# % gui, SAMP01.VZ, enum, Offset, .FOFF -# % gui, SAMP01.VZ, enum, Use Encoder, .UEIP - -# % gui, SAMP01.VZ, demand, Motor Step Size, .MRES -# % gui, SAMP01.VZ, readback, Steps per Rev, .SREV -# % gui, SAMP01.VZ, readback, EGUs per Rev, .UREV -# % gui, SAMP01.VZ, demand, Encoder Step Size, .ERES -# % gui, SAMP01.VZ, readback, Readback Step Size, .RRES -# % gui, SAMP01.VZ, readback, Use Encoder if Present, .UEIP - -# % gui, SAMP01.VZ, demand, Max Velocity, .VMAX -# % gui, SAMP01.VZ, demand, Base Velocity, .VBAS -# % gui, SAMP01.VZ, demand, Velocity, .VELO -# % gui, SAMP01.VZ, demand, Secs to Velocity, .ACCL -# % gui, SAMP01.VZ, demand, JVEL, .JVEL -# % gui, SAMP01.VZ, demand, Jog Acceleration, .JAR -# % gui, SAMP01.VZ, demand, Backlash Distance, .BDST -# % gui, SAMP01.VZ, demand, Backlash Velocity, .BVEL -# % gui, SAMP01.VZ, demand, Backlash Secs to Vel, .BACC -# % gui, SAMP01.VZ, demand, Move Fraction, .FRAC -# % gui, SAMP01.VZ, demand, Retry Deadband, .RDBD -# % gui, SAMP01.VZ, demand, Max Retrys, .RTRY - -# % gui, SAMP01.VZ, demand, PREC, .PREC -# % gui, SAMP01.VZ, demand, EGU, .EGU - -# % gui, SAMP01.VZ, demand, Output Specification, .OUT -# % gui, SAMP01.VZ, readback, Readback Location, .RDBL -# % gui, SAMP01.VZ, readback, Desired Output Loc, .DOL -# % gui, SAMP01.VZ, readback, Output Mode Select, .OMSL -# % gui, SAMP01.VZ, readback, Readback Out Link, .RLNK -# % gui, SAMP01.VZ, demand, DMOV Input Link, .DINP -# % gui, SAMP01.VZ, demand, RMP Input Link, .RINP -# % gui, SAMP01.VZ, demand, Stop Out Link, .STOO - - -record(motor,"BL45P-MO-STAGE-01:VZ") -{ - field(DESC,"Virtual Z") - field(DTYP,"asynMotor") - field(DIR,"0") - field(VELO,".5") - field(VBAS,"0") - field(ACCL,"0.5") - field(BDST,"0") - field(BVEL,"0") - field(BACC,"") - field(OUT,"@asyn(CS2,9)") - field(MRES,".0001") - field(PREC,"3") - field(EGU,"mm") - field(DHLM,"100") - field(DLLM,"-100") - field(HLM,"") - field(LLM,"") - field(HLSV,"MAJOR") - field(INIT,"") - field(RTRY,"0") - field(DLY,"0") - field(HVEL,"0") - field(SREV, "1000") - field(RRES, "") - field(TWV, "1") - field(ERES, "") - field(JVEL, ".5") - field(JAR, "") - field(UEIP, "0") - field(URIP, "0") - field(RDBL, "") - field(VMAX, ".5") - field(OFF, "0") - field(RDBD, "") - field(FOFF, "0") - field(ADEL, "0") - field(NTM, "1") - field(SDIS, "BL45P-MO-STAGE-01:VZ:SDIS.VAL") - field(RLNK, "") -} - -# record that holds the ADDR -record(ao, "BL45P-MO-STAGE-01:VZ:ADDR") { - field(PINI, "YES") - field(VAL, "9") -} - -# record that holds the PORT -record(stringout, "BL45P-MO-STAGE-01:VZ:PORT") { - field(PINI, "YES") - field(VAL, "CS2") -} - -# record that holds the SCALE -record(ao, "BL45P-MO-STAGE-01:VZ:SCALE") { - field(PINI, "YES") - field(VAL, "1") -} - -# Write a 1 to this record over Channel Access to disable the motor record and prevent CA writes to any field -# including the demand field. -record(ai, "BL45P-MO-STAGE-01:VZ:USER:SDIS") { - field(VAL, "0") - field(FLNK, "BL45P-MO-STAGE-01:VZ:SDIS") -} - -# Note: This record forms part of the interface to auto-homing, which uses the "A" field to disable the motor record -# when homing. -# record that will disable and re-enable record if any of its inputs are non-zero -record(calcout, "BL45P-MO-STAGE-01:VZ:SDIS") { - field(DESC, "Disable on non-zero input") - field(INPL, "BL45P-MO-STAGE-01:VZ:USER:SDIS") - field(CALC, "(A|B|C|D|E|F|G|H|I|J|K|L)>0") - field(OUT, "BL45P-MO-STAGE-01:VZ.DISP PP") -} - -# dummy record that looks like a kill command -record(ao, "BL45P-MO-STAGE-01:VZ:KILL") { - field(VAL, "1") -} - -# dummy record that looks like eloss status -#% archiver 10 Monitor VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:VZ:ELOSS -record(ai, "BL45P-MO-STAGE-01:VZ:ELOSS") { - field(PINI, "YES") - field(HIHI, "1") - field(HHSV, "MAJOR") -} - -# dummy record that looks like an eloss reset -record(calcout, "BL45P-MO-STAGE-01:VZ:ELOSSRC") { -} - -# check if SYNC has been pressed -record(calcout, "BL45P-MO-STAGE-01:VZ:CHECK_SYNC") { - field(INPA, "BL45P-MO-STAGE-01:VZ.SYNC CP") - field(CALC, "A>0") - field(OOPT, "When Non-zero") - field(OUT, "BL45P-MO-STAGE-01:VZ:MR_MOVE_WRITE.PROC PP") -} - -# dummy record that looks like a record to notify a CS about a raw motor move -record(longout, "BL45P-MO-STAGE-01:VZ:MR_MOVE_WRITE") { -} - -#Record to calculate the following error -#% archiver 1 Monitor -record(calc, "BL45P-MO-STAGE-01:VZ:FERROR") -{ - field(DESC,"Following Error") - field(INPA,"BL45P-MO-STAGE-01:VZ.RMP CP") - field(INPB,"BL45P-MO-STAGE-01:VZ.REP NPP") - field(INPC,"BL45P-MO-STAGE-01:VZ.MRES NPP") - field(INPD,"BL45P-MO-STAGE-01:VZ.ERES NPP") - field(CALC,"ABS((A*C)-(B*D))") - field(FLNK,"BL45P-MO-STAGE-01:VZ:FERRORMAX") - field(PREC,"3") - field(EGU, "mm") -} - -#Record to store the maximum following error -#% archiver 10 Monitor VAL -#% autosave 1 VAL -#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL45P-MO-STAGE-01:VZ:FERRORMAX -record(calc, "BL45P-MO-STAGE-01:VZ:FERRORMAX") -{ - field(DESC,"Following Error Max") - field(INPA,"BL45P-MO-STAGE-01:VZ:FERROR.VAL") - field(INPB,"BL45P-MO-STAGE-01:VZ:FERRORMAX.VAL") - field(CALC,"(A>B)?A:B") - field(HIGH,"0") - field(HIHI,"0") - field(HHSV,"NO_ALARM") - field(HSV, "NO_ALARM") - field(PREC,"3") - field(EGU, "mm") -} - -#Record to reset the maximum following error -record(bo, "BL45P-MO-STAGE-01:VZ:FEMAXRESET") -{ - field(DESC,"Reset max following error") - field(DTYP,"Soft Channel") - field(OUT, "BL45P-MO-STAGE-01:VZ:FERRORMAX.VAL") - field(VAL, "0") -} - - -#Record to determin HOME button visibility on the motor.edl screen. -record(bo, "BL45P-MO-STAGE-01:VZ:HOMEVIS") -{ - field(DESC,"Home button visibility") - field(DTYP,"Soft Channel") - field(VAL, "1") - field(ZNAM, "Invisible") - field(ONAM, "Visible") -} - -#Record to display a message if the HOME buttons are not visible (if HOMEVIS=0). -record(stringout, "BL45P-MO-STAGE-01:VZ:HOMEVISSTR") -{ - field(DESC, "Home visibility string") - field(DTYP,"Soft Channel") - field(VAL, "Use motor summary screen") -} - - -record(stringin, "BL45P-MO-STAGE-01:VZ:CS_PORT_NAME") { - field(DESC, "Port name for CS") - field(VAL, "CS2") -} - -# add alias for standard CS axis name -alias(BL45P-MO-STAGE-01:VZ, BL45P-MO-STEP-01:CS2:M9) \ No newline at end of file diff --git a/iocs/bl45p-mo-ioc-01.hand/config/ioc.boot b/iocs/bl45p-mo-ioc-01.hand/config/ioc.boot deleted file mode 100755 index 1881e88..0000000 --- a/iocs/bl45p-mo-ioc-01.hand/config/ioc.boot +++ /dev/null @@ -1,95 +0,0 @@ -# This file was automatically generated on Fri 07 Aug 2020 13:35:28 BST from -# source: /dls_sw/work/R3.14.12.7/support/BL45P-BUILDER/etc/makeIocs/BL45P-MO-IOC-01.xml -# -# *** Please do not edit this file: edit the source file instead. *** -# - -# GK Containers Testing April 2021 -# builder built IOCs can be converted to containers by dropping their DB and -# startup script in the config folder of the helm chart -# -# changes to boot script required -# rename to ioc.boot -# replace all hardcoded root folder with $(TOP) -# replace references to dbLoadRecords to pass "$(THIS_DIR/dbname)" -# replace dbLoadDatabase param with dbd/ioc.dbd -# replace BL45P_MO_IOC_01_registerRecordDeviceDriver with ioc__registerRecordDeviceDriver - -cd "$(TOP)" - -epicsEnvSet "EPICS_CA_MAX_ARRAY_BYTES", '6000000' -epicsEnvSet "EPICS_TS_MIN_WEST", '0' - - -# Loading libraries -# ----------------- - -# Device initialisation -# --------------------- - -cd "$(TOP)" - -dbLoadDatabase "dbd/ioc.dbd" -ioc_registerRecordDeviceDriver(pdbbase) - -# Create IP Port (PortName, IPAddr) -pmacAsynIPConfigure("BRICK1port", "172.23.59.21:1025") - -# Configure Model 3 Controller Driver (ControlerPort, LowLevelDriverPort, Address, Axes, MovingPoll, IdlePoll) -pmacCreateController("BRICK1", "BRICK1port", 0, 8, 100, 500) -# Configure Model 3 Axes Driver (Controler Port, Axis Count) -pmacCreateAxes("BRICK1", 8) - -pmacDisableLimitsCheck("BRICK1", 3, 0) - -pmacDisableLimitsCheck("BRICK1", 4, 0) - -pmacDisableLimitsCheck("BRICK1", 5, 0) - -# Create CS (CSPortName, ControllerPort, CSNumber, ProgramNumber) -pmacCreateCS("CS1", "BRICK1", 1, 10) -# Configure Model 3 CS Axes Driver (CSPortName, CSAxisCount) -pmacCreateCSAxes("CS1", 9) - -# Create CS (CSPortName, ControllerPort, CSNumber, ProgramNumber) -pmacCreateCS("CS2", "BRICK1", 2, 10) -# Configure Model 3 CS Axes Driver (CSPortName, CSAxisCount) -pmacCreateCSAxes("CS2", 9) - -pmacCreateCsGroup("BRICK1", 0, "CS1-direct", 9) - -pmacCreateCsGroup("BRICK1", 1, "CS2-kinematic", 9) - -pmacCsGroupAddAxis(BRICK1, 0, 3, U, 1) - -pmacCsGroupAddAxis(BRICK1, 0, 4, A, 1) - -pmacCsGroupAddAxis(BRICK1, 0, 5, B, 1) - -pmacCsGroupAddAxis(BRICK1, 0, 6, X, 1) - -pmacCsGroupAddAxis(BRICK1, 0, 7, Y, 1) - -pmacCsGroupAddAxis(BRICK1, 0, 8, Z, 1) - -pmacCsGroupAddAxis(BRICK1, 1, 3, U, 1) - -pmacCsGroupAddAxis(BRICK1, 1, 4, A, 1) - -pmacCsGroupAddAxis(BRICK1, 1, 5, B, 1) - -pmacCsGroupAddAxis(BRICK1, 1, 6, I, 2) - -pmacCsGroupAddAxis(BRICK1, 1, 7, I, 2) - -pmacCsGroupAddAxis(BRICK1, 1, 8, I, 2) - -pmacMonitorVariables("BRICK1", "&2Q20 &2Q21 &2Q22") - -pmacMonitorVariables("BRICK1", "P4706 P4806 P4906 P4707 P4807 P4907 P4708 P4808 P4908") - -# Final ioc initialisation -# ------------------------ -cd "$(TOP)" -dbLoadRecords "$(THIS_DIR)/BL45P-MO-IOC-01_expanded.db" -iocInit diff --git a/iocs/bl45p-mo-ioc-01.hand/config/start.sh b/iocs/bl45p-mo-ioc-01.hand/config/start.sh deleted file mode 120000 index 1fea5d0..0000000 --- a/iocs/bl45p-mo-ioc-01.hand/config/start.sh +++ /dev/null @@ -1 +0,0 @@ -../../start.sh \ No newline at end of file diff --git a/iocs/bl45p-mo-ioc-01.hand/templates/config.yaml b/iocs/bl45p-mo-ioc-01.hand/templates/config.yaml deleted file mode 100644 index 86d8bc6..0000000 --- a/iocs/bl45p-mo-ioc-01.hand/templates/config.yaml +++ /dev/null @@ -1,13 +0,0 @@ - -{{ include "ioc-chart.ioc" . }} - -{{- /* - add the contents of every file in the config folder of this IOC helm chart - into the config map - this must include start.sh the startup script. - The files must be text only. Any files ending in .tz are explicitly omitted -*/ -}} - -{{ (.Files.Glob "config/*").AsConfig | indent 2 }} - - version.txt: | - IOC {{ .Release.Name }} version {{ .Chart.AppVersion }} \ No newline at end of file diff --git a/iocs/bl45p-mo-ioc-01.hand/values.yaml b/iocs/bl45p-mo-ioc-01.hand/values.yaml deleted file mode 100644 index 95d2c3d..0000000 --- a/iocs/bl45p-mo-ioc-01.hand/values.yaml +++ /dev/null @@ -1 +0,0 @@ -base_image: ghcr.io/epics-containers/ioc-pmac:1.0.0.run diff --git a/iocs/readme.txt b/iocs/readme.txt deleted file mode 100644 index 115a98c..0000000 --- a/iocs/readme.txt +++ /dev/null @@ -1,4 +0,0 @@ -At present these ioc helm charts are hand coded. - -In future they will be generated from an IOC yaml definition using the tool -ibek (IOC Builder for EPICS in Kubernetes) diff --git a/iocs/start.sh b/iocs/start.sh deleted file mode 100644 index d993bca..0000000 --- a/iocs/start.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -# -# generic kubernetes IOC startup script -# -this_dir=$(realpath $(dirname $0)) -TOP=$(realpath ${this_dir}/..) -cd ${this_dir} - -# add module paths to environment for use in ioc startup script -source ${SUPPORT}/configure/RELEASE.shell - -# if there is a non-zero length config.tz then decompress into config_untar -if [ -s config.tz ] -then - # decompress the configuration files into config_untar - config_dir=/tmp/config_untar - - mkdir -p ${config_dir} - tar -zxvf config.tz -C ${config_dir} -else - config_dir=${TOP}/config -fi - -boot=${config_dir}/ioc.boot - -# Update the boot script to work in the directory it resides in -# using msi MACRO substitution. -# Output to /tmp for guarenteed writability -msi -MTOP=${TOP},THIS_DIR=${config_dir},ADCORE=${adcore} ${boot} > /tmp/ioc.boot - -exec ${IOC}/bin/linux-x86_64/ioc /tmp/ioc.boot \ No newline at end of file From 9775b2faacfa3afefc30bdcae1185380d5a3f48c Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Mon, 13 Jun 2022 12:26:03 +0000 Subject: [PATCH 16/16] bump ibek version --- .github/workflows/bl_buiild.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bl_buiild.yml b/.github/workflows/bl_buiild.yml index 66977a2..2227333 100644 --- a/.github/workflows/bl_buiild.yml +++ b/.github/workflows/bl_buiild.yml @@ -28,7 +28,7 @@ jobs: - name: push each ioc helm chart run: | - pip install ibek >=0.9 + pip install ibek >=0.9.1 # tar up any config folders that require it ./tar_config_src.sh