From ad43a815a41c60854376c094ea31a2e4f1768471 Mon Sep 17 00:00:00 2001 From: Alexander Schwinn <al.schwinn@gsi.de> Date: Thu, 5 May 2022 08:52:33 +0200 Subject: [PATCH] rename "multiplexed" to "cycle-bound" for fess 7.3.0 Support for FESA Version: 7.3.0 - Add unit tests for Fesa 7.3.0 - Run unit-tests only for latest FESA version --- .../src/xml/fesa/fesa_7_3_0/__init__.py | 0 .../xml/fesa/fesa_7_3_0/fillFESADeployUnit.py | 23 + .../fesa_7_3_0/generateBuildEnvironment.py | 26 + .../xml/fesa/fesa_7_3_0/generateFesaDesign.py | 98 +++ .../xml/fesa/fesa_7_3_0/generateSourceCode.py | 26 + ...mplateFESA300.xml => GSIClassTemplate.xml} | 183 +++-- .../xml/test/fesa/GSIClassTemplateFESA431.xml | 703 ------------------ ...yTemplateFESA300.xml => emptyTemplate.xml} | 47 +- .../xml/test/fesa/generateFesaDesignTest.py | 78 +- .../generated_correct/AllTypesFESA.design | 289 +++---- 10 files changed, 513 insertions(+), 960 deletions(-) create mode 100644 silecs-codegen/src/xml/fesa/fesa_7_3_0/__init__.py create mode 100644 silecs-codegen/src/xml/fesa/fesa_7_3_0/fillFESADeployUnit.py create mode 100644 silecs-codegen/src/xml/fesa/fesa_7_3_0/generateBuildEnvironment.py create mode 100644 silecs-codegen/src/xml/fesa/fesa_7_3_0/generateFesaDesign.py create mode 100644 silecs-codegen/src/xml/fesa/fesa_7_3_0/generateSourceCode.py rename silecs-codegen/src/xml/test/fesa/{GSIClassTemplateFESA300.xml => GSIClassTemplate.xml} (81%) delete mode 100644 silecs-codegen/src/xml/test/fesa/GSIClassTemplateFESA431.xml rename silecs-codegen/src/xml/test/fesa/{emptyTemplateFESA300.xml => emptyTemplate.xml} (67%) diff --git a/silecs-codegen/src/xml/fesa/fesa_7_3_0/__init__.py b/silecs-codegen/src/xml/fesa/fesa_7_3_0/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/silecs-codegen/src/xml/fesa/fesa_7_3_0/fillFESADeployUnit.py b/silecs-codegen/src/xml/fesa/fesa_7_3_0/fillFESADeployUnit.py new file mode 100644 index 0000000..f94ded6 --- /dev/null +++ b/silecs-codegen/src/xml/fesa/fesa_7_3_0/fillFESADeployUnit.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# Copyright 2016 CERN and GSI +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +import fesa.fillFesaDeployUnitBase +import fesa.fesa_3_1_0.fillFESADeployUnit + +def fillDeployUnit(fesaVersion, className, workspacePath,fesaDesignXSDPath,logTopics={'errorlog': True}): + generator = fesa.fesa_3_1_0.fillFESADeployUnit.FESADeployUnitGenerator3_0_0() # identical with FESA 3.1.0 + fesa.fillFesaDeployUnitBase.fillFesaDeployUnitBase(generator,fesaVersion, className, workspacePath,fesaDesignXSDPath,logTopics) + diff --git a/silecs-codegen/src/xml/fesa/fesa_7_3_0/generateBuildEnvironment.py b/silecs-codegen/src/xml/fesa/fesa_7_3_0/generateBuildEnvironment.py new file mode 100644 index 0000000..c672684 --- /dev/null +++ b/silecs-codegen/src/xml/fesa/fesa_7_3_0/generateBuildEnvironment.py @@ -0,0 +1,26 @@ +#!/usr/bin/python +# Copyright 2016 CERN and GSI +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +import fesa.fesa_3_1_0.generateBuildEnvironment + +def genMakefileClass(projectPath, centralMakefilePath, logTopics={'errorlog': True} ): + return fesa.fesa_3_1_0.generateBuildEnvironment.genMakefileClass(projectPath, centralMakefilePath, logTopics ) + +def genMakefileDU(projectPath, silecsBasePath, snap7BasePath, logTopics={'errorlog': True}): + return fesa.fesa_3_1_0.generateBuildEnvironment.genMakefileDU(projectPath, silecsBasePath, snap7BasePath, logTopics ) + +def genCProjectFile(projectPath, logTopics={'errorlog': True}): + return fesa.fesa_3_1_0.generateBuildEnvironment.genCProjectFile(projectPath, logTopics ) diff --git a/silecs-codegen/src/xml/fesa/fesa_7_3_0/generateFesaDesign.py b/silecs-codegen/src/xml/fesa/fesa_7_3_0/generateFesaDesign.py new file mode 100644 index 0000000..73dcf42 --- /dev/null +++ b/silecs-codegen/src/xml/fesa/fesa_7_3_0/generateFesaDesign.py @@ -0,0 +1,98 @@ +#!/usr/bin/python +# Copyright 2016 CERN and GSI +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +import fesa.fillFesaDesignBase +import fesa.fesa_3_1_0.generateFesaDesign + +from iecommon import * + +def fillDesignFile(fesaVersion, className, workspacePath,fesaDesignXSDPath,logTopics={'errorlog': True}): + generator = FESADesignGenerator7_3_0() + fesa.fillFesaDesignBase.fillDesignFileBase(generator,fesaVersion, className, workspacePath,fesaDesignXSDPath,logTopics) + +class FESADesignGenerator7_3_0(fesa.fesa_3_1_0.generateFesaDesign.FESADesignGenerator3_1_0): + + #overwrite 3_0_0 version (multiplexed --> cycle-bound) + def getOrCreateAcquisitionProperty(self,parent,actionsNode,block): + iecommon.logDebug('Generating AcquisitionProperty for Block: ' + block.name, {'debuglog': True}) + prop = "" + if( hasChildren(parent)): + prop = getOrCreateNamedPreviousSiblingElement(parent,getFirstChild(parent), 'acquisition-property',block.getFesaName()) + else: + prop = getOrCreateNamedChildElement(parent,'acquisition-property',block.getFesaName()) + fillAttributes(prop, {'visibility': 'development', 'subscribable': 'true', 'cycle-bound': 'false', 'on-change': 'true'}) + self.getOrCreateRegisterValueItems(prop,block,"OUT") + self.getOrCreateAcqStampItem(prop) + self.getOrCreateUpdateFlagItem(prop) + self.getOrCreateCyleNameItem(prop) + self.getOrCreateCyleStampItem(prop) + self.getOrCreateAction(prop,block.fesaGetServerActionName,'get',actionsNode,'custom') + return prop + + #overwrite 3_0_0 version (multiplexed --> cycle-bound) + def getOrCreateGSIAcquisitionProperty(self,parent,actionsNode,block): + iecommon.logDebug('Generating GSIAcquisitionProperty for Block: ' + block.name, {'debuglog': True}) + versionProps = parent.xpathEval('GSI-Version-Property') + if len(versionProps) == 0: + raise Exception("Error: A GSI-Version-Property needs to be available to generate a GSIAcquisitionProperty") + prop = getOrCreateNamedPreviousSiblingElement(parent,versionProps[0], 'GSI-Acquisition-Property',block.getFesaName()) + fillAttributes(prop, {'visibility': 'development', 'subscribable': 'true', 'cycle-bound': 'false', 'on-change': 'true'}) + self.getOrCreateRegisterValueItems(prop,block,"OUT") + self.getOrCreateAcqStampItem(prop) + self.getOrCreateUpdateFlagItem(prop) + self.getOrCreateCyleNameItem(prop) + self.getOrCreateCyleStampItem(prop) + self.getOrCreateAction(prop,block.fesaGetServerActionName,'get',actionsNode,'custom') + self.getOrCreateAcquisitionContextItem(prop) + return prop + + #overwrite 3_0_0 version (multiplexed --> cycle-bound for acquisition fileds) + def genData(self,designClass, doc,logTopics): + iecommon.logDebug("Creating data fields", logTopics) + + dataNode = doc.xpathEval('/equipment-model/data')[0] + iecommon.logError("len(dataNode)" + dataNode.get_name(), logTopics) + deviceDataNode = getOrCreateChildElement(dataNode,'device-data') + configurationNode = getOrCreateChildElement(deviceDataNode,'configuration') + settingNode = getOrCreateChildElement(deviceDataNode,'setting') + acquisitionNode = getOrCreateChildElement(deviceDataNode,'acquisition') + self.getOrCreatePLCHostNameField(configurationNode) + self.getOrCreatePLCDeviceLabelField(configurationNode) + + for block in designClass.getDesignBlocks(): + for reg in block.getDesignRegisters(): + if reg.isSetting(): + fieldNode = self.getOrCreateFieldNode(settingNode,reg) + fillAttributes(fieldNode, {'multiplexed': 'false', 'persistent': 'true'}) + elif reg.isAcquisition(): + fieldNode = self.getOrCreateFieldNode(acquisitionNode,reg) + fillAttributes(fieldNode, {'cycle-bound': 'false', 'persistent': 'false'}) + elif reg.isConfiguration(): + fieldNode = self.getOrCreateFieldNode(configurationNode,reg) + else: + raise Exception( "Cannot identify register-type to use for register:" + reg.name ) + self.getOrCreateType(fieldNode,reg) + + globalDataNode = getOrCreateChildElement(dataNode,'global-data') + globalConfigurationNode = "" + if len(globalDataNode.xpathEval("configuration")) == 0: + if len( globalDataNode.xpathEval("*")) == 0: + globalConfigurationNode = getOrCreateChildElement(globalDataNode,'configuration') + else: + globalConfigurationNode = getOrCreatePreviousSiblingElement(getFirstChild(globalDataNode),'configuration') + else: + globalConfigurationNode = globalDataNode.xpathEval("configuration")[0] + self.getOrCreatePLCClassVersionField(globalConfigurationNode,designClass.version) diff --git a/silecs-codegen/src/xml/fesa/fesa_7_3_0/generateSourceCode.py b/silecs-codegen/src/xml/fesa/fesa_7_3_0/generateSourceCode.py new file mode 100644 index 0000000..973222d --- /dev/null +++ b/silecs-codegen/src/xml/fesa/fesa_7_3_0/generateSourceCode.py @@ -0,0 +1,26 @@ +#!/usr/bin/python +# Copyright 2016 CERN and GSI +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +import fesa.fesa_3_0_0.generateSourceCode + +def genHSource(className, silecsRoot, fesaRoot, sourcePath,logTopics): + return fesa.fesa_3_0_0.generateSourceCode.genHSource(className, silecsRoot, fesaRoot, sourcePath,logTopics) + +def genCppSource(className, silecsRoot, fesaRoot, sourcePath,logTopics): + return fesa.fesa_3_0_0.generateSourceCode.genCppSource(className, silecsRoot, fesaRoot, sourcePath,logTopics) + +def genCppFiles(className, workspacePath, silecsDesignFilePath,logTopics={'errorlog': True}): + return fesa.fesa_3_0_0.generateSourceCode.genCppFiles(className, workspacePath, silecsDesignFilePath,logTopics) diff --git a/silecs-codegen/src/xml/test/fesa/GSIClassTemplateFESA300.xml b/silecs-codegen/src/xml/test/fesa/GSIClassTemplate.xml similarity index 81% rename from silecs-codegen/src/xml/test/fesa/GSIClassTemplateFESA300.xml rename to silecs-codegen/src/xml/test/fesa/GSIClassTemplate.xml index f84b0ae..a67ec87 100644 --- a/silecs-codegen/src/xml/test/fesa/GSIClassTemplateFESA300.xml +++ b/silecs-codegen/src/xml/test/fesa/GSIClassTemplate.xml @@ -6,29 +6,30 @@ <class-minor-version>1</class-minor-version> <class-tiny-version>0</class-tiny-version> <type>Final</type> - <state>development</state> - <description>An Empty design with GSI-specific standard properties</description> - <fesa-version>3.0.0</fesa-version> - <repository-path>undefined</repository-path> + <description>An empty design with GSI-specific standard properties</description> + <fesa-version>7.0.0</fesa-version> </information> <ownership> - <responsible name="CSCO"/> + <responsible name="ACO"/> <creator login="Undefined"/> </ownership> <interface> <device-interface> <setting> <GSI-Init-Property multiplexed="false" name="Init" visibility="operational"> + <description>Control property, used to initialize the device with default values from the device instantiation file</description> <set-action partial-setting="true" transaction="true"> <server-action-ref server-action-name-ref="InitSetAction"/> </set-action> </GSI-Init-Property> <GSI-Reset-Property multiplexed="false" name="Reset" visibility="operational"> + <description>Control property, used to reset the device while keeping the persistent data.</description> <set-action partial-setting="true" transaction="true"> <server-action-ref server-action-name-ref="ResetSetAction"/> </set-action> </GSI-Reset-Property> <GSI-Setting-Property multiplexed="false" name="Setting" visibility="operational"> + <description>Used for setting hardware parameters for controlling the device.</description> <update-flag-item direction="OUT" name="updateFlags" optional="true"> <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/> </update-flag-item> @@ -45,6 +46,7 @@ </get-action> </GSI-Setting-Property> <GSI-Power-Property multiplexed="false" name="Power" visibility="operational"> + <description>Used to turn the power of a device on or off.</description> <update-flag-item direction="OUT" name="updateFlags" optional="true"> <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/> </update-flag-item> @@ -67,7 +69,9 @@ </GSI-Power-Property> </setting> <acquisition> - <GSI-Status-Property multiplexed="false" name="Status" on-change="true" subscribable="true" visibility="operational"> + <GSI-Status-Property cycle-bound="false" name="Status" on-change="true" subscribable="true" visibility="operational"> + <description>Used to display the (cycle independent) overall status of the device.</description> + <description>Detailed status information may be additionally added to this property.</description> <acq-stamp-item direction="OUT" name="acqStamp"> <scalar type="int64_t"/> </acq-stamp-item> @@ -91,12 +95,15 @@ <data-field-ref field-name-ref="status"/> </status-item> <detailed-status-item direction="OUT" name="detailedStatus"> + <description>Detailed status should consist of an array of boolean values considered as detailed status information as well as a +corresponding string array containing keys to illustrate the meaning of the detailed status information.</description> <array type="bool"> <custom-constant-dim constant-name-ref="DETAILED_STATUS_SIZE"/> </array> <data-field-ref field-name-ref="detailedStatus"/> </detailed-status-item> <detailed-status-labels-item direction="OUT" name="detailedStatus_labels"> + <description>Labels of detailed status bits.</description> <array2D type="char"> <custom-constant-dim1 constant-name-ref="DETAILED_STATUS_SIZE"/> <custom-constant-dim2 constant-name-ref="MAX_DETAILED_STATUS_LABEL_LENGTH"/> @@ -104,30 +111,34 @@ <data-field-ref field-name-ref="detailedStatus_labels"/> </detailed-status-labels-item> <detailed-status-severity-item direction="OUT" name="detailedStatus_severity"> + <description>Severities of the detailed status bits</description> <custom-type-array data-type-name-ref="DETAILED_STATUS_SEVERITY"> <custom-constant-dim constant-name-ref="DETAILED_STATUS_SIZE"/> </custom-type-array> <data-field-ref field-name-ref="detailedStatus_severity"/> </detailed-status-severity-item> <powerState-item direction="OUT" name="powerState"> + <description>Power state of the device (ON, OFF)</description> <custom-type-scalar data-type-name-ref="DEVICE_POWER_STATE"/> <data-field-ref field-name-ref="powerState"/> </powerState-item> <control-item direction="OUT" name="control"> <custom-type-scalar data-type-name-ref="DEVICE_CONTROL"/> - <data-field-ref field-name-ref="control"/> </control-item> <interlock-item direction="OUT" name="interlock"> + <description>Interlock state of the device</description> <scalar type="bool"/> <data-field-ref field-name-ref="interlock"/> </interlock-item> <opReady-item direction="OUT" name="opReady"> + <description>Contains the devices state regarding operation</description> <scalar type="bool"/> <data-field-ref field-name-ref="opReady"/> </opReady-item> <modulesReady-item direction="OUT" name="modulesReady"> + <description>Contains the devices module state</description> <scalar type="bool"/> <data-field-ref field-name-ref="modulesReady"/> </modulesReady-item> @@ -157,7 +168,8 @@ <error_collection-field-ref field-name-ref="error_collection"/> </error_collection-item> </GSI-Status-Property> - <GSI-ModuleStatus-Property visibility="development" subscribable="true" name="ModuleStatus" multiplexed="false"> + <GSI-ModuleStatus-Property visibility="operational" subscribable="true" name="ModuleStatus" cycle-bound="false"> + <description>Gives detailed information on the state of 3rd party hardware and software components which are required to operate the device.</description> <acq-stamp-item name="acqStamp" direction="OUT"> <scalar type="int64_t" /> </acq-stamp-item> @@ -178,22 +190,19 @@ <module-status-item name="moduleStatus" direction="OUT"> <custom-type-array data-type-name-ref="MODULE_STATUS"> <custom-constant-dim constant-name-ref="MODULE_STATUS_SIZE" /> - </custom-type-array> - <data-field-ref field-name-ref="moduleStatus" /> </module-status-item> <module-status-labels-item name="moduleStatus_labels" direction="OUT"> <array2D type="char"> <custom-constant-dim1 constant-name-ref="MODULE_STATUS_SIZE" /> <custom-constant-dim2 constant-name-ref="MAX_MODULE_STATUS_LABEL_LENGTH" /> - </array2D> - <data-field-ref field-name-ref="moduleStatus_labels" /> </module-status-labels-item> </GSI-ModuleStatus-Property> - <GSI-Acquisition-Property multiplexed="true" name="Acquisition" on-change="true" subscribable="true" visibility="operational"> + <GSI-Acquisition-Property cycle-bound="true" name="Acquisition" on-change="true" subscribable="true" visibility="operational"> + <description>Used for returning acquisition data which is retrieved from the hardware.</description> <acq-stamp-item direction="OUT" name="acqStamp"> <scalar type="int64_t"/> </acq-stamp-item> @@ -212,27 +221,41 @@ <server-action-ref server-action-name-ref="AcquisitionGetAction"/> </get-action> <acquisition-context-item direction="OUT"> - <acqStamp direction="OUT" name="acqStampGSI"> - <scalar type="int64_t"/> - </acqStamp> - <cycleStamp direction="OUT" name="cycleStampGSI"> - <scalar type="int64_t"/> - </cycleStamp> - <cycleName direction="OUT" name="cycleNameGSI"> - <array type="char"> - <custom-constant-dim constant-name-ref="MAX_CYCLE_NAME_LENGTH"/> - </array> - </cycleName> - <beamProcessID direction="OUT" name="beamProcessID"> + <processIndex direction="OUT" name="processIndex"> + <scalar type="int32_t"/> + </processIndex> + <sequenceIndex direction="OUT" name="sequenceIndex"> + <scalar type="int32_t"/> + </sequenceIndex> + <chainIndex direction="OUT" name="chainIndex"> <scalar type="int32_t"/> - </beamProcessID> - <sequenceID direction="OUT" name="sequenceID"> + </chainIndex> + <eventNumber direction="OUT" name="eventNumber"> <scalar type="int32_t"/> - </sequenceID> + </eventNumber> + <timingGroupID direction="OUT" name="timingGroupID"> + <scalar type="int32_t"/> + </timingGroupID> + <acquisitionStamp direction="OUT" name="acquisitionStamp"> + <scalar type="int64_t"/> + </acquisitionStamp> + <eventStamp direction="OUT" name="eventStamp"> + <scalar type="int64_t"/> + </eventStamp> + <processStartStamp direction="OUT" name="processStartStamp"> + <scalar type="int64_t"/> + </processStartStamp> + <sequenceStartStamp direction="OUT" name="sequenceStartStamp"> + <scalar type="int64_t"/> + </sequenceStartStamp> + <chainStartStamp direction="OUT" name="chainStartStamp"> + <scalar type="int64_t"/> + </chainStartStamp> <acquisition-context-field-ref field-name-ref="acquisitionContext"/> </acquisition-context-item> </GSI-Acquisition-Property> - <GSI-Version-Property multiplexed="false" name="Version" on-change="false" subscribable="false" visibility="operational"> + <GSI-Version-Property cycle-bound="false" name="Version" on-change="false" subscribable="false" visibility="operational"> + <description>Returns the current software and hardware versions of a piece of equipment.</description> <acq-stamp-item direction="OUT" name="acqStamp"> <scalar type="int64_t"/> </acq-stamp-item> @@ -276,11 +299,13 @@ <scalar type="bool"/> </mode-item> <host-item direction="INOUT" name="hostName"> + <description>Host of the FESA class</description> <array type="char"> <dim>32</dim> </array> </host-item> <port-item direction="INOUT" name="portNumber"> + <description>Port used by the FESA class</description> <scalar type="int32_t"/> </port-item> <config-item direction="IN" name="requestConfig"> @@ -308,7 +333,7 @@ </diagnostic-property> </setting> <acquisition> - <GSI-DeviceDescription-Property multiplexed="false" name="DeviceDescription" on-change="false" subscribable="false" visibility="operational"> + <GSI-DeviceDescription-Property cycle-bound="false" name="DeviceDescription" on-change="false" subscribable="false" visibility="operational"> <timing-info-item direction="OUT" name="deviceNameTimingReceiver"> <array type="char"> <variable-dim/> @@ -509,28 +534,47 @@ </array> </struct-item> </struct> - <struct name="GSI_ACQ_CONTEXT"> - <!--This struct-item describes all AcquisitionContext items which are relevant for GSI--> - <struct-item name="acqStamp"> - <!--The acquisition stamp is used to indicate when a measurement was done --> + <struct name="GSI_ACQ_CONTEXT"><description>WhiteRabbit event specific acquisition information</description> + <struct-item name="processIndex"> + <description>Used in order to index process-multiplexed data</description> + <scalar type="int32_t" /> + </struct-item> + <struct-item name="sequenceIndex"> + <description>Used in order to index sequence-multiplexed data</description> + <scalar type="int32_t" /> + </struct-item> + <struct-item name="chainIndex"> + <description>Refers to a specific beam production chain</description> + <scalar type="int32_t" /> + </struct-item> + <struct-item name="eventNumber"> + <description>The number of the event describes it's type</description> + <scalar type="int32_t" /> + </struct-item> + <struct-item name="timingGroupID"> + <description>ID of the timing group for which the event is relevant</description> + <scalar type="int32_t" /> + </struct-item> + <struct-item name="acquisitionStamp" > + <description>The acquisition stamp is used to indicate when a measurement was done</description> <scalar type="int64_t"/> </struct-item> - <struct-item name="cycleStamp"> - <!--The cycle stamp is used to indicate when a specific cycle has started--> - <scalar type="int64_t"/> - </struct-item> - <struct-item name="cycleName"> - <!--The cycle name indicates the cycle which started at time of the cycleStamp --> - <array type="char"> - <custom-constant-dim constant-name-ref="MAX_CYCLE_NAME_LENGTH"/> - </array> - </struct-item> - <struct-item name="beamProcessID"> - <scalar type="int32_t"/> - </struct-item> - <struct-item name="sequenceID"> - <scalar type="int32_t"/> - </struct-item> + <struct-item name="eventStamp"> + <description>The event stamp is used to indicate when WhiteRabbit event was triggered on the Timing Receiver</description> + <scalar type="int64_t" /> + </struct-item> + <struct-item name="processStartStamp"> + <description>The process start stamp indicates when the first event of the current process was triggered</description> + <scalar type="int64_t" /> + </struct-item> + <struct-item name="sequenceStartStamp"> + <description>The sequence start stamp indicates when the first event of the current sequence was triggered</description> + <scalar type="int64_t" /> + </struct-item> + <struct-item name="chainStartStamp"> + <description>The chain start stamp indicates when the first event of the current chain was triggered</description> + <scalar type="int64_t" /> + </struct-item> </struct> <constant name="MAX_ERROR_MESSAGE_LENGTH" type="uint32_t" value="256"/> <constant name="MAX_NUMBER_OF_ERROR_MESSAGES" type="uint32_t" value="16"/> @@ -591,39 +635,38 @@ </GSI-power-field> </setting> <acquisition> - <GSI-control-field multiplexed="false" name="control"> + <GSI-control-field cycle-bound="false" name="control"> <custom-type-scalar data-type-name-ref="DEVICE_CONTROL"/> </GSI-control-field> - <GSI-powerState-field multiplexed="false" name="powerState"> + <GSI-powerState-field cycle-bound="false" name="powerState"> <custom-type-scalar data-type-name-ref="DEVICE_POWER_STATE"/> </GSI-powerState-field> - <GSI-status-field multiplexed="false" name="status"> + <GSI-status-field cycle-bound="false" name="status"> <custom-type-scalar data-type-name-ref="DEVICE_STATUS"/> </GSI-status-field> - <GSI-interlock-field multiplexed="false" name="interlock"> + <GSI-interlock-field cycle-bound="false" name="interlock"> <scalar type="bool"/> </GSI-interlock-field> - <GSI-opReady-field multiplexed="false" name="opReady"> + <GSI-opReady-field cycle-bound="false" name="opReady"> <scalar type="bool"/> </GSI-opReady-field> - <GSI-modulesReady-field name="modulesReady" multiplexed="false"> + <GSI-modulesReady-field name="modulesReady" cycle-bound="false"> <scalar type="bool" /> </GSI-modulesReady-field> - <GSI-detailed-status-field multiplexed="false" name="detailedStatus"> + <GSI-detailed-status-field cycle-bound="false" name="detailedStatus"> <array type="bool"> <custom-constant-dim constant-name-ref="DETAILED_STATUS_SIZE"/> </array> </GSI-detailed-status-field> - <GSI-module-status-field name="moduleStatus" multiplexed="false"> + <GSI-module-status-field name="moduleStatus" cycle-bound="false"> <custom-type-array data-type-name-ref="MODULE_STATUS"> <custom-constant-dim constant-name-ref="MODULE_STATUS_SIZE" /> - </custom-type-array> </GSI-module-status-field> - <GSI-acquisition-context-field multiplexed="true" name="acquisitionContext"> + <GSI-acquisition-context-field cycle-bound="true" name="acquisitionContext"> <custom-type-scalar data-type-name-ref="GSI_ACQ_CONTEXT"/> </GSI-acquisition-context-field> - <GSI-error_collection-field multiplexed="false" name="error_collection"> + <GSI-error_collection-field cycle-bound="false" name="error_collection"> <custom-type-array data-type-name-ref="GSI_ERROR"> <custom-constant-dim constant-name-ref="MAX_NUMBER_OF_ERROR_MESSAGES"/> </custom-type-array> @@ -651,7 +694,21 @@ <get-server-action implementation="default" name="SettingGetAction"/> <get-server-action implementation="default" name="AcquisitionGetAction"/> <get-server-action implementation="default" name="StatusGetAction"/> - <get-server-action implementation="default" name="VersionGetAction"/><get-server-action implementation="default" name="ModuleStatusGetAction"></get-server-action> + <get-server-action implementation="default" name="VersionGetAction"/> + <get-server-action implementation="default" name="ModuleStatusGetAction"/> + + <rt-action name="StatusUpdateAction"/> <!-- Pre-defined status update action --> </actions> + <events> + <logical-events> + <logical-event use="required" name="StatusUpdateEvent" type="timer"/> + </logical-events> + </events> + <scheduling-units> + <scheduling-unit name="StatusUpdateSchedulingUnit"> + <rt-action-ref rt-action-name-ref="StatusUpdateAction" /> + <logical-event-ref logical-event-name-ref="StatusUpdateEvent" /> + </scheduling-unit> + </scheduling-units> -</equipment-model> \ No newline at end of file +</equipment-model> diff --git a/silecs-codegen/src/xml/test/fesa/GSIClassTemplateFESA431.xml b/silecs-codegen/src/xml/test/fesa/GSIClassTemplateFESA431.xml deleted file mode 100644 index c24d5b6..0000000 --- a/silecs-codegen/src/xml/test/fesa/GSIClassTemplateFESA431.xml +++ /dev/null @@ -1,703 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<equipment-model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../design-gsi.xsd"> - <information> - <class-name>GSIClassTemplate</class-name> - <class-major-version>0</class-major-version> - <class-minor-version>1</class-minor-version> - <class-tiny-version>0</class-tiny-version> - <type>Final</type> - <state>development</state> - <description>An empty design with GSI-specific standard properties</description> - <fesa-version>DEV</fesa-version> - <repository-path>undefined</repository-path> - </information> - <ownership> - <responsible name="CSCO"/> - <creator login="Undefined"/> - </ownership> - <interface> - <device-interface> - <setting> - <GSI-Init-Property multiplexed="false" name="Init" visibility="operational"> - <description>Control property, used to initialize the device with default values from the device instantiation file</description> - <set-action partial-setting="true" transaction="true"> - <server-action-ref server-action-name-ref="InitSetAction"/> - </set-action> - </GSI-Init-Property> - <GSI-Reset-Property multiplexed="false" name="Reset" visibility="operational"> - <description>Control property, used to reset the device while keeping the persistent data.</description> - <set-action partial-setting="true" transaction="true"> - <server-action-ref server-action-name-ref="ResetSetAction"/> - </set-action> - </GSI-Reset-Property> - <GSI-Setting-Property multiplexed="false" name="Setting" visibility="operational"> - <description>Used for setting hardware parameters for controlling the device.</description> - <update-flag-item direction="OUT" name="updateFlags" optional="true"> - <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/> - </update-flag-item> - <cycle-name-item direction="OUT" name="cycleName" optional="true"> - <array type="char"> - <dim>32</dim> - </array> - </cycle-name-item> - <set-action partial-setting="true" transaction="true"> - <server-action-ref server-action-name-ref="SettingSetAction"/> - </set-action> - <get-action> - <server-action-ref server-action-name-ref="SettingGetAction"/> - </get-action> - </GSI-Setting-Property> - <GSI-Power-Property multiplexed="false" name="Power" visibility="operational"> - <description>Used to turn the power of a device on or off.</description> - <update-flag-item direction="OUT" name="updateFlags" optional="true"> - <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/> - </update-flag-item> - <cycle-name-item direction="OUT" name="cycleName" optional="true"> - <array type="char"> - <dim>32</dim> - </array> - </cycle-name-item> - <set-action partial-setting="true" transaction="true"> - <server-action-ref server-action-name-ref="PowerSetAction"/> - </set-action> - <get-action> - <server-action-ref server-action-name-ref="PowerGetAction"/> - </get-action> - <power-item direction="INOUT" name="power"> - <custom-type-scalar data-type-name-ref="DEVICE_POWER"/> - - <data-field-ref field-name-ref="power"/> - </power-item> - </GSI-Power-Property> - </setting> - <acquisition> - <GSI-Status-Property multiplexed="false" name="Status" on-change="true" subscribable="true" visibility="operational"> - <description>Used to display the (cycle independent) overall status of the device.</description> - <description>Detailed status information may be additionally added to this property.</description> - <acq-stamp-item direction="OUT" name="acqStamp"> - <scalar type="int64_t"/> - </acq-stamp-item> - <update-flag-item direction="OUT" name="updateFlags" optional="true"> - <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/> - </update-flag-item> - <cycle-name-item direction="OUT" name="cycleName" optional="true"> - <array type="char"> - <dim>32</dim> - </array> - </cycle-name-item> - <cycle-stamp-item direction="OUT" name="cycleStamp" optional="true"> - <scalar type="int64_t"/> - </cycle-stamp-item> - <get-action> - <server-action-ref server-action-name-ref="StatusGetAction"/> - </get-action> - <status-item direction="OUT" name="status"> - <custom-type-scalar data-type-name-ref="DEVICE_STATUS"/> - - <data-field-ref field-name-ref="status"/> - </status-item> - <detailed-status-item direction="OUT" name="detailedStatus"> - <description>Detailed status should consist of an array of boolean values considered as detailed status information as well as a -corresponding string array containing keys to illustrate the meaning of the detailed status information.</description> - <array type="bool"> - <custom-constant-dim constant-name-ref="DETAILED_STATUS_SIZE"/> - </array> - <data-field-ref field-name-ref="detailedStatus"/> - </detailed-status-item> - <detailed-status-labels-item direction="OUT" name="detailedStatus_labels"> - <description>Labels of detailed status bits.</description> - <array2D type="char"> - <custom-constant-dim1 constant-name-ref="DETAILED_STATUS_SIZE"/> - <custom-constant-dim2 constant-name-ref="MAX_DETAILED_STATUS_LABEL_LENGTH"/> - </array2D> - <data-field-ref field-name-ref="detailedStatus_labels"/> - </detailed-status-labels-item> - <detailed-status-severity-item direction="OUT" name="detailedStatus_severity"> - <description>Severities of the detailed status bits</description> - <custom-type-array data-type-name-ref="DETAILED_STATUS_SEVERITY"> - <custom-constant-dim constant-name-ref="DETAILED_STATUS_SIZE"/> - </custom-type-array> - <data-field-ref field-name-ref="detailedStatus_severity"/> - </detailed-status-severity-item> - <powerState-item direction="OUT" name="powerState"> - <description>Power state of the device (ON, OFF)</description> - <custom-type-scalar data-type-name-ref="DEVICE_POWER_STATE"/> - - <data-field-ref field-name-ref="powerState"/> - </powerState-item> - <control-item direction="OUT" name="control"> - <custom-type-scalar data-type-name-ref="DEVICE_CONTROL"/> - <data-field-ref field-name-ref="control"/> - </control-item> - <interlock-item direction="OUT" name="interlock"> - <description>Interlock state of the device</description> - <scalar type="bool"/> - <data-field-ref field-name-ref="interlock"/> - </interlock-item> - <opReady-item direction="OUT" name="opReady"> - <description>Contains the devices state regarding operation</description> - <scalar type="bool"/> - <data-field-ref field-name-ref="opReady"/> - </opReady-item> - <modulesReady-item direction="OUT" name="modulesReady"> - <description>Contains the devices module state</description> - <scalar type="bool"/> - <data-field-ref field-name-ref="modulesReady"/> - </modulesReady-item> - <error_collection-item direction="OUT"> - <error_codes direction="OUT" name="error_codes"> - <array type="int32_t"> - <custom-constant-dim constant-name-ref="MAX_NUMBER_OF_ERROR_MESSAGES"/> - </array> - </error_codes> - <error_messages direction="OUT" name="error_messages"> - <array2D type="char"> - <custom-constant-dim1 constant-name-ref="MAX_NUMBER_OF_ERROR_MESSAGES"/> - <custom-constant-dim2 constant-name-ref="MAX_ERROR_MESSAGE_LENGTH"/> - </array2D> - </error_messages> - <error_timestamps direction="OUT" name="error_timestamps"> - <array type="int64_t"> - <custom-constant-dim constant-name-ref="MAX_NUMBER_OF_ERROR_MESSAGES"/> - </array> - </error_timestamps> - <error_cycle_names direction="OUT" name="error_cycle_names"> - <array2D type="char"> - <custom-constant-dim1 constant-name-ref="MAX_NUMBER_OF_ERROR_MESSAGES"/> - <custom-constant-dim2 constant-name-ref="MAX_ERROR_MESSAGE_LENGTH"/> - </array2D> - </error_cycle_names> - <error_collection-field-ref field-name-ref="error_collection"/> - </error_collection-item> - </GSI-Status-Property> - <GSI-ModuleStatus-Property visibility="development" subscribable="true" name="ModuleStatus" multiplexed="false"> - <description>Gives detailed information on the state of 3rd party hardware and software components which are required to operate the device.</description> - <acq-stamp-item name="acqStamp" direction="OUT"> - <scalar type="int64_t" /> - </acq-stamp-item> - <update-flag-item optional="true" name="updateFlags" direction="OUT"> - <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE" /> - </update-flag-item> - <cycle-name-item optional="true" name="cycleName" direction="OUT"> - <array type="char"> - <dim>32</dim> - </array> - </cycle-name-item> - <cycle-stamp-item optional="true" name="cycleStamp" direction="OUT"> - <scalar type="int64_t" /> - </cycle-stamp-item> - <get-action> - <server-action-ref server-action-name-ref="ModuleStatusGetAction" /> - </get-action> - <module-status-item name="moduleStatus" direction="OUT"> - <custom-type-array data-type-name-ref="MODULE_STATUS"> - <custom-constant-dim constant-name-ref="MODULE_STATUS_SIZE" /> - </custom-type-array> - <data-field-ref field-name-ref="moduleStatus" /> - </module-status-item> - <module-status-labels-item name="moduleStatus_labels" direction="OUT"> - <array2D type="char"> - <custom-constant-dim1 constant-name-ref="MODULE_STATUS_SIZE" /> - <custom-constant-dim2 constant-name-ref="MAX_MODULE_STATUS_LABEL_LENGTH" /> - </array2D> - <data-field-ref field-name-ref="moduleStatus_labels" /> - </module-status-labels-item> - </GSI-ModuleStatus-Property> - <GSI-Acquisition-Property multiplexed="true" name="Acquisition" on-change="true" subscribable="true" visibility="operational"> - <description>Used for returning acquisition data which is retrieved from the hardware.</description> - <acq-stamp-item direction="OUT" name="acqStamp"> - <scalar type="int64_t"/> - </acq-stamp-item> - <update-flag-item direction="OUT" name="updateFlags" optional="true"> - <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/> - </update-flag-item> - <cycle-name-item direction="OUT" name="cycleName" optional="true"> - <array type="char"> - <dim>32</dim> - </array> - </cycle-name-item> - <cycle-stamp-item direction="OUT" name="cycleStamp" optional="true"> - <scalar type="int64_t"/> - </cycle-stamp-item> - <get-action> - <server-action-ref server-action-name-ref="AcquisitionGetAction"/> - </get-action> - <acquisition-context-item direction="OUT"> - <processIndex direction="OUT" name="processIndex"> - <scalar type="int32_t"/> - </processIndex> - <sequenceIndex direction="OUT" name="sequenceIndex"> - <scalar type="int32_t"/> - </sequenceIndex> - <chainIndex direction="OUT" name="chainIndex"> - <scalar type="int32_t"/> - </chainIndex> - <eventNumber direction="OUT" name="eventNumber"> - <scalar type="int32_t"/> - </eventNumber> - <timingGroupID direction="OUT" name="timingGroupID"> - <scalar type="int32_t"/> - </timingGroupID> - <acquisitionStamp direction="OUT" name="acquisitionStamp"> - <scalar type="int64_t"/> - </acquisitionStamp> - <eventStamp direction="OUT" name="eventStamp"> - <scalar type="int64_t"/> - </eventStamp> - <processStartStamp direction="OUT" name="processStartStamp"> - <scalar type="int64_t"/> - </processStartStamp> - <sequenceStartStamp direction="OUT" name="sequenceStartStamp"> - <scalar type="int64_t"/> - </sequenceStartStamp> - <chainStartStamp direction="OUT" name="chainStartStamp"> - <scalar type="int64_t"/> - </chainStartStamp> - <acquisition-context-field-ref field-name-ref="acquisitionContext"/> - </acquisition-context-item> - </GSI-Acquisition-Property> - <GSI-Version-Property multiplexed="false" name="Version" on-change="false" subscribable="false" visibility="operational"> - <description>Returns the current software and hardware versions of a piece of equipment.</description> - <acq-stamp-item direction="OUT" name="acqStamp"> - <scalar type="int64_t"/> - </acq-stamp-item> - <update-flag-item direction="OUT" name="updateFlags" optional="true"> - <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/> - </update-flag-item> - <cycle-name-item direction="OUT" name="cycleName" optional="true"> - <array type="char"> - <dim>32</dim> - </array> - </cycle-name-item> - <cycle-stamp-item direction="OUT" name="cycleStamp" optional="true"> - <scalar type="int64_t"/> - </cycle-stamp-item> - <get-action> - <server-action-ref server-action-name-ref="VersionGetAction"/> - </get-action> - <version-item direction="OUT" name="classVersion"> - <array type="char"> - <custom-constant-dim constant-name-ref="MAX_VERSION_NAME_LENGTH"/> - </array> - </version-item> - <version-item direction="OUT" name="deployUnitVersion"> - <array type="char"> - <custom-constant-dim constant-name-ref="MAX_VERSION_NAME_LENGTH"/> - </array> - </version-item> - <version-item direction="OUT" name="fesaVersion"> - <array type="char"> - <custom-constant-dim constant-name-ref="MAX_VERSION_NAME_LENGTH"/> - </array> - </version-item> - </GSI-Version-Property> - </acquisition> - </device-interface> - <global-interface> - <setting> - <diagnostic-property multiplexed="false" name="DiagnosticSetting" visibility="expert"> - <description>Generic property which allows to diagnose any FESA classes</description> - <mode-item direction="INOUT" name="enableDiagMode"> - <scalar type="bool"/> - </mode-item> - <host-item direction="INOUT" name="hostName"> - <description>Host of the FESA class</description> - <array type="char"> - <dim>32</dim> - </array> - </host-item> - <port-item direction="INOUT" name="portNumber"> - <description>Port used by the FESA class</description> - <scalar type="int32_t"/> - </port-item> - <config-item direction="IN" name="requestConfig"> - <scalar type="bool"/> - </config-item> - <state-item direction="IN" name="requestState"> - <scalar type="bool"/> - </state-item> - <fwk-topic-item direction="INOUT" name="fwkTopic"> - <builtin-type-scalar data-type-name-ref="DIAG_FWK_TOPIC"/> - </fwk-topic-item> - <custom-topic-item direction="INOUT" name="customTopic"> - <custom-type-scalar data-type-name-ref="DIAG_TOPIC"/> - </custom-topic-item> - <device-trace-item direction="INOUT" name="traceDevices"> - <array type="char"> - <dim>320</dim> - </array> - </device-trace-item> - <bypass-action-item direction="INOUT" name="bypassActions"> - <array type="char"> - <dim>320</dim> - </array> - </bypass-action-item> - </diagnostic-property> - </setting> - <acquisition> - <GSI-DeviceDescription-Property multiplexed="false" name="DeviceDescription" on-change="false" subscribable="false" visibility="operational"> - <timing-info-item direction="OUT" name="deviceNameTimingReceiver"> - <array type="char"> - <variable-dim/> - </array> - <data-field-ref field-name-ref="deviceNameTimingReceiver"/> - </timing-info-item> - <property-info-item direction="OUT" name="propertyNames"> - <array2D type="char"> - <variable-dim1/> - <variable-dim2/> - </array2D> - </property-info-item> - <device-info-item direction="OUT" name="deviceNames"> - <array2D type="char"> - <variable-dim1/> - <variable-dim2/> - </array2D> - </device-info-item> - <global-device-info-item direction="OUT" name="globalDeviceName"> - <array type="char"> - <variable-dim/> - </array> - </global-device-info-item> - <host-info-item direction="OUT" name="host"> - <array type="char"> - <variable-dim/> - </array> - </host-info-item> - </GSI-DeviceDescription-Property> - </acquisition> - </global-interface> - </interface> - <builtin-types> - <notification-update-enum name="NOTIFICATION_UPDATE"> - <IMMEDIATE access="RO" symbol="IMMEDIATE" value="1"/> - <SET access="RO" symbol="SET" value="2"/> - </notification-update-enum> - <diag-fwk-topic name="DIAG_FWK_TOPIC"> - <b0 name="SRV_GET_ACTION_PROFIING"/> - <b1 name="SRV_SET_ACTION_PROFILING"/> - <b2 name="RT_ACTION_PROFILING"/> - <b3 name="EVENT_PROFILING"/> - <b4 name="NOTIFICATION_PROFILING"/> - <b5 name="SRV_GET_ACTION_TRACKING"/> - <b6 name="SRV_SET_ACTION_TRACKING"/> - <b7 name="RT_ACTION_TRACKING"/> - <b8 name="EVENT_TRACKING"/> - <b9 name="NOTIFICATION_TRACKING"/> - <b10 name="PERSISTENCY_TRACKING"/> - <b11 name="TRANSACTION_TRACKING"/> - <b12 name="SUBSCRIPTION_TRACKING"/> - <b13 name="SIGNAL_HANDLER_TRACKING"/> - <b14 name="LOCAL_CONNECTION_TRACKING"/> - </diag-fwk-topic> - <fault-severity name="FaultSeverity"> - <description>Enumeration listing the available fault severities used by the fault fields</description> - <INFO access="RO" meaning="NONE" value="0" symbol="INFO" /> - <WARNING access="RO" meaning="WARNING" value="1" symbol="WARNING" /> - <ERROR access="RO" meaning="ERROR" value="2" symbol="ERROR" /> - <CRITICAL access="RO" meaning="ERROR" value="3" symbol="CRITICAL" /> - </fault-severity> - - </builtin-types> - <custom-types> - <diag-custom-topic name="DIAG_TOPIC"> - </diag-custom-topic> - <enum name="DEVICE_STATUS"> - <!--Possible (mutually exclusive) values to describe the device status--> - - <item access="RW" meaning="NONE" symbol="UNKNOWN" value="0"/> - <!--The device status is unknown--> - - <item access="RW" meaning="NONE" symbol="OK" value="1"/> - <!--The device is in fully operational state--> - - <item access="RW" meaning="NONE" symbol="WARNING" value="2"/> - <!--The device is not fully operational; A device in WARNING state can still be used operationally, --> - <!--but clients must be informed of a problem that might become worse. Details are explained in the errorMsg field.--> - - <item access="RW" meaning="NONE" symbol="ERROR" value="3"/> - <!--The device is in a fault state. Details are explained in the errorMsg field--> - </enum> - <enum name="DEVICE_POWER_STATE"> - <!--Possible (mutually exclusive) values to describe the power-state of the device.--> - - <item access="RW" meaning="NONE" symbol="UNKNOWN" value="0"/> - <!--The device mode is unknown--> - - <item access="RW" meaning="ON" symbol="ON" value="1"/> - <!--The device is in fully operational state--> - - <item access="RW" meaning="NONE" symbol="OFF" value="2"/> - <!--The device is turned off--> - - <item access="RW" meaning="NONE" symbol="STANDBY" value="3"/> - <!--The device is in a stand-by mode. This mode is a sort of “parking mode†in which the device can --> - <!--stay for hours or even days. It is defined by the following characteristics:--> - <!--It is safe, it does not wear out, it consumes little energy.--> - <!--Furthermore, it takes a short time to go from STANDBY to ON mode--> - - <item access="RW" meaning="NONE" symbol="POWER_DOWN" value="4"/> - <!--The device is shutting down. Note that some properties may not be accessible during this time.--> - <!--After shutdown the device will be in the mode OFF--> - - <item access="RW" meaning="NONE" symbol="POWER_UP" value="5"/> - <!--The device is starting up. Note that some properties may not be accessible during this time.--> - <!--After (re-)starting the device probably will be in the mode ON--> - - </enum> - <enum name="DEVICE_POWER"> - <!--An enumeration Type used to control the operational mode of the device.--> - <!--Its values are a subset of those in the DEVICE_POWER_STATE type--> - <item access="RW" meaning="ON" symbol="ON" value="1"/> - <!--The device is in fully operational state--> - - <item access="RW" meaning="OFF" symbol="OFF" value="2"/> - <!--The device is turned off--> - </enum> - <enum name="DEVICE_CONTROL"> - <!--Possible values to describe the control mode of a device--> - <!--Currently two control modes (LOCAL, REMOTE) are defined--> - - <item access="RW" meaning="NONE" symbol="REMOTE" value="0"/> - <!--The device can be controlled normally through the control system--> - - <item access="RW" meaning="NONE" symbol="LOCAL" value="1"/> - <!--The device can be controlled locally. But it can be accessed in read-only mode via the control system--> - </enum> - <enum name="TOL_CHECK_MODE"> - <!--This constant defines possible modes to check whether a control value is inside the tolerance values.--> - <!--Used to give information on how the tolerance fields are used to calculate the xxx_status information.--> - - <item access="RO" symbol="ABS" value="0"/> - <!--Use the absolute tolerance _tolAbs--> - - <item access="RO" symbol="REL" value="1"/> - <!--Use the relative tolerance _tolRel--> - </enum> - <bit-enum-32bits name="AQN_STATUS"> - <!--Possible values to describe the acquisition status of a field (in the _status suffix)--> - <!--If this suffix is missing, it means that no additional status information is provided for the corresponding field--> - <!--If all bits are 0, this means that the corresponding field is OK.--> - <!--Only the lower 16 bits are standardized, the upper 16 bits can be defined by the equipment specialist.--> - <!--The difference between the Status property and the _status suffix is described in the section on the Status property.--> - <b0 name="NOT_OK"/> - <!--Some problem occurred that is not represented by the other bits. This property is called--> - <!-- NOT_OK so that it is not mixed up with ERROR or WARNING in the Status property--> - <b1 name="BAD_QUALITY"/> - <!--The value was acquired with a degraded quality. This is typically used for measurements.--> - <b2 name="DIFFERENT_FROM_SETTING"/> - <!--Different from the requested control value (for discrete values)--><!--or out of tolerance (for continuous values).--> - <b3 name="OUT_OF_RANGE"/> - <!--The value is out of the normal range (e.g. a temperature is too high or too low).--> - <b4 name="BUSY"/> - <!--The property value is changing in response to receiving a new control value (e.g. moving to a--> - <!--new position, charging a capacitor, ...). If the value change does not reach the requested new--> - <!--value within the maximum timeout, the BUSY bit should remain=1 and the TIMEOUT bit must be turned on.--> - <b5 name="TIMEOUT"/> - <!--A timeout occurred, because the property did not reach the reqested new control value within the--> - <!--maximum allowable time. A timeout normally indicates a problem to be addressed by the--> - <!--equipment specialist. This is typically used for slow changing control values that are BUSY while they change.--> - <b6 name="bit6_is_reserved_for_later_usage"/> - <b7 name="bit7_is_reserved_for_later_usage"/> - <b8 name="bit8_is_reserved_for_later_usage"/> - <b9 name="bit9_is_reserved_for_later_usage"/> - <b10 name="bit10_is_reserved_for_later_usage"/> - <b11 name="bit11_is_reserved_for_later_usage"/> - <b12 name="bit12_is_reserved_for_later_usage"/> - <b13 name="bit13_is_reserved_for_later_usage"/> - <b14 name="bit14_is_reserved_for_later_usage"/> - <b15 name="bit15_is_reserved_for_later_usage"/> - <!--bit 6 to 15 are reserved ... dont use them!--> - - <b16 name="bit_16_and_higher_can_be_used_by_the_class_developer"/> - <!--into bit 16..32 you can put in anything you want--> - </bit-enum-32bits> - - <struct name="GSI_ERROR"> - <!--This struct-item describes the structure of an GSI-error--> - <struct-item name="error_string"> - <!--This string holds the error-message--> - <array type="char"> - <custom-constant-dim constant-name-ref="MAX_ERROR_MESSAGE_LENGTH"/> - </array> - </struct-item> - <struct-item name="error_code"> - <!--The error code according to the defined error-message--> - <scalar type="int32_t"/> - </struct-item> - <!--The timestamp when the error occured--> - <struct-item name="error_timestamp"> - <scalar type="int64_t"/> - </struct-item> - <!--The cycle for which the error occured--> - <struct-item name="error_cycle_name"> - <array type="char"> - <custom-constant-dim constant-name-ref="MAX_CYCLE_NAME_LENGTH"/> - </array> - </struct-item> - </struct> - <struct name="GSI_ACQ_CONTEXT"><description>WhiteRabbit event specific acquisition information</description> - <struct-item name="processIndex"> - <description>Used in order to index process-multiplexed data</description> - <scalar type="int32_t" /> - </struct-item> - <struct-item name="sequenceIndex"> - <description>Used in order to index sequence-multiplexed data</description> - <scalar type="int32_t" /> - </struct-item> - <struct-item name="chainIndex"> - <description>Refers to a specific beam production chain</description> - <scalar type="int32_t" /> - </struct-item> - <struct-item name="eventNumber"> - <description>The number of the event describes it's type</description> - <scalar type="int32_t" /> - </struct-item> - <struct-item name="timingGroupID"> - <description>ID of the timing group for which the event is relevant</description> - <scalar type="int32_t" /> - </struct-item> - <struct-item name="acquisitionStamp" > - <description>The acquisition stamp is used to indicate when a measurement was done</description> - <scalar type="int64_t"/> - </struct-item> - <struct-item name="eventStamp"> - <description>The event stamp is used to indicate when WhiteRabbit event was triggered on the Timing Receiver</description> - <scalar type="int64_t" /> - </struct-item> - <struct-item name="processStartStamp"> - <description>The process start stamp indicates when the first event of the current process was triggered</description> - <scalar type="int64_t" /> - </struct-item> - <struct-item name="sequenceStartStamp"> - <description>The sequence start stamp indicates when the first event of the current sequence was triggered</description> - <scalar type="int64_t" /> - </struct-item> - <struct-item name="chainStartStamp"> - <description>The chain start stamp indicates when the first event of the current chain was triggered</description> - <scalar type="int64_t" /> - </struct-item> - </struct> - <constant name="MAX_ERROR_MESSAGE_LENGTH" type="uint32_t" value="256"/> - <constant name="MAX_NUMBER_OF_ERROR_MESSAGES" type="uint32_t" value="16"/> - <constant name="MAX_CYCLE_NAME_LENGTH" type="uint32_t" value="256"/> - <constant name="MAX_VERSION_NAME_LENGTH" type="uint32_t" value="256"/> - <constant name="MAX_DETAILED_STATUS_LABEL_LENGTH" type="uint32_t" value="30"/> - <constant name="DETAILED_STATUS_SIZE" type="uint32_t" value="2"/> - <enum name="DETAILED_STATUS_SEVERITY"> - <item access="RO" symbol="INFO" value="0"/> - <item access="RO" symbol="WARNING_ON_FALSE" value="1"/> - <item access="RO" symbol="ERROR_ON_FALSE" value="2"/> - </enum> - <enum name="MODULE_STATUS"> - <!-- Mutually exclusive values to describe the status of a hardware / software module--> - <item access="RO" value="0" symbol="UNKNOWN" /> - <!--The status of the module is not known--> - <item access="RO" value="1" symbol="OK" /> - <!--The module is in fully operational state--> - <item access="RO" value="2" symbol="WARNING" /> - <!--The module is not fully operational; A module in WARNING state may still be used operationally, --> - <!--but clients must be informed of a problem that might become worse. --> - <item access="RO" value="3" symbol="ERROR" /> - <!--The module is in a fault state. The related device is not operational.--> - <item access="RO" value="4" symbol="NOT_AVAILABLE" /> - <!--The module is missing. The related device is not operational.--> - </enum> - <constant name="MAX_MODULE_STATUS_LABEL_LENGTH" type="uint32_t" value="30"/> - <constant name="MODULE_STATUS_SIZE" type="uint32_t" value="2"/> - </custom-types> - <data> - <device-data> - <configuration> - <GSI-detailed-status-labels-field name="detailedStatus_labels"> - <array2D type="char"> - <custom-constant-dim1 constant-name-ref="DETAILED_STATUS_SIZE"/> - <custom-constant-dim2 constant-name-ref="MAX_DETAILED_STATUS_LABEL_LENGTH"/> - </array2D> - <default>{myStatusLabel1,myStatusLabel2}</default> - </GSI-detailed-status-labels-field> - <GSI-detailed-status-severity-field name="detailedStatus_severity"> - <custom-type-array data-type-name-ref="DETAILED_STATUS_SEVERITY"> - <custom-constant-dim constant-name-ref="DETAILED_STATUS_SIZE"/> - </custom-type-array> - <default>{INFO,INFO}</default> - </GSI-detailed-status-severity-field> - <GSI-module-status-labels-field name="moduleStatus_labels"> - <array2D type="char"> - <custom-constant-dim1 constant-name-ref="MODULE_STATUS_SIZE" /> - - <custom-constant-dim2 constant-name-ref="MAX_MODULE_STATUS_LABEL_LENGTH" /> - </array2D> - <default>{myModule1,myModule2}</default> - </GSI-module-status-labels-field> - </configuration> - <setting> - <GSI-power-field multiplexed="false" name="power" persistent="false"> - <custom-type-scalar data-type-name-ref="DEVICE_POWER"/> - </GSI-power-field> - </setting> - <acquisition> - <GSI-control-field multiplexed="false" name="control"> - <custom-type-scalar data-type-name-ref="DEVICE_CONTROL"/> - </GSI-control-field> - <GSI-powerState-field multiplexed="false" name="powerState"> - <custom-type-scalar data-type-name-ref="DEVICE_POWER_STATE"/> - </GSI-powerState-field> - <GSI-status-field multiplexed="false" name="status"> - <custom-type-scalar data-type-name-ref="DEVICE_STATUS"/> - </GSI-status-field> - <GSI-interlock-field multiplexed="false" name="interlock"> - <scalar type="bool"/> - </GSI-interlock-field> - <GSI-opReady-field multiplexed="false" name="opReady"> - <scalar type="bool"/> - </GSI-opReady-field> - <GSI-modulesReady-field name="modulesReady" multiplexed="false"> - <scalar type="bool" /> - </GSI-modulesReady-field> - <GSI-detailed-status-field multiplexed="false" name="detailedStatus"> - <array type="bool"> - <custom-constant-dim constant-name-ref="DETAILED_STATUS_SIZE"/> - </array> - </GSI-detailed-status-field> - <GSI-module-status-field name="moduleStatus" multiplexed="false"> - <custom-type-array data-type-name-ref="MODULE_STATUS"> - <custom-constant-dim constant-name-ref="MODULE_STATUS_SIZE" /> - </custom-type-array> - </GSI-module-status-field> - <GSI-acquisition-context-field multiplexed="true" name="acquisitionContext"> - <custom-type-scalar data-type-name-ref="GSI_ACQ_CONTEXT"/> - </GSI-acquisition-context-field> - <GSI-error_collection-field multiplexed="false" name="error_collection"> - <custom-type-array data-type-name-ref="GSI_ERROR"> - <custom-constant-dim constant-name-ref="MAX_NUMBER_OF_ERROR_MESSAGES"/> - </custom-type-array> - </GSI-error_collection-field> - </acquisition> - </device-data> - <global-data> - <configuration> - <!-- The name of the timing receiver --> - <GSI-timing-receiver-name-field name="deviceNameTimingReceiver"> - <array type="char"> - <!-- The number of the timing receiver --> - <variable-dim/> - </array> - </GSI-timing-receiver-name-field> - </configuration> - </global-data> - </data> - <actions> - <set-server-action implementation="default" name="InitSetAction"/> - <set-server-action implementation="default" name="ResetSetAction"/> - <set-server-action implementation="default" name="SettingSetAction"/> - <set-server-action implementation="default" name="PowerSetAction"/> - <get-server-action implementation="default" name="PowerGetAction"/> - <get-server-action implementation="default" name="SettingGetAction"/> - <get-server-action implementation="default" name="AcquisitionGetAction"/> - <get-server-action implementation="default" name="StatusGetAction"/> - <get-server-action implementation="default" name="VersionGetAction"/> - <get-server-action implementation="default" name="ModuleStatusGetAction"/> - </actions> - -</equipment-model> \ No newline at end of file diff --git a/silecs-codegen/src/xml/test/fesa/emptyTemplateFESA300.xml b/silecs-codegen/src/xml/test/fesa/emptyTemplate.xml similarity index 67% rename from silecs-codegen/src/xml/test/fesa/emptyTemplateFESA300.xml rename to silecs-codegen/src/xml/test/fesa/emptyTemplate.xml index b6c3044..04ff772 100644 --- a/silecs-codegen/src/xml/test/fesa/emptyTemplateFESA300.xml +++ b/silecs-codegen/src/xml/test/fesa/emptyTemplate.xml @@ -6,10 +6,8 @@ <class-minor-version>1</class-minor-version> <class-tiny-version>0</class-tiny-version> <type>Final</type> - <state>development</state> <description>An Empty design</description> <fesa-version>0.9.0</fesa-version> - <repository-path>undefined</repository-path> </information> <ownership> <responsible name="Undefined" /> @@ -55,6 +53,51 @@ </bypass-action-item> </diagnostic-property> </setting> + <acquisition> + <metrics-property visibility="expert" name="Metrics" on-change="false" subscribable="false" cycle-bound="false"> + <description>Generic property to retrieve deploy-unit's metrics</description> + <cmw-server name="cmwServer" direction="OUT"> + <array type="char"> + <dim>160</dim> + </array> + </cmw-server> + <concurrency-layers name="concurrencyLayers" direction="OUT"> + <array type="char"> + <dim>2000</dim> + </array> + </concurrency-layers> + <event-sources name="eventSources" direction="OUT"> + <array type="char"> + <dim>2000</dim> + </array> + </event-sources> + <logical-events name="logicalEvents" direction="OUT"> + <array type="char"> + <dim>2000</dim> + </array> + </logical-events> + <notification-queue name="notificationQueue" direction="OUT"> + <array type="char"> + <dim>50</dim> + </array> + </notification-queue> + <ondemand-queues name="ondemandQueues" direction="OUT"> + <array type="char"> + <dim>2000</dim> + </array> + </ondemand-queues> + <rt-actions name="rtActions" direction="OUT"> + <array type="char"> + <dim>5000</dim> + </array> + </rt-actions> + <server-actions name="serverActions" direction="OUT"> + <array type="char"> + <dim>5000</dim> + </array> + </server-actions> + </metrics-property> + </acquisition> </global-interface> </interface> <builtin-types> diff --git a/silecs-codegen/src/xml/test/fesa/generateFesaDesignTest.py b/silecs-codegen/src/xml/test/fesa/generateFesaDesignTest.py index 0928273..71e5003 100644 --- a/silecs-codegen/src/xml/test/fesa/generateFesaDesignTest.py +++ b/silecs-codegen/src/xml/test/fesa/generateFesaDesignTest.py @@ -17,8 +17,9 @@ import sys from test.testBase import * -import fesa.fesa_3_0_0.generateFesaDesign -import fesa.fesa_3_1_0.generateFesaDesign +import fesa.fesa_7_3_0.generateFesaDesign + +fesa_version = "7.3.0" import libxml2 import unittest @@ -51,41 +52,15 @@ simpleSilecsDesign = '''<?xml version="1.0" encoding="UTF-8"?> </SILECS-Design>''' simpleSilecsDesignRoot = libxml2.parseDoc(simpleSilecsDesign) -def testFillXML_EmptyTemplate_3_0_0(generator): - fesaRoot = libxml2.parseFile("test/fesa/emptyTemplateFESA300.xml") - generator.fillXML('3.0.0', 'MyClass', fesaRoot,simpleSilecsDesignRoot,logTopics={'errorlog': True}) - assertTrue( fesaRoot.xpathEval('/equipment-model/events') != None ) - assertTrue( fesaRoot.xpathEval('/equipment-model/scheduling-units') != None ) - - -def testFillXML_GSITemplate_3_0_0(generator): - fesaRoot = libxml2.parseFile("test/fesa/GSIClassTemplateFESA300.xml") - generator.fillXML('3.0.0', 'MyClass', fesaRoot,simpleSilecsDesignRoot,logTopics={'errorlog': True}) - - assertTrue( fesaRoot.xpathEval('/equipment-model/events') != None ) - assertTrue( fesaRoot.xpathEval('/equipment-model/scheduling-units') != None ) - - acquisition = fesaRoot.xpathEval('/equipment-model/interface/device-interface/acquisition')[0] - firstGSIAcqProp = acquisition.xpathEval('GSI-Acquisition-Property')[0] - assertTrue( acquisition.xpathEval('*')[0].prop('name') != firstGSIAcqProp.prop('name') ) # check if generated at right position - assertEqual( firstGSIAcqProp.prop('name'),"Acquisition" ) - firstGSIAcqProp.shellPrintNode() #for debug - valueItem = firstGSIAcqProp.xpathEval('value-item')[0] - assertTrue( valueItem != None ) - - setting = fesaRoot.xpathEval('/equipment-model/interface/device-interface/setting')[0] - firstGSISettingProp = setting.xpathEval('GSI-Setting-Property')[0] - assertTrue( acquisition.xpathEval('*')[0].prop('name') != firstGSISettingProp.prop('name') ) # check if generated at right position - -def testFillXML_EmptyTemplate_3_1_0(generator): - fesaRoot = libxml2.parseFile("test/fesa/emptyTemplateFESA300.xml") - generator.fillXML('3.1.0', 'MyClass', fesaRoot,simpleSilecsDesignRoot,logTopics={'errorlog': True}) +def testFillXML_EmptyTemplate(generator): + fesaRoot = libxml2.parseFile("test/fesa/emptyTemplate.xml") + generator.fillXML(fesa_version, 'MyClass', fesaRoot,simpleSilecsDesignRoot,logTopics={'errorlog': True}) assertTrue( fesaRoot.xpathEval('/equipment-model/events') != None ) assertTrue( fesaRoot.xpathEval('/equipment-model/scheduling-units') != None ) -def testFillXML_GSITemplate_3_1_0(generator): - fesaRoot = libxml2.parseFile("test/fesa/GSIClassTemplateFESA300.xml") - generator.fillXML('3.1.0', 'MyClass', fesaRoot,simpleSilecsDesignRoot,logTopics={'errorlog': True}) +def testFillXML_GSITemplate(generator): + fesaRoot = libxml2.parseFile("test/fesa/GSIClassTemplate.xml") + generator.fillXML(fesa_version, 'MyClass', fesaRoot,simpleSilecsDesignRoot,logTopics={'errorlog': True}) assertTrue( fesaRoot.xpathEval('/equipment-model/events') != None ) assertTrue( fesaRoot.xpathEval('/equipment-model/scheduling-units') != None ) @@ -101,34 +76,34 @@ def testFillXML_GSITemplate_3_1_0(generator): firstGSISettingProp = setting.xpathEval('GSI-Setting-Property')[0] assertTrue( acquisition.xpathEval('*')[0].prop('name') != firstGSISettingProp.prop('name') ) # check if generated at right position -def testFillXML_GSITemplate_3_1_0_Exceptions(generator): - fesaRoot = libxml2.parseFile("test/fesa/GSIClassTemplateFESA300.xml") +def testFillXML_GSITemplate_Exceptions(generator): + fesaRoot = libxml2.parseFile("test/fesa/GSIClassTemplate.xml") myRoot = simpleSilecsDesignRoot commandBlock = myRoot.xpathEval('/SILECS-Design/SILECS-Class/Command-Block')[0] commandBlock.setProp("name", "Init") try: - generator.fillXML('3.1.0', 'MyClass', fesaRoot,myRoot,logTopics={'errorlog': True}) + generator.fillXML(fesa_version, 'MyClass', fesaRoot,myRoot,logTopics={'errorlog': True}) except: print("test passed") else: - print("Test Failed: testFillXML_GSITemplate_3_1_0_Exceptions - Init \n No Exception was thrown") + print("Test Failed: testFillXML_GSITemplateExceptions - Init \n No Exception was thrown") sys.exit(1) commandBlock.setProp("name", "Reset") try: - generator.fillXML('3.1.0', 'MyClass', fesaRoot,myRoot,logTopics={'errorlog': True}) + generator.fillXML(fesa_version, 'MyClass', fesaRoot,myRoot,logTopics={'errorlog': True}) except: print("test passed") else: - print("Test Failed: testFillXML_GSITemplate_3_1_0_Exceptions - Reset \n No Exception was thrown") + print("Test Failed: testFillXML_GSITemplateExceptions - Reset \n No Exception was thrown") sys.exit(1) -def testFillXML_AllTypes_4_3_1(generator): - fesaRoot = libxml2.parseFile("test/fesa/GSIClassTemplateFESA431.xml") +def testFillXML_AllTypes(generator): + fesaRoot = libxml2.parseFile("test/fesa/GSIClassTemplate.xml") silecsRoot = libxml2.parseFile("test/AllTypesFESA.silecsdesign") - fesaRoot = generator.fillXML('4.3.0', 'MyClass', fesaRoot,silecsRoot,logTopics={'errorlog': True}) + fesaRoot = generator.fillXML(fesa_version, 'MyClass', fesaRoot,silecsRoot,logTopics={'errorlog': True}) fesaNewDocPath = "test/generated_temp/AllTypesFESA.design" fesaCompareDocPath = "test/generated_correct/AllTypesFESA.design" with open(fesaNewDocPath, 'w') as fd: @@ -138,14 +113,11 @@ def testFillXML_AllTypes_4_3_1(generator): assertFileEqual( fesaNewDocPath, fesaCompareDocPath) def runTests(): - # No need to further test that old stuff .. probably can be dropped - generator300 = fesa.fesa_3_0_0.generateFesaDesign.FESADesignGenerator3_0_0(); - testFillXML_EmptyTemplate_3_0_0(generator300) - testFillXML_GSITemplate_3_0_0(generator300) - - generator310 = fesa.fesa_3_1_0.generateFesaDesign.FESADesignGenerator3_1_0(); - testFillXML_EmptyTemplate_3_1_0(generator310) - testFillXML_GSITemplate_3_1_0(generator310) - testFillXML_AllTypes_4_3_1(generator310) - testFillXML_GSITemplate_3_1_0_Exceptions(generator310) + + # Always only test the latest supported Fesa Version + generator = fesa.fesa_7_3_0.generateFesaDesign.FESADesignGenerator7_3_0(); + testFillXML_EmptyTemplate(generator) + testFillXML_GSITemplate(generator) + testFillXML_AllTypes(generator) + testFillXML_GSITemplate_Exceptions(generator) allTestsOk() diff --git a/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design b/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design index 74c372e..2483417 100644 --- a/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design +++ b/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design @@ -1,37 +1,35 @@ <?xml version="1.0" encoding="UTF-8"?> <equipment-model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../design-gsi.xsd"> - <information> - <class-name>MyClass</class-name> - <class-major-version>0</class-major-version> - <class-minor-version>1</class-minor-version> - <class-tiny-version>0</class-tiny-version> - <type>Final</type> - <state>development</state> - <description>An empty design with GSI-specific standard properties</description> - <fesa-version>4.3.0</fesa-version> - <repository-path>undefined</repository-path> - </information> - <ownership> - <responsible name="CSCO"/> - <creator login="schwinn"/> - </ownership> + <information> + <class-name>MyClass</class-name> + <class-major-version>0</class-major-version> + <class-minor-version>1</class-minor-version> + <class-tiny-version>0</class-tiny-version> + <type>Final</type> + <description>An empty design with GSI-specific standard properties</description> + <fesa-version>7.3.0</fesa-version> + </information> + <ownership> + <responsible name="ACO"/> + <creator login="schwinn"/> + </ownership> <interface> <device-interface> <setting> <command-property name="MyWOBlockProp" visibility="development" multiplexed="false"><value-item name="WO_dt_fesa" direction="IN"><array type="double"><dim>10</dim></array><data-field-ref field-name-ref="WO_dt_fesa"/></value-item><value-item name="WO_real_fesa" direction="IN"><array type="float"><dim>10</dim></array><data-field-ref field-name-ref="WO_real_fesa"/></value-item><value-item name="WO_dint_fesa" direction="IN"><array type="int32_t"><dim>10</dim></array><data-field-ref field-name-ref="WO_dint_fesa"/></value-item><value-item name="WO_int_fesa" direction="IN"><array type="int16_t"><dim>10</dim></array><data-field-ref field-name-ref="WO_int_fesa"/></value-item><value-item name="WO_dword_fesa" direction="IN"><array type="int64_t"><dim>10</dim></array><data-field-ref field-name-ref="WO_dword_fesa"/></value-item><value-item name="WO_word_fesa" direction="IN"><array type="int32_t"><dim>10</dim></array><data-field-ref field-name-ref="WO_word_fesa"/></value-item><value-item name="WO_byte_fesa" direction="IN"><array type="int16_t"><dim>10</dim></array><data-field-ref field-name-ref="WO_byte_fesa"/></value-item><value-item name="WO_char_fesa" direction="IN"><array type="int8_t"><dim>10</dim></array><data-field-ref field-name-ref="WO_char_fesa"/></value-item><value-item name="WO_date_fesa" direction="IN"><array type="double"><dim>10</dim></array><data-field-ref field-name-ref="WO_date_fesa"/></value-item><value-item name="WO_string_fesa" direction="IN"><array2D type="char"><dim1>10</dim1><dim2>64</dim2></array2D><data-field-ref field-name-ref="WO_string_fesa"/></value-item><value-item name="WO_float32_fesa" direction="IN"><array type="float"><dim>10</dim></array><data-field-ref field-name-ref="WO_float32_fesa"/></value-item><value-item name="WO_uint32_fesa" direction="IN"><array type="int64_t"><dim>10</dim></array><data-field-ref field-name-ref="WO_uint32_fesa"/></value-item><value-item name="WO_int32_fesa" direction="IN"><array type="int32_t"><dim>10</dim></array><data-field-ref field-name-ref="WO_int32_fesa"/></value-item><value-item name="WO_uint16_fesa" direction="IN"><array type="int32_t"><dim>10</dim></array><data-field-ref field-name-ref="WO_uint16_fesa"/></value-item><value-item name="WO_int16_fesa" direction="IN"><array type="int16_t"><dim>10</dim></array><data-field-ref field-name-ref="WO_int16_fesa"/></value-item><value-item name="WO_uint8_fesa" direction="IN"><array type="int16_t"><dim>10</dim></array><data-field-ref field-name-ref="WO_uint8_fesa"/></value-item><value-item name="WO_int8" direction="IN"><array type="int8_t"><dim>10</dim></array><data-field-ref field-name-ref="WO_int8"/></value-item><set-action><server-action-ref server-action-name-ref="SetMyWOBlockProp"/></set-action></command-property><GSI-Init-Property multiplexed="false" name="Init" visibility="operational"> - <description>Control property, used to initialize the device with default values from the device instantiation file</description> + <description>Control property, used to initialize the device with default values from the device instantiation file</description> <set-action partial-setting="true" transaction="true"> <server-action-ref server-action-name-ref="InitSetAction"/> </set-action> </GSI-Init-Property> <GSI-Reset-Property multiplexed="false" name="Reset" visibility="operational"> - <description>Control property, used to reset the device while keeping the persistent data.</description> + <description>Control property, used to reset the device while keeping the persistent data.</description> <set-action partial-setting="true" transaction="true"> <server-action-ref server-action-name-ref="ResetSetAction"/> </set-action> </GSI-Reset-Property> <GSI-Setting-Property multiplexed="false" name="Setting" visibility="operational"> - <description>Used for setting hardware parameters for controlling the device.</description> + <description>Used for setting hardware parameters for controlling the device.</description> <update-flag-item direction="OUT" name="updateFlags" optional="true"> <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/> </update-flag-item> @@ -50,7 +48,7 @@ <GSI-Setting-Property name="MyRWBlockProp" visibility="development" multiplexed="false"><value-item name="RW2_dt_fesa" direction="INOUT"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_dt_fesa"/></value-item><value-item name="RW2_real_fesa" direction="INOUT"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_real_fesa"/></value-item><value-item name="RW2_dint_fesa" direction="INOUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_dint_fesa"/></value-item><value-item name="RW2_int_fesa" direction="INOUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_int_fesa"/></value-item><value-item name="RW2_dword_fesa" direction="INOUT"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_dword_fesa"/></value-item><value-item name="RW2_word_fesa" direction="INOUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_word_fesa"/></value-item><value-item name="RW2_byte_fesa" direction="INOUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_byte_fesa"/></value-item><value-item name="RW2_char_fesa" direction="INOUT"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_char_fesa"/></value-item><value-item name="RW2_date_fesa" direction="INOUT"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_date_fesa"/></value-item><value-item name="RW2_float32_fesa" direction="INOUT"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_float32_fesa"/></value-item><value-item name="RW2_uint32_fesa" direction="INOUT"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_uint32_fesa"/></value-item><value-item name="RW2_int32_fesa" direction="INOUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_int32_fesa"/></value-item><value-item name="RW2_uint16_fesa" direction="INOUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_uint16_fesa"/></value-item><value-item name="RW2_int16_fesa" direction="INOUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_int16_fesa"/></value-item><value-item name="RW2_uint8_fesa" direction="INOUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_uint8_fesa"/></value-item><value-item name="RW2_int8" direction="INOUT"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_int8"/></value-item><value-item name="RW_dt_fesa" direction="INOUT"><scalar type="double"/><data-field-ref field-name-ref="RW_dt_fesa"/></value-item><value-item name="RW_real_fesa" direction="INOUT"><scalar type="float"/><data-field-ref field-name-ref="RW_real_fesa"/></value-item><value-item name="RW_dint_fesa" direction="INOUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RW_dint_fesa"/></value-item><value-item name="RW_int_fesa" direction="INOUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RW_int_fesa"/></value-item><value-item name="RW_dword_fesa" direction="INOUT"><scalar type="int64_t"/><data-field-ref field-name-ref="RW_dword_fesa"/></value-item><value-item name="RW_word_fesa" direction="INOUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RW_word_fesa"/></value-item><value-item name="RW_byte_fesa" direction="INOUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RW_byte_fesa"/></value-item><value-item name="RW_char_fesa" direction="INOUT"><scalar type="int8_t"/><data-field-ref field-name-ref="RW_char_fesa"/></value-item><value-item name="RW_date_fesa" direction="INOUT"><scalar type="double"/><data-field-ref field-name-ref="RW_date_fesa"/></value-item><value-item name="RW_string_fesa" direction="INOUT"><array type="char"><dim>64</dim></array><data-field-ref field-name-ref="RW_string_fesa"/></value-item><value-item name="RW_float32_fesa" direction="INOUT"><scalar type="float"/><data-field-ref field-name-ref="RW_float32_fesa"/></value-item><value-item name="RW_uint32_fesa" direction="INOUT"><scalar type="int64_t"/><data-field-ref field-name-ref="RW_uint32_fesa"/></value-item><value-item name="RW_int32_fesa" direction="INOUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RW_int32_fesa"/></value-item><value-item name="RW_uint16_fesa" direction="INOUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RW_uint16_fesa"/></value-item><value-item name="RW_int16_fesa" direction="INOUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RW_int16_fesa"/></value-item><value-item name="RW_uint8_fesa" direction="INOUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RW_uint8_fesa"/></value-item><value-item name="RW_int8" direction="INOUT"><scalar type="int8_t"/><data-field-ref field-name-ref="RW_int8"/></value-item><update-flag-item direction="OUT" name="updateFlags" optional="true"><builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/></update-flag-item><cycle-name-item direction="OUT" name="cycleName" optional="true"><array type="char"><dim>32</dim></array></cycle-name-item><set-action><server-action-ref server-action-name-ref="SetMyRWBlockProp"/></set-action><get-action><server-action-ref server-action-name-ref="GetMyRWBlockProp"/></get-action></GSI-Setting-Property><GSI-Power-Property multiplexed="false" name="Power" visibility="operational"> <description>Used to turn the power of a device on or off.</description> <update-flag-item direction="OUT" name="updateFlags" optional="true"> - <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/> + <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/> </update-flag-item> <cycle-name-item direction="OUT" name="cycleName" optional="true"> <array type="char"> @@ -71,9 +69,9 @@ </GSI-Power-Property> </setting> <acquisition> - <GSI-Status-Property multiplexed="false" name="Status" on-change="true" subscribable="true" visibility="operational"> + <GSI-Status-Property cycle-bound="false" name="Status" on-change="true" subscribable="true" visibility="operational"> <description>Used to display the (cycle independent) overall status of the device.</description> - <description>Detailed status information may be additionally added to this property.</description> + <description>Detailed status information may be additionally added to this property.</description> <acq-stamp-item direction="OUT" name="acqStamp"> <scalar type="int64_t"/> </acq-stamp-item> @@ -97,7 +95,7 @@ <data-field-ref field-name-ref="status"/> </status-item> <detailed-status-item direction="OUT" name="detailedStatus"> - <description>Detailed status should consist of an array of boolean values considered as detailed status information as well as a + <description>Detailed status should consist of an array of boolean values considered as detailed status information as well as a corresponding string array containing keys to illustrate the meaning of the detailed status information.</description> <array type="bool"> <custom-constant-dim constant-name-ref="DETAILED_STATUS_SIZE"/> @@ -105,7 +103,7 @@ corresponding string array containing keys to illustrate the meaning of the deta <data-field-ref field-name-ref="detailedStatus"/> </detailed-status-item> <detailed-status-labels-item direction="OUT" name="detailedStatus_labels"> - <description>Labels of detailed status bits.</description> + <description>Labels of detailed status bits.</description> <array2D type="char"> <custom-constant-dim1 constant-name-ref="DETAILED_STATUS_SIZE"/> <custom-constant-dim2 constant-name-ref="MAX_DETAILED_STATUS_LABEL_LENGTH"/> @@ -113,14 +111,14 @@ corresponding string array containing keys to illustrate the meaning of the deta <data-field-ref field-name-ref="detailedStatus_labels"/> </detailed-status-labels-item> <detailed-status-severity-item direction="OUT" name="detailedStatus_severity"> - <description>Severities of the detailed status bits</description> + <description>Severities of the detailed status bits</description> <custom-type-array data-type-name-ref="DETAILED_STATUS_SEVERITY"> <custom-constant-dim constant-name-ref="DETAILED_STATUS_SIZE"/> </custom-type-array> <data-field-ref field-name-ref="detailedStatus_severity"/> </detailed-status-severity-item> <powerState-item direction="OUT" name="powerState"> - <description>Power state of the device (ON, OFF)</description> + <description>Power state of the device (ON, OFF)</description> <custom-type-scalar data-type-name-ref="DEVICE_POWER_STATE"/> <data-field-ref field-name-ref="powerState"/> @@ -130,17 +128,17 @@ corresponding string array containing keys to illustrate the meaning of the deta <data-field-ref field-name-ref="control"/> </control-item> <interlock-item direction="OUT" name="interlock"> - <description>Interlock state of the device</description> + <description>Interlock state of the device</description> <scalar type="bool"/> <data-field-ref field-name-ref="interlock"/> </interlock-item> <opReady-item direction="OUT" name="opReady"> - <description>Contains the devices state regarding operation</description> + <description>Contains the devices state regarding operation</description> <scalar type="bool"/> <data-field-ref field-name-ref="opReady"/> </opReady-item> <modulesReady-item direction="OUT" name="modulesReady"> - <description>Contains the devices module state</description> + <description>Contains the devices module state</description> <scalar type="bool"/> <data-field-ref field-name-ref="modulesReady"/> </modulesReady-item> @@ -170,40 +168,40 @@ corresponding string array containing keys to illustrate the meaning of the deta <error_collection-field-ref field-name-ref="error_collection"/> </error_collection-item> </GSI-Status-Property> - <GSI-ModuleStatus-Property visibility="development" subscribable="true" name="ModuleStatus" multiplexed="false"> - <description>Gives detailed information on the state of 3rd party hardware and software components which are required to operate the device.</description> - <acq-stamp-item name="acqStamp" direction="OUT"> - <scalar type="int64_t"/> - </acq-stamp-item> - <update-flag-item optional="true" name="updateFlags" direction="OUT"> - <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/> - </update-flag-item> - <cycle-name-item optional="true" name="cycleName" direction="OUT"> - <array type="char"> - <dim>32</dim> - </array> - </cycle-name-item> - <cycle-stamp-item optional="true" name="cycleStamp" direction="OUT"> - <scalar type="int64_t"/> - </cycle-stamp-item> - <get-action> - <server-action-ref server-action-name-ref="ModuleStatusGetAction"/> - </get-action> - <module-status-item name="moduleStatus" direction="OUT"> - <custom-type-array data-type-name-ref="MODULE_STATUS"> - <custom-constant-dim constant-name-ref="MODULE_STATUS_SIZE"/> - </custom-type-array> - <data-field-ref field-name-ref="moduleStatus"/> - </module-status-item> - <module-status-labels-item name="moduleStatus_labels" direction="OUT"> - <array2D type="char"> - <custom-constant-dim1 constant-name-ref="MODULE_STATUS_SIZE"/> - <custom-constant-dim2 constant-name-ref="MAX_MODULE_STATUS_LABEL_LENGTH"/> - </array2D> - <data-field-ref field-name-ref="moduleStatus_labels"/> - </module-status-labels-item> + <GSI-ModuleStatus-Property visibility="operational" subscribable="true" name="ModuleStatus" cycle-bound="false"> + <description>Gives detailed information on the state of 3rd party hardware and software components which are required to operate the device.</description> + <acq-stamp-item name="acqStamp" direction="OUT"> + <scalar type="int64_t"/> + </acq-stamp-item> + <update-flag-item optional="true" name="updateFlags" direction="OUT"> + <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/> + </update-flag-item> + <cycle-name-item optional="true" name="cycleName" direction="OUT"> + <array type="char"> + <dim>32</dim> + </array> + </cycle-name-item> + <cycle-stamp-item optional="true" name="cycleStamp" direction="OUT"> + <scalar type="int64_t"/> + </cycle-stamp-item> + <get-action> + <server-action-ref server-action-name-ref="ModuleStatusGetAction"/> + </get-action> + <module-status-item name="moduleStatus" direction="OUT"> + <custom-type-array data-type-name-ref="MODULE_STATUS"> + <custom-constant-dim constant-name-ref="MODULE_STATUS_SIZE"/> + </custom-type-array> + <data-field-ref field-name-ref="moduleStatus"/> + </module-status-item> + <module-status-labels-item name="moduleStatus_labels" direction="OUT"> + <array2D type="char"> + <custom-constant-dim1 constant-name-ref="MODULE_STATUS_SIZE"/> + <custom-constant-dim2 constant-name-ref="MAX_MODULE_STATUS_LABEL_LENGTH"/> + </array2D> + <data-field-ref field-name-ref="moduleStatus_labels"/> + </module-status-labels-item> </GSI-ModuleStatus-Property> - <GSI-Acquisition-Property multiplexed="true" name="Acquisition" on-change="true" subscribable="true" visibility="operational"> + <GSI-Acquisition-Property cycle-bound="true" name="Acquisition" on-change="true" subscribable="true" visibility="operational"> <description>Used for returning acquisition data which is retrieved from the hardware.</description> <acq-stamp-item direction="OUT" name="acqStamp"> <scalar type="int64_t"/> @@ -256,7 +254,7 @@ corresponding string array containing keys to illustrate the meaning of the deta <acquisition-context-field-ref field-name-ref="acquisitionContext"/> </acquisition-context-item> </GSI-Acquisition-Property> - <GSI-Acquisition-Property name="MyROBlockProp" visibility="development" subscribable="true" multiplexed="false" on-change="true"><value-item name="RO_dt_fesa" direction="OUT"><scalar type="double"/><data-field-ref field-name-ref="RO_dt_fesa"/></value-item><value-item name="RO_real_fesa" direction="OUT"><scalar type="float"/><data-field-ref field-name-ref="RO_real_fesa"/></value-item><value-item name="RO_dint_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_dint_fesa"/></value-item><value-item name="RO_int_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_int_fesa"/></value-item><value-item name="RO_dword_fesa" direction="OUT"><scalar type="int64_t"/><data-field-ref field-name-ref="RO_dword_fesa"/></value-item><value-item name="RO_word_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_word_fesa"/></value-item><value-item name="RO_byte_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_byte_fesa"/></value-item><value-item name="RO_char_fesa" direction="OUT"><scalar type="int8_t"/><data-field-ref field-name-ref="RO_char_fesa"/></value-item><value-item name="RO_date_fesa" direction="OUT"><scalar type="double"/><data-field-ref field-name-ref="RO_date_fesa"/></value-item><value-item name="RO_string_fesa" direction="OUT"><array type="char"><dim>64</dim></array><data-field-ref field-name-ref="RO_string_fesa"/></value-item><value-item name="RO_float32_fesa" direction="OUT"><scalar type="float"/><data-field-ref field-name-ref="RO_float32_fesa"/></value-item><value-item name="RO_uint32_fesa" direction="OUT"><scalar type="int64_t"/><data-field-ref field-name-ref="RO_uint32_fesa"/></value-item><value-item name="RO_int32_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_int32_fesa"/></value-item><value-item name="RO_uint16_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_uint16_fesa"/></value-item><value-item name="RO_int16_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_int16_fesa"/></value-item><value-item name="RO_uint8_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_uint8_fesa"/></value-item><value-item name="RO_int8" direction="OUT"><scalar type="int8_t"/><data-field-ref field-name-ref="RO_int8"/></value-item><acq-stamp-item direction="OUT" name="acqStamp"><scalar type="int64_t"/></acq-stamp-item><update-flag-item direction="OUT" name="updateFlags" optional="true"><builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/></update-flag-item><cycle-name-item direction="OUT" name="cycleName" optional="true"><array type="char"><dim>32</dim></array></cycle-name-item><cycle-stamp-item direction="OUT" name="cycleStamp" optional="true"><scalar type="int64_t"/></cycle-stamp-item><get-action><server-action-ref server-action-name-ref="GetMyROBlockProp"/></get-action><acquisition-context-item direction="OUT"><processIndex direction="OUT" name="processIndex"><scalar type="int32_t"/></processIndex><sequenceIndex direction="OUT" name="sequenceIndex"><scalar type="int32_t"/></sequenceIndex><chainIndex direction="OUT" name="chainIndex"><scalar type="int32_t"/></chainIndex><eventNumber direction="OUT" name="eventNumber"><scalar type="int32_t"/></eventNumber><timingGroupID direction="OUT" name="timingGroupID"><scalar type="int32_t"/></timingGroupID><acquisitionStamp direction="OUT" name="acquisitionStamp"><scalar type="int64_t"/></acquisitionStamp><eventStamp direction="OUT" name="eventStamp"><scalar type="int64_t"/></eventStamp><processStartStamp direction="OUT" name="processStartStamp"><scalar type="int64_t"/></processStartStamp><sequenceStartStamp direction="OUT" name="sequenceStartStamp"><scalar type="int64_t"/></sequenceStartStamp><chainStartStamp direction="OUT" name="chainStartStamp"><scalar type="int64_t"/></chainStartStamp><acquisition-context-field-ref field-name-ref="acquisitionContext"/></acquisition-context-item></GSI-Acquisition-Property><GSI-Acquisition-Property name="MyCBlockProp" visibility="development" subscribable="true" multiplexed="false" on-change="true"><value-item name="C_dt_fesa" direction="OUT"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_dt_fesa"/></value-item><value-item name="C_real_fesa" direction="OUT"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_real_fesa"/></value-item><value-item name="C_dint_fesa" direction="OUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_dint_fesa"/></value-item><value-item name="C_int_fesa" direction="OUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_int_fesa"/></value-item><value-item name="C_dword_fesa" direction="OUT"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_dword_fesa"/></value-item><value-item name="C_word_fesa" direction="OUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_word_fesa"/></value-item><value-item name="C_byte_fesa" direction="OUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_byte_fesa"/></value-item><value-item name="C_char_fesa" direction="OUT"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_char_fesa"/></value-item><value-item name="C_date_fesa" direction="OUT"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_date_fesa"/></value-item><value-item name="C_float32_fesa" direction="OUT"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_float32_fesa"/></value-item><value-item name="C_uint32_fesa" direction="OUT"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_uint32_fesa"/></value-item><value-item name="C_int32_fesa" direction="OUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_int32_fesa"/></value-item><value-item name="C_uint16_fesa" direction="OUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_uint16_fesa"/></value-item><value-item name="C_int16_fesa" direction="OUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_int16_fesa"/></value-item><value-item name="C_uint8_fesa" direction="OUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_uint8_fesa"/></value-item><value-item name="C_int8" direction="OUT"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_int8"/></value-item><acq-stamp-item direction="OUT" name="acqStamp"><scalar type="int64_t"/></acq-stamp-item><update-flag-item direction="OUT" name="updateFlags" optional="true"><builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/></update-flag-item><cycle-name-item direction="OUT" name="cycleName" optional="true"><array type="char"><dim>32</dim></array></cycle-name-item><cycle-stamp-item direction="OUT" name="cycleStamp" optional="true"><scalar type="int64_t"/></cycle-stamp-item><get-action><server-action-ref server-action-name-ref="GetMyCBlockProp"/></get-action><acquisition-context-item direction="OUT"><processIndex direction="OUT" name="processIndex"><scalar type="int32_t"/></processIndex><sequenceIndex direction="OUT" name="sequenceIndex"><scalar type="int32_t"/></sequenceIndex><chainIndex direction="OUT" name="chainIndex"><scalar type="int32_t"/></chainIndex><eventNumber direction="OUT" name="eventNumber"><scalar type="int32_t"/></eventNumber><timingGroupID direction="OUT" name="timingGroupID"><scalar type="int32_t"/></timingGroupID><acquisitionStamp direction="OUT" name="acquisitionStamp"><scalar type="int64_t"/></acquisitionStamp><eventStamp direction="OUT" name="eventStamp"><scalar type="int64_t"/></eventStamp><processStartStamp direction="OUT" name="processStartStamp"><scalar type="int64_t"/></processStartStamp><sequenceStartStamp direction="OUT" name="sequenceStartStamp"><scalar type="int64_t"/></sequenceStartStamp><chainStartStamp direction="OUT" name="chainStartStamp"><scalar type="int64_t"/></chainStartStamp><acquisition-context-field-ref field-name-ref="acquisitionContext"/></acquisition-context-item></GSI-Acquisition-Property><GSI-Version-Property multiplexed="false" name="Version" on-change="false" subscribable="false" visibility="operational"> + <GSI-Acquisition-Property name="MyROBlockProp" visibility="development" subscribable="true" cycle-bound="false" on-change="true"><value-item name="RO_dt_fesa" direction="OUT"><scalar type="double"/><data-field-ref field-name-ref="RO_dt_fesa"/></value-item><value-item name="RO_real_fesa" direction="OUT"><scalar type="float"/><data-field-ref field-name-ref="RO_real_fesa"/></value-item><value-item name="RO_dint_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_dint_fesa"/></value-item><value-item name="RO_int_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_int_fesa"/></value-item><value-item name="RO_dword_fesa" direction="OUT"><scalar type="int64_t"/><data-field-ref field-name-ref="RO_dword_fesa"/></value-item><value-item name="RO_word_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_word_fesa"/></value-item><value-item name="RO_byte_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_byte_fesa"/></value-item><value-item name="RO_char_fesa" direction="OUT"><scalar type="int8_t"/><data-field-ref field-name-ref="RO_char_fesa"/></value-item><value-item name="RO_date_fesa" direction="OUT"><scalar type="double"/><data-field-ref field-name-ref="RO_date_fesa"/></value-item><value-item name="RO_string_fesa" direction="OUT"><array type="char"><dim>64</dim></array><data-field-ref field-name-ref="RO_string_fesa"/></value-item><value-item name="RO_float32_fesa" direction="OUT"><scalar type="float"/><data-field-ref field-name-ref="RO_float32_fesa"/></value-item><value-item name="RO_uint32_fesa" direction="OUT"><scalar type="int64_t"/><data-field-ref field-name-ref="RO_uint32_fesa"/></value-item><value-item name="RO_int32_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_int32_fesa"/></value-item><value-item name="RO_uint16_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_uint16_fesa"/></value-item><value-item name="RO_int16_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_int16_fesa"/></value-item><value-item name="RO_uint8_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_uint8_fesa"/></value-item><value-item name="RO_int8" direction="OUT"><scalar type="int8_t"/><data-field-ref field-name-ref="RO_int8"/></value-item><acq-stamp-item direction="OUT" name="acqStamp"><scalar type="int64_t"/></acq-stamp-item><update-flag-item direction="OUT" name="updateFlags" optional="true"><builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/></update-flag-item><cycle-name-item direction="OUT" name="cycleName" optional="true"><array type="char"><dim>32</dim></array></cycle-name-item><cycle-stamp-item direction="OUT" name="cycleStamp" optional="true"><scalar type="int64_t"/></cycle-stamp-item><get-action><server-action-ref server-action-name-ref="GetMyROBlockProp"/></get-action><acquisition-context-item direction="OUT"><processIndex direction="OUT" name="processIndex"><scalar type="int32_t"/></processIndex><sequenceIndex direction="OUT" name="sequenceIndex"><scalar type="int32_t"/></sequenceIndex><chainIndex direction="OUT" name="chainIndex"><scalar type="int32_t"/></chainIndex><eventNumber direction="OUT" name="eventNumber"><scalar type="int32_t"/></eventNumber><timingGroupID direction="OUT" name="timingGroupID"><scalar type="int32_t"/></timingGroupID><acquisitionStamp direction="OUT" name="acquisitionStamp"><scalar type="int64_t"/></acquisitionStamp><eventStamp direction="OUT" name="eventStamp"><scalar type="int64_t"/></eventStamp><processStartStamp direction="OUT" name="processStartStamp"><scalar type="int64_t"/></processStartStamp><sequenceStartStamp direction="OUT" name="sequenceStartStamp"><scalar type="int64_t"/></sequenceStartStamp><chainStartStamp direction="OUT" name="chainStartStamp"><scalar type="int64_t"/></chainStartStamp><acquisition-context-field-ref field-name-ref="acquisitionContext"/></acquisition-context-item></GSI-Acquisition-Property><GSI-Acquisition-Property name="MyCBlockProp" visibility="development" subscribable="true" cycle-bound="false" on-change="true"><value-item name="C_dt_fesa" direction="OUT"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_dt_fesa"/></value-item><value-item name="C_real_fesa" direction="OUT"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_real_fesa"/></value-item><value-item name="C_dint_fesa" direction="OUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_dint_fesa"/></value-item><value-item name="C_int_fesa" direction="OUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_int_fesa"/></value-item><value-item name="C_dword_fesa" direction="OUT"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_dword_fesa"/></value-item><value-item name="C_word_fesa" direction="OUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_word_fesa"/></value-item><value-item name="C_byte_fesa" direction="OUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_byte_fesa"/></value-item><value-item name="C_char_fesa" direction="OUT"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_char_fesa"/></value-item><value-item name="C_date_fesa" direction="OUT"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_date_fesa"/></value-item><value-item name="C_float32_fesa" direction="OUT"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_float32_fesa"/></value-item><value-item name="C_uint32_fesa" direction="OUT"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_uint32_fesa"/></value-item><value-item name="C_int32_fesa" direction="OUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_int32_fesa"/></value-item><value-item name="C_uint16_fesa" direction="OUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_uint16_fesa"/></value-item><value-item name="C_int16_fesa" direction="OUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_int16_fesa"/></value-item><value-item name="C_uint8_fesa" direction="OUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_uint8_fesa"/></value-item><value-item name="C_int8" direction="OUT"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_int8"/></value-item><acq-stamp-item direction="OUT" name="acqStamp"><scalar type="int64_t"/></acq-stamp-item><update-flag-item direction="OUT" name="updateFlags" optional="true"><builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/></update-flag-item><cycle-name-item direction="OUT" name="cycleName" optional="true"><array type="char"><dim>32</dim></array></cycle-name-item><cycle-stamp-item direction="OUT" name="cycleStamp" optional="true"><scalar type="int64_t"/></cycle-stamp-item><get-action><server-action-ref server-action-name-ref="GetMyCBlockProp"/></get-action><acquisition-context-item direction="OUT"><processIndex direction="OUT" name="processIndex"><scalar type="int32_t"/></processIndex><sequenceIndex direction="OUT" name="sequenceIndex"><scalar type="int32_t"/></sequenceIndex><chainIndex direction="OUT" name="chainIndex"><scalar type="int32_t"/></chainIndex><eventNumber direction="OUT" name="eventNumber"><scalar type="int32_t"/></eventNumber><timingGroupID direction="OUT" name="timingGroupID"><scalar type="int32_t"/></timingGroupID><acquisitionStamp direction="OUT" name="acquisitionStamp"><scalar type="int64_t"/></acquisitionStamp><eventStamp direction="OUT" name="eventStamp"><scalar type="int64_t"/></eventStamp><processStartStamp direction="OUT" name="processStartStamp"><scalar type="int64_t"/></processStartStamp><sequenceStartStamp direction="OUT" name="sequenceStartStamp"><scalar type="int64_t"/></sequenceStartStamp><chainStartStamp direction="OUT" name="chainStartStamp"><scalar type="int64_t"/></chainStartStamp><acquisition-context-field-ref field-name-ref="acquisitionContext"/></acquisition-context-item></GSI-Acquisition-Property><GSI-Version-Property cycle-bound="false" name="Version" on-change="false" subscribable="false" visibility="operational"> <description>Returns the current software and hardware versions of a piece of equipment.</description> <acq-stamp-item direction="OUT" name="acqStamp"> <scalar type="int64_t"/> @@ -301,13 +299,13 @@ corresponding string array containing keys to illustrate the meaning of the deta <scalar type="bool"/> </mode-item> <host-item direction="INOUT" name="hostName"> - <description>Host of the FESA class</description> + <description>Host of the FESA class</description> <array type="char"> <dim>32</dim> </array> </host-item> <port-item direction="INOUT" name="portNumber"> - <description>Port used by the FESA class</description> + <description>Port used by the FESA class</description> <scalar type="int32_t"/> </port-item> <config-item direction="IN" name="requestConfig"> @@ -335,7 +333,7 @@ corresponding string array containing keys to illustrate the meaning of the deta </diagnostic-property> </setting> <acquisition> - <GSI-DeviceDescription-Property multiplexed="false" name="DeviceDescription" on-change="false" subscribable="false" visibility="operational"> + <GSI-DeviceDescription-Property cycle-bound="false" name="DeviceDescription" on-change="false" subscribable="false" visibility="operational"> <timing-info-item direction="OUT" name="deviceNameTimingReceiver"> <array type="char"> <variable-dim/> @@ -369,7 +367,7 @@ corresponding string array containing keys to illustrate the meaning of the deta </global-interface> </interface> <builtin-types> - <notification-update-enum name="NOTIFICATION_UPDATE"> + <notification-update-enum name="NOTIFICATION_UPDATE"> <IMMEDIATE access="RO" symbol="IMMEDIATE" value="1"/> <SET access="RO" symbol="SET" value="2"/> </notification-update-enum> @@ -391,11 +389,11 @@ corresponding string array containing keys to illustrate the meaning of the deta <b14 name="LOCAL_CONNECTION_TRACKING"/> </diag-fwk-topic> <fault-severity name="FaultSeverity"> - <description>Enumeration listing the available fault severities used by the fault fields</description> - <INFO access="RO" meaning="NONE" value="0" symbol="INFO"/> - <WARNING access="RO" meaning="WARNING" value="1" symbol="WARNING"/> - <ERROR access="RO" meaning="ERROR" value="2" symbol="ERROR"/> - <CRITICAL access="RO" meaning="ERROR" value="3" symbol="CRITICAL"/> + <description>Enumeration listing the available fault severities used by the fault fields</description> + <INFO access="RO" meaning="NONE" value="0" symbol="INFO"/> + <WARNING access="RO" meaning="WARNING" value="1" symbol="WARNING"/> + <ERROR access="RO" meaning="ERROR" value="2" symbol="ERROR"/> + <CRITICAL access="RO" meaning="ERROR" value="3" symbol="CRITICAL"/> </fault-severity> </builtin-types> @@ -537,46 +535,46 @@ corresponding string array containing keys to illustrate the meaning of the deta </struct-item> </struct> <struct name="GSI_ACQ_CONTEXT"><description>WhiteRabbit event specific acquisition information</description> - <struct-item name="processIndex"> - <description>Used in order to index process-multiplexed data</description> - <scalar type="int32_t"/> - </struct-item> - <struct-item name="sequenceIndex"> - <description>Used in order to index sequence-multiplexed data</description> - <scalar type="int32_t"/> - </struct-item> - <struct-item name="chainIndex"> - <description>Refers to a specific beam production chain</description> - <scalar type="int32_t"/> - </struct-item> - <struct-item name="eventNumber"> - <description>The number of the event describes it's type</description> - <scalar type="int32_t"/> - </struct-item> - <struct-item name="timingGroupID"> - <description>ID of the timing group for which the event is relevant</description> - <scalar type="int32_t"/> - </struct-item> - <struct-item name="acquisitionStamp"> - <description>The acquisition stamp is used to indicate when a measurement was done</description> - <scalar type="int64_t"/> - </struct-item> - <struct-item name="eventStamp"> - <description>The event stamp is used to indicate when WhiteRabbit event was triggered on the Timing Receiver</description> - <scalar type="int64_t"/> - </struct-item> - <struct-item name="processStartStamp"> - <description>The process start stamp indicates when the first event of the current process was triggered</description> - <scalar type="int64_t"/> - </struct-item> - <struct-item name="sequenceStartStamp"> - <description>The sequence start stamp indicates when the first event of the current sequence was triggered</description> - <scalar type="int64_t"/> - </struct-item> - <struct-item name="chainStartStamp"> - <description>The chain start stamp indicates when the first event of the current chain was triggered</description> + <struct-item name="processIndex"> + <description>Used in order to index process-multiplexed data</description> + <scalar type="int32_t"/> + </struct-item> + <struct-item name="sequenceIndex"> + <description>Used in order to index sequence-multiplexed data</description> + <scalar type="int32_t"/> + </struct-item> + <struct-item name="chainIndex"> + <description>Refers to a specific beam production chain</description> + <scalar type="int32_t"/> + </struct-item> + <struct-item name="eventNumber"> + <description>The number of the event describes it's type</description> + <scalar type="int32_t"/> + </struct-item> + <struct-item name="timingGroupID"> + <description>ID of the timing group for which the event is relevant</description> + <scalar type="int32_t"/> + </struct-item> + <struct-item name="acquisitionStamp"> + <description>The acquisition stamp is used to indicate when a measurement was done</description> <scalar type="int64_t"/> </struct-item> + <struct-item name="eventStamp"> + <description>The event stamp is used to indicate when WhiteRabbit event was triggered on the Timing Receiver</description> + <scalar type="int64_t"/> + </struct-item> + <struct-item name="processStartStamp"> + <description>The process start stamp indicates when the first event of the current process was triggered</description> + <scalar type="int64_t"/> + </struct-item> + <struct-item name="sequenceStartStamp"> + <description>The sequence start stamp indicates when the first event of the current sequence was triggered</description> + <scalar type="int64_t"/> + </struct-item> + <struct-item name="chainStartStamp"> + <description>The chain start stamp indicates when the first event of the current chain was triggered</description> + <scalar type="int64_t"/> + </struct-item> </struct> <constant name="MAX_ERROR_MESSAGE_LENGTH" type="uint32_t" value="256"/> <constant name="MAX_NUMBER_OF_ERROR_MESSAGES" type="uint32_t" value="16"/> @@ -591,16 +589,16 @@ corresponding string array containing keys to illustrate the meaning of the deta </enum> <enum name="MODULE_STATUS"> <!-- Mutually exclusive values to describe the status of a hardware / software module--> - <item access="RO" value="0" symbol="UNKNOWN"/> - <!--The status of the module is not known--> - <item access="RO" value="1" symbol="OK"/> - <!--The module is in fully operational state--> - <item access="RO" value="2" symbol="WARNING"/> - <!--The module is not fully operational; A module in WARNING state may still be used operationally, --> - <!--but clients must be informed of a problem that might become worse. --> - <item access="RO" value="3" symbol="ERROR"/> - <!--The module is in a fault state. The related device is not operational.--> - <item access="RO" value="4" symbol="NOT_AVAILABLE"/> + <item access="RO" value="0" symbol="UNKNOWN"/> + <!--The status of the module is not known--> + <item access="RO" value="1" symbol="OK"/> + <!--The module is in fully operational state--> + <item access="RO" value="2" symbol="WARNING"/> + <!--The module is not fully operational; A module in WARNING state may still be used operationally, --> + <!--but clients must be informed of a problem that might become worse. --> + <item access="RO" value="3" symbol="ERROR"/> + <!--The module is in a fault state. The related device is not operational.--> + <item access="RO" value="4" symbol="NOT_AVAILABLE"/> <!--The module is missing. The related device is not operational.--> </enum> <constant name="MAX_MODULE_STATUS_LABEL_LENGTH" type="uint32_t" value="30"/> @@ -623,12 +621,12 @@ corresponding string array containing keys to illustrate the meaning of the deta <default>{INFO,INFO}</default> </GSI-detailed-status-severity-field> <GSI-module-status-labels-field name="moduleStatus_labels"> - <array2D type="char"> - <custom-constant-dim1 constant-name-ref="MODULE_STATUS_SIZE"/> - - <custom-constant-dim2 constant-name-ref="MAX_MODULE_STATUS_LABEL_LENGTH"/> - </array2D> - <default>{myModule1,myModule2}</default> + <array2D type="char"> + <custom-constant-dim1 constant-name-ref="MODULE_STATUS_SIZE"/> + + <custom-constant-dim2 constant-name-ref="MAX_MODULE_STATUS_LABEL_LENGTH"/> + </array2D> + <default>{myModule1,myModule2}</default> </GSI-module-status-labels-field> </configuration> <setting> @@ -637,38 +635,38 @@ corresponding string array containing keys to illustrate the meaning of the deta </GSI-power-field> </setting> <acquisition> - <field name="RO_dt_fesa" multiplexed="false" persistent="false"><scalar type="double"/></field><field name="RO_real_fesa" multiplexed="false" persistent="false"><scalar type="float"/></field><field name="RO_dint_fesa" multiplexed="false" persistent="false"><scalar type="int32_t"/></field><field name="RO_int_fesa" multiplexed="false" persistent="false"><scalar type="int16_t"/></field><field name="RO_dword_fesa" multiplexed="false" persistent="false"><scalar type="int64_t"/></field><field name="RO_word_fesa" multiplexed="false" persistent="false"><scalar type="int32_t"/></field><field name="RO_byte_fesa" multiplexed="false" persistent="false"><scalar type="int16_t"/></field><field name="RO_char_fesa" multiplexed="false" persistent="false"><scalar type="int8_t"/></field><field name="RO_date_fesa" multiplexed="false" persistent="false"><scalar type="double"/></field><field name="RO_string_fesa" multiplexed="false" persistent="false"><array type="char"><dim>64</dim></array></field><field name="RO_float32_fesa" multiplexed="false" persistent="false"><scalar type="float"/></field><field name="RO_uint32_fesa" multiplexed="false" persistent="false"><scalar type="int64_t"/></field><field name="RO_int32_fesa" multiplexed="false" persistent="false"><scalar type="int32_t"/></field><field name="RO_uint16_fesa" multiplexed="false" persistent="false"><scalar type="int32_t"/></field><field name="RO_int16_fesa" multiplexed="false" persistent="false"><scalar type="int16_t"/></field><field name="RO_uint8_fesa" multiplexed="false" persistent="false"><scalar type="int16_t"/></field><field name="RO_int8" multiplexed="false" persistent="false"><scalar type="int8_t"/></field><GSI-control-field multiplexed="false" name="control"> + <field name="RO_dt_fesa" cycle-bound="false" persistent="false"><scalar type="double"/></field><field name="RO_real_fesa" cycle-bound="false" persistent="false"><scalar type="float"/></field><field name="RO_dint_fesa" cycle-bound="false" persistent="false"><scalar type="int32_t"/></field><field name="RO_int_fesa" cycle-bound="false" persistent="false"><scalar type="int16_t"/></field><field name="RO_dword_fesa" cycle-bound="false" persistent="false"><scalar type="int64_t"/></field><field name="RO_word_fesa" cycle-bound="false" persistent="false"><scalar type="int32_t"/></field><field name="RO_byte_fesa" cycle-bound="false" persistent="false"><scalar type="int16_t"/></field><field name="RO_char_fesa" cycle-bound="false" persistent="false"><scalar type="int8_t"/></field><field name="RO_date_fesa" cycle-bound="false" persistent="false"><scalar type="double"/></field><field name="RO_string_fesa" cycle-bound="false" persistent="false"><array type="char"><dim>64</dim></array></field><field name="RO_float32_fesa" cycle-bound="false" persistent="false"><scalar type="float"/></field><field name="RO_uint32_fesa" cycle-bound="false" persistent="false"><scalar type="int64_t"/></field><field name="RO_int32_fesa" cycle-bound="false" persistent="false"><scalar type="int32_t"/></field><field name="RO_uint16_fesa" cycle-bound="false" persistent="false"><scalar type="int32_t"/></field><field name="RO_int16_fesa" cycle-bound="false" persistent="false"><scalar type="int16_t"/></field><field name="RO_uint8_fesa" cycle-bound="false" persistent="false"><scalar type="int16_t"/></field><field name="RO_int8" cycle-bound="false" persistent="false"><scalar type="int8_t"/></field><GSI-control-field cycle-bound="false" name="control"> <custom-type-scalar data-type-name-ref="DEVICE_CONTROL"/> </GSI-control-field> - <GSI-powerState-field multiplexed="false" name="powerState"> + <GSI-powerState-field cycle-bound="false" name="powerState"> <custom-type-scalar data-type-name-ref="DEVICE_POWER_STATE"/> </GSI-powerState-field> - <GSI-status-field multiplexed="false" name="status"> + <GSI-status-field cycle-bound="false" name="status"> <custom-type-scalar data-type-name-ref="DEVICE_STATUS"/> </GSI-status-field> - <GSI-interlock-field multiplexed="false" name="interlock"> + <GSI-interlock-field cycle-bound="false" name="interlock"> <scalar type="bool"/> </GSI-interlock-field> - <GSI-opReady-field multiplexed="false" name="opReady"> + <GSI-opReady-field cycle-bound="false" name="opReady"> <scalar type="bool"/> </GSI-opReady-field> - <GSI-modulesReady-field name="modulesReady" multiplexed="false"> - <scalar type="bool"/> + <GSI-modulesReady-field name="modulesReady" cycle-bound="false"> + <scalar type="bool"/> </GSI-modulesReady-field> - <GSI-detailed-status-field multiplexed="false" name="detailedStatus"> + <GSI-detailed-status-field cycle-bound="false" name="detailedStatus"> <array type="bool"> <custom-constant-dim constant-name-ref="DETAILED_STATUS_SIZE"/> </array> </GSI-detailed-status-field> - <GSI-module-status-field name="moduleStatus" multiplexed="false"> - <custom-type-array data-type-name-ref="MODULE_STATUS"> - <custom-constant-dim constant-name-ref="MODULE_STATUS_SIZE"/> - </custom-type-array> + <GSI-module-status-field name="moduleStatus" cycle-bound="false"> + <custom-type-array data-type-name-ref="MODULE_STATUS"> + <custom-constant-dim constant-name-ref="MODULE_STATUS_SIZE"/> + </custom-type-array> </GSI-module-status-field> - <GSI-acquisition-context-field multiplexed="true" name="acquisitionContext"> + <GSI-acquisition-context-field cycle-bound="true" name="acquisitionContext"> <custom-type-scalar data-type-name-ref="GSI_ACQ_CONTEXT"/> </GSI-acquisition-context-field> - <GSI-error_collection-field multiplexed="false" name="error_collection"> + <GSI-error_collection-field cycle-bound="false" name="error_collection"> <custom-type-array data-type-name-ref="GSI_ERROR"> <custom-constant-dim constant-name-ref="MAX_NUMBER_OF_ERROR_MESSAGES"/> </custom-type-array> @@ -698,6 +696,19 @@ corresponding string array containing keys to illustrate the meaning of the deta <get-server-action implementation="default" name="StatusGetAction"/> <get-server-action implementation="default" name="VersionGetAction"/> <get-server-action implementation="default" name="ModuleStatusGetAction"/> + + <rt-action name="StatusUpdateAction"/> <!-- Pre-defined status update action --> <get-server-action name="GetMyROBlockProp" implementation="custom"/><set-server-action name="SetMyRWBlockProp" implementation="custom"/><get-server-action name="GetMyRWBlockProp" implementation="custom"/><set-server-action name="SetMyWOBlockProp" implementation="custom"/><get-server-action name="GetMyCBlockProp" implementation="custom"/></actions> + <events> + <logical-events> + <logical-event use="required" name="StatusUpdateEvent" type="timer"/> + </logical-events> + </events> + <scheduling-units> + <scheduling-unit name="StatusUpdateSchedulingUnit"> + <rt-action-ref rt-action-name-ref="StatusUpdateAction"/> + <logical-event-ref logical-event-name-ref="StatusUpdateEvent"/> + </scheduling-unit> + </scheduling-units> </equipment-model> -- GitLab