<?xml version="1.0" encoding="UTF-8"?>
<equipment-model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:/opt/fesa/fesa-model-gsi/7.4.0/xml/design/design-gsi.xsd">
	<information>
	  	<class-name>SilecsTestClass</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.4.0</fesa-version>
	</information>
	<ownership>
		<responsible name="ACO"/>
		<creator login="mnabywan"/>
	</ownership>
        <interface>
        <device-interface>
            <setting>
                <GSI-Init-Property multiplexed="false" name="Init" visibility="operational" id="_220830102016_0">
                	<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" id="_220830102016_1">
                	<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" id="_220830102016_2">
                	<description>Used for setting hardware parameters for controlling the device.</description>
                    <update-flag-item direction="OUT" name="updateFlags" optional="true" id="_220830102018_0">
                       <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/>
                    </update-flag-item>
                    <cycle-name-item direction="OUT" name="cycleName" optional="true" id="_220830102018_1">
                        <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-Setting-Property name="MySetting" visibility="development" multiplexed="false" id="_220830102016_3"><value-item name="mySettingRegister" direction="INOUT" id="_220830102018_2"><scalar type="int32_t"/><data-field-ref field-name-ref="mySettingRegister"/></value-item><update-flag-item direction="OUT" name="updateFlags" optional="true" id="_220830102018_3"><builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/></update-flag-item><cycle-name-item direction="OUT" name="cycleName" optional="true" id="_220830102018_4"><array type="char"><dim>32</dim></array></cycle-name-item><set-action><server-action-ref server-action-name-ref="SetMySetting"/></set-action><get-action><server-action-ref server-action-name-ref="GetMySetting"/></get-action></GSI-Setting-Property><GSI-Power-Property multiplexed="false" name="Power" visibility="operational" id="_220830102016_4">
                    <description>Used to turn the power of a device on or off.</description>
                    <update-flag-item direction="OUT" name="updateFlags" optional="true" id="_220830102018_5">
						<builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/>
                    </update-flag-item>
                    <cycle-name-item direction="OUT" name="cycleName" optional="true" id="_220830102019_0">
                        <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" id="_220830102019_1">
                        <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 cycle-bound="false" name="Status" on-change="true" subscribable="true" visibility="operational" id="_220830102016_5">
                    <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" id="_220830102019_2">
                        <scalar type="int64_t"/>
                    </acq-stamp-item>
                    <update-flag-item direction="OUT" name="updateFlags" optional="true" id="_220830102019_3">
                        <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/>
                    </update-flag-item>
                    <cycle-name-item direction="OUT" name="cycleName" optional="true" id="_220830102019_4">
                        <array type="char">
                            <dim>32</dim>
                        </array>
                    </cycle-name-item>
                    <cycle-stamp-item direction="OUT" name="cycleStamp" optional="true" id="_220830102020_0">
                        <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" id="_220830102020_1">
                        <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" id="_220830102021_0">
                    	<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" id="_220830102021_1">
                    	<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" id="_220830102021_2">
                    	<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" id="_220830102022_0">
                    	<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" id="_220830102022_1">
                        <custom-type-scalar data-type-name-ref="DEVICE_CONTROL"/>
                        <data-field-ref field-name-ref="control"/>
                    </control-item>
                    <interlock-item direction="OUT" name="interlock" id="_220830102022_2">
                    	<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" id="_220830102022_3">
                    	<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" id="_220830102022_4">
                    	<description>Contains the devices module state</description>
                        <scalar type="bool"/>
                        <data-field-ref field-name-ref="modulesReady"/>
                    </modulesReady-item>
                    <error_collection-item direction="OUT" id="_220830102022_5">
                        <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 cycle-bound="false" name="ModuleStatus" subscribable="true" visibility="operational" id="_220830102017_0">
                	<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 direction="OUT" name="acqStamp" id="_220830102023_0">
                		<scalar type="int64_t"/>
                	</acq-stamp-item>
                	<update-flag-item direction="OUT" name="updateFlags" optional="true" id="_220830102023_1">
                		<builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/>
                	</update-flag-item>
                	<cycle-name-item direction="OUT" name="cycleName" optional="true" id="_220830102023_2">
                		<array type="char">
                			<dim>32</dim>
                		</array>
                	</cycle-name-item>
                	<cycle-stamp-item direction="OUT" name="cycleStamp" optional="true" id="_220830102023_3">
                		<scalar type="int64_t"/>
                	</cycle-stamp-item>
                	<get-action>
                		<server-action-ref server-action-name-ref="ModuleStatusGetAction"/>
                	</get-action>
                	<module-status-item direction="OUT" name="moduleStatus" id="_220830102023_4">
                		<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 direction="OUT" name="moduleStatus_labels" id="_220830102025_0">
                		<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 cycle-bound="true" name="Acquisition" on-change="true" subscribable="true" visibility="operational" id="_220830102017_1">
                    <description>Used for returning acquisition data which is retrieved from the hardware.</description>
                    <acq-stamp-item direction="OUT" name="acqStamp" id="_220830102026_0">
                        <scalar type="int64_t"/>
                    </acq-stamp-item>
                    <update-flag-item direction="OUT" name="updateFlags" optional="true" id="_220830102026_1">
                        <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/>
                    </update-flag-item>
                    <cycle-name-item direction="OUT" name="cycleName" optional="true" id="_220830102026_2">
                        <array type="char">
                            <dim>32</dim>
                        </array>
                    </cycle-name-item>
                    <cycle-stamp-item direction="OUT" name="cycleStamp" optional="true" id="_220830102026_3">
                        <scalar type="int64_t"/>
                    </cycle-stamp-item>
                    <get-action>
                        <server-action-ref server-action-name-ref="AcquisitionGetAction"/>
                    </get-action>
                    <acquisition-context-item direction="OUT" id="_220830102027_0">
                        <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="MyBlock" visibility="development" subscribable="true" cycle-bound="false" on-change="true" id="_220830102017_2"><value-item name="myRegister" direction="OUT" id="_220830102027_1"><scalar type="int32_t"/><data-field-ref field-name-ref="myRegister"/></value-item><acq-stamp-item direction="OUT" name="acqStamp" id="_220830102028_0"><scalar type="int64_t"/></acq-stamp-item><update-flag-item direction="OUT" name="updateFlags" optional="true" id="_220830102028_1"><builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/></update-flag-item><cycle-name-item direction="OUT" name="cycleName" optional="true" id="_220830102029_0"><array type="char"><dim>32</dim></array></cycle-name-item><cycle-stamp-item direction="OUT" name="cycleStamp" optional="true" id="_220830102029_1"><scalar type="int64_t"/></cycle-stamp-item><get-action><server-action-ref server-action-name-ref="GetMyBlock"/></get-action><acquisition-context-item direction="OUT" id="_220830102029_2"><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" id="_220830102017_3">
                    <description>Returns the current software and hardware versions of a piece of equipment.</description>
                    <acq-stamp-item direction="OUT" name="acqStamp" id="_220830102030_0">
                        <scalar type="int64_t"/>
                    </acq-stamp-item>
                    <update-flag-item direction="OUT" name="updateFlags" optional="true" id="_220830102030_1">
                        <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/>
                    </update-flag-item>
                    <cycle-name-item direction="OUT" name="cycleName" optional="true" id="_220830102030_2">
                        <array type="char">
                            <dim>32</dim>
                        </array>
                    </cycle-name-item>
                    <cycle-stamp-item direction="OUT" name="cycleStamp" optional="true" id="_220830102030_3">
                        <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" id="_220830102031_0">
                        <array type="char">
                            <custom-constant-dim constant-name-ref="MAX_VERSION_NAME_LENGTH"/>
                        </array>
                    </version-item>
                    <version-item direction="OUT" name="deployUnitVersion" id="_220830102031_1">
                        <array type="char">
                            <custom-constant-dim constant-name-ref="MAX_VERSION_NAME_LENGTH"/>
                        </array>
                    </version-item>
                    <version-item direction="OUT" name="fesaVersion" id="_220830102031_2">
                        <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" id="_220830102017_4">
                    <description>Generic property which allows to diagnose any FESA classes</description>
                        <mode-item direction="INOUT" name="enableDiagMode" id="_220830102031_3">
                            <scalar type="bool"/>
                        </mode-item>
                        <host-item direction="INOUT" name="hostName" id="_220830102031_4">
                        	<description>Host of the FESA class</description>
                            <array type="char">
                                <dim>32</dim>
                            </array>
                        </host-item>
                        <port-item direction="INOUT" name="portNumber" id="_220830102031_5">
                        	<description>Port used by the FESA class</description>
                            <scalar type="int32_t"/>
                        </port-item>
                        <config-item direction="IN" name="requestConfig" id="_220830102031_6">
                            <scalar type="bool"/>
                        </config-item>
                        <state-item direction="IN" name="requestState" id="_220830102032_0">
                            <scalar type="bool"/>
                        </state-item>
                        <fwk-topic-item direction="INOUT" name="fwkTopic" id="_220830102032_1">
                            <builtin-type-scalar data-type-name-ref="DIAG_FWK_TOPIC"/>
                        </fwk-topic-item>
                        <custom-topic-item direction="INOUT" name="customTopic" id="_220830102032_2">
                            <custom-type-scalar data-type-name-ref="DIAG_TOPIC"/>
                        </custom-topic-item>
                        <device-trace-item direction="INOUT" name="traceDevices" id="_220830102032_3">
                            <array type="char">
                                <dim>320</dim>
                            </array>
                        </device-trace-item>
                        <bypass-action-item direction="INOUT" name="bypassActions" id="_220830102032_4">
                            <array type="char">
                                <dim>320</dim>
                            </array>
                        </bypass-action-item>
                </diagnostic-property>
            </setting>
            <acquisition>
                <GSI-DeviceDescription-Property cycle-bound="false" name="DeviceDescription" on-change="false" subscribable="false" visibility="operational" id="_220830102017_5">
                    <timing-info-item direction="OUT" name="deviceNameTimingReceiver" id="_220830102032_5">
                        <array type="char">
                            <variable-dim/>
                        </array>
                        <data-field-ref field-name-ref="deviceNameTimingReceiver"/>
                    </timing-info-item>
                    <property-info-item direction="OUT" name="propertyNames" id="_220830102033_0">
                        <array2D type="char">
                            <variable-dim1/>
                            <variable-dim2/>
                        </array2D>
                    </property-info-item>
                    <device-info-item direction="OUT" name="deviceNames" id="_220830102033_1">
                        <array2D type="char">
                            <variable-dim1/>
                            <variable-dim2/>
                        </array2D>
                    </device-info-item>
                    <global-device-info-item direction="OUT" name="globalDeviceName" id="_220830102033_2">
                        <array type="char">
                            <variable-dim/>
                        </array>
                    </global-device-info-item>
                    <host-info-item direction="OUT" name="host" id="_220830102033_3">
                        <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" symbol="INFO" value="0"/>
        	<WARNING access="RO" meaning="WARNING" symbol="WARNING" value="1"/>
        	<ERROR access="RO" meaning="ERROR" symbol="ERROR" value="2"/>
        	<CRITICAL access="RO" meaning="ERROR" symbol="CRITICAL" value="3"/>
        </fault-severity>

    </builtin-types>
    <custom-types>
        <diag-custom-topic name="DIAG_TOPIC" id="_220830102046_1">
        </diag-custom-topic>
        <enum name="DEVICE_STATUS" id="_220830102047_0">
        <!--Possible (mutually exclusive) values to describe the device status-->
            
            <item access="RW" meaning="NONE" symbol="UNKNOWN" value="0" id="_220830102055_0"/>
            <!--The device status is unknown-->
            
            <item access="RW" meaning="NONE" symbol="OK" value="1" id="_220830102055_1"/>
            <!--The device is in fully operational state-->
            
            <item access="RW" meaning="NONE" symbol="WARNING" value="2" id="_220830102055_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" id="_220830102056_0"/>
            <!--The device is in a fault state. Details are explained in the errorMsg field-->
        </enum>
        <enum name="DEVICE_POWER_STATE" id="_220830102047_1">
        <!--Possible (mutually exclusive) values to describe the power-state of the device.-->
            
            <item access="RW" meaning="NONE" symbol="UNKNOWN" value="0" id="_220830102056_1"/>
            <!--The device mode is unknown-->
            
            <item access="RW" meaning="ON" symbol="ON" value="1" id="_220830102057_0"/>
            <!--The device is in fully operational state-->
            
            <item access="RW" meaning="NONE" symbol="OFF" value="2" id="_220830102057_1"/>
            <!--The device is turned off-->
            
            <item access="RW" meaning="NONE" symbol="STANDBY" value="3" id="_220830102058_0"/>
            <!--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" id="_220830102058_1"/>
            <!--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" id="_220830102058_2"/>
            <!--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" id="_220830102048_0">
        <!--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" id="_220830102059_0"/>
            <!--The device is in fully operational state-->     
            
            <item access="RW" meaning="OFF" symbol="OFF" value="2" id="_220830102059_1"/>
            <!--The device is turned off-->
        </enum>
        <enum name="DEVICE_CONTROL" id="_220830102048_1">
        <!--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" id="_220830102100_0"/>
            <!--The device can be controlled normally through the control system-->
            
            <item access="RW" meaning="NONE" symbol="LOCAL" value="1" id="_220830102100_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" id="_220830102048_2">
        <!--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" id="_220830102101_0"/>
            <!--Use the absolute tolerance _tolAbs-->
            
            <item access="RO" symbol="REL" value="1" id="_220830102102_0"/>
            <!--Use the relative tolerance _tolRel-->
        </enum>
        <bit-enum-32bits name="AQN_STATUS" id="_220830102049_0">
        <!--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" id="_220830102049_1">
        <!--This struct-item describes the structure of an GSI-error-->
            <struct-item name="error_string" id="_220830102106_1">
            <!--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" id="_220830102106_2">
            <!--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" id="_220830102107_0">
                <scalar type="int64_t"/>
            </struct-item>
            <!--The cycle for which the error occured-->
            <struct-item name="error_cycle_name" id="_220830102107_1">
                <array type="char">
                    <custom-constant-dim constant-name-ref="MAX_CYCLE_NAME_LENGTH"/>
                </array>
            </struct-item>
        </struct>
        <struct name="GSI_ACQ_CONTEXT" id="_220830102050_0">
            <description>WhiteRabbit event specific acquisition information</description>
        	<struct-item name="processIndex" id="_220830102108_0">
        		<description>Used in order to index process-multiplexed data</description>
        		<scalar type="int32_t"/>
        	</struct-item>
        	<struct-item name="sequenceIndex" id="_220830102108_1">
        	    <description>Used in order to index sequence-multiplexed data</description>
        		<scalar type="int32_t"/>
        	</struct-item>
        	<struct-item name="chainIndex" id="_220830102108_2">
        	    <description>Refers to a specific beam production chain</description>
        		<scalar type="int32_t"/>
        	</struct-item>
        	<struct-item name="eventNumber" id="_220830102109_0">
        	    <description>The number of the event describes it's type</description>
        		<scalar type="int32_t"/>
        	</struct-item>
        	<struct-item name="timingGroupID" id="_220830102109_1">
        	    <description>ID of the timing group for which the event is relevant</description>
        		<scalar type="int32_t"/>
        	</struct-item>
        	<struct-item name="acquisitionStamp" id="_220830102110_0">
        	    <description>The acquisition stamp is used to indicate when a measurement was done</description>
                <scalar type="int64_t"/>
            </struct-item>
        	<struct-item name="eventStamp" id="_220830102110_1">
        	    <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" id="_220830102111_0">
        	    <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" id="_220830102111_1">
        	    <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" id="_220830102111_2">
        	    <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" id="_220830102050_1"/>
        <constant name="MAX_NUMBER_OF_ERROR_MESSAGES" type="uint32_t" value="16" id="_220830102051_0"/>
        <constant name="MAX_CYCLE_NAME_LENGTH" type="uint32_t" value="256" id="_220830102051_1"/>
        <constant name="MAX_VERSION_NAME_LENGTH" type="uint32_t" value="256" id="_220830102051_2"/>
        <constant name="MAX_DETAILED_STATUS_LABEL_LENGTH" type="uint32_t" value="30" id="_220830102052_0"/>
        <constant name="DETAILED_STATUS_SIZE" type="uint32_t" value="2" id="_220830102052_1"/>
        <enum name="DETAILED_STATUS_SEVERITY" id="_220830102053_0">
            <item access="RO" symbol="INFO" value="0" id="_220830102102_1"/>
            <item access="RO" symbol="WARNING_ON_FALSE" value="1" id="_220830102103_0"/>
            <item access="RO" symbol="ERROR_ON_FALSE" value="2" id="_220830102103_1"/>
        </enum>
        <enum name="MODULE_STATUS" id="_220830102053_1">
        <!-- Mutually exclusive values to describe the status of a hardware / software module-->
        	<item access="RO" symbol="UNKNOWN" value="0" id="_220830102104_0"/>
        	<!--The status of the module is not known-->
        	<item access="RO" symbol="OK" value="1" id="_220830102104_1"/>
        	<!--The module is in fully operational state-->
        	<item access="RO" symbol="WARNING" value="2" id="_220830102105_0"/>
        	<!--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" symbol="ERROR" value="3" id="_220830102105_1"/>
        	<!--The module is in a fault state. The related device is not operational.-->
        	<item access="RO" symbol="NOT_AVAILABLE" value="4" id="_220830102106_0"/>
            <!--The module is missing. The related device is not operational.-->
        </enum>
        <constant name="MAX_MODULE_STATUS_LABEL_LENGTH" type="uint32_t" value="30" id="_220830102054_0"/>
        <constant name="MODULE_STATUS_SIZE" type="uint32_t" value="2" id="_220830102054_1"/>
    </custom-types>
    <data>
        <device-data>
            <configuration>
                <field name="plcDeviceLabel" id="_220830102035_0"><description>Name of the related SILECS instance within the PLC mapping</description><array type="char"><dim>128</dim></array></field><field name="plcHostName" id="_220830102035_1"><description>Hostname of the PLC that contains the related SILECS class device</description><array type="char"><dim>128</dim></array></field><GSI-detailed-status-labels-field name="detailedStatus_labels" id="_220830102035_2">
                    <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" id="_220830102035_3">
                    <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" id="_220830102036_0">
                	<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>
                <field name="mySettingRegister" multiplexed="false" persistent="true" id="_220830102036_1"><scalar type="int32_t"/></field><GSI-power-field multiplexed="false" name="power" persistent="false" id="_220830102036_2">
                    <custom-type-scalar data-type-name-ref="DEVICE_POWER"/>
                </GSI-power-field>
            </setting>
            <acquisition>
                <field name="myRegister" cycle-bound="false" persistent="false" id="_220830102037_0"><scalar type="int32_t"/></field><GSI-control-field cycle-bound="false" name="control" id="_220830102037_1">
                    <custom-type-scalar data-type-name-ref="DEVICE_CONTROL"/>
                </GSI-control-field>
                <GSI-powerState-field cycle-bound="false" name="powerState" id="_220830102039_0">
                    <custom-type-scalar data-type-name-ref="DEVICE_POWER_STATE"/>
                </GSI-powerState-field>
                <GSI-status-field cycle-bound="false" name="status" id="_220830102041_0">
                    <custom-type-scalar data-type-name-ref="DEVICE_STATUS"/>
                </GSI-status-field>
                <GSI-interlock-field cycle-bound="false" name="interlock" id="_220830102041_1">
                    <scalar type="bool"/>
                </GSI-interlock-field>
                <GSI-opReady-field cycle-bound="false" name="opReady" id="_220830102042_0">
                    <scalar type="bool"/>
                </GSI-opReady-field>
                <GSI-modulesReady-field cycle-bound="false" name="modulesReady" id="_220830102043_0">
                	<scalar type="bool"/>
                </GSI-modulesReady-field>
                <GSI-detailed-status-field cycle-bound="false" name="detailedStatus" id="_220830102043_1">
                    <array type="bool">
                        <custom-constant-dim constant-name-ref="DETAILED_STATUS_SIZE"/>
                    </array>
                </GSI-detailed-status-field>
                <GSI-module-status-field cycle-bound="false" name="moduleStatus" id="_220830102044_0">
                	<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 cycle-bound="true" name="acquisitionContext" id="_220830102044_1">
                    <custom-type-scalar data-type-name-ref="GSI_ACQ_CONTEXT"/>
                </GSI-acquisition-context-field>
                <GSI-error_collection-field cycle-bound="false" name="error_collection" id="_220830102045_0">
                    <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 -->
                <field name="plcClassVersion" id="_220830102045_1"><description>Version of the SILECS class that needs to be deployed in the controller</description><array type="char"><dim>5</dim></array><default>0.1.0</default></field><GSI-timing-receiver-name-field name="deviceNameTimingReceiver" id="_220830102046_0">
                    <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"/>

		<rt-action name="StatusUpdateAction"/>	<!-- Pre-defined status update action -->
    <get-server-action name="GetMyBlock" implementation="custom"/><set-server-action name="SetMySetting" implementation="custom"/><get-server-action name="GetMySetting" implementation="custom"/></actions>
    <events>
	    <logical-events>
			<logical-event name="StatusUpdateEvent" type="timer" use="required" id="_220830102034_0"/>
		</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>