Legacy XML
The Legacy XML contains conversion information that is necessary to run an AOP device adapter module under WinGuard X4.
On the one hand, it is necessary to map the Object types coded as strings in X5 to the data types coded as integers in X4 and also the Operations coded as strings in X5 to the commands coded as integers in X4. On the other hand, the X4 command parameters must also be converted to X5 Operation Properties and the X4 event text macros to X5 Event Properties.
The format for the definition is essentially based on the Module XML and contains a comparable <Object> definition structure in the root element <LegacyDef>.
Here, however, the Objects, Operations and Events are listed only with ID, in order to define the mapping with special attributes such as datatype, link etc.
A Legacy XML is therefore always to be understood only in connection with the corresponding Module XML.
The default name of the file is derived from the name of the module. “MyMod”, for example, uses the Legacy XML file MyMod.legacy.xml, etc. This can be customized using the <LegacyDef> definition in the Manifest XML.
The Legacy XML file described on this page should never be edited by a normal user and only when the adapter is extended by a developer.
This file relies completely on the definitions in the Module XML and expands those definitions for legacy WinGuard X4 compatibility. Manual modifications can break the compatibility layer and cause the adapter to malfunction in X4 environments.
With regard to the mapping of the link, two fundamentally different modes are supported:
URL
The URL (the part starting from the ‘:’ after ‘ext[]’) is entered in the legacy Datapoint in address2. The other fields (node, address) are not used.
💡 This mode is usually used by the Extensions that were developed for X5.
ADR
The address fields in the legacy Datapoint are used as usual. Via the same Node entry, for example, system and contained Objects are assigned, etc.
In this mode, the individual address properties must be listed explicitly in the legacy XML and the storage location in the legacy Datapoint must be defined.
💡 This mode is used by all Extensions that were developed for X4 and are now to run in X5.
<LegacyDef>
Root Node of the XML file with the following possible sections:
| Description | |
|---|---|
| <Objects> | Container for <Object> definitions of the Objects including mapping information. |
| <Activities> | Container for <Activity> definitions of the Activities including mapping information. |
| <Incident> | Mapping information for properties of an Incident. |
<Objects>
Container with a list of <Object> definitions.
The Objects can be defined flatly by specifying their full type, but a hierarchical definition based on the Module XML with the use of automatic type generation is recommended. (→ <Object>).
<Object>
Defines the legacy mapping for an object type. The type is either specified explicitly or derived from the ID (see below).
| Description | |
|---|---|
| id | Symbol. Determines the URL entry for this Object. Indirectly determines the type together with the parent Object IDs, separated by a dot (.) (automatic type generation). The empty ID is intended for the “Internal” data type, which is addressable via the URL “ext[n]:”. |
| type | (optional) Symbol Path. Specifies the type directly, the ID and the IDs of the parent Objects will then not be used for type generation. if type="" is specified, this Object cannot be instantiated by WinGuard. |
| ref | Symbol Path. Defines the type directly, the definition is done elsewhere and is only referenced here, no deviating definitions can be made for the Object. |
| extends | Symbol Path. The definitions of the specified Object are completely taken as basis for the definition of this Object and can be extended based on that. |
| sensor | Is treated as a sensor/detector in X4 or member in X5. |
| datatype | Data type number of the legacy Object. Data type number for a sensor must match the number of the related Datapoint. |
| <Property>… | Mapping of properties if required. For the properties used for addressing it can be defined here where this information is stored in the legacy Datapoint. |
| <Event>… | Mapping of Event properties if required. |
| <Operation>… | Mapping of operation ID to command ID as well as the parameters. |
| <Object>… | Any sub-object definitions (like object itself). |
<Property>
Defines a Property mapping for the Object.
| Description | |
|---|---|
| id | Symbol. Uniquely identifies the Property within the parent element. |
| link | Defines for address Properties where the value is stored in the legacy Datapoint. Possible values: - address - address_hiword - address_hiword_hibyte - address_hiword_lobyte - address_loword - address_loword_hibyte - address_loword_lobyte - node - address2 💡If an Extension uses the URL mode (see above), no specification is required and the property does not need to be listed at all. Otherwise, the storage location has to be specified for each address property. |
<Event>
Defines Event property mappings for the Object.
| Description | |
|---|---|
| id | Symbol. Uniquely identifies the Event within the parent element. |
| extends | Symbol. The definitions of the given Event are taken completely as the basis of the definition of this Event and can be extended based on that. |
| <Property>… | Optional properties of the Event |
<Property>
Defines a property mapping for an Event.
| Description | |
|---|---|
| id | Symbol. Identifies the property uniquely within the Event. |
| textmacro | Number of the text macro in which the property is stored in the legacy Event. Needs to be higher than 5. |
| format | Specifies how the property is formatted when displayed in WinGuard. Possible values: - “timeshort” - uses the short time format specified in the WinGuard settings - “timelong” - uses the long time format specified in the WinGuard settings - “dateshort” - uses the short date format specified in the WinGuard settings - “datelong” - uses the long date format specified in the WinGuard settings - “dateverbose” - uses the verbose date format specified in the WinGuard settings - “dateshorttimeshort” - uses the short date format and the short time format specified in the WinGuard settings - “dateshorttimelong” - uses the short date format and the long time format specified in the WinGuard settings - “datelongtimeshort” - uses the long date format and the short time format specified in the WinGuard settings - “datelongtimelong” - uses the long date format and the long time format specified in the WinGuard settings The corresponding WinGuard settings can be found under Global Settings → System → Format. Only works for properties that have type “time” set in the module XML. If it is defined, the property definition’s “kind” attribute from the module XML is used as a fallback, so you don’t necessarily have to supply a “format” attribute in the legacy XML. |
<Operation>
Defines an Operation mapping for the Object.
| Description | |
|---|---|
| id | Symbol Path. Identifies the Operation uniquely within the Event. |
| command | Number of the legacy command. Range [1,999]. If the Extension flag MULTISTATION is set, commands with ID < 499 are always executed at the local station, in all other cases they are routed to the main port. |
| event | =1 → Legacy command for Event available |
| appcommand | Legacy global command for this command. Possible values: - “ON”: Turn object on. Parameters: (none) - “OFF”: Turn object off. Parameters: (none) - “REVON”: Set revision on. Parameters: (none) - “REVOFF”: Set revision off. Parameters: (none) - “ACTIVATE”: Activate the object. Parameters: (none) - “DEACTIVATE”: Deactivate the object. Parameters: (none) - “ARM”: Arm the object. Parameters: - “ConfirmUnconditionalArm” (optional, bool): If true, skips the check whether the whole data object group is in “silence” State. - “DISARM”: Disarm the object. Parameters: (none) - “RESET”: Reset the object. Parameters: (none) - “SETVALUE”: Set analog output value. Parameters: - “Value” (string): The value to set. - “SETDISPLAYTEXT”: Set the display text of an object. Parameters: - “Text” (string): The text to display. - “Line” (int): Adapter-specific option how to display the text, e.g., a number of rows for the text, etc. - “OPEN”: Sent when a door open button is pressed. This command can be used if no distinction between the keydown and keyup event is needed. Parameters: - “SrcIntercomUrl” (optional, string): The source Intercom URL. - “OPENDOWN”: Send to trigger the push (i.e., keydown event) of a door open button. Parameters: - “SrcIntercomUrl” (optional, string): The source Intercom URL. - “OPENUP”: Send to trigger the release (i.e., keyup event) of a door open button. Parameters: - “SrcIntercomUrl” (optional, string): The source Intercom URL. - “MICDOWN”: Send to trigger the push (i.e., keydown event) of a microphone (push-to-talk) button. Parameters: (none) - “MICUP”: Send to trigger the release (i.e., keyup event) of a microphone (push-to-talk) button. Parameters: (none) |
| <Property>… | Optional properties of the Operation. |
<Property>
Defines a property mapping for an Operation.
| Description | |
|---|---|
| id | Symbol. Identifies the property uniquely within the Operation. |
| source | Storage location of the properties in the legacy command (SSTOutput). Possible values: - param1 - param2 - sparam1 - sparam2 |
<Activities>
Container with a list of <Activity> definitions.
<Activity>
Defines the legacy mapping for an Activity type.
| Description | |
|---|---|
| id | Symbol. The ID of the Activity. |
| <Property>… | Mapping of properties. |
<Property>
Defines a property mapping for an Activity.
| Description | |
|---|---|
| id | Symbol. Identifies the property uniquely within the Activity. |
| textmacro | Number of the text macro to fill this property into. |
<Incident>
A container with a list with <Property> definitions.
<Property>
Defines a property mapping for an Incident.
| Description | |
|---|---|
| id | Symbol. Identifies the property uniquely within the Incident. |
| textmacro | Number of the text macro to fill this property into. Needs to be higher than five. |
Samples
DemoPanel Legacy XML
<LegacyDef>
<Objects>
<!-- The one and only for this adapter -->
<Object id="" datatype="9999">
</Object>
<!-- Global Object Types -->
<!-- DigitalIn -->
<Object id="DigitalIn">
</Object>
<!-- DigitalOut -->
<Object id="DigitalOut">
<Operation id="Activate" command="503" event="1" appcommand="ACTIVATE" />
<Operation id="Deactivate" command="504" event="1" appcommand="DEACTIVATE" />
</Object>
<!-- AnalogIn -->
<Object id="AnalogIn">
</Object>
<!-- AnalogOut -->
<Object id="AnalogOut">
<Operation id="SetValue" command="703" appcommand="SETVALUE" >
<Property id="Value" source="sparam1" />
</Operation>
</Object>
<!-- Intercom.Station -->
<Object id="Intercom.Station">
</Object>
<!-- Ext Objects -->
<!-- DemoPanel -->
<Object id="DemoPanel" datatype="1">
<!-- DemoPanel.Fire -->
<Object id="Fire" datatype="0">
<!-- DemoPanel.Fire.Panel -->
<Object id="Panel" datatype="100" >
<Operation id="Reset" command="509" appcommand="RESET" />
</Object>
<!-- DemoPanel.Fire.Zone -->
<Object id="Zone" datatype="101">
<Operation id="On" command="501" event="1" />
<Operation id="Off" command="502" event="1" />
<Operation id="EnableRevision" command="511" event="1" appcommand="REVON" />
<Operation id="DisableRevision" command="512" event="1" appcommand="REVOFF" />
<Operation id="Reset" command="509" event="1" appcommand="RESET" />
<!-- DemoPanel.Fire.Zone.Sensor -->
<Object id="Sensor" sensor="1">
<Operation id="On" command="501" event="1" />
<Operation id="Off" command="502" event="1" />
<Operation id="EnableRevision" command="511" event="1" appcommand="REVON" />
<Operation id="DisableRevision" command="512" event="1" appcommand="REVOFF" />
<Operation id="Reset" command="509" event="1" appcommand="RESET" />
</Object>
</Object>
<!-- DemoPanel.Fire.Control -->
<Object id="Control" datatype="102">
<Operation id="On" command="501" event="1" />
<Operation id="Off" command="502" event="1" />
<Operation id="Activate" command="503" event="1" appcommand="ACTIVATE" />
<Operation id="Reset" command="509" event="1" appcommand="RESET" /> <!-- was Deactivate??? -->
</Object>
<!-- DemoPanel.Fire.Intervention -->
<Object id="Intervention" datatype="103">
<Operation id="Activate" command="503" appcommand="ACTIVATE" />
<Operation id="Deactivate" command="504" appcommand="DEACTIVATE" />
<Operation id="StartInvestigation" command="513" />
<Operation id="StopInvestigation" command="514" />
</Object>
</Object>
<!-- DemoPanel.Intrusion -->
<Object id="Intrusion">
<!-- DemoPanel.Intrusion.Panel -->
<Object id="Panel" datatype="200">
<Operation id="Reset" command="509" appcommand="RESET" />
</Object>
<!-- DemoPanel.Intrusion.Area -->
<Object id="Area" datatype="201">
<Operation id="Arm" command="521" event="1" appcommand="ARM" />
<Operation id="Disarm" command="522" event="1" appcommand="DISARM" />
</Object>
<!-- DemoPanel.Intrusion.Sensor -->
<Object id="Sensor" datatype="202">
<Operation id="On" command="501" event="1" />
<Operation id="Off" command="502" event="1" />
</Object>
</Object>
<!-- DemoPanel.Video -->
<Object id="Video">
<!-- DemoPanel.Video.Recorder -->
<Object id="Recorder" datatype="301">
<!-- DemoPanel.Video.Recorder.Camera -->
<Object id="Camera" datatype="302">
<Operation id="Reset" command="531" event="1" />
</Object>
</Object>
</Object>
<!-- DemoPanel.Access -->
<Object id="Access">
<!-- DemoPanel.Access.Door -->
<Object id="Door" datatype="401">
<Operation id="Normal" command="541" event="1" />
<Operation id="AllowAccess" command="542" event="1" />
<Operation id="Unlock" command="543" event="1" />
<Operation id="Block" command="544" event="1" />
<Event id="AttemptForUnauthorizedAccess">
<Property id="BadgeId" textmacro="6" />
<Property id="FirstName" textmacro="8" />
<Property id="LastName" textmacro="7" />
<Property id="Company" textmacro="9" />
</Event>
</Object>
</Object>
<!-- DemoPanel.Intercom -->
<Object id="Intercom">
<!-- DemoPanel.Intercom.Device -->
<Object id="Device" datatype="501">
<!-- TODO: operations missing??? -->
</Object>
<!-- DemoPanel.Intercom.Barrier -->
<Object id="Barrier" extends="DigitalOut" datatype="502" />
<!-- DemoPanel.Intercom.Elevator -->
<Object id="Elevator" extends="AnalogOut" datatype="503" />
</Object>
<!-- DemoPanel.PA -->
<Object id="PA">
<!-- DemoPanel.PA.AudioIn -->
<Object id="AudioIn" datatype="601">
</Object>
<!-- DemoPanel.PA.AudioOut -->
<Object id="AudioOut" datatype="602">
</Object>
</Object>
<!-- DemoPanel.IO -->
<Object id="IO">
<!-- DemoPanel.IO.Light -->
<Object id="Light" type="DigitalOut.Light" datatype="710">
</Object>
<!-- DemoPanel.IO.DigitalIn -->
<Object id="DigitalIn" extends="DigitalIn" datatype="701">
</Object>
<!-- DemoPanel.IO.DigitalOut -->
<Object id="DigitalOut" extends="DigitalOut" datatype="702">
</Object>
</Object>
<!-- DemoPanel.Values -->
<Object id="Values">
<!-- DemoPanel.Values.AnalogIn -->
<Object id="AnalogIn" extends="AnalogIn" datatype="703">
</Object>
<!-- DemoPanel.Values.AnalogOut-->
<Object id="AnalogOut" extends="AnalogOut" datatype="704">
</Object>
</Object>
<!-- DemoPanel.Notification -->
<Object id="Notification">
<!-- DemoPanel.Notification.Handset -->
<Object id="Handset" datatype="901">
<Operation id="Reset" command="509" event="1" appcommand="RESET" />
</Object>
<!-- DemoPanel.Notification.Display -->
<Object id="Display" datatype="902">
<Operation id="SetDisplayText" command="820" appcommand="SETDISPLAYTEXT">
<Property id="Text" source="sparam1" />
<Property id="Line" source="sparam2" />
</Operation>
</Object>
<!-- DemoPanel.Notification.CellPhone -->
<Object id="CellPhone" datatype="903">
<Operation id="SendSMS" command="4003">
<Property id="Message" source="sparam1" />
</Operation>
</Object>
</Object>
<!-- DemoPanel.Locating -->
<Object id="Locating">
<!-- DemoPanel.Locating.GISObject -->
<Object id="GISObject" datatype="1001">
<Operation id="Reset" command="830" event="1" />
</Object>
</Object>
<!-- DemoPanel.Facilities -->
<Object id="Facilities">
<!-- DemoPanel.Facilities.Object -->
<Object id="Object" datatype="1101">
<Operation id="Reset" command="840" event="1" />
</Object>
<!-- DemoPanel.Facilities.Printer -->
<Object id="Printer" datatype="1102">
</Object>
<!-- DemoPanel.Facilities.EmergencyLight -->
<Object id="EmergencyLight" datatype="1103">
</Object>
</Object>
<!-- DemoPanel.Prison -->
<Object id="Prison">
<!-- DemoPanel.Prison.IntercomDevice -->
<Object id="IntercomDevice" extends="DemoPanel.Intercom.Device" datatype="801">
</Object>
<!-- DemoPanel.Prison.Presence -->
<Object id="Presence" datatype="810">
<Operation id="Reset" command="509"/>
</Object>
<!-- DemoPanel.Prison.CallLock -->
<Object id="CallLock" extends="DigitalOut" datatype="811">
</Object>
<!-- DemoPanel.Prison.LightLock -->
<Object id="LightLock" extends="DigitalOut" datatype="812">
</Object>
<!-- DemoPanel.Prison.PowerLock -->
<Object id="PowerLock" extends="DigitalOut" datatype="813">
</Object>
<!-- DemoPanel.Prison.ForceLight -->
<Object id="ForceLight" extends="DigitalOut" datatype="814">
</Object>
<!-- DemoPanel.Prison.CellDoor -->
<Object id="CellDoor" datatype="803">
<Operation id="Lock" command="809" />
<Operation id="Unlock" command="810" />
</Object>
<!-- DemoPanel.Prison.FenceDetector -->
<Object id="FenceDetector" datatype="805">
<Operation id="Reset" command="509" event="1" appcommand="RESET" />
</Object>
</Object>
<!-- DemoPanel.Parking -->
<Object id="Parking">
<!-- DemoPanel.Parking.IntercomDevice -->
<Object id="IntercomDevice" extends="DemoPanel.Intercom.Device" datatype="1310">
</Object>
<!-- DemoPanel.Parking.DigitalIn -->
<Object id="DigitalIn" extends="DigitalIn" datatype="1311">
</Object>
<!-- DemoPanel.Parking.DigitalOut -->
<Object id="DigitalOut" extends="DigitalOut" datatype="1312">
</Object>
<!-- DemoPanel.Parking.AnalogIn -->
<Object id="AnalogIn" extends="AnalogIn" datatype="1313">
</Object>
<!-- DemoPanel.Parking.AlarmInput -->
<Object id="AlarmInput" extends="DigitalIn" datatype="1314">
</Object>
<!-- DemoPanel.Parking.Terminal -->
<Object id="Terminal" datatype="1401">
</Object>
<!-- DemoPanel.Parking.PayMachine -->
<Object id="PayMachine" datatype="1301">
<Operation id="LostTicket" command="860" />
</Object>
</Object>
<!-- DemoPanel.Transportation -->
<Object id="Transportation">
<!-- DemoPanel.Transportation.IntercomDevice -->
<Object id="IntercomDevice" extends="DemoPanel.Intercom.Device" datatype="1501">
</Object>
<!-- DemoPanel.Transportation.DigitalIn -->
<Object id="DigitalIn" extends="DigitalIn" datatype="1502">
</Object>
<!-- DemoPanel.Transportation.DigitalIn -->
<Object id="Defibrillator" extends="DigitalIn" datatype="1503">
</Object>
<!-- DemoPanel.Transportation.DefibrillatorBox -->
<Object id="DefibrillatorBox" datatype="1504">
<Operation id="Activate" command="701" event="1" appcommand="ACTIVATE" />
</Object>
<!-- DemoPanel.Transportation.Camera -->
<Object id="Camera" datatype="1505">
</Object>
</Object>
<!-- DemoPanel.Hospital -->
<Object id="Hospital">
<!-- DemoPanel.Hospital.IntercomDevice -->
<Object id="IntercomDevice" extends="DemoPanel.Intercom.Device" datatype="1601">
</Object>
<!-- DemoPanel.Hospital.DigitalIn -->
<Object id="DigitalIn" extends="DigitalIn" datatype="1602">
</Object>
<!-- DemoPanel.Hospital.DigitalOut -->
<Object id="DigitalOut" extends="DigitalOut" datatype="1603">
</Object>
</Object>
<!-- DemoPanel.Casino -->
<Object id="Casino">
<!-- DemoPanel.Casino.RouletteTable -->
<Object id="RouletteTable" datatype="1201">
<Operation id="SetMinMaxBet" command="850">
<Property id="Min" source="param1" />
<Property id="Max" source="param2" />
</Operation>
<Operation id="EnterNumber" command="851">
<Property id="Number" source="param1" />
</Operation>
<Operation id="UndoLastNumber" command="852" />
<Operation id="ClearHistory" command="853" />
</Object>
</Object>
</Object>
</Objects>
<Activities>
<Activity id="mycall">
<Property id="myprop" textmacro="77" />
</Activity>
</Activities>
<Incident>
<Property id="prop1" textmacro="72" />
<Property id="prop2" textmacro="73" />
</Incident>
</LegacyDef>