diff --git a/convert/ibek2to3.py b/convert/ibek2to3.py old mode 100644 new mode 100755 index 61e3557e..7f2bca55 --- a/convert/ibek2to3.py +++ b/convert/ibek2to3.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python """ Converts .ibek.support.yaml files from the v2.0 format to the v3.0 format. @@ -28,6 +29,7 @@ by aliases """ +import re from pathlib import Path import typer @@ -49,6 +51,27 @@ def main(files: list[Path]): process_file(f) +def tidy_up(yaml): + # add blank lines between major fields - this is an opinionated + # formatting choice for legibility + for field in [ + " - name:", + " databases:", + " pre_init:", + " post_init:", + " pre_defines:", + " post_defines:", + " shared:", + "module", + "defs", + " - file:", + " - value:", + ]: + # insert a blank line before the field unless it already has one + yaml = re.sub(r"^[ \t]*(\n%s)" % field, "\n\\g<1>", yaml) + return yaml + + def process_file(file: Path): """ process a single file by reading its yaml - transforming it and writing it back @@ -63,7 +86,14 @@ def process_file(file: Path): print(f">>>>> {file} has already been converted") else: with open(file, "w") as f: - yaml.dump(data, f) + yaml.default_flow_style = False + # these indents match the defaults for vscode RedHat yaml extension + yaml.indent(mapping=2, sequence=4, offset=2) + # we like to allow really wide lines for db subst lists etc so + # we recommend this setting for the yaml extension + yaml.width = 8000 + yaml.preserve_quotes = True + yaml.dump(data, f, transform=tidy_up) def convert(data: dict): diff --git a/tests/samples/support/ADCore.ibek.support.yaml b/tests/samples/support/ADCore.ibek.support.yaml index 1fb29e55..c3d4ab4e 100644 --- a/tests/samples/support/ADCore.ibek.support.yaml +++ b/tests/samples/support/ADCore.ibek.support.yaml @@ -3,3121 +3,3118 @@ module: ADCore defs: -- name: NDFileNexus - description: |- - This plugin can compress NDArrays to Nexus and write them to file - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDFileNexus plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - pre_init: - - value: | - # NDFileNexusConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) - NDFileNexusConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) - - databases: - - file: $(ADCORE)/db/NDFileNexus.template - args: + - name: NDFileNexus + description: |- + This plugin can compress NDArrays to Nexus and write them to file + params: + P: + type: str + description: |- + Device Prefix + + R: + type: str + description: |- + Device Suffix + + PORT: + type: id + description: |- + Port name for the NDFileNexus plugin + NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + pre_init: + - value: | + # NDFileNexusConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) + NDFileNexusConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) + + databases: + - file: $(ADCORE)/db/NDFileNexus.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + - name: NDFFT + description: |- + This plugin is used to calculate the FFT of a time series + params: P: + type: str + description: |- + Device prefix + R: - TIMEOUT: + type: str + description: |- + Device suffix + PORT: + type: id + description: |- + Port name for the NDFFT plugin -- name: NDFFT - description: |- - This plugin is used to calculate the FFT of a time series - params: - P: - type: str - description: |- - Device prefix - - R: - type: str - description: |- - Device suffix - - PORT: - type: id - description: |- - Port name for the NDFFT plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - NCHANS: - type: str - description: |- - Length of time series waveform - - TIMEOUT: - type: int - description: |- - Asyn port timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - TIME_LINK: - type: float - description: |- - Time in seconds between points (Can point to a record - use CP) - default: 0.1 - - NAME: - type: int - description: |- - Label for signal - default: 0 - - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - PRIORITY: - type: int - description: |- - Thread priority if ASYN_CANBLOCK is set - default: 0 - - STACKSIZE: - type: int - description: |- - Stack size if ASYN_CANBLOCK is set - default: 0 - - MAX_THREADS: - type: int - description: |- - Maximum number threads - default: 1 - - pre_init: - - value: | - # NDFFTConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) - NDFFTConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, {{PRIORITY}}, {{STACKSIZE}}, {{MAX_THREADS}}) - - databases: - - file: $(ADCORE)/db/NDFFT.template - args: NDARRAY_PORT: - NAME: - TIME_LINK: - NDARRAY_ADDR: + type: object + description: |- + Input array port + NCHANS: - ENABLED: - PORT: - P: - R: + type: str + description: |- + Length of time series waveform + TIMEOUT: - SCANRATE: - ADDR: + type: int + description: |- + Asyn port timeout + default: 1 -- name: NDPosPlugin - description: |- - This plugin attaches position information to NDArrays - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDPosPlugin plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Asyn timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - PRIORITY: - type: int - description: |- - Max buffers to allocate - default: 0 - - STACKSIZE: - type: int - description: |- - Max buffers to allocate - default: 0 - - pre_init: - - value: | - # NDPosPluginConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize) - NDPosPluginConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, {{PRIORITY}}, {{STACKSIZE}}) - - databases: - - file: $(ADCORE)/db/NDPosPlugin.template - args: - NDARRAY_PORT: ADDR: - SCANRATE: + type: int + description: |- + Asyn port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + TIME_LINK: + type: float + description: |- + Time in seconds between points (Can point to a record - use CP) + default: 0.1 + + NAME: + type: int + description: |- + Label for signal + default: 0 + + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + PRIORITY: + type: int + description: |- + Thread priority if ASYN_CANBLOCK is set + default: 0 + + STACKSIZE: + type: int + description: |- + Stack size if ASYN_CANBLOCK is set + default: 0 + + MAX_THREADS: + type: int + description: |- + Maximum number threads + default: 1 + + pre_init: + - value: | + # NDFFTConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) + NDFFTConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, {{PRIORITY}}, {{STACKSIZE}}, {{MAX_THREADS}}) + + databases: + - file: $(ADCORE)/db/NDFFT.template + args: + NDARRAY_PORT: + NAME: + TIME_LINK: + NDARRAY_ADDR: + NCHANS: + ENABLED: + PORT: + P: + R: + TIMEOUT: + SCANRATE: + ADDR: + + - name: NDPosPlugin + description: |- + This plugin attaches position information to NDArrays + params: P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: + type: str + description: |- + Device Suffix + PORT: + type: id + description: |- + Port name for the NDPosPlugin plugin -- name: NDOverlay - description: |- - This plugin writes overlays on the array, like cursors and boxes - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDOverlay plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - MAX_THREADS: - type: int - description: |- - Maximum number threads - default: 1 - - O: - type: str - description: |- - NDOverlay Device Suffix - - NAME: - type: str - description: |- - Name for the overlay - - SHAPE: - type: str - description: |- - Shape of the overlay - - XPOS: - type: str - description: |- - Link for the XPos of the overlay - - YPOS: - type: str - description: |- - Link for the YPos of the overlay - - XCENT: - type: str - description: |- - Link for the XCent of the overlay - - YCENT: - type: str - description: |- - Link for the YCent of the overlay - - XSIZE: - type: str - description: |- - Link for the XSize of the overlay - - YSIZE: - type: str - description: |- - Link for the YSize of the overlay - - XWIDTH: - type: str - description: |- - Link for the XWidth of the overlay - - YWIDTH: - type: str - description: |- - Link for the YWdith of the overlay - - pre_init: - - value: | - # NDOverlayConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, NOverlays, maxBuffers, maxMemory, priority, stackSize, maxThreads) - NDOverlayConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, {{NOverlays}}, 0, 0, 0, 0, {{MAX_THREADS}}) - # TODO - MISSING ARGS: NOverlays - databases: - - file: $(ADCORE)/db/NDOverlay.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Asyn timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + PRIORITY: + type: int + description: |- + Max buffers to allocate + default: 0 + + STACKSIZE: + type: int + description: |- + Max buffers to allocate + default: 0 + + pre_init: + - value: | + # NDPosPluginConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize) + NDPosPluginConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, {{PRIORITY}}, {{STACKSIZE}}) + + databases: + - file: $(ADCORE)/db/NDPosPlugin.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + - name: NDOverlay + description: |- + This plugin writes overlays on the array, like cursors and boxes + params: P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: + type: str + description: |- + Device Suffix + PORT: + type: id + description: |- + Port name for the NDOverlay plugin + + NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + + ADDR: + type: int + description: |- + Asyn Port address + default: 0 + + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + MAX_THREADS: + type: int + description: |- + Maximum number threads + default: 1 - - file: $(ADCORE)/db/NDOverlayN.template - args: - XPOS: - NAME: - YWIDTH: - YSIZE: - YPOS: O: - PORT: - P: + type: str + description: |- + NDOverlay Device Suffix + + NAME: + type: str + description: |- + Name for the overlay + SHAPE: - R: - TIMEOUT: + type: str + description: |- + Shape of the overlay + + XPOS: + type: str + description: |- + Link for the XPos of the overlay + + YPOS: + type: str + description: |- + Link for the YPos of the overlay + XCENT: - XWIDTH: - XSIZE: + type: str + description: |- + Link for the XCent of the overlay + YCENT: - ADDR: + type: str + description: |- + Link for the YCent of the overlay + + XSIZE: + type: str + description: |- + Link for the XSize of the overlay + + YSIZE: + type: str + description: |- + Link for the YSize of the overlay + + XWIDTH: + type: str + description: |- + Link for the XWidth of the overlay + + YWIDTH: + type: str + description: |- + Link for the YWdith of the overlay + + pre_init: + - value: | + # NDOverlayConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, NOverlays, maxBuffers, maxMemory, priority, stackSize, maxThreads) + NDOverlayConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, {{NOverlays}}, 0, 0, 0, 0, {{MAX_THREADS}}) + # TODO - MISSING ARGS: NOverlays + databases: + - file: $(ADCORE)/db/NDOverlay.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + - file: $(ADCORE)/db/NDOverlayN.template + args: + XPOS: + NAME: + YWIDTH: + YSIZE: + YPOS: + O: + PORT: + P: + SHAPE: + R: + TIMEOUT: + XCENT: + XWIDTH: + XSIZE: + YCENT: + ADDR: + + - name: NDColorConvert + description: |- + This plugin converts arrays from one colour type to another, e.g. Bayer -> RGB1 + params: + P: + type: str + description: |- + Device Prefix + + R: + type: str + description: |- + Device Suffix + + PORT: + type: id + description: |- + Port name for the NDColorConvert plugin -- name: NDColorConvert - description: |- - This plugin converts arrays from one colour type to another, e.g. Bayer -> RGB1 - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDColorConvert plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - MAX_THREADS: - type: int - description: |- - Maximum number threads - default: 1 - - pre_init: - - value: | - # NDColorConvertConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) - NDColorConvertConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, 0, 0, {{MAX_THREADS}}) - - databases: - - file: $(ADCORE)/db/NDColorConvert.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + MAX_THREADS: + type: int + description: |- + Maximum number threads + default: 1 + + pre_init: + - value: | + # NDColorConvertConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) + NDColorConvertConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, 0, 0, {{MAX_THREADS}}) + + databases: + - file: $(ADCORE)/db/NDColorConvert.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + - name: NDFileHDF5 + description: |- + This plugin can compress NDArrays to HDF5 and write them to file + params: P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: + type: str + description: |- + Device Suffix + PORT: + type: id + description: |- + Port name for the NDFileHDF5 plugin -- name: NDFileHDF5 - description: |- - This plugin can compress NDArrays to HDF5 and write them to file - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDFileHDF5 plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Asyn Port timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - XMLSIZE: - type: int - description: |- - Number of elements of the XML layout waveform record - default: 2048 - - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - pre_init: - - value: | - # NDFileHDF5Configure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) - NDFileHDF5Configure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) - - databases: - - file: $(ADCORE)/db/NDFileHDF5.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Asyn Port timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: XMLSIZE: + type: int + description: |- + Number of elements of the XML layout waveform record + default: 2048 + + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + pre_init: + - value: | + # NDFileHDF5Configure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) + NDFileHDF5Configure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) + + databases: + - file: $(ADCORE)/db/NDFileHDF5.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + XMLSIZE: + P: + R: + TIMEOUT: + PORT: + + pvi: + yaml_path: NDFileHDF5.pvi.device.yaml + ui_macros: + P: + R: + pv: true + pv_prefix: $(P)$(R) + + - name: NDFileNull + description: |- + Null file plugin for deleting driver files + params: P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: + type: str + description: |- + Device Suffix + PORT: + type: id + description: |- + Port name for the NDFileHDF5 plugin - pvi: - yaml_path: NDFileHDF5.pvi.device.yaml - ui_macros: - P: - R: - pv: true - pv_prefix: $(P)$(R) - -- name: NDFileNull - description: |- - Null file plugin for deleting driver files - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDFileHDF5 plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - pre_init: - - value: | - # NDFileNullConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) - NDFileNullConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) - - databases: - - file: $(ADCORE)/db/NDFileNull.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: + type: int + description: |- + Asyn Port address + default: 0 + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + pre_init: + - value: | + # NDFileNullConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) + NDFileNullConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) + + databases: + - file: $(ADCORE)/db/NDFileNull.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + - name: NDStdArrays + description: |- + This plugin provides a waveform record that can display the NDArrays + produced by its NDARRAY_PORT + params: P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: + type: str + description: |- + Device Suffix + PORT: + type: id + description: |- + Port name for the NDStdArrays plugin -- name: NDStdArrays - description: |- - This plugin provides a waveform record that can display the NDArrays - produced by its NDARRAY_PORT - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDStdArrays plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TYPE: - type: str - description: |- - Asyn Type e.g. Int32 - - FTVL: - type: enum - description: |- - Field Type of Value - values: - ENUM: - SHORT: - STRING: - ULONG: - UCHAR: - DOUBLE: - USHORT: - LONG: - FLOAT: - CHAR: - NELEMENTS: - type: int - description: |- - Number of elements - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - MAX_THREADS: - type: int - description: |- - Maximum number threads - default: 1 - - pre_init: - - when: first - value: | - # NDStdArraysConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) - - - value: | - NDStdArraysConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, 0, 0, {{MAX_THREADS}}) - - databases: - - file: $(ADCORE)/db/NDStdArrays.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + TYPE: + type: str + description: |- + Asyn Type e.g. Int32 + FTVL: - ADDR: - SCANRATE: + type: enum + description: |- + Field Type of Value + values: + ENUM: + SHORT: + STRING: + ULONG: + UCHAR: + DOUBLE: + USHORT: + LONG: + FLOAT: + CHAR: NELEMENTS: + type: int + description: |- + Number of elements + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + + ADDR: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + MAX_THREADS: + type: int + description: |- + Maximum number threads + default: 1 + + pre_init: + - when: first + value: | + # NDStdArraysConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) + + - value: | + NDStdArraysConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, 0, 0, {{MAX_THREADS}}) + + databases: + - file: $(ADCORE)/db/NDStdArrays.template + args: + NDARRAY_PORT: + FTVL: + ADDR: + SCANRATE: + NELEMENTS: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + TYPE: + PORT: + + - name: _NDCircularBuff + description: |- + TODO:ADD DESCRIPTION + params: P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: - TYPE: + type: str + description: |- + Device Suffix + PORT: + type: str + description: |- + Asyn Port name -- name: _NDCircularBuff - description: |- - TODO:ADD DESCRIPTION - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: str - description: |- - Asyn Port name - - NDARRAY_PORT: - type: str - description: |- - Input Array Port - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input Array Address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - PRECOUNT: - type: int - description: |- - Pre-trigger frame count - default: 100 - - POSTCOUNT: - type: int - description: |- - Post-trigger frame count - default: 100 - - databases: - - file: $(ADCORE)/db/NDCircularBuff.template - args: NDARRAY_PORT: + type: str + description: |- + Input Array Port + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - SCANRATE: - PRECOUNT: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input Array Address + default: 0 + ENABLED: - P: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + PRECOUNT: + type: int + description: |- + Pre-trigger frame count + default: 100 + POSTCOUNT: + type: int + description: |- + Post-trigger frame count + default: 100 + + databases: + - file: $(ADCORE)/db/NDCircularBuff.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + PRECOUNT: + NDARRAY_ADDR: + ENABLED: + P: + POSTCOUNT: + R: + TIMEOUT: + PORT: + + - name: NDFileMagick + description: |- + This plugin can compress NDArrays to a range of formats supported by + graphics magick and write them to file + params: + P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: + type: str + description: |- + Device Suffix + PORT: + type: id + description: |- + Port name for the NDFileMagick plugin -- name: NDFileMagick - description: |- - This plugin can compress NDArrays to a range of formats supported by - graphics magick and write them to file - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDFileMagick plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - pre_init: - - value: | - # NDFileMagickConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) - NDFileMagickConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) - - databases: - - file: $(ADCORE)/db/NDFileMagick.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + pre_init: + - value: | + # NDFileMagickConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) + NDFileMagickConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) + + databases: + - file: $(ADCORE)/db/NDFileMagick.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + - name: NDCircularBuff + description: |- + This plugin provides a pre and post external trigger frame capture buffer + params: P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: + type: str + description: |- + Device Suffix + PORT: + type: id + description: |- + Port name for the FFT_calc plugin -- name: NDCircularBuff - description: |- - This plugin provides a pre and post external trigger frame capture buffer - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the FFT_calc plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 1 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - PRECOUNT: - type: int - description: |- - Pre-trigger frame count - default: 100 - - POSTCOUNT: - type: int - description: |- - Post-trigger frame count - default: 100 - - QUEUE: - type: int - description: |- - Input array queue size - default: 50 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - MAX_BUFFERS: - type: int - description: |- - Max buffer size in number of frames - default: 128 - - pre_init: - - value: | - # NDCircularBuffConfigure(portName, queueSize, blockingCallbacks, - NDCircularBuffConfigure( - - databases: - - file: $(ADCORE)/db/NDCircularBuff.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - SCANRATE: - PRECOUNT: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: - P: - POSTCOUNT: - R: - TIMEOUT: - PORT: + type: int + description: |- + Plugin Enabled at startup? + default: 1 -- name: NDAttrPlot - description: |- - TODO:ADD DESCRIPTION - params: - P: - type: str - description: |- - Device prefix - - R: - type: str - description: |- - Device suffix - - PORT: - type: id - description: |- - Asyn port name - - NDARRAY_PORT: - type: object - description: |- - Asyn port of the callback source - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Asyn address of the callback source - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 10000 - - N_CACHE: - type: int - description: |- - Number of NDArrays to store in cache - default: 10000 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - ATTR_IND: - type: str - description: |- - Attribute index - - AXIS: - type: str - description: |- - Axis name - - DATA_IND: - type: str - description: |- - Data index - - DATA_ADDR: - type: str - description: |- - Asyn address for this data array - - pre_init: - - value: | - NDAttrPlotConfig("{{PORT}}", {{N_ATTRS}}, {{N_CACHE}}, - # TODO - MISSING ARGS: N_ATTRS - databases: - - file: $(ADCORE)/db/NDAttrPlotAttr.template - args: + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + PRECOUNT: + type: int + description: |- + Pre-trigger frame count + default: 100 + + POSTCOUNT: + type: int + description: |- + Post-trigger frame count + default: 100 + + QUEUE: + type: int + description: |- + Input array queue size + default: 50 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + MAX_BUFFERS: + type: int + description: |- + Max buffer size in number of frames + default: 128 + + pre_init: + - value: | + # NDCircularBuffConfigure(portName, queueSize, blockingCallbacks, + NDCircularBuffConfigure( + + databases: + - file: $(ADCORE)/db/NDCircularBuff.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + PRECOUNT: + NDARRAY_ADDR: + ENABLED: + P: + POSTCOUNT: + R: + TIMEOUT: + PORT: + + - name: NDAttrPlot + description: |- + TODO:ADD DESCRIPTION + params: P: + type: str + description: |- + Device prefix + R: + type: str + description: |- + Device suffix + PORT: - ATTR_IND: + type: id + description: |- + Asyn port name - - file: $(ADCORE)/db/NDAttrPlot.template - args: NDARRAY_PORT: + type: object + description: |- + Asyn port of the callback source + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Asyn address of the callback source + default: 0 + ENABLED: - P: - R: - TIMEOUT: - PORT: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 10000 + + N_CACHE: + type: int + description: |- + Number of NDArrays to store in cache + default: 10000 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + ATTR_IND: + type: str + description: |- + Attribute index + + AXIS: + type: str + description: |- + Axis name + + DATA_IND: + type: str + description: |- + Data index - - file: $(ADCORE)/db/NDAttrPlotData.template - args: DATA_ADDR: + type: str + description: |- + Asyn address for this data array + + pre_init: + - value: | + NDAttrPlotConfig("{{PORT}}", {{N_ATTRS}}, {{N_CACHE}}, + # TODO - MISSING ARGS: N_ATTRS + databases: + - file: $(ADCORE)/db/NDAttrPlotAttr.template + args: + P: + R: + PORT: + ATTR_IND: + + - file: $(ADCORE)/db/NDAttrPlot.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + - file: $(ADCORE)/db/NDAttrPlotData.template + args: + DATA_ADDR: + P: + DATA_IND: + R: + N_CACHE: + PORT: + AXIS: + + - name: NDCodec + description: |- + This plugin can compress or decompress NDArrays + params: P: - DATA_IND: + type: str + description: |- + Device Prefix + R: - N_CACHE: + type: str + description: |- + Device Suffix + PORT: - AXIS: + type: id + description: |- + Port name for the NDCodec plugin -- name: NDCodec - description: |- - This plugin can compress or decompress NDArrays - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDCodec plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Asyn timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - MAX_THREADS: - type: int - description: |- - Maximum number threads - default: 1 - - pre_init: - - value: | - # NDCodecConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) - NDCodecConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, 0, 0, {{MAX_THREADS}}) - - databases: - - file: $(ADCORE)/db/NDCodec.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Asyn timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: - P: - R: - TIMEOUT: - PORT: + type: int + description: |- + Plugin Enabled at startup? + default: 0 -- name: NDGather - description: |- - This plugin is used to gather NDArrays from multiple upstream plugins and merge them into a single stream - params: - NDARRAY_PORT: - type: str - description: |- - Input Array Port - - PORT: - type: id - description: |- - Port name for the NDGather plugin - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input Array Address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - MAX_PORTS: - type: int - description: |- - Maximum number of ports that this plugin can connect to for callbacks - default: 5 - - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - pre_init: - - value: | - # NDGatherConfigure(portName, queueSize, blockingCallbacks, maxPorts) - NDGatherConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{MAX_PORTS}}") - - databases: - - file: $(ADCORE)/db/NDGather.template - args: + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + MAX_THREADS: + type: int + description: |- + Maximum number threads + default: 1 + + pre_init: + - value: | + # NDCodecConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) + NDCodecConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, 0, 0, {{MAX_THREADS}}) + + databases: + - file: $(ADCORE)/db/NDCodec.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + - name: NDGather + description: |- + This plugin is used to gather NDArrays from multiple upstream plugins and merge them into a single stream + params: NDARRAY_PORT: + type: str + description: |- + Input Array Port + + PORT: + type: id + description: |- + Port name for the NDGather plugin + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input Array Address + default: 0 + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + MAX_PORTS: + type: int + description: |- + Maximum number of ports that this plugin can connect to for callbacks + default: 5 + P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: - MAX_PORTS: + type: str + description: |- + Device Suffix + + pre_init: + - value: | + # NDGatherConfigure(portName, queueSize, blockingCallbacks, maxPorts) + NDGatherConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{MAX_PORTS}}") + + databases: + - file: $(ADCORE)/db/NDGather.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + MAX_PORTS: + PORT: + + - name: NDROI + description: |- + This plugin selects a region of interest and optionally scales it to + fit in a particular data type + params: + P: + type: str + description: |- + Device Prefix + + R: + type: str + description: |- + Device Suffix + PORT: + type: id + description: |- + Port name for the NDROI plugin -- name: NDROI - description: |- - This plugin selects a region of interest and optionally scales it to - fit in a particular data type - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDROI plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - MAX_THREADS: - type: int - description: |- - Maximum number threads - default: 1 - - pre_init: - - value: | - # NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) - NDROIConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, 0, 0, {{MAX_THREADS}}) - - databases: - - file: $(ADCORE)/db/NDROI.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + MAX_THREADS: + type: int + description: |- + Maximum number threads + default: 1 + + pre_init: + - value: | + # NDROIConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) + NDROIConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, 0, 0, {{MAX_THREADS}}) + + databases: + - file: $(ADCORE)/db/NDROI.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + pvi: + yaml_path: NDPluginROI.pvi.device.yaml + ui_macros: + P: + R: + pv: true + pv_prefix: $(P)$(R) + + - name: NDAttribute + description: |- + This plugin displays NDArray attributes + params: P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: + type: str + description: |- + Device Suffix + PORT: + type: id + description: |- + Port name for the NDAttribute plugin + + NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 - pvi: - yaml_path: NDPluginROI.pvi.device.yaml - ui_macros: - P: - R: - pv: true - pv_prefix: $(P)$(R) - -- name: NDAttribute - description: |- - This plugin displays NDArray attributes - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDAttribute plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - MAX_ATTRIBUTES: - type: int - description: |- - Maximum number of attributes in this plugin - default: 8 - - NCHANS: - type: int - description: |- - Number of points in the arrays - default: 4096 - - TS_PORT: - type: str - description: |- - Asyn Port of Time Series plugin - default: $(PORT)_TS - - pre_init: - - when: first - value: | - # ADCore path for manual NDTimeSeries.template to find base plugin template - epicsEnvSet "EPICS_DB_INCLUDE_PATH", "$(ADCORE)/db" - - - value: | - # NDAttrConfigure(portName, queueSize, blockingCallbacks, - NDAttrConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, - # NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) - NDTimeSeriesConfigure("{{PORT}}_TS", {{QUEUE}}, {{BLOCK}}, "{{PORT}}", 1, {{MAX_ATTRIBUTES}}) - # Load time series records - - databases: - - file: $(ADCORE)/db/NDAttributeN.template - args: ADDR: + type: int + description: |- + Asyn Port address + default: 0 + + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + MAX_ATTRIBUTES: + type: int + description: |- + Maximum number of attributes in this plugin + default: 8 + NCHANS: - P: - R: - TIMEOUT: + type: int + description: |- + Number of points in the arrays + default: 4096 + TS_PORT: + type: str + description: |- + Asyn Port of Time Series plugin + default: $(PORT)_TS + + pre_init: + - when: first + value: | + # ADCore path for manual NDTimeSeries.template to find base plugin template + epicsEnvSet "EPICS_DB_INCLUDE_PATH", "$(ADCORE)/db" + + - value: | + # NDAttrConfigure(portName, queueSize, blockingCallbacks, + NDAttrConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, + # NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals) + NDTimeSeriesConfigure("{{PORT}}_TS", {{QUEUE}}, {{BLOCK}}, "{{PORT}}", 1, {{MAX_ATTRIBUTES}}) + # Load time series records + + databases: + - file: $(ADCORE)/db/NDAttributeN.template + args: + ADDR: + NCHANS: + P: + R: + TIMEOUT: + TS_PORT: + PORT: + + - file: $(ADCORE)/db/NDAttribute.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + - name: NDStats + description: |- + This plugin calculates statistics like X and Y profile, centroid, and plots a histogram of binned pixels + params: PORT: + type: id + description: |- + Port name for the NDStats plugin - - file: $(ADCORE)/db/NDAttribute.template - args: NDARRAY_PORT: - ADDR: - SCANRATE: - NDARRAY_ADDR: - ENABLED: + type: object + description: |- + Input array port + + HIST_SIZE: + type: int + description: |- + Maximum size of Pixel binning histogram (e.g. 256 for Int8) + P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: - PORT: + type: str + description: |- + Device Suffix -- name: NDStats - description: |- - This plugin calculates statistics like X and Y profile, centroid, and plots a histogram of binned pixels - params: - PORT: - type: id - description: |- - Port name for the NDStats plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - HIST_SIZE: - type: int - description: |- - Maximum size of Pixel binning histogram (e.g. 256 for Int8) - - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - XSIZE: - type: int - description: |- - XSIZE, Maximum size of X histograms (e.g. 1024) - - YSIZE: - type: int - description: |- - Maximum size of Y histograms (e.g. 768) - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - NCHANS: - type: int - description: |- - Maximum length of time series (initialises waveform NELM, fixed on IOC boot) - default: 2048 - - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - MAX_THREADS: - type: int - description: |- - Maximum number threads - default: 1 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - TS_PORT: - type: str - description: |- - TS port - default: $(PORT)_TS - - pre_init: - - when: first - value: | - # 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) - - - value: | - NDStatsConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, 0, 0, {{MAX_THREADS}}) - - databases: - - file: $(ADCORE)/db/NDStats.template - args: - NDARRAY_PORT: XSIZE: - NCHANS: - NDARRAY_ADDR: + type: int + description: |- + XSIZE, Maximum size of X histograms (e.g. 1024) + YSIZE: + type: int + description: |- + Maximum size of Y histograms (e.g. 768) + ENABLED: - HIST_SIZE: - PORT: - P: - R: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + NCHANS: + type: int + description: |- + Maximum length of time series (initialises waveform NELM, fixed on IOC boot) + default: 2048 + + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + TIMEOUT: - TS_PORT: - SCANRATE: + type: int + description: |- + Timeout + default: 1 + ADDR: + type: int + description: |- + Asyn Port address + default: 0 - pvi: - yaml_path: NDPluginStats.pvi.device.yaml - ui_macros: + MAX_THREADS: + type: int + description: |- + Maximum number threads + default: 1 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + TS_PORT: + type: str + description: |- + TS port + default: $(PORT)_TS + + pre_init: + - when: first + value: | + # 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) + + - value: | + NDStatsConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, 0, 0, {{MAX_THREADS}}) + + databases: + - file: $(ADCORE)/db/NDStats.template + args: + NDARRAY_PORT: + XSIZE: + NCHANS: + NDARRAY_ADDR: + YSIZE: + ENABLED: + HIST_SIZE: + PORT: + P: + R: + TIMEOUT: + TS_PORT: + SCANRATE: + ADDR: + + pvi: + yaml_path: NDPluginStats.pvi.device.yaml + ui_macros: + P: + R: + pv: true + pv_prefix: $(P)$(R) + + sub_entities: + - { type: ADCore.NDTimeSeries, P: "{{P}}", R: "{{R}}TS:", PORT: "{{PORT}}_TS", NDARRAY_PORT: "{{PORT}}", NAME: "{{PORT}}_TS", NCHANS: "{{NCHANS}}", TIMEOUT: "{{TIMEOUT}}", ADDR: 0, NDARRAY_ADDR: 1, ENABLED: "{{ENABLED}}", QUEUE: "{{QUEUE}}", BLOCK: "{{BLOCK}}", NSIGNALS: 23 } + + - name: NDTimeSeries + description: |- + This plugin creates time series arrays from callback data + params: P: + type: str + description: |- + Device prefix + R: - pv: true - pv_prefix: $(P)$(R) - - sub_entities: - - {type: ADCore.NDTimeSeries, P: '{{P}}', R: '{{R}}TS:', PORT: '{{PORT}}_TS', NDARRAY_PORT: '{{PORT}}', - NAME: '{{PORT}}_TS', NCHANS: '{{NCHANS}}', TIMEOUT: '{{TIMEOUT}}', ADDR: 0, NDARRAY_ADDR: 1, - ENABLED: '{{ENABLED}}', QUEUE: '{{QUEUE}}', BLOCK: '{{BLOCK}}', NSIGNALS: 23} - -- name: NDTimeSeries - description: |- - This plugin creates time series arrays from callback data - params: - P: - type: str - description: |- - Device prefix - - R: - type: str - description: |- - Device suffix - - PORT: - type: id - description: |- - Port name for the NDTimeSeries plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - NCHANS: - type: str - description: |- - Length of time series waveform - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - TIME_LINK: - type: float - description: |- - Time between points (Can point to a record - use CP) - default: 0.1 - - NSIGNALS: - type: int - description: |- - Maximum number of time series signals - default: 1 - - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - PRIORITY: - type: int - description: |- - Thread priority if ASYN_CANBLOCK is set - default: 0 - - STACKSIZE: - type: int - description: |- - Stack size if ASYN_CANBLOCK is set - default: 0 - - NAME: - type: str - description: |- - Name of the signal - - pre_init: - - when: first - value: | - # NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals, maxBuffers, maxMemory, priority, stackSize) - - value: | - NDTimeSeriesConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, {{NSIGNALS}}, 0, 0, {{PRIORITY}}, {{STACKSIZE}}) - - databases: - - file: $(ADCORE)/db/NDTimeSeries.template - args: + type: str + description: |- + Device suffix + + PORT: + type: id + description: |- + Port name for the NDTimeSeries plugin + NDARRAY_PORT: + type: object + description: |- + Input array port + + NCHANS: + type: str + description: |- + Length of time series waveform + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - TIME_LINK: + type: int + description: |- + Asyn port address + default: 0 + NDARRAY_ADDR: - NCHANS: + type: int + description: |- + Input array port address + default: 0 + ENABLED: - PORT: - P: - R: - TIMEOUT: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + TIME_LINK: + type: float + description: |- + Time between points (Can point to a record - use CP) + default: 0.1 + + NSIGNALS: + type: int + description: |- + Maximum number of time series signals + default: 1 + + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + PRIORITY: + type: int + description: |- + Thread priority if ASYN_CANBLOCK is set + default: 0 + + STACKSIZE: + type: int + description: |- + Stack size if ASYN_CANBLOCK is set + default: 0 - - file: $(ADCORE)/db/NDTimeSeriesN.template - args: - ADDR: - NCHANS: + NAME: + type: str + description: |- + Name of the signal + + pre_init: + - when: first + value: | + # NDTimeSeriesConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxSignals, maxBuffers, maxMemory, priority, stackSize) + - value: | + NDTimeSeriesConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, {{NSIGNALS}}, 0, 0, {{PRIORITY}}, {{STACKSIZE}}) + + databases: + - file: $(ADCORE)/db/NDTimeSeries.template + args: + NDARRAY_PORT: + ADDR: + TIME_LINK: + NDARRAY_ADDR: + NCHANS: + ENABLED: + PORT: + P: + R: + TIMEOUT: + SCANRATE: + + - file: $(ADCORE)/db/NDTimeSeriesN.template + args: + ADDR: + NCHANS: + P: + R: + TIMEOUT: + PORT: + NAME: + + - name: NDAttributes + description: |- + Add an attribute to the NDAttributes file for a particular ADDriver or + NDPlugin, and associate it with the NDAttributes file + params: + port: + type: object + description: |- + ADDriver or NDPlugin to attach xml file to + + source: + type: str + description: |- + The EPICS PV (if type=EPICS_PV) or attribute name (if type=PARAM) + + name: + type: id + description: |- + Object name. You do not need to specify this + + attrname: + type: str + description: |- + Name of the attribute. If you leave this blank it defaults to + + type: + type: enum + description: |- + Where the data should be picked up from + default: EPICS_PV + values: + EPICS_PV: + PARAM: + dbrtype: + type: enum + description: |- + DBR type (only used if type=EPICS_PV) + default: DBR_NATIVE + values: + DBR_STRING: + DBR_INT: + DBR_NATIVE: + DBR_SHORT: + DBR_CHAR: + DBR_ENUM: + DBR_LONG: + DBR_FLOAT: + datatype: + type: enum + description: |- + Data type (only used if type=PARAM) + default: INT + values: + INT: + DOUBLE: + STRING: + description: + type: str + description: |- + Description of the attribute + + addr: + type: int + description: |- + Asyn address of the parameter (only used if type=PARAM) + default: 0 + + post_init: + - value: | + dbpf %s%sNDAttributesFile, %s/%s.xml + + - name: NDProcess + description: |- + This plugin does image processing like flat field correction, background + subtraction, and recursive filtering + params: P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: + type: str + description: |- + Device Suffix + PORT: - NAME: + type: id + description: |- + Port name for the NDProcess plugin -- name: NDAttributes - description: |- - Add an attribute to the NDAttributes file for a particular ADDriver or - NDPlugin, and associate it with the NDAttributes file - params: - port: - type: object - description: |- - ADDriver or NDPlugin to attach xml file to - - source: - type: str - description: |- - The EPICS PV (if type=EPICS_PV) or attribute name (if type=PARAM) - - name: - type: id - description: |- - Object name. You do not need to specify this - - attrname: - type: str - description: |- - Name of the attribute. If you leave this blank it defaults to - - type: - type: enum - description: |- - Where the data should be picked up from - default: EPICS_PV - values: - EPICS_PV: - PARAM: - dbrtype: - type: enum - description: |- - DBR type (only used if type=EPICS_PV) - default: DBR_NATIVE - values: - DBR_STRING: - DBR_INT: - DBR_NATIVE: - DBR_SHORT: - DBR_CHAR: - DBR_ENUM: - DBR_LONG: - DBR_FLOAT: - datatype: - type: enum - description: |- - Data type (only used if type=PARAM) - default: INT - values: - INT: - DOUBLE: - STRING: - description: - type: str - description: |- - Description of the attribute - - addr: - type: int - description: |- - Asyn address of the parameter (only used if type=PARAM) - default: 0 - - post_init: - - value: | - dbpf %s%sNDAttributesFile, %s/%s.xml - -- name: NDProcess - description: |- - This plugin does image processing like flat field correction, background - subtraction, and recursive filtering - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDProcess plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - pre_init: - - value: | - # NDProcessConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) - NDProcessConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) - - databases: - - file: $(ADCORE)/db/NDProcess.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: - P: - R: - TIMEOUT: - PORT: + type: int + description: |- + Plugin Enabled at startup? + default: 0 - pvi: - yaml_path: NDPluginProcess.pvi.device.yaml - ui_macros: + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + pre_init: + - value: | + # NDProcessConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) + NDProcessConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) + + databases: + - file: $(ADCORE)/db/NDProcess.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + pvi: + yaml_path: NDPluginProcess.pvi.device.yaml + ui_macros: + P: + R: + pv: true + pv_prefix: $(P)$(R) + + - name: NDFileTIFF + description: |- + This plugin can compress NDArrays to TIFF and write them to file + params: P: + type: str + description: |- + Device Prefix + R: - pv: true - pv_prefix: $(P)$(R) - -- name: NDFileTIFF - description: |- - This plugin can compress NDArrays to TIFF and write them to file - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - NDARRAY_PORT: - type: object - description: |- - Input array port - - PORT: - type: id - description: |- - Port name for the NDFileTIFF plugin - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - pre_init: - - value: | - # NDFileTIFFConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) - NDFileTIFFConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) - - databases: - - file: $(ADCORE)/db/NDFileTIFF.template - args: + type: str + description: |- + Device Suffix + NDARRAY_PORT: + type: object + description: |- + Input array port + + PORT: + type: id + description: |- + Port name for the NDFileTIFF plugin + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: - P: - R: - TIMEOUT: - PORT: + type: int + description: |- + Plugin Enabled at startup? + default: 0 -- name: NDGather8 - description: |- - This plugin is used to gather NDArrays from multiple upstream plugins and merge them into a single stream - params: - NDARRAY_PORT: - type: str - description: |- - Input Array Port - - PORT: - type: id - description: |- - Port name for the NDGather plugin - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input Array Address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - N: - type: str - description: |- - Port number (1 - maxPorts) - - MAX_PORTS: - type: str - description: |- - Maximum number ports - - databases: - - file: $(ADCORE)/db/NDGatherN.template - args: + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + pre_init: + - value: | + # NDFileTIFFConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) + NDFileTIFFConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) + + databases: + - file: $(ADCORE)/db/NDFileTIFF.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + - name: NDGather8 + description: |- + This plugin is used to gather NDArrays from multiple upstream plugins and merge them into a single stream + params: NDARRAY_PORT: - ADDR: - NDARRAY_ADDR: - N: - P: - R: - TIMEOUT: + type: str + description: |- + Input Array Port + PORT: + type: id + description: |- + Port name for the NDGather plugin + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 - - file: $(ADCORE)/db/NDGather.template - args: - NDARRAY_PORT: ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input Array Address + default: 0 + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: - MAX_PORTS: - PORT: + type: str + description: |- + Device Suffix -- name: NDROIStat - description: |- - This plugin calculates statistics of ROIs - params: - P: - type: str - description: |- - First part of base PV name - - R: - type: str - description: |- - Second part of base PV name - - PORT: - type: id - description: |- - Port name for the NDPluginROIStat plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - asyn address on port - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - MAX_ROIS: - type: int - description: |- - Maximum number of ROIs in this plugin - default: 8 - - NCHANS: - type: int - description: |- - Number of points in the arrays - default: 4096 - - MAX_THREADS: - type: int - description: |- - Maximum number threads - default: 1 - - pre_init: - - value: | - # NDROIStatConfigure(portName, queueSize, blockingCallbacks, - NDROIStatConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, - - databases: - - file: $(ADCORE)/db/NDROIStatN.template - args: - ADDR: - NCHANS: + N: + type: str + description: |- + Port number (1 - maxPorts) + + MAX_PORTS: + type: str + description: |- + Maximum number ports + + databases: + - file: $(ADCORE)/db/NDGatherN.template + args: + NDARRAY_PORT: + ADDR: + NDARRAY_ADDR: + N: + P: + R: + TIMEOUT: + PORT: + + - file: $(ADCORE)/db/NDGather.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + MAX_PORTS: + PORT: + + - name: NDROIStat + description: |- + This plugin calculates statistics of ROIs + params: P: + type: str + description: |- + First part of base PV name + R: - TIMEOUT: + type: str + description: |- + Second part of base PV name + PORT: + type: id + description: |- + Port name for the NDPluginROIStat plugin - - file: $(ADCORE)/db/NDROIStat.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - NCHANS: + type: int + description: |- + asyn address on port + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: - PORT: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + MAX_ROIS: + type: int + description: |- + Maximum number of ROIs in this plugin + default: 8 + + NCHANS: + type: int + description: |- + Number of points in the arrays + default: 4096 + + MAX_THREADS: + type: int + description: |- + Maximum number threads + default: 1 + + pre_init: + - value: | + # NDROIStatConfigure(portName, queueSize, blockingCallbacks, + NDROIStatConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, + + databases: + - file: $(ADCORE)/db/NDROIStatN.template + args: + ADDR: + NCHANS: + P: + R: + TIMEOUT: + PORT: + + - file: $(ADCORE)/db/NDROIStat.template + args: + NDARRAY_PORT: + ADDR: + NCHANS: + NDARRAY_ADDR: + ENABLED: + PORT: + P: + R: + TIMEOUT: + SCANRATE: + + - name: NDFileNetCDF + description: |- + This plugin can compress NDArrays to NetCDF and write them to file + params: P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: - SCANRATE: + type: str + description: |- + Device Suffix -- name: NDFileNetCDF - description: |- - This plugin can compress NDArrays to NetCDF and write them to file - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - NDARRAY_PORT: - type: object - description: |- - Input array port - - PORT: - type: id - description: |- - Port name for the NDFileNetCDF plugin - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - pre_init: - - value: | - # NDFileNetCDFConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) - NDFileNetCDFConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) - - databases: - - file: $(ADCORE)/db/NDFileNetCDF.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + PORT: + type: id + description: |- + Port name for the NDFileNetCDF plugin + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + pre_init: + - value: | + # NDFileNetCDFConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) + NDFileNetCDFConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) + + databases: + - file: $(ADCORE)/db/NDFileNetCDF.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + - name: NDPvaPlugin + description: |- + This plugin makes NDArrays available through PVAccess + params: P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: + type: str + description: |- + Device Suffix + PORT: + type: id + description: |- + Port name for the NDPosPlugin plugin -- name: NDPvaPlugin - description: |- - This plugin makes NDArrays available through PVAccess - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDPosPlugin plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - PVNAME: - type: str - description: |- - Name of the PV to post NDArray out on - - TIMEOUT: - type: int - description: |- - Asyn timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - PRIORITY: - type: int - description: |- - Max buffers to allocate - default: 0 - - STACKSIZE: - type: int - description: |- - Max buffers to allocate - default: 0 - - pre_init: - - value: | - # NDPvaConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, pvName, maxBuffers, maxMemory, priority, stackSize) - NDPvaConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, {{PVNAME}}, 0, 0, {{PRIORITY}}, {{STACKSIZE}}) - startPVAServer - - databases: - - file: $(ADCORE)/db/NDPva.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + PVNAME: + type: str + description: |- + Name of the PV to post NDArray out on + + TIMEOUT: + type: int + description: |- + Asyn timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + PRIORITY: + type: int + description: |- + Max buffers to allocate + default: 0 + + STACKSIZE: + type: int + description: |- + Max buffers to allocate + default: 0 + + pre_init: + - value: | + # NDPvaConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, pvName, maxBuffers, maxMemory, priority, stackSize) + NDPvaConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, {{PVNAME}}, 0, 0, {{PRIORITY}}, {{STACKSIZE}}) + startPVAServer + + databases: + - file: $(ADCORE)/db/NDPva.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + pvi: + yaml_path: NDPluginPva.pvi.device.yaml + ui_macros: + P: + R: + pv: true + pv_prefix: $(P)$(R) + + - name: NDTransform + description: |- + This plugin selects a region of interest and optionally scales it to fit in a particular data type + params: P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: + type: str + description: |- + Device Suffix + PORT: + type: id + description: |- + Port name for the NDTransform plugin - pvi: - yaml_path: NDPluginPva.pvi.device.yaml - ui_macros: - P: - R: - pv: true - pv_prefix: $(P)$(R) - -- name: NDTransform - description: |- - This plugin selects a region of interest and optionally scales it to fit in a particular data type - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDTransform plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - MAX_THREADS: - type: int - description: |- - Maximum number threads - default: 1 - - pre_init: - - value: | - # NDTransformConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) - NDTransformConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, 0, 0, {{MAX_THREADS}}) - - databases: - - file: $(ADCORE)/db/NDTransform.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + MAX_THREADS: + type: int + description: |- + Maximum number threads + default: 1 + + pre_init: + - value: | + # NDTransformConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr, maxBuffers, maxMemory, priority, stackSize, maxThreads) + NDTransformConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}, 0, 0, 0, 0, {{MAX_THREADS}}) + + databases: + - file: $(ADCORE)/db/NDTransform.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + - name: NDFileJPEG + description: |- + This plugin can compress NDArrays to JPEG and write them to file + params: P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: + type: str + description: |- + Device Suffix + PORT: + type: id + description: |- + Port name for the NDFileJPEG plugin -- name: NDFileJPEG - description: |- - This plugin can compress NDArrays to JPEG and write them to file - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDFileJPEG plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - pre_init: - - value: | - # NDFileJPEGConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) - NDFileJPEGConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) - - databases: - - file: $(ADCORE)/db/NDFileJPEG.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + pre_init: + - value: | + # NDFileJPEGConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) + NDFileJPEGConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) + + databases: + - file: $(ADCORE)/db/NDFileJPEG.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: + + - name: NDScatter + description: |- + This plugin is used to distribute processing of NDArrays to multiple downstream plugins + params: P: + type: str + description: |- + Device Prefix + R: - TIMEOUT: + type: str + description: |- + Device Suffix + PORT: + type: id + description: |- + Port name for the NDTimeSeries plugin -- name: NDScatter - description: |- - This plugin is used to distribute processing of NDArrays to multiple downstream plugins - params: - P: - type: str - description: |- - Device Prefix - - R: - type: str - description: |- - Device Suffix - - PORT: - type: id - description: |- - Port name for the NDTimeSeries plugin - - NDARRAY_PORT: - type: object - description: |- - Input array port - - TIMEOUT: - type: int - description: |- - Timeout - default: 1 - - ADDR: - type: int - description: |- - Asyn Port address - default: 0 - - NDARRAY_ADDR: - type: int - description: |- - Input array port address - default: 0 - - ENABLED: - type: int - description: |- - Plugin Enabled at startup? - default: 0 - - SCANRATE: - type: enum - description: |- - Specified scan rate for cpu intensive PVs - default: I/O Intr - values: - .1 second: - 1 second: - 10 second: - 5 second: - Passive: - 2 second: - .2 second: - .5 second: - Event: - I/O Intr: - NAME: - type: int - description: |- - Label for signal - default: 0 - - QUEUE: - type: int - description: |- - Input array queue size - default: 2 - - BLOCK: - type: int - description: |- - Blocking callbacks? - default: 0 - - pre_init: - - value: | - # NDScatterConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) - NDScatterConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) - databases: - - file: $(ADCORE)/db/NDScatter.template - args: NDARRAY_PORT: + type: object + description: |- + Input array port + + TIMEOUT: + type: int + description: |- + Timeout + default: 1 + ADDR: - SCANRATE: + type: int + description: |- + Asyn Port address + default: 0 + NDARRAY_ADDR: + type: int + description: |- + Input array port address + default: 0 + ENABLED: - P: - R: - TIMEOUT: - PORT: + type: int + description: |- + Plugin Enabled at startup? + default: 0 + SCANRATE: + type: enum + description: |- + Specified scan rate for cpu intensive PVs + default: I/O Intr + values: + .1 second: + 1 second: + 10 second: + 5 second: + Passive: + 2 second: + .2 second: + .5 second: + Event: + I/O Intr: + NAME: + type: int + description: |- + Label for signal + default: 0 + + QUEUE: + type: int + description: |- + Input array queue size + default: 2 + + BLOCK: + type: int + description: |- + Blocking callbacks? + default: 0 + + pre_init: + - value: | + # NDScatterConfigure(portName, queueSize, blockingCallbacks, NDArrayPort, NDArrayAddr) + NDScatterConfigure("{{PORT}}", {{QUEUE}}, {{BLOCK}}, "{{NDARRAY_PORT}}", {{NDARRAY_ADDR}}) + databases: + - file: $(ADCORE)/db/NDScatter.template + args: + NDARRAY_PORT: + ADDR: + SCANRATE: + NDARRAY_ADDR: + ENABLED: + P: + R: + TIMEOUT: + PORT: diff --git a/tests/samples/support/asyn.ibek.support.yaml b/tests/samples/support/asyn.ibek.support.yaml index f4e34ad4..694bd18f 100644 --- a/tests/samples/support/asyn.ibek.support.yaml +++ b/tests/samples/support/asyn.ibek.support.yaml @@ -1,121 +1,120 @@ -# yaml-language-server: $schema=https://github.com/epics-containers/ibek/releases/download/1.5.3/ibek.support.schema.json +# yaml-language-server: $schema=../schemas/ibek.support.schema.json module: asyn defs: -- name: AsynIP - description: |- - Asyn IP Port - params: - port: - type: str - description: |- - Serial port tty name / IP address optionally followed by protocol - - name: - type: id - description: |- - Override name - - input_eos: - type: str - description: |- - Input end of string (terminator) - # test escaping of quotes - default: '"\n"' - - output_eos: - type: str - description: |- - Output end of string (terminator) - default: '"\n"' - - priority: - type: int - description: |- - Priority - default: 100 - - noAuto_connect: - type: bool - description: |- - Set to stop auto_connect - default: false - - noProcessEos: - type: bool - description: |- - Set to avoid processing end of string - default: false - - baud: - type: int - description: |- - Baud Rate - default: 9600 - - parity: - type: enum - description: |- - Parity - values: - even: - none: - odd: - default: none - - crtscts: - type: enum - description: |- - Set hardware flow control on - values: - Y: - N: - default: N - - stop: - type: enum - description: |- - Stop Bits - values: - '1': - '2': - default: '1' - - disconnectOnReadTimeout: - type: enum - description: |- - Disconnect when a read times out - values: - Y: - N: - default: Y - - bits: - type: enum - description: |- - Bits - values: - '8': - '5': - '7': - '6': - default: '8' + - name: AsynIP + description: |- + Asyn IP Port + params: + port: + type: str + description: |- + Serial port tty name / IP address optionally followed by protocol + + name: + type: id + description: |- + Override name + + input_eos: + type: str + description: |- + Input end of string (terminator) + # test escaping of quotes + default: '"\n"' + + output_eos: + type: str + description: |- + Output end of string (terminator) + default: '"\n"' + + priority: + type: int + description: |- + Priority + default: 100 + + noAuto_connect: + type: bool + description: |- + Set to stop auto_connect + default: false + + noProcessEos: + type: bool + description: |- + Set to avoid processing end of string + default: false + + baud: + type: int + description: |- + Baud Rate + default: 9600 + + parity: + type: enum + description: |- + Parity + values: + even: + none: + odd: + default: none + + crtscts: + type: enum + description: |- + Set hardware flow control on + values: + Y: + N: + default: N + + stop: + type: enum + description: |- + Stop Bits + values: + "1": + "2": + default: "1" + + disconnectOnReadTimeout: + type: enum + description: |- + Disconnect when a read times out + values: + Y: + N: + default: Y + + bits: + type: enum + description: |- + Bits + values: + "8": + "5": + "7": + "6": + default: "8" # test environment variables declaration - pre_init: - - value: | - # Setting up Asyn Port {{name}} on {{port}}: - - when: first + pre_init: + - value: | + # Setting up Asyn Port {{name}} on {{port}}: + - when: first # test escaping of jinja directives and use of 'first' to only print this line once - value: | - # {% raw %}AsynIPConfigure({{name}}, {{port}}, {{stop}}, {{parity}}, {{bits}}) {% endraw %} - - value: | - AsynIPConfigure({{name}}, {{port}}, {{stop}}, {{parity}}, {{bits}}) - asynSetOption({{baud}}, 0, {{crtscts}}, {{disconnectOnReadTimeout}}) - asynOctetSetInputEos({{input_eos}}) - asynOctetSetOutputEos({{output_eos}}) - env_vars: - - name: NAME_AS_ENV_VAR - value: my name is {{ name }} - + value: | + # {% raw %}AsynIPConfigure({{name}}, {{port}}, {{stop}}, {{parity}}, {{bits}}) {% endraw %} + - value: | + AsynIPConfigure({{name}}, {{port}}, {{stop}}, {{parity}}, {{bits}}) + asynSetOption({{baud}}, 0, {{crtscts}}, {{disconnectOnReadTimeout}}) + asynOctetSetInputEos({{input_eos}}) + asynOctetSetOutputEos({{output_eos}}) + env_vars: + - name: NAME_AS_ENV_VAR + value: my name is {{ name }} diff --git a/tests/samples/support/bad_db.ibek.support.yaml b/tests/samples/support/bad_db.ibek.support.yaml index 07d6532c..c883c80f 100644 --- a/tests/samples/support/bad_db.ibek.support.yaml +++ b/tests/samples/support/bad_db.ibek.support.yaml @@ -6,18 +6,18 @@ module: object_module defs: -- name: RefObject - description: | - Example object with a database containing a non-existant arg - params: - name: - type: id - description: Port name - - databases: - - file: test.db - args: + - name: RefObject + description: | + Example object with a database containing a non-existant arg + params: name: - fixed: A fixed value - calculated: value containing the name arg = {{ name }} - non-existant: + type: id + description: Port name + + databases: + - file: test.db + args: + name: + fixed: A fixed value + calculated: value containing the name arg = {{ name }} + non-existant: diff --git a/tests/samples/support/epics.ibek.support.yaml b/tests/samples/support/epics.ibek.support.yaml index 4ba897c6..2717d157 100644 --- a/tests/samples/support/epics.ibek.support.yaml +++ b/tests/samples/support/epics.ibek.support.yaml @@ -2,93 +2,92 @@ module: epics defs: -- name: EpicsCaMaxArrayBytes - description: Set the maximum size in bytes for sending arrays over channel access - params: - max_bytes: - type: int - 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: EpicsCaMaxArrayBytes + description: Set the maximum size in bytes for sending arrays over channel access + params: + max_bytes: + type: int + 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: EpicsTsMinWest - description: Set the relative time zone minutes West relative to GMT (+/-720) - params: - minutes_west: - type: int - description: relative time zone minutes - default: 0 - env_vars: - - name: EPICS_TS_MIN_WEST - value: '{{ minutes_west }}' + - name: EpicsTsMinWest + description: Set the relative time zone minutes West relative to GMT (+/-720) + params: + minutes_west: + type: int + description: relative time zone minutes + default: 0 + env_vars: + - name: EPICS_TS_MIN_WEST + value: "{{ minutes_west }}" -- name: dbpf - description: Set a PV value after iocInit - params: - pv: - type: str - description: Name of PV - value: - type: str - description: Value to set - post_init: - - value: dbpf "{{ pv }}" "{{ value }}" + - name: dbpf + description: Set a PV value after iocInit + params: + pv: + type: str + description: Name of PV + value: + type: str + description: Value to set + post_init: + - value: dbpf "{{ pv }}" "{{ value }}" -- name: EpicsEnvSet - description: Set an environment variable in the ioc Shell - params: - name: - type: str - description: Name of environment variable - value: - type: str - description: Value of environment variable - env_vars: - - name: '{{ name }}' - value: '{{ value }}' + - name: EpicsEnvSet + description: Set an environment variable in the ioc Shell + params: + name: + type: str + description: Name of environment variable + value: + type: str + description: Value of environment variable + env_vars: + - name: "{{ name }}" + value: "{{ value }}" -- name: StartupCommand - description: Adds an arbitrary command in the startup script before iocInit - params: - command: - type: str - description: command string - default: '' - pre_init: - - type: text - value: '{{ command }}' + - name: StartupCommand + description: Adds an arbitrary command in the startup script before iocInit + params: + command: + type: str + description: command string + default: "" + pre_init: + - type: text + value: "{{ command }}" -- name: PostStartupCommand - description: Adds an arbitrary command in the startup script after iocInit - params: - command: - type: str - description: command string - default: '' - post_init: - - type: text - value: '{{ command }}' + - name: PostStartupCommand + description: Adds an arbitrary command in the startup script after iocInit + params: + command: + type: str + description: command string + default: "" + post_init: + - type: text + value: "{{ command }}" -- name: InterruptVectorVME - description: Reserve a VME interrupt vector - params: - name: - type: id - description: A name for an interrupt vector variable + - name: InterruptVectorVME + description: Reserve a VME interrupt vector + params: + name: + type: id + description: A name for an interrupt vector variable - count: - type: int - description: The number of interrupt vectors to reserve - default: 1 + count: + type: int + description: The number of interrupt vectors to reserve + default: 1 - post_defines: - number: - value: '{{ _global.incrementor("InterruptVector", start=192, stop=255, increment=count) - }}' - description: Interrupt Vector number + post_defines: + number: + value: '{{ _global.incrementor("InterruptVector", start=192, stop=255, increment=count) }}' + description: Interrupt Vector number - env_vars: - - name: '{{ name }}' - value: '{{ number }}' + env_vars: + - name: "{{ name }}" + value: "{{ number }}" diff --git a/tests/samples/support/fastVacuum.ibek.support.yaml b/tests/samples/support/fastVacuum.ibek.support.yaml index 737e767a..bcd96c77 100644 --- a/tests/samples/support/fastVacuum.ibek.support.yaml +++ b/tests/samples/support/fastVacuum.ibek.support.yaml @@ -3,165 +3,163 @@ module: dlsPLC defs: -- name: dummy - description: |- - dummy record - params: - device: - type: id - description: |- - name for dummy object - -- name: fastVacuumMaster - description: |- - master records for fast vacuum - params: - name: - type: id - description: |- - Gui tag - - dom: - type: str - description: |- - Domain, eg, FE06I - - fins_port: - type: object - description: |- - FINS port - - eip_port: - type: str - description: |- - EtherIP port - - device: - type: str - description: |- - Device prefix - - post_defines: - device: - description: device name - value: |- - {{dom}}-VA-FAST-01 - - waveform_nelm: - description: waveform element count - type: int - value: 500 - - combined_nelm: - description: total waveform element count - type: int - value: |- - {{ 6 * waveform_nelm }} - - databases: - - file: $(DLSPLC)/db/dlsPLC_fastVacuumMaster.template - args: {device: null, eip_port: null} - -- name: fastVacuumChannel - description: |- - Adds a fast vacuum channel to the fast vacuum master - params: - name: - type: id - description: |- - Gui tag - - master: - type: object - description: |- - Master - - img: - type: str - description: |- - Base IMG PV - - id: - type: enum - description: |- - FV PLC gauge number - values: - '01': - '02': - '03': - '04': - '05': - '06': - '07': - '08': - '09': - '10': - em: - type: enum - description: |- - EM block to use - default: 0 - values: - '0': - '1': - '2': - timeout: - type: int - description: |- - asyn fins_port timeout - default: 0 - - post_defines: - gaugeNum: - description: auto gauge count - type: int - value: |- - {{ _global.incrementor(master, start=1) }} - - fan: - description: fan number - value: |- - {{ "%02d" % (gaugeNum / 7 + 1) }} - - mask: - description: mask for the channel - value: |- - {{ _global.incrementor("mask_{}".format(master), 2, 2**gaugeNum) }} - - lnk_no: - description: link number - value: |- - {{ ((gaugeNum - 1) % 6) + 1 }} - - gaugePV: - description: Gauge PV - value: |- - {{ master.device }}:GAUGE:{{id}}_0 - - databases: - - file: $(DLSPLC)/db/dlsPLC_fastVacuumLink.template - args: {device: '{{master.device}}', lnk_no: null, lnk: '{{gaugePV}}', fan: null, - mask: null} - - - file: $(DLSPLC)/db/dlsPLC_fastVacuumChannel.template - args: - device: '{{master.device}}' + - name: dummy + description: |- + dummy record + params: + device: + type: id + description: |- + name for dummy object + + - name: fastVacuumMaster + description: |- + master records for fast vacuum + params: + name: + type: id + description: |- + Gui tag + + dom: + type: str + description: |- + Domain, eg, FE06I + + fins_port: + type: object + description: |- + FINS port + + eip_port: + type: str + description: |- + EtherIP port + + device: + type: str + description: |- + Device prefix + + post_defines: + device: + description: device name + value: |- + {{dom}}-VA-FAST-01 + + waveform_nelm: + description: waveform element count + type: int + value: 500 + + combined_nelm: + description: total waveform element count + type: int + value: |- + {{ 6 * waveform_nelm }} + + databases: + - file: $(DLSPLC)/db/dlsPLC_fastVacuumMaster.template + args: { device: null, eip_port: null } + + - name: fastVacuumChannel + description: |- + Adds a fast vacuum channel to the fast vacuum master + params: + name: + type: id + description: |- + Gui tag + + master: + type: object + description: |- + Master + img: - fins_port: '{{master.fins_port}}' - eip_port: '{{master.eip_port}}' - tagidx: "{{ (id | string).strip('0') }}" - id: '{{id}}' + type: str + description: |- + Base IMG PV + + id: + type: enum + description: |- + FV PLC gauge number + values: + "01": + "02": + "03": + "04": + "05": + "06": + "07": + "08": + "09": + "10": em: - waveform_nelm: '{{master.waveform_nelm}}' - wave0_addr: &wave_addr "{{ _global.incrementor('wave_addr_{}'.format(master), - 0, master.waveform_nelm) }}" - - wave1_addr: *wave_addr - wave2_addr: *wave_addr - wave3_addr: *wave_addr - wave4_addr: *wave_addr - wave5_addr: *wave_addr - combined_nelm: '{{master.combined_nelm}}' + type: enum + description: |- + EM block to use + default: 0 + values: + "0": + "1": + "2": timeout: - shared: - - *wave_addr + type: int + description: |- + asyn fins_port timeout + default: 0 + + post_defines: + gaugeNum: + description: auto gauge count + type: int + value: |- + {{ _global.incrementor(master, start=1) }} + + fan: + description: fan number + value: |- + {{ "%02d" % (gaugeNum / 7 + 1) }} + + mask: + description: mask for the channel + value: |- + {{ _global.incrementor("mask_{}".format(master), 2, 2**gaugeNum) }} + + lnk_no: + description: link number + value: |- + {{ ((gaugeNum - 1) % 6) + 1 }} + + gaugePV: + description: Gauge PV + value: |- + {{ master.device }}:GAUGE:{{id}}_0 + + databases: + - file: $(DLSPLC)/db/dlsPLC_fastVacuumLink.template + args: { device: "{{master.device}}", lnk_no: null, lnk: "{{gaugePV}}", fan: null, mask: null } + + - file: $(DLSPLC)/db/dlsPLC_fastVacuumChannel.template + args: + device: "{{master.device}}" + img: + fins_port: "{{master.fins_port}}" + eip_port: "{{master.eip_port}}" + tagidx: "{{ (id | string).strip('0') }}" + id: "{{id}}" + em: + waveform_nelm: "{{master.waveform_nelm}}" + wave0_addr: &wave_addr "{{ _global.incrementor('wave_addr_{}'.format(master), 0, master.waveform_nelm) }}" + + wave1_addr: *wave_addr + wave2_addr: *wave_addr + wave3_addr: *wave_addr + wave4_addr: *wave_addr + wave5_addr: *wave_addr + combined_nelm: "{{master.combined_nelm}}" + timeout: + shared: + - *wave_addr diff --git a/tests/samples/support/gauges.ibek.support.yaml b/tests/samples/support/gauges.ibek.support.yaml index 47169506..3ff2bb48 100644 --- a/tests/samples/support/gauges.ibek.support.yaml +++ b/tests/samples/support/gauges.ibek.support.yaml @@ -1,5 +1,4 @@ # yaml-language-server: $schema=../schemas/ibek.support.schema.json - module: gauges # Pretend support for vacuum space to test initialisation of a gauge group diff --git a/tests/samples/support/ipac.ibek.support.yaml b/tests/samples/support/ipac.ibek.support.yaml index 177da99a..7ccbba21 100644 --- a/tests/samples/support/ipac.ibek.support.yaml +++ b/tests/samples/support/ipac.ibek.support.yaml @@ -3,232 +3,232 @@ module: ipac defs: -- name: Hy8002 - description: |- - Configure a Hytec 8002 Carrier card - params: - slot: - type: int - description: |- - VME Slot number - - IPACid: - type: id - description: |- - Identifier for this device - default: IPAC{{ slot }} - - intLevel: - type: int - description: |- - VME Interrupt Level - default: 2 - - test: - type: str - description: test - default: | - {{ slot }} - - interrupt_vector: - type: object - description: Interrupt Vector reserved with epics.InterruptVectorVME, count=1 - - post_defines: - card_id: - value: '{{ _global.incrementor("Carriers", start=0) }}' - description: Carrier Card Identifier - - pre_init: - - value: | - # Hy8002 carrier card: slot: {{ slot }}, intLevel: {{ intLevel }}, interrupt: {{ interrupt_vector.name }} ({{ interrupt_vector.number }}) - ipacAddHy8002("{{ slot }}, {{ intLevel}}, $({{interrupt_vector.name}})") - epicsEnvSet {{ IPACid }} = {{ card_id }} - -- name: Hy8001 - description: |- - TODO:ADD DESCRIPTION - params: - slot: - type: int - description: |- - VME Slot number - - direction: - type: enum - description: |- - Direction of digital IO - values: - Mixed: - Input: - Output: - cardid: - type: int - description: |- - cardid? - - intLevel: - type: int - description: |- - intLevel? - default: 0 - - clock: - type: int - description: |- - clock? - default: 0 - - scan: - type: int - description: |- - scan? - default: 0 - - invertin: - type: bool - description: |- - invertin? - default: false - - invertout: - type: bool - description: |- - invertout? - default: false - - ip_support: - type: bool - description: |- - ip_support? - default: false - - pre_init: - - value: | - Hy8001Configure({{cardid}}, {{slot}}, {{vector}}, {{intLevel}}, 0, 0, {{clock}}, {{scan}}, {{direction}}, {{invertin}}, {{invertout}}) + - name: Hy8002 + description: |- + Configure a Hytec 8002 Carrier card + params: + slot: + type: int + description: |- + VME Slot number + + IPACid: + type: id + description: |- + Identifier for this device + default: IPAC{{ slot }} + + intLevel: + type: int + description: |- + VME Interrupt Level + default: 2 + + test: + type: str + description: test + default: | + {{ slot }} + + interrupt_vector: + type: object + description: Interrupt Vector reserved with epics.InterruptVectorVME, count=1 + + post_defines: + card_id: + value: '{{ _global.incrementor("Carriers", start=0) }}' + description: Carrier Card Identifier + + pre_init: + - value: | + # Hy8002 carrier card: slot: {{ slot }}, intLevel: {{ intLevel }}, interrupt: {{ interrupt_vector.name }} ({{ interrupt_vector.number }}) + ipacAddHy8002("{{ slot }}, {{ intLevel}}, $({{interrupt_vector.name}})") + epicsEnvSet {{ IPACid }} = {{ card_id }} + + - name: Hy8001 + description: |- + TODO:ADD DESCRIPTION + params: + slot: + type: int + description: |- + VME Slot number + + direction: + type: enum + description: |- + Direction of digital IO + values: + Mixed: + Input: + Output: + cardid: + type: int + description: |- + cardid? + + intLevel: + type: int + description: |- + intLevel? + default: 0 + + clock: + type: int + description: |- + clock? + default: 0 + + scan: + type: int + description: |- + scan? + default: 0 + + invertin: + type: bool + description: |- + invertin? + default: false + + invertout: + type: bool + description: |- + invertout? + default: false + + ip_support: + type: bool + description: |- + ip_support? + default: false + + pre_init: + - value: | + Hy8001Configure({{cardid}}, {{slot}}, {{vector}}, {{intLevel}}, 0, 0, {{clock}}, {{scan}}, {{direction}}, {{invertin}}, {{invertout}}) # TODO - MISSING ARGS: vector # WARNING - non print commands in Initialise not parsed -- name: Hy8005 - description: |- - TODO:ADD DESCRIPTION - params: - slot: - type: int - description: |- - VME Slot number - - cardnum: - type: int - description: |- - Card number - - int_level: - type: int - description: |- - VME Interrupt Level - default: 1 - - hs_int: - type: int - description: |- - Dunno actually - default: 0 - - pre_init: - - value: | - Hy8005Configure({{cardnum}}, {{slot}}, {{int_vec}}, {{int_level}}, {{hs_int}}) + - name: Hy8005 + description: |- + TODO:ADD DESCRIPTION + params: + slot: + type: int + description: |- + VME Slot number + + cardnum: + type: int + description: |- + Card number + + int_level: + type: int + description: |- + VME Interrupt Level + default: 1 + + hs_int: + type: int + description: |- + Dunno actually + default: 0 + + pre_init: + - value: | + Hy8005Configure({{cardnum}}, {{slot}}, {{int_vec}}, {{int_level}}, {{hs_int}}) # TODO - MISSING ARGS: int_vec -- name: Hy8005_Channel - description: |- - TODO:ADD DESCRIPTION - params: - parent: - type: object - description: |- - Hy8005 card - - ipslot: - type: enum - description: |- - IP slot - values: - A: - C: - B: - D: - cardnum: - type: int - description: |- - EPICS card identification - - debrate: - type: enum - description: |- - debrate - values: - No_Debounce: - 1KHz: - 200Hz: - 100Hz: - 500Hz: - pwidth: - type: enum - description: |- - pwidth - default: 0 - values: - 100sec: - 5sec: - 10sec: - 1sec: - 10msec: - 20sec: - 100msec: - 2sec: - 50sec: - 1msec: - scanrate: - type: enum - description: |- - scanrate - default: 0 - values: - 1MHz: - 100KHz: - 10KHz: - 1KHz: - direction: - type: enum - description: |- - direction - default: 0 - values: - inputs: - low in/high out: - outputs: - low out/high in: - clock: - type: enum - description: |- - clock - default: 0 - values: - internal: - external: - invertInputs: - type: bool - description: |- - invert inputs - default: false - - invertOutputs: - type: bool - description: |- - invert outputs - default: false - - pre_init: - - value: | - Hy8005IOConfigure({{cardnum}}, {{carrier}}, {{ipslot}}, {{debrate}}, {{pwidth}}, {{scanrate}}, {{direction}}, {{intr}}, {{clock}}) + - name: Hy8005_Channel + description: |- + TODO:ADD DESCRIPTION + params: + parent: + type: object + description: |- + Hy8005 card + + ipslot: + type: enum + description: |- + IP slot + values: + A: + C: + B: + D: + cardnum: + type: int + description: |- + EPICS card identification + + debrate: + type: enum + description: |- + debrate + values: + No_Debounce: + 1KHz: + 200Hz: + 100Hz: + 500Hz: + pwidth: + type: enum + description: |- + pwidth + default: 0 + values: + 100sec: + 5sec: + 10sec: + 1sec: + 10msec: + 20sec: + 100msec: + 2sec: + 50sec: + 1msec: + scanrate: + type: enum + description: |- + scanrate + default: 0 + values: + 1MHz: + 100KHz: + 10KHz: + 1KHz: + direction: + type: enum + description: |- + direction + default: 0 + values: + inputs: + low in/high out: + outputs: + low out/high in: + clock: + type: enum + description: |- + clock + default: 0 + values: + internal: + external: + invertInputs: + type: bool + description: |- + invert inputs + default: false + + invertOutputs: + type: bool + description: |- + invert outputs + default: false + + pre_init: + - value: | + Hy8005IOConfigure({{cardnum}}, {{carrier}}, {{ipslot}}, {{debrate}}, {{pwidth}}, {{scanrate}}, {{direction}}, {{intr}}, {{clock}}) # TODO - MISSING ARGS: carrier, intr diff --git a/tests/samples/support/motorSim.ibek.support.yaml b/tests/samples/support/motorSim.ibek.support.yaml index 5d3bb68c..952b0526 100644 --- a/tests/samples/support/motorSim.ibek.support.yaml +++ b/tests/samples/support/motorSim.ibek.support.yaml @@ -6,180 +6,179 @@ module: motorSim defs: -- name: simMotorController - description: |- - Creates a simulation motion controller - params: - controllerName: - type: id - description: |- - The name of the controller and its Asyn Port Name - - P: - type: str - description: |- - Device PV Prefix - - numAxes: - type: int - description: |- - The number of axes to create - - port: - type: object - description: |- - a reference to the asyn port for communication with the controller - - DESC: - type: str - description: |- - The description of the controller - default: 'Simulated Motion Controller testing escaping: {% raw %} {{enclosed - in escaped curly braces}} {% endraw %}' - - pre_init: - - value: | - # motorSimCreateController(controller_asyn_port_name, axis_count) - # testing escaping: {% raw %} {{enclosed in escaped curly braces}} {% endraw %} - motorSimCreateController({{controllerName}}, {{numAxes}}) - - databases: - - file: sim_motor.db - args: + - name: simMotorController + description: |- + Creates a simulation motion controller + params: controllerName: + type: id + description: |- + The name of the controller and its Asyn Port Name + P: + type: str + description: |- + Device PV Prefix + + numAxes: + type: int + description: |- + The number of axes to create + + port: + type: object + description: |- + a reference to the asyn port for communication with the controller + DESC: + type: str + description: |- + The description of the controller + default: "Simulated Motion Controller testing escaping: {% raw %} {{enclosed in escaped curly braces}} {% endraw %}" + + pre_init: + - value: | + # motorSimCreateController(controller_asyn_port_name, axis_count) + # testing escaping: {% raw %} {{enclosed in escaped curly braces}} {% endraw %} + motorSimCreateController({{controllerName}}, {{numAxes}}) + + databases: + - file: sim_motor.db + args: + controllerName: + P: + DESC: + + pvi: + yaml_path: simple.pvi.device.yaml + ui_macros: + P: + pv: true + pv_prefix: $(P) + + - name: simMotorAxis + description: |- + Creates a simulation motor axis + params: + controller: + type: object + description: |- + a reference to the motion controller - pvi: - yaml_path: simple.pvi.device.yaml - ui_macros: - P: - pv: true - pv_prefix: $(P) - -- name: simMotorAxis - description: |- - Creates a simulation motor axis - params: - controller: - type: object - description: |- - a reference to the motion controller - - M: - type: str - description: |- - PV suffix for the motor record - - ADDR: - type: int - description: |- - The axis number (allowed to be from 0 to controller.numAxes-1) - - DESC: - type: str - description: |- - The description of the axis - default: Motor {{ADDR}} - - DLLM: - type: int - description: |- - The low limit of the axis (in counts) - default: -20000 - - DHLM: - type: int - description: |- - The high limit of the axis (in counts) - default: 20000 - - home: - type: int - description: |- - The home position of the axis (in counts) - default: 0 - - start: - type: str # int or jinja string - description: |- - The starting position of the axis (in counts) - default: '{{home}}' - - DIR: - type: enum - description: |- - The direction of the axis - default: 0 - values: - Pos: 0 - Neg: 1 - - VELO: - type: float - description: |- - The velocity of the axis (in counts/sec) - default: 10.0 - - VMAX: - type: str # float or jinja string - description: |- - The maximum velocity of the axis (in counts/sec) - default: '{{VELO}}' - - is_cs: - type: bool - description: |- - Set to True if this axis a coordinate system axis - default: false - - CS_NUM: - type: int - description: |- - The coordinate system number for this axis - default: 0 - - post_init: - - when: once - value: | - # motorSimCreateAxis(controller_asyn_port_name, axis, axis_description) - - - value: | - motorSimConfigAxis({{controller}}, {{ADDR}}, {{DHLM}}, {{DLLM}}, {{home}}, {{start}}) - - databases: - - file: basic_asyn_motor.db - enabled: '{{not is_cs}}' - args: - P: '{{controller.P}}' M: - DTYP: asynMotor - PORT: '{{controller}}' + type: str + description: |- + PV suffix for the motor record + ADDR: + type: int + description: |- + The axis number (allowed to be from 0 to controller.numAxes-1) + DESC: - EGU: degrees - DIR: - VELO: - VMAX: - MRES: '.01' - DHLM: + type: str + description: |- + The description of the axis + default: Motor {{ADDR}} + DLLM: - INIT: '' + type: int + description: |- + The low limit of the axis (in counts) + default: -20000 + + DHLM: + type: int + description: |- + The high limit of the axis (in counts) + default: 20000 + + home: + type: int + description: |- + The home position of the axis (in counts) + default: 0 + + start: + type: str # int or jinja string + description: |- + The starting position of the axis (in counts) + default: "{{home}}" - - file: basic_cs_asyn_motor.db - enabled: '{{is_cs}}' - args: - P: '{{controller.P}}' - CS_NUM: - DTYP: asynMotor - PORT: '{{controller}}' - ADDR: - DESC: - EGU: degrees DIR: + type: enum + description: |- + The direction of the axis + default: 0 + values: + Pos: 0 + Neg: 1 + VELO: + type: float + description: |- + The velocity of the axis (in counts/sec) + default: 10.0 + VMAX: - MRES: '.01' - DHLM: - DLLM: - INIT: '' + type: str # float or jinja string + description: |- + The maximum velocity of the axis (in counts/sec) + default: "{{VELO}}" + + is_cs: + type: bool + description: |- + Set to True if this axis a coordinate system axis + default: false + + CS_NUM: + type: int + description: |- + The coordinate system number for this axis + default: 0 + + post_init: + - when: once + value: | + # motorSimCreateAxis(controller_asyn_port_name, axis, axis_description) + + - value: | + motorSimConfigAxis({{controller}}, {{ADDR}}, {{DHLM}}, {{DLLM}}, {{home}}, {{start}}) + + databases: + - file: basic_asyn_motor.db + enabled: "{{not is_cs}}" + args: + P: "{{controller.P}}" + M: + DTYP: asynMotor + PORT: "{{controller}}" + ADDR: + DESC: + EGU: degrees + DIR: + VELO: + VMAX: + MRES: ".01" + DHLM: + DLLM: + INIT: "" + + - file: basic_cs_asyn_motor.db + enabled: "{{is_cs}}" + args: + P: "{{controller.P}}" + CS_NUM: + DTYP: asynMotor + PORT: "{{controller}}" + ADDR: + DESC: + EGU: degrees + DIR: + VELO: + VMAX: + MRES: ".01" + DHLM: + DLLM: + INIT: "" diff --git a/tests/samples/support/technosoft.ibek.support.yaml b/tests/samples/support/technosoft.ibek.support.yaml index 43cd538e..bb4904e3 100644 --- a/tests/samples/support/technosoft.ibek.support.yaml +++ b/tests/samples/support/technosoft.ibek.support.yaml @@ -3,215 +3,215 @@ module: motorTML defs: -- name: CreateController - description: |- - Creates a Technosoft motion controller connected to a serial line - params: - controllerName: - type: id - description: |- - The name of the controller - P: - type: str - description: |- - Device PV Prefix - - TTY: - type: str - description: |- - TTY - - hostid: - type: int - description: |- - Host ID - - CONFIG: - type: str - description: |- - TML Configuration - default: |- - DEV_PATH={{TTY}},HOST_ID={{hostid}} - - post_defines: - axisConfiguration: - description: collects the axis configuration from axis entities - type: list - value: [] - axisNum: - description: A name for the axis counter (used to generate unique axis numbers) - value: |- - {{ "axes_{}".format(controllerName) }} - - pre_init: - - value: | - ndsCreateDevice "TechnosoftTML", "{{controllerName}}", "FILE=/tmp/,NAXIS={{_global.get(axisNum)+1}},{{CONFIG}}{{"".join(axisConfiguration) }}" - -- name: motorAxis - description: |- - Creates a motor axis - params: - controller: - type: object - description: |- - a reference to the motion controller - - num: - type: int - description: |- - The axis number - default: |- - {{ _global.incrementor(controller.axisNum) }} - - CHANNEL_PREFIX: - type: str - description: |- - The axis prefix - default: ax0 - - CHANNEL_ID: - type: str - description: |- - The axis ID - default: MOT - - axid: - type: int - description: |- - The axis ID - - axconf: - type: str - description: |- - The axis configuration - default: star_vat_phs.t.zip - - homing: - type: enum - description: |- - Homing direction - default: LSN - values: - LSN: - LSP: - NSTEPS: - type: int - description: |- - Number of steps - default: 200 - - NMICROSTEPS: - type: int - description: |- - Number of microsteps - default: 256 - - VELO: - type: int - description: |- - Velocity - default: 20 - - VELO_MIN: - type: float - description: |- - Velocity min - default: 0.1 - - VELO_MAX: - type: float - description: |- - Velocity Max - default: 50 - - ACCL: - type: float - description: |- - Seconds to Velocity - default: 0.5 - - ACCL_MIN: - type: float - description: |- - Seconds to Velocity - default: 0.01 - - ACCL_MAX: - type: float - description: |- - Seconds to Velocity - default: 1.5 - - HAR: - type: float - description: |- - Homing acceleration - default: 0.5 - - HVEL: - type: float - description: |- - Homing Velocity - default: 10 - - JAR: - type: int - description: |- - JAR - default: 1 - - JVEL: - type: int - description: |- - JVEL - default: 5 - - EGU: - type: str - description: |- - Engineering Units - default: ustep - - SLSP: - type: float - description: |- - Limit - default: 0.8 - - ENABLED: - type: int - description: |- - Enabled - default: 1 - - TIMEOUT: - type: int - description: |- - Timeout - default: 0 - - ASYN_ADDR: - type: str - description: |- - Asyn Addr? - default: '0' - - CONFIG: - type: str - description: |- - Axis configuration string to add to the controller configuration - default: |- - ,AXIS_SETUP_{{num}}=$(SUPPORT)/motorTechnosoft/tml_lib/config/{{axconf}},AXIS_ID_{{num}}={{axid}},AXIS_HOMING_SW_{{num}}={{homing}} - - post_defines: - axisConfiguration: - description: Adds an axis configuration entry to the controller's list - value: |- - {{ controller.axisConfiguration.append(CONFIG) }} - - pre_init: - - value: | - dbLoadRecords("$(SUPPORT)/motorTechnosoft/db/tmlAxis.template","PREFIX={{controller.P}}, CHANNEL_ID={{CHANNEL_ID}}, CHANNEL_PREFIX=ax{{num}}, ASYN_PORT={{controller.controllerName}}, ASYN_ADDR={{ASYN_ADDR}}, NSTEPS={{NSTEPS}}, NMICROSTEPS={{NMICROSTEPS}}, VELO={{VELO}}, VELO_MIN={{VELO_MIN}}, VELO_MAX={{VELO_MAX}}, ACCL={{ACCL}}, ACCL_MIN={{ACCL_MIN}}, ACCL_MAX={{ACCL_MAX}}, HAR={{HAR}}, HVEL={{HVEL}}, JAR={{JAR}}, JVEL={{JVEL}}, ENABLED={{ENABLED}}, SLSP={{SLSP}}, EGU={{EGU}}, TIMEOUT={{TIMEOUT}}") + - name: CreateController + description: |- + Creates a Technosoft motion controller connected to a serial line + params: + controllerName: + type: id + description: |- + The name of the controller + P: + type: str + description: |- + Device PV Prefix + + TTY: + type: str + description: |- + TTY + + hostid: + type: int + description: |- + Host ID + + CONFIG: + type: str + description: |- + TML Configuration + default: |- + DEV_PATH={{TTY}},HOST_ID={{hostid}} + + post_defines: + axisConfiguration: + description: collects the axis configuration from axis entities + type: list + value: [] + axisNum: + description: A name for the axis counter (used to generate unique axis numbers) + value: |- + {{ "axes_{}".format(controllerName) }} + + pre_init: + - value: | + ndsCreateDevice "TechnosoftTML", "{{controllerName}}", "FILE=/tmp/,NAXIS={{_global.get(axisNum)+1}},{{CONFIG}}{{"".join(axisConfiguration) }}" + + - name: motorAxis + description: |- + Creates a motor axis + params: + controller: + type: object + description: |- + a reference to the motion controller + + num: + type: int + description: |- + The axis number + default: |- + {{ _global.incrementor(controller.axisNum) }} + + CHANNEL_PREFIX: + type: str + description: |- + The axis prefix + default: ax0 + + CHANNEL_ID: + type: str + description: |- + The axis ID + default: MOT + + axid: + type: int + description: |- + The axis ID + + axconf: + type: str + description: |- + The axis configuration + default: star_vat_phs.t.zip + + homing: + type: enum + description: |- + Homing direction + default: LSN + values: + LSN: + LSP: + NSTEPS: + type: int + description: |- + Number of steps + default: 200 + + NMICROSTEPS: + type: int + description: |- + Number of microsteps + default: 256 + + VELO: + type: int + description: |- + Velocity + default: 20 + + VELO_MIN: + type: float + description: |- + Velocity min + default: 0.1 + + VELO_MAX: + type: float + description: |- + Velocity Max + default: 50 + + ACCL: + type: float + description: |- + Seconds to Velocity + default: 0.5 + + ACCL_MIN: + type: float + description: |- + Seconds to Velocity + default: 0.01 + + ACCL_MAX: + type: float + description: |- + Seconds to Velocity + default: 1.5 + + HAR: + type: float + description: |- + Homing acceleration + default: 0.5 + + HVEL: + type: float + description: |- + Homing Velocity + default: 10 + + JAR: + type: int + description: |- + JAR + default: 1 + + JVEL: + type: int + description: |- + JVEL + default: 5 + + EGU: + type: str + description: |- + Engineering Units + default: ustep + + SLSP: + type: float + description: |- + Limit + default: 0.8 + + ENABLED: + type: int + description: |- + Enabled + default: 1 + + TIMEOUT: + type: int + description: |- + Timeout + default: 0 + + ASYN_ADDR: + type: str + description: |- + Asyn Addr? + default: "0" + + CONFIG: + type: str + description: |- + Axis configuration string to add to the controller configuration + default: |- + ,AXIS_SETUP_{{num}}=$(SUPPORT)/motorTechnosoft/tml_lib/config/{{axconf}},AXIS_ID_{{num}}={{axid}},AXIS_HOMING_SW_{{num}}={{homing}} + + post_defines: + axisConfiguration: + description: Adds an axis configuration entry to the controller's list + value: |- + {{ controller.axisConfiguration.append(CONFIG) }} + + pre_init: + - value: | + dbLoadRecords("$(SUPPORT)/motorTechnosoft/db/tmlAxis.template","PREFIX={{controller.P}}, CHANNEL_ID={{CHANNEL_ID}}, CHANNEL_PREFIX=ax{{num}}, ASYN_PORT={{controller.controllerName}}, ASYN_ADDR={{ASYN_ADDR}}, NSTEPS={{NSTEPS}}, NMICROSTEPS={{NMICROSTEPS}}, VELO={{VELO}}, VELO_MIN={{VELO_MIN}}, VELO_MAX={{VELO_MAX}}, ACCL={{ACCL}}, ACCL_MIN={{ACCL_MIN}}, ACCL_MAX={{ACCL_MAX}}, HAR={{HAR}}, HVEL={{HVEL}}, JAR={{JAR}}, JVEL={{JVEL}}, ENABLED={{ENABLED}}, SLSP={{SLSP}}, EGU={{EGU}}, TIMEOUT={{TIMEOUT}}") # databases: # # TODO as this is a simulation I have hard coded some of the DB fields, @@ -244,8 +244,8 @@ defs: # SLSP: # EGU: # TIMEOUT: - post_init: - - value: |2 + post_init: + - value: | - dbpf("{{controller.P}}:{{CHANNEL_ID}}:MSGRS","START") - dbl + dbpf("{{controller.P}}:{{CHANNEL_ID}}:MSGRS","START") + dbl diff --git a/tests/samples/support/utils.ibek.support.yaml b/tests/samples/support/utils.ibek.support.yaml index d34c50e4..e737611c 100644 --- a/tests/samples/support/utils.ibek.support.yaml +++ b/tests/samples/support/utils.ibek.support.yaml @@ -6,43 +6,41 @@ module: epics defs: -- name: InterruptVectorVME - description: | - Reserve an interrupt vector for use with VME hardware. - params: - name: - type: id - description: A name for an interrupt vector variable + - name: InterruptVectorVME + description: | + Reserve an interrupt vector for use with VME hardware. + params: + name: + type: id + description: A name for an interrupt vector variable - post_defines: - test_global_var: - description: test global variable setter - value: '{{ _global.set("magic_global", 42) }}' - get_global: - description: test global variable getter - value: '{{ _global.get("magic_global") }}' + post_defines: + test_global_var: + description: test global variable setter + value: '{{ _global.set("magic_global", 42) }}' + get_global: + description: test global variable getter + value: '{{ _global.get("magic_global") }}' - pre_init: - - type: comment - value: global "magic" is {{ get_global }} - - type: comment - value: counter "InterruptVector" is now {{ _global.incrementor("InterruptVector", - start=192, stop=255) }} - - type: comment - value: counter "InterruptVector" is now {{ _global.incrementor("InterruptVector", - start=192, stop=255) }} + pre_init: + - type: comment + value: global "magic" is {{ get_global }} + - type: comment + value: counter "InterruptVector" is now {{ _global.incrementor("InterruptVector", start=192, stop=255) }} + - type: comment + value: counter "InterruptVector" is now {{ _global.incrementor("InterruptVector", start=192, stop=255) }} - env_vars: - - name: '{{ name }}' - value: '{{ _global.incrementor("InterruptVector", start=192, stop=255) }}' + env_vars: + - name: "{{ name }}" + value: '{{ _global.incrementor("InterruptVector", start=192, stop=255) }}' -- name: InterruptVectorVME2 - description: naughty second use of same counter - params: - name: - type: id - description: A name for an interrupt vector variable + - name: InterruptVectorVME2 + description: naughty second use of same counter + params: + name: + type: id + description: A name for an interrupt vector variable - env_vars: - - name: second_{{ name }} - value: '{{ _global.incrementor("InterruptVector", start=193, stop=194) }}' + env_vars: + - name: second_{{ name }} + value: '{{ _global.incrementor("InterruptVector", start=193, stop=194) }}'