XML Documentation
The purpose of this documentation is provide a reference guide defining the XML elements supported in DriverWorks drivers.
License, Copyright, and Trademark
The content contained in this repository is the intellectual property of Snap One, LLC, (formerly known as Wirepath Home Systems, LLC), and use without a valid license from Snap One is strictly prohibited. The user of this repository shall keep all content contained herein confidential and shall protect this content in whole or in part from disclosure to any and all third parties except as specifically authorized in writing by Snap One.
License and Intellectual Property Disclaimer
The content in this repository is provided in connection with Snap One products. No license, express or implied, by estoppal or otherwise, to any intellectual property rights is granted by this document or in this repository. Except as provided in Snap Oneʼs terms and conditions for the license of such products, Snap One and its affiliates assume no liability whatsoever and disclaim any express or implied warranty, relating to the sale and/or use of Snap One products including liability or warranties relating to fitness for a particular purpose, merchantability, or infringement of any patent, copyright or other intellectual property right. Snap One products are not intended for use in medical, lifesaving, or life sustaining applications.
Information regarding third-party products is provided solely for educational purposes. Snap One is not responsible for the performance or support of third-party products and does not make any representations or warranties whatsoever regarding the quality, reliability, functionality or compatibility of these products. The reader is advised that third parties can have intellectual property rights that can be relevant to this repository and the technologies discussed herein, and is advised to seek the advice of competent legal counsel regarding the intellectual property rights of third parties, without obligation of Snap One.
Snap One retains the right to make changes to this repository or related product specifications and descriptions in this repository, at any time, without notice. Snap One makes no warranty for the use of this repository and assumes no responsibility for any errors that can appear in the repository nor does it make a commitment to update the content contained herein.
Copyright
Copyright 2025 Snap One, LLC. All rights reserved.
The above copyright notice applies to all content in this repository unless otherwise stated explicitly herein that a third-party’s copyright applies.
No part of this publication may be reproduced, photocopied, stored on a retrieval system, or transmitted without the express written consent of the publisher.
Trademarks
Snap One and Snap One Logo, Control4 and the Control4 logo, and DriverWorks are trademarks or registered trademarks of Snap One, LLC. Other product and company names mentioned in this repository may be the trademarks or registered trademarks of their respective owners.
Derivative Works
To the extent that you create any “Derivative Work” (meaning any work that is based upon one or more preexisting versions of the work provided to you in this repository, such as an enhancement or modification, revision, translation, abridgement, condensation, expansion, collection, compilation or any other form in which such preexisting works may be recast, modified, transformed or adapted, explicitly including without limitation, any updates or changes to Snap One, LLC’s software code or intellectual property) such Derivative Work shall be owned by Snap One, LLC and all right, title and interest in and to each such Derivative Work shall automatically vest in Snap One, LLC. To the extent any Derivative Work does not automatically vest in Snap One, LLC by operation of law, you hereby assign such Derivative Work to Snap One, LLC with full title guarantee. Snap One, LLC shall have no obligation to grant you any right in any such Derivative Work.
Contact Us
Snap One, LLC 11734 S. Election Road Salt Lake City, UT 84020 USA
XML and Device Drivers
The purpose of this guide is to assist with defining the XML portion of a device or protocol driver.
Inside of a device driver, protocol code is written in XML and Lua which is an embedded scripting language delivered with the DriverWorks SDK. The resulting file is referred to as the “Protocol Driver”. When combined with the Proxy Driver, it provides the foundation needed to implement a 2-way device driver in the Control4 OS.
In addition to a Common XML section, the guide is organized by Proxy. You will find the Common section has XML element definitions that make up the foundation of a well formed XML component of a protocol driver. Each Proxy specific section contains XML element definitions that are most commonly found in a device class driver as well as other XML elements that you may find useful in your driver development efforts.
XML Data Hierarchy
<devicedata>
<copyright></copyright>
<creator></creator>
<name></name>
<version></version>
<manufacturer></manufacturer>
<model></model>
<created></created>
<modified></modified>
<small></small>
<large></large>
<control></control>
<controlmethod></controlmethod>
<auto_update></auto_update>
<driver></driver>
<user_defined></user_defined>
<combo></combo>
<capabilities></capabilities>
<replaces></replaces>
<notification_attachment_provider></notification_attachment_provider>
<notification_attachments>
<attachment>
<id></id>
<type></type>
<description></description>
<source></source>
</attachment>
</notification_attachments>
<config>
<power_command_needed></power_command_needed>
<documentation></documentation>
<script></script>
<actions>
<action>
<name></name>
<command></command>
<params>
<param>
<name></name>
<type></type>
<variabletype></variabletype>
<minimum></minimum>
<maximum></maximum>
<items>
<item></item>
</items>
<multiselect></multiselect>
<search><search/>
<password></password>
</param>
</params>
<sort_order></sort_order>
</action>
<actions>
<commands>
<command>
<name></name>
<description></description>
<sort_order></sort_order>
<params>
<param>
<name></name>
<type></type>
<variabletype><varibaletype/>
<items><items/>
<item><item/>
<minimum></minimum>
<maximum></maximum>
</param>
</params>
</command>
</commands>
<conditionals>
<conditional>
<id></id>
<name></name>
<type></type>
<condition_statement></condition_statement>
<description></description>
<truetext><truetext/>
<falsetext><falsetext/>
<minimum></minimum>
<maximum></maximum>
<items></items>
<item></item>
</conditional>
</conditionals>
<properties>
<property>
<name></name>
<type></type>
<readonly></readonly>
<tooltip></tooltip>
<default></default>
<minimum></minimum>
<maximum></maximum>
<items></items>
<item></item>
</property>
<properties/>
</config>
<composer_categories>
</category><category>
</composer_categories>
<events>
<event>
<id>1</id>
<name></name>
<description></description>
<sort_order></sort_order>
</event>
</events>
<connections>
<connection>
<id></id>
<facing></facing>
<connectionname></connectionname>
<type></type>
<consumer></consumer>
<audiosource></audiosource>
<videosource></videosource>
<linelevel></linelevel>
<classes>
<class>
<classname></classname>
</class>
</classes>
<hidden></hidden>
</connection>
</connections>
</devicedata>
Common XML
devicedata
<devicedata></devicedata>
Parent
None
This is the root level XML element that contains all of the driver’s XML schema.
Example
<devicedata>
driver XML code
</devicedata>
copyright
<copyright></copyright>
Parent
The copyright element contains the driver’s copyright information
Example
<copyright>Copyright 2024 Control4 Corporation. All rights reserved.</copyright>
creator
<creator></creator>
Parent
The creator element contains the name of the entity which created the driver.
Example
<creator>Control4</creator>
manufacturer
<manufacturer></manufacturer>
Parent
This element contains the manufacturer information for the device
Example
<manufacturer>Control4</manufacturer>
name
<name></name>
Parent
This element contains the model name for the device.
Example
<name>Control4 C4-55X805G</name>
model
<model></model>
Parent
This element contains the model information for the device.
Example
<model>C4-55dfe05</model>
created
<created></created>
Parent
This element contains the date and time at which the driver was created.
Example
<created>09/18/2021 4:30 PM</created>
searchtypes
<search_types></search_types>
Parent
This element contains the searchable text that is be used to locate the driver contained within the type XML element.
Example
<search_types>
<type>control4:tv:XBR-55nfe05G</type>
</search_types>
type
<type></types>
Parent
This element contains the searchable text that can be used to locate the driver contained within the type XML element.
Example
<search_types>
<type>control4:tv:XBR-45nfe05G</type>
</search_types>
modified
<modified></modified>
Parent
This element contains the date and time at which the driver was last modified.
Example
`<modified>3/22/2021 1:15 PM</modified>
version
<version></version>
Parent
This element contains the version of the driver.
Example
<version>133</version>
small
<small></small>
Parent
This element contains the root location and name of the small icon used to represent the driver in Composer Pro.
Example
<small>devices_sm\tv.gif</small>
large
<large></large>
Parent
This element contains the root location and name of the large icon used to represent the driver in Composer Pro.
Example
<large>devices_sm\tv.gif</large>
control
<control></control>
Parent
This element is used to define the underlying framework used by the device. Current options include av_gen or lua_gen. Typically, AV devices use av_gen while non-AV devices use lua_gen.
Examples
<control>lua_gen</control>
<control>av_gen</control>
controlmethod
<controlmethod></controlmethod>
Parent
This element is used to defined the manner in which the device is controlled. For example: IP, Serial.
Example
<controlmethod>ip</controlmethod>
keywords
<keywords></keywords>
Parent
This element is used to determine whether or not a driver is returned in a standard driver search from the online driver database. For example, passing Lua_Agent
would treat this driver as an Agent and not return it in a standard driver search
Example
<keywords>Lua_Agent</keywords>
driver
<driver></driver>
Parent
This element is used to designate DriverWorks drivers. It contains the value of DriverWorks.
Example
<driver>DriverWorks</driver>
proxies
<proxies></proxies>
Parent
This element lists the number proxies used by the driver. One or more proxies may be defined. Proxies are defined within the <proxies></proxies>
element.
Example
<proxies qty="1">
<proxy proxybindingid="5001" name="Control4 TV" primary="True">tv</proxy>
</proxies>
proxy
<proxy></proxy>
Parent
This element is used to define a proxy used by the driver.
Attributes | Description |
---|---|
<proxybindingid> |
Binding id value |
<name> |
Model name |
<primary> |
Indicates if the proxy is the primary proxy used by the driver “True” or “False” |
Example
<proxies qty="1">
<proxy proxybindingid="5001" name="Control4 TV" primary="True">tv</proxy>
</proxies>
capabilities
<capabilities><\capabilities>
Parent
This element contains the driver’s device capabilities. Capabilities are proxy dependent.
Example
Note that the example to the right has been taken from a TV driver.
<capabilities>
<audio_consumer_count>1</audio_consumer_count>
<audio_provider_count>1</audio_provider_count>
<has_audio>True</has_audio>
<has_discrete_balance_control>False</has_discrete_balance_control>
<has_discrete_bass_control>False</has_discrete_bass_control>
<has_discrete_channel_select>True</has_discrete_channel_select>
<has_discrete_input_select>True</has_discrete_input_select>
<has_discrete_loudness_control>False</has_discrete_loudness_control>
<has_discrete_mute_control>True</has_discrete_mute_control>
<has_discrete_treble_control>False</has_discrete_treble_control>
<has_discrete_volume_control>True</has_discrete_volume_control>
<has_toad_input_select>False</has_toad_input_select>
<video_consumer_count>5</video_consumer_count>
<video_provider_count>0</video_provider_count>
<has_channel_up_down>True</has_channel_up_down>
<has_toggle_loudness_control>False</has_toggle_loudness_control>
<has_toggle_mute_control>True</has_toggle_mute_control>
<has_up_down_balance_control>False</has_up_down_balance_control>
<has_up_down_bass_control>False</has_up_down_bass_control>
<has_up_down_treble_control>False</has_up_down_treble_control>
<has_up_down_volume_control>True</has_up_down_volume_control>
<requires_channel_after_input>False</requires_channel_after_input>
</capabilities>
replaces
<replaces></replaces>
Parent
This element is optional and if used, requires at least one instance of replace containing the .c4i or .c4z file name. Once the driver is loaded, Director will remove the driver defined in the replace element from the project. Note that the driver file is also removed from the local driver database of Composer Pro. This occurs without warning. The driver file is then marked as "Obsolete" upon driver searches. Obsolete drivers cannot be loaded into a project.
Example
<replaces>
<replace>driver.c4z</replace>
</replaces>
connections
<connections></connections>
Parent
This element defines the driver connections which are utilized to create the bindings within the Control4 system. Numerous connections can be defined within the <connections>
element an individual <connection>
element.
Example
The example to the right is an entire connections XML section from a sample TV driver. It provides numerous example of the various types of connections and their respective XML structure that may be found in a driver written using the TV Proxy.
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>TV</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TV</classname>
</class>
</classes>
</connection>
<connection>
<id>6001</id>
<facing>6</facing>
<connectionname>Network Connection</connectionname>
<type>4</type>
<consumer>true</consumer>
<audiosource>false</audiosource>
<videosource>false</videosource>
<linelevel>true</linelevel>
<idautobind>5001</idautobind>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>20060</number>
<auto_connect>False</auto_connect>
<monitor_connection>False</monitor_connection>
<keep_connection>False</keep_connection>
</port>
</ports>
<ports>
<port>
<number>80</number>
<auto_connect>False</auto_connect>
<monitor_connection>False</monitor_connection>
<keep_connection>False</keep_connection>
</port>
</ports>
</class>
<class>
<classname>UDP</classname>
<ports>
<port>
<number>9</number>
</port>
</ports>
</class>
</classes>
</connection>
<connection proxybindingid="5001" verified="False">
<id>4000</id>
<facing>6</facing>
<connectionname>AUDIO OUT</connectionname>
<type>6</type>
<consumer>false</consumer>
<audiosource>true</audiosource>
<videosource>false</videosource>
<linelevel>true</linelevel>
<classes>
<class>
<classname>DIGITAL_OPTICAL</classname>
</class>
<class>
<classname>STEREO</classname>
</class>
</classes>
</connection>
<connection proxybindingid="5001" verified="False">
<id>1000</id>
<facing>6</facing>
<connectionname>ANTENNA</connectionname>
<type>5</type>
<consumer>true</consumer>
<audiosource>false</audiosource>
<videosource>false</videosource>
<linelevel>true</linelevel>
<classes>
<class>
<classname>RF_UHF_VHF</classname>
</class>
</classes>
</connection>
<connection proxybindingid="5001" verified="False">
<id>1020</id>
<facing>6</facing>
<connectionname>CABLE</connectionname>
<type>5</type>
<consumer>true</consumer>
<audiosource>false</audiosource>
<videosource>false</videosource>
<linelevel>true</linelevel>
<classes>
<class>
<classname>RF_CABLE</classname>
</class>
</classes>
</connection>
<connection proxybindingid="5001" verified="False">
<id>1001</id>
<facing>6</facing>
<connectionname>HDMI 1</connectionname>
<type>5</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>True</linelevel>
<classes>
<class>
<classname>HDMI</classname>
</class>
</classes>
</connection>
<connection proxybindingid="5001" verified="False">
<id>1002</id>
<facing>6</facing>
<connectionname>HDMI 2</connectionname>
<type>5</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>True</linelevel>
<classes>
<class>
<classname>HDMI</classname>
</class>
</classes>
</connection>
<connection proxybindingid="5001" verified="False">
<id>1003</id>
<facing>6</facing>
<connectionname>HDMI 3</connectionname>
<type>5</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>True</linelevel>
<classes>
<class>
<classname>HDMI</classname>
</class>
</classes>
</connection>
<connection proxybindingid="5001" verified="False">
<id>1004</id>
<facing>6</facing>
<connectionname>HDMI 4</connectionname>
<type>5</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>True</linelevel>
<classes>
<class>
<classname>HDMI</classname>
</class>
</classes>
</connection>
<connection proxybindingid="5001" verified="False">
<id>1005</id>
<facing>6</facing>
<connectionname>Video1 (Composite)</connectionname>
<type>5</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>True</linelevel>
<classes>
<class>
<classname>COMPOSITE</classname>
</class>
</classes>
</connection>
<connection proxybindingid="5001" verified="False">
<id>3005</id>
<facing>6</facing>
<connectionname>Video1 (Composite)</connectionname>
<type>6</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>True</linelevel>
<classes>
<class>
<classname>STEREO</classname>
</class>
</classes>
</connection>
<connection proxybindingid="5001">
<id>7000</id>
<facing>6</facing>
<connectionname>Room Selection - Output</connectionname>
<type>7</type>
<consumer>False</consumer>
<audiosource>True</audiosource>
<videosource>True</videosource>
<linelevel>True</linelevel>
<classes>
<class>
<classname>VIDEO_SELECTION</classname>
</class>
<class>
<classname>AUDIO_VOLUME</classname>
</class>
<class>
<classname>AUDIO_SELECTION</classname>
</class>
</classes>
</connection>
<connection>
<id>2</id>
<facing>1</facing>
<connectionname>IR</connectionname>
<type>1</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>True</linelevel>
<classes>
<class>
<classname>IR_OUT</classname>
</class>
</classes>
</connection>
</connections>
connection
<connection></connection>
Parent
This element defines a single driver connection which are utilized to create the bindings within the Control4 system.
Example
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>TV</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TV</classname>
</class>
</classes>
</connection>
<connection>
</connections>
id
<id></id>
Parent
This element is the connection id value. Connection id values are assigned based on the type of connection being made. Values are:
Binding | ID Range |
---|---|
Control Bindings | 1 - 999 |
Video Inputs | 1000 - 1099 |
Video Outputs | 2000 - 2999 |
Audio Inputs | 3000 - 3099 |
Audio Outputs | 4000 - 4999 |
Proxy Bindings | 5000 - 5999 |
Network Bindings | 6000 - 6999 |
Room Bindings | 7000 - 7999 |
Power Manager | 8000 - 8999 |
Example
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>TV</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TV</classname>
</class>
</classes>
</connection>
<connection>
</connections>
facing
<facing></facing>
Parent
This element is the numerical value indicating the location of the physical connection location. Values are:
- Front - 0
- Back - 1
- Top - 2
- Bottom - 3
- Left - 4
- Right - 5
- Unknown - 6
Example
<connections>
<connection>
<id>5001</id>
<facing>5</facing>
<connectionname>TV</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TV</classname>
</class>
</classes>
</connection>
<connection>
</connections>
connection name
<connectionname></connectionname>
Parent
This element is the connection’s name. This value will be displayed in Composer pro’s Connection area.
Example
<connections>
<connection>
<id>5001</id>
<facing>5</facing>
<connectionname>TV</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TV</classname>
</class>
</classes>
</connection>
<connection>
</connections>
type
<type></type>
Parent
This element contains the type of this connection. Values are:
- Control - 1
- Proxy - 2
- Audio/Video - 3
- Network - 4
- Video - 5
- Audio - 6
- Room - 7
Example
<connections>
<connection>
<id>5001</id>
<facing>5</facing>
<connectionname>TV</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TV</classname>
</class>
</classes>
</connection>
<connection>
</connections>
consumer
<consumer></consumer>
Parent
This element indicates if this driver is a consumer or a provider of this connection. Values are “True” or “False”.
Example
<connections>
<connection>
<id>5001</id>
<facing>5</facing>
<connectionname>TV</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TV</classname>
</class>
</classes>
</connection>
<connection>
</connections>
audiosource
<audiosource></audiosource>
Parent
This element indicates if this device connection provides a source of audio. Values are: “True” or “False”.
Example
<connections>
<connection>
<id>5001</id>
<facing>5</facing>
<connectionname>TV</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TV</classname>
</class>
</classes>
</connection>
<connection>
</connections>
videosource
<videosource></videosource>
Parent
This element indicates if this device connection provides a source of video. Values are: “True” or “False”.
Example
<connections>
<connection>
<id>5001</id>
<facing>5</facing>
<connectionname>TV</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TV</classname>
</class>
</classes>
</connection>
<connection>
</connections>
linelevel
<linelevel></linelevel>
Parent
This element indicates if this connection provides a line level source. Values are: “True” or “False”.
Example
<connections>
<connection>
<id>5001</id>
<facing>5</facing>
<connectionname>TV</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TV</classname>
</class>
</classes>
</connection>
<connection>
</connections>
classes
<classes></classes>
Parent
This element is the root for one or more classes defined within the connection. If the class is TCP or UDP then there may be a ports section as seen in the example to the right. This includes the IP Port number for the network connection.
Example
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>TV</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TV</classname>
</class>
</classes>
</connection>
<connection>
class
<class></class>
Parent
This element defines a single class for a connection.
Example
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>TV</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TV</classname>
</class>
</classes>
</connection>
<connection>
classname
<classname></classname>
Parent
This element defines the name of a single class for a connection.
Example
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>TV</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TV</classname>
</class>
</classes>
</connection>
<connection>
ports
<ports></ports>
Parent
This element defines the ports used for a class within a connection. Numerous port numbers can be defined.
Example
<connection>
<id>6001</id>
<facing>6</facing>
<connectionname>Network Connection</connectionname>
<type>4</type>
<consumer>true</consumer>
<audiosource>false</audiosource>
<videosource>false</videosource>
<linelevel>true</linelevel>
<idautobind>5001</idautobind>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>20060</number>
<auto_connect>False</auto_connect>
<monitor_connection>False</monitor_connection>
<keep_connection>False</keep_connection>
</port>
</ports>
<ports>
<port>
<number>80</number>
<auto_connect>False</auto_connect>
<monitor_connection>False</monitor_connection>
<keep_connection>False</keep_connection>
</port>
</ports>
</class>
<class>
<classname>UDP</classname>
<ports>
<port>
<number>9</number>
</port>
</ports>
</class>
</classes>
</connection>
port
<port></port>
Parent
This element defines a single port used for a class within a connection.
Example
<connection>
<id>6001</id>
<facing>6</facing>
<connectionname>Network Connection</connectionname>
<type>4</type>
<consumer>true</consumer>
<audiosource>false</audiosource>
<videosource>false</videosource>
<linelevel>true</linelevel>
<idautobind>5001</idautobind>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>20060</number>
<auto_connect>False</auto_connect>
<monitor_connection>False</monitor_connection>
<keep_connection>False</keep_connection>
</port>
</ports>
<ports>
<port>
<number>80</number>
<auto_connect>False</auto_connect>
<monitor_connection>False</monitor_connection>
<keep_connection>False</keep_connection>
</port>
</ports>
</class>
<class>
<classname>UDP</classname>
<ports>
<port>
<number>9</number>
</port>
</ports>
</class>
</classes>
</connection>
number
<number></number>
Parent
This element defines the number assigned to the port used for a single class within a connection.
Example
<connection>
<id>6001</id>
<facing>6</facing>
<connectionname>Network Connection</connectionname>
<type>4</type>
<consumer>true</consumer>
<audiosource>false</audiosource>
<videosource>false</videosource>
<linelevel>true</linelevel>
<idautobind>5001</idautobind>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>20060</number>
<auto_connect>False</auto_connect>
<monitor_connection>False</monitor_connection>
<keep_connection>False</keep_connection>
</port>
</ports>
<ports>
<port>
<number>80</number>
<auto_connect>False</auto_connect>
<monitor_connection>False</monitor_connection>
<keep_connection>False</keep_connection>
</port>
</ports>
</class>
<class>
<classname>UDP</classname>
<ports>
<port>
<number>9</number>
</port>
</ports>
</class>
</classes>
</connection>
auto connect
<autoconnect></autoconnect>
Parent
This element indicates if the connection should connect automatically through this port. Values are “True” or “False”.
Example
<connection>
<id>6001</id>
<facing>6</facing>
<connectionname>Network Connection</connectionname>
<type>4</type>
<consumer>true</consumer>
<audiosource>false</audiosource>
<videosource>false</videosource>
<linelevel>true</linelevel>
<idautobind>5001</idautobind>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>20060</number>
<auto_connect>False</auto_connect>
<monitor_connection>False</monitor_connection>
<keep_connection>False</keep_connection>
</port>
</ports>
<ports>
<port>
<number>80</number>
<auto_connect>False</auto_connect>
<monitor_connection>False</monitor_connection>
<keep_connection>False</keep_connection>
</port>
</ports>
</class>
<class>
<classname>UDP</classname>
<ports>
<port>
<number>9</number>
</port>
</ports>
</class>
</classes>
</connection>
monitor connection
<monitor_connection></monitor_connection>
Parent
This element indicates if the connection status on this port should be monitored. Values are: “True” or “False”.
Example
<connection>
<id>6001</id>
<facing>6</facing>
<connectionname>Network Connection</connectionname>
<type>4</type>
<consumer>true</consumer>
<audiosource>false</audiosource>
<videosource>false</videosource>
<linelevel>true</linelevel>
<idautobind>5001</idautobind>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>20060</number>
<auto_connect>False</auto_connect>
<monitor_connection>False</monitor_connection>
<keep_connection>False</keep_connection>
</port>
</ports>
<ports>
<port>
<number>80</number>
<auto_connect>False</auto_connect>
<monitor_connection>False</monitor_connection>
<keep_connection>False</keep_connection>
</port>
</ports>
</class>
<class>
<classname>UDP</classname>
<ports>
<port>
<number>9</number>
</port>
</ports>
</class>
</classes>
</connection>
keep connection
<keep_connection></keep_connection>
Parent
This element indicates if the connection on this port should be maintained once established. Values are “True” or “False”.
Example
<connection>
<id>6001</id>
<facing>6</facing>
<connectionname>Network Connection</connectionname>
<type>4</type>
<consumer>true</consumer>
<audiosource>false</audiosource>
<videosource>false</videosource>
<linelevel>true</linelevel>
<idautobind>5001</idautobind>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>20060</number>
<auto_connect>False</auto_connect>
<monitor_connection>False</monitor_connection>
<keep_connection>False</keep_connection>
</port>
</ports>
<ports>
<port>
<number>80</number>
<auto_connect>False</auto_connect>
<monitor_connection>False</monitor_connection>
<keep_connection>False</keep_connection>
</port>
</ports>
</class>
<class>
<classname>UDP</classname>
<ports>
<port>
<number>9</number>
</port>
</ports>
</class>
</classes>
</connection>
config
<config></config>
Parent
This element is the root of the driver’s config section.
Example
The example to the right is a <config> XML section from a sample TV driver. If provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
power management method
<power_management_method></power_management_method>
Parent
This element defines the device’s means of managing power.
Example
The example to the right is a <config> XML section from a sample TV driver. If provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
power command delay
<power_command_delay></power_command_delay>
Parent
This element indicates the
Example
The example to the right is a <config> XML section from a sample TV driver. If provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
power delay
<power_delay></power_delay>
Parent
This element
Example
The example to the right is a <config> XML section from a sample TV driver. If provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
power command needed
<power_command_needed></power_command_needed>
Parent
This element
Example
The example to the right is a <config> XML section from a sample TV driver. If provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
serial settings
<serial_settings></serial_settings>
Parent
This element defines a serial connection settings.
Attributes | Description |
---|---|
baud | Baud rate of the connection |
data bits | Number of data bits per character for the connection |
parity | The parity bit set for the connection: N, O, E, M and S. |
stop bit | Stop bit value sent after each character. |
flow control | Flow control used or not. |
Example
The example to the right is a <config> XML section from a sample TV driver. If provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
ir section
<irsection></irsection>
Parent
This element
Example
The example to the right is a <config> XML section from a sample TV driver. If provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
ir codes
<ircodes></ircodes>
Parent
This element
Example
The example to the right is a <config> XML section from a sample TV driver. It provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
ir code
<ircode></ircode>
Parent
This element
Example
The example to the right is a <config> XML section from a sample TV driver. If provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
id
<id></id>
Parent
This element
Example
The example to the right is a <config> XML section from a sample TV driver. If provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
name
<name></name>
Parent
This element
Example
The example to the right is a <config> XML section from a sample TV driver. If provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
transmit
<transmit></transmit>
Parent
This element
Example
The example to the right is a <config> XML section from a sample TV driver. If provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
repeatcount
<repeatcount></repeatcount>
Parent
This element
Example
The example to the right is a <config> XML section from a sample TV driver. If provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
delayafter
<delayafter></delayafter>
Parent
This element
Example
The example to the right is a <config> XML section from a sample TV driver. If provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
pattern
<pattern></pattern>
Parent
This element
Example
The example to the right is a <config> XML section from a sample TV driver. If provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
altpattern
<altpattern></altpattern>
Parent
This element
Example
The example to the right is a <config> XML section from a sample TV driver. If provides numerous example of XML structure that may be found in a driver written using the TV Proxy.
<config>
<power_management_method>DiscreteCodes</power_management_method>
<power_command_delay>0</power_command_delay>
<power_delay>0</power_delay>
<power_command_needed>False</power_command_needed>
<serialsettings>9600 8 odd 1 none</serialsettings>
<irsection>
<ircodes>
<ircode>
<id>10</id>
<name>NUMBER_0</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0017 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 042e</pattern>
<altpattern />
</ircode>
<ircode>
<id>11</id>
<name>NUMBER_1</name>
<transmit>PULSE</transmit>
<repeatcount>3</repeatcount>
<delayafter>0</delayafter>
<pattern>0000 0066 0000 000d 0061 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0018 0018 0018 045b</pattern>
<altpattern />
</ircode>
</config>
rfs
<rfs></rfs>
Parent
This element
Example
<rfs>
<rf>rf_uhf_vhf</rf>
<rf>rf_cable</rf>
</rfs>
rf
<rf></rf>
Parent
This element defines the supported RF frequency
Example
<rfs>
<rf>rf_uhf_vhf</rf>
<rf>rf_cable</rf>
</rfs>
documentation
<documentation></documentation>
Parent
This element indicates location and name of the driver’s documentation file.
Attributes | Description |
---|---|
file | Location and name of the driver’s documentation file. |
Example
<documentation file="www/documentation.rtf"></documentation>
script
<script></script>
Parent
This element
Attributes | Description |
---|---|
file | Main scripting file used by the driver. Typically driver.lua |
encryption | A value of 1 if the driver should be encrypted. A value of 0 if the driver should not be encrypted. |
jit | A value of 1 if the driver should be loaded using luajit. A value of 0 if the driver should be loaded using PUC. |
Example
<script file="driver.lua" encryption="2" jit="1"></script>
control
<SINGLETON_ID></SINGLETON_ID>
Parent
This element is used to ensures that the driver can only be loaded once within a project.
Examples
<SINGLETON_ID>music_bridge_driver</SINGLETON_ID>
composer_categories
<composer_categories></composer_categories>
Parent
Attributes | Description |
---|---|
category |
Example
<composer_categories>
<category>Audio/Video</category>
</composer_categories>
Properties XML
<properties></properties>
This area contains definitions for the XML elements that are supported in the Properties section of a device driver’s driver.xml file. Properties are exposed in the Composer Pro System Design interface on the Properties tab. They provide an excellent way for an integrator to configure your driver.
Additional information regarding Properties, including the various types of properties supported, and the role they play in driver performance can be found here: DriverWorks Fundamentals: Properties
properties
<properties></properties>
Parent
The properties element contains the driver’s XML that defines the Properties displayed in Composer Pro. It is the root element for all Properties.
Example
<properties>
<property>
<name>Driver Version</name>
<type>STRING</type>
<readonly>true</readonly>
<default>--</default>
</property>
</properties>
property
<property></property>
Parent
The property element contains the driver’s XML that defines an individual Property displayed in Composer Pro.
Example
<properties>
<property>
<name>Driver Version</name>
<type>STRING</type>
<readonly>true</readonly>
<default>--</default>
</property>
</properties>
name
<name></name>
Parent
The name element contains the name of the Property. This name is used to identify the property and is displayed in Composer Pro.
Example
<properties>
<property>
<name>Driver Version</name>
<type>STRING</type>
<readonly>true</readonly>
<default>--</default>
</property>
</properties>
type
<type></type>
Parent
The type element identifies the type of data supported by the Property. It contains the name of the Property Type.
Below is table of currently supported Property Types. For detailed information regarding each, please see: Property Types and Advanced Property Types.
Property | Description |
---|---|
List | Provides a static list of selectable objects. |
Ranged Float | Provides a range of selectable floating-point or non-integer numbers. |
Ranged Integer | Provides a range of selectable integers. |
String | Provides a read only string. |
String Password | Provides a string which can be used as a password. Note that this value is persisted. |
Device Selector | Provides a list of selectable drivers. See the Device Selector topic for more information. For more information, please see: Using Device Selector |
Color Selector | Provides the ability to select a color. See the Color Selector topic for more information. For more information, please see: Using COLOR SELECTOR. |
Dynamic List | Provides driver-based, dynamically updated lists. See the Dynamic List topic for more information. |
Link | Provides a link to a resource which can be used to support your driver. |
Label | Advanced Property that provides a Header Label on the Properties Screen in Composer Pro. |
Scroll | Advanced Property that provides a graphical way to set an integer value on a scale on the Properties Screen in Composer Pro. |
Track | Advanced Property that provides another option for setting an integer value which is similar to Scroll. However, Track is more of a discrete slider control. |
Example
<properties>
<property>
<name>Driver Version</name>
<type>STRING</type>
<readonly>true</readonly>
<default>--</default>
</property>
</properties>
readonly
<readonly></readonly>
Parent
When set to True, the readonly element designates a Property as one that only displays information regarding the driver. If the property needs to provide information that is selectable, this must be set to false or omitted.
Example
<properties>
<property>
<name>Driver Version</name>
<type>STRING</type>
<readonly>true</readonly>
<default>--</default>
</property>
</properties>
tooltip
<tooltip></tooltip>
Parent
The tooltip element provides the ability to display information regarding the property when a Composer Pro user hovers over the Property. In the example below, the tool tip of “Select the file source.” will be displayed for the list type property named Image File Source.
Example
<property>
<name>Image File Source</name>
<type>LIST</type>
<readonly>false</readonly>
<tooltip>Select the file source.</tooltip>
</property>
default
<default></default>
Parent
The default element provides the ability to define a default value for the Property that will be shown when it is viewed in Composer Pro. In the example, the default value of 20 will be displayed for this ranged integer type property named Ranged Integer.
Example
<property>
<name>Ranged Integer</name>
<type>RANGED_INTEGER</type>
<minimum>0</minimum>
<maximum>100</maximum>
<default>20</default>
</property>
minimum
<minimum></minimum>
Parent
The minimum element provides the ability to define a value that represents the lowest number accepted by the Property. In the example, the minimum value of 0 will be accepted for this ranged integer type property named Ranged Integer.
Example
<property>~
<name>Ranged Integer</name>
<type>RANGED_INTEGER</type>
<minimum>0</minimum>
<maximum>100</maximum>
<default>20</default>
</property>
maximum
<maximum></maximum>
Parent
The maximum element provides the ability to define a value that represents the highest number accepted by the Property. In the example, the maximum value of 100 will be accepted for this ranged integer type property named Ranged Integer.
Example
<property>
<name>Ranged Integer</name>
<type>RANGED_INTEGER</type>
<minimum>0</minimum>
<maximum>100</maximum>
<default>20</default>
</property>
items
<items></items>
Parent
The items element provides the ability to define the content displayed through the <item></item>
XML. In the list property example, six items are displayed in list format when this Property is displayed in Composer Pro. Note that each item is formed within its own <item></items>
XML tag.
Use of the Item element is supported in the following Property Types:
Example
<property>
<name>Test List</name>
<type>LIST</type>
<readonly>false</readonly>
<tooltip>Test List Property Tooltip</tooltip>
<default>Item 3</default>
<items>
<item>Item 1</item>
<item>Item 2</item>
<item>Item 3</item>
<item>Item 4</item>
<item>Item 5</item>
<item>Item 6</item>
</items>
</property>
item
<item></item>
Parent
The item element provides the ability to display up to six items in support of the Property’s use. In the list property example, six items are displayed in list format when this Property is displayed in Composer Pro. Note that each item is formed within its own <item></item>
XML tag.
Example
<property>
<name>Test List</name>
<type>LIST</type>
<readonly>false</readonly>
<tooltip>Test List Property Tooltip</tooltip>
<default>Item 3</default>
<items>
<item>Item 1</item>
<item>Item 2</item>
<item>Item 3</item>
<item>Item 4</item>
<item>Item 5</item>
<item>Item 6</item>
</items>
</property>
multiselect
<multiselect></multiselect>
Parent
The multiselect element provides the ability for the user to make a selection from defined items when using the Property. In the device selector property example, two items are shown when this Property is displayed in Composer Pro. With the multiselect element set to True, the user can select one or both of the two defined <items></items>
: pool.c4i or thermostat.c4i.
Example
<property>
<name>Device Multi Selector</name>
<type>DEVICE_SELECTOR</type>
<items>
<item>pool.c4i</item>
<item>thermostat.c4i</item>
</items>
<multiselect>true</multiselect>
<default></default>
<tooltip>DEVICE_SELECTOR Property Tooltip</tooltip>
</property>
Conditionals XML
<conditionals></conditionals>
This area contains definitions for the XML elements that are supported in the Conditionals section of a device driver’s driver.xml file. Conditionals are defined in the driver’s XML area within the conditionals tag.
Driver conditionals are useful as they provide the opportunity for custom programming through the interface found in Composer Pro. When considering conditionals, it’s helpful to think of them as “If” programming statements. For example, a light driver may have a simple conditional defined for when the light is in the On state. Using this conditional can then support programming in the project that will be executed if the light is On.
Additional information regarding the types of Conditionals supported as well as how those Conditionals can be used in driver programming can be found here: DriverWorks Fundamentals: Conditionals
conditionals
<conditionals></conditionals>
Parent
The conditionals element contains the driver’s XML that defines the Conditionals displayed in Composer Pro. It is the root element for all Conditionals. in the example, the <conditionals></conditionals>
XML contains one conditional named SIMPLE LIGHT ON.
Example
<conditionals>
<conditional>
<id>0</id>
<name>SIMPLE_LIGHT_ON</name>
<type>SIMPLE</type>
<condition_statement>[0-SIMPLE] Light is on</condition_statement>
<description>[0] NAME is On</description>
</conditional>
</conditionals>
conditional
<conditional></conditional>
Parent
The conditional element contains the driver’s XML that defines an individual conditional displayed in Composer Pro. In the example, the <conditional></conditional>
contains the XML elements that make up a conditional named SIMPLE LIGHT ON.
Example
<conditionals>
<conditional>
<id>0</id>
<name>SIMPLE_LIGHT_ON</name>
<type>SIMPLE</type>
<condition_statement>[0-SIMPLE] Light is on</condition_statement>
<description>[0] NAME is On</description>
</conditional>
</conditionals>
id
<id></id>
Parent
The id element provides a way to assign a numerical identification value to an individual conditional. All conditionals require an <id></id>
value. It is recommended that conditionals be numbered beginning with 0.
Example
<conditionals>
<conditional>
<id>0</id>
<name>SIMPLE_LIGHT_ON</name>
<type>SIMPLE</type>
<condition_statement>[0-SIMPLE] Light is on</condition_statement>
<description>[0] NAME is On</description>
</conditional>
</conditionals>
name
<name></name>
Parent
The name element contains the name of the Conditional. This name is used to identify the Conditional and is displayed in Composer Pro. In the example below, the name of the Conditional is SIMPLE LIGHT ON.
Example
<conditionals>
<conditional>
<id>0</id>
<name>SIMPLE_LIGHT_ON</name>
<type>SIMPLE</type>
<condition_statement>[0-SIMPLE] Light is on</condition_statement>
<description>[0] NAME is On</description>
</conditional>
</conditionals>
type
<type></type>
Parent
The type element identifies the type of Conditional defined within the <conditional></conditional>
tag. Currently there are seven types of conditionals that can be included in your driver. They vary in complexity and each are intended to provide a specific programming opportunity. They include:
Conditional | Description |
---|---|
List | Asks if the current device value is equal to or not equal to the selected item in a list of values defined in the driver. These values can be numbers or strings. |
String | Asks if the current device value provided in string format is equal to or not equal to a string value entered in ComposerPro programming by the integrator. |
Number | Uses the following operators: =, !=, \\\<, \\\<=, \\\>, \\\>= to compare the current device value with an integer entered in ComposerPro programming by the dealer. |
Boolean | Asks a True/False question based on True/False text provided by the driver conditional configuration. |
Simple | Asks a true or false question. |
Room | Provides the ability to initiate programming based on whether or not a room selection is equal to or not equal to a room in the project. |
Device | Provides the ability to initiate programming based on whether or not a device selection is equal to or not equal to a device in the project. |
Example
In the example, the Conditional type is SIMPLE
<conditionals>
<conditional>
<id>0</id>
<name>SIMPLE_LIGHT_ON</name>
<type>SIMPLE</type>
<condition_statement>[0-SIMPLE] Light is on</condition_statement>
<description>[0] NAME is On</description>
</conditional>
</conditionals>
condition statement
<condition_statement></condition_statement>
Parent
The conditional statement states a question being asked regarding a state of the driver. This is the statement that is shown before the condition logic. For example, the Simple Light On conditional , asks the question ‘The Light is on’. It is basically a useful statement that supports the conditional. When an integrator is viewing this driver’s conditionals in ComposerPro, they can select “The Light is on” from the list of conditionals and can ultimately initiate programming when the light is in the On state.
Example
<conditionals>
<conditional>
<id>0</id>
<name>SIMPLE_LIGHT_ON</name>
<type>SIMPLE</type>
<condition_statement> Light is on</condition_statement>
<description>NAME is On</description>
</conditional>
</conditionals>
description
<description></description>
Parent
The description element needs to contain the NAME macro. NAME is a key value that is equivalent to your driver’s unique name. Every conditional needs to include NAME. ComposerPro treats the NAME macro in your conditional XML in a way that replaces it with your driver’s unique name. The unique name is formatted by the name of the room where the driver resides followed by “->”, followed by the name of the driver as it is named in the project.
For example, consider that the name of our example driver is “Living Room Lamp” and it is in the Living Room. Based on this, “Living Room->Living Room Lamp” will replace NAME when your conditional programming description is displayed in the conditionals window and the script actions area of ComposerPro. Using the example above, ComposerPro will display the description XML element as: “If Living Room->Living Room Lamp is on”.
Example
<conditionals>
<conditional>
<id>0</id>
<name>SIMPLE_LIGHT_ON</name>
<type>SIMPLE</type>
<condition_statement> Light is on</condition_statement>
<description>NAME is On</description>
</conditional>
</conditionals>
true text
<true_text></true_text>
Parent
The true text element provides the ability to define text that will be displayed in Composer Pro programming if a Boolean Conditional is True.
Example
<conditional>
<id>3</id>
<name>BOOL_LIGHT_ON</name>
<type>BOOL</type>
<condition_statement>[3-BOOL] Light is On</condition_statement>
<description>[3] NAME Light is On is STRING</description>
<true_text>True</true_text>
<false_text>False</false_text>
</conditional>
false text
<false_text></false_text>
Parent
The false text element provides the ability to define text that will be displayed in Composer Pro programming if a Boolean Conditional is false.
Example
<conditional>
<id>3</id>
<name>BOOL_LIGHT_ON</name>
<type>BOOL</type>
<condition_statement> Light is On</condition_statement>
<description> NAME Light is On is STRING</description>
<true_text>True</true_text>
<false_text>False</false_text>
</conditional>
minimum
<minimum></minimum>
Parent
The minimum element provides the ability to define a value that represents the lowest value of a range of numbers used by a NUMBER type Conditional. In the example, the minimum value of the range is 10.
Example
<conditional>
<id>4</id>
<name>NUMBER_LIGHT_LEVEL</name>
<type>NUMBER</type>
<condition_statement>[4-NUMBER] Light Level</condition_statement>
<description>[4] NAME is LOGIC INTEGER</description>
<minimum>10</minimum>
<maximum>150</maximum>
</conditional>
maximum
<maximum></maximum>
Parent
The maximum element provides the ability to define a value that represents the highest value of a range of numbers used by a NUMBER type Conditional. In the example, the maximum value of the range is 150.
Example
<conditional>
<id>4</id>
<name>NUMBER_LIGHT_LEVEL</name>
<type>NUMBER</type>
<condition_statement>[4-NUMBER] Light Level</condition_statement>
<description>[4] NAME is LOGIC INTEGER</description>
<minimum>10</minimum>
<maximum>150</maximum>
</conditional>
items
<items></items>
Parent
The items element provides the ability to define a list of items used by the LIST type Conditional. The content is defined within the <items></items>
XML.
In the list Conditional example, ten percentages are defined in list format when this Conditional is displayed in Composer Pro. Note that each item is formed within its own <item></items>
XML tag.
Use of the Item element is supported in the following Conditional Types:
Example
<conditional>
<id>6</id>
<name>LIST_LIGHT_LEVEL</name>
<type>LIST</type>
<condition_statement>[6-LIST] Light Level</condition_statement>
<description>[6] NAME is LOGIC STRING</description>
<items>
<item>10%</item>
<item>20%</item>
<item>30%</item>
<item>40%</item>
<item>50%</item>
<item>60%</item>
<item>70%</item>
<item>80%</item>
<item>90%</item>
<item>100%</item>
</items>
</conditional>
Actions XML
<actions></actions>
The Actions XML elements are used to define driver configuration elements that are executable. You’ll notice many similarities between Actions and Properties. However, Actions differ in that many rely upon corresponding LUA code to accomplish their goal.
For a list of supported Action types and how they can assist with driver configuration, please see the Actions section of the DriverWorks Fundamentals Guide.
actions
<actions></actions>
Parent
The actions element contains the driver’s XML that defines the Actions displayed under the Properties tab of Composer Pro. It is the root element for all Actions. In the example, and action named “Add and Connect Relays” is defined under the <actions>\</actions>
XML.
Example
<actions>
<action>
<name>Add and Connect Relays</name>
<command>AddRelays</command>
<params>
<param>
<name>Outlet</name>
<type>CUSTOM_SELECT:GetPropertiesForAction</type>
</param>
</params>
</action>
</actions>
action
<action></action>
Parent
The property element contains the driver’s XML that defines an individual Action displayed in Composer Pro.
Example
<actions>
<action>
<name>Add and Connect Relays</name>
<command>AddRelays</command>
<params>
<param>
<name>Outlet</name>
<type>CUSTOM_SELECT:GetPropertiesForAction</type>
</param>
</params>
</action>
</actions>
name
<name></name>
Parent
The name element contains the name of the Action. This name is used to identify the Action and is displayed in Composer Pro.
Example
<actions>
<action>
<name>Add and Connect Relays</name>
<command>AddRelays</command>
<params>
<param>
<name>Outlet</name>
<type>CUSTOM_SELECT:GetPropertiesForAction</type>
</param>
</params>
</action>
</actions>
command
<command></command>
Parent
The command element contains the name of the function that has been written in the driver’s LUA code that supports the use of the Action. In the example, the Add and Connect Relays Action, relies upon a function written by the driver writer called AddRelays. When an integrator executes the Add and Connect Relays Action, it calls the AddRelays function.
Without the inclusion of a corresponding LUA function, an Action will not function.
Example
<actions>
<action>
<name>Add and Connect Relays</name>
<command>AddRelays</command>
<params>
<param>
<name>Outlet</name>
<type>CUSTOM_SELECT:GetPropertiesForAction</type>
</param>
</params>
</action>
</actions>
params
<params></params>
Parent
The params contains the definition for the parameter(s) used by the Action’s Command. The parameters defined here will be displayed in a box in ComposerPro when the Action is selected.
Example
<actions>
<action>
<name>Add and Connect Relays</name>
<command>AddRelays</command>
<params>
<param>
<name>Outlet</name>
<type>CUSTOM_SELECT:GetPropertiesForAction</type>
</param>
</params>
</action>
</actions>
param
<param></param>
Parent
The param element contains the definition of a single parameter used by the Action’s Command. In the example, a parameter named outlet is used by the LUA function AddRelays to support the Add and Connect Relays Action.
Example
<actions>
<action>
<name>Add and Connect Relays</name>
<command>AddRelays</command>
<params>
<param>
<name>Outlet</name>
<type>CUSTOM_SELECT:GetPropertiesForAction</type>
</param>
</params>
</action>
</actions>
name
<name></name>
Parent
The parameter name element contains the name of the parameter used by the Action’s Command. In the example, when an integrator selects the Add and Connect Relays Action they are presented with a parameter list box that includes a header for a list of outlets. The header is “Outlet”.
Example
<actions>
<action>
<name>Add and Connect Relays</name>
<command>AddRelays</command>
<params>
<param>
<name>Outlet</name>
<type>CUSTOM_SELECT:GetPropertiesForAction</type>
</param>
</params>
</action>
</actions>
type
<type></type>
Parent
The parameter type element identifies the parameter type used by the command for the Action. Supported by the parameter. Action Types include:
Property | Description |
---|---|
List | Provides a static list of selectable objects. |
Ranged Float | Provides a range of selectable floating-point or non-integer numbers. |
Ranged Integer | Provides a range of selectable integers. |
String | Provides a string. |
String Password | Provides a string which can be used as a password. Note that this value is not persisted. |
Device Selector | Provides a list of selectable drivers. See the Device Selector topic for more information. For more information, please see: Using Device Selector |
Color Selector | Provides the ability to select a color. See the Color Selector topic for more information. For more information, please see: Using COLOR SELECTOR. |
Dynamic List | Provides driver-based, dynamically updated lists. See the Dynamic List topic for more information. |
Link | Provides a link to a resource which can be used to support your driver. |
Label | Action that provides a Header Label on the Properties Screen in Composer Pro. |
Scroll | Action that provides a graphical way to set an integer value on a scale on the Properties Screen in Composer Pro. |
Track | Action that provides another option for setting an integer value which is similar to Scroll. However, Track is more of a discrete slider control. |
Custom Select | Provides a dynamically generated list of selectable objects. This property relies upon supporting LUA code to function properly. For more information, see: Using CUSTOM SELECT . |
Example
In the example shown, the parameter type of CUSTOM SELECT is used. CUSTOM SELECT uses a function written by the driver writer in the driver’s LUA code called GetPropertiesForAction.
When an integrator selects the Add and Connect Relays Action they are presented with a parameter list box that includes a header for a list of outlets. The box also includes the Custom Select button. When clicked, the GetPropertiesForAction function is called and it populates the Outlet list with a dynamically created list of available outlets in the project. The list is searchable and multiple items can be selected. Once the appropriate outlets are selected, selected the OK button is clicked and the AddRelays command is executed.
<actions>
<action>
<name>Add and Connect Relays</name>
<command>AddRelays</command>
<params>
<param>
<name>Outlet</name>
<type>CUSTOM_SELECT:GetPropertiesForAction</type>
</param>
</params>
</action>
</actions>
sort_order
<sort_order></sort_order>
Parent
The sort order element allows for an ordered display of Actions in Composer Pro. These Actions can be selected by integrators configuring the driver. In the example, the Actions will be displayed in the following order:
- Display Globals
- Create Programming Project
- Main Flood ID
For more information on Sorting Actions please see: Actions
Example
<action>
<action>
<name>Display Globals</name>
<command>DisplayGlobals</command>
<sort_order>1</sort_order>
</action>
<action>
<name>Create Programming Project</name>
<command>CreateProgrammingProject</command>
<sort_order>2</sort_order>
<params>
<param>
<name>Main Flood ID</name>
<type>RANGED_INTEGER</type>
<default>4</default>
</param>
</params>
</action>
</action>
name
<default></default>
Parent
The parameter default element provides the ability to define a default value for parameter. This value will be displayed by default to integrators configuring the driver.
Example
<action>
<action>
<name>Display Globals</name>
<command>DisplayGlobals</command>
<sort_order>1</sort_order>
</action>
<action>
<name>Create Programming Project</name>
<command>CreateProgrammingProject</command>
<sort_order>2</sort_order>
<params>
<param>
<name>Main Flood ID</name>
<type>RANGED_INTEGER</type>
<default>4</default>
</param>
</params>
</action>
</action>
password
<default></default>
Parent
The password element supports the ability to activate (true) the use of a password field for the Action. The only significance to the use of this field includes the ability to hide the characters that are entered into the Password field in Composer Pro. Note that while the string entered for this action is not logged, the use of this element does not include any type of encryption. A driver must be encrypted to protect the string value required here.
Example
<action>
<name>Allow Execute</name>
<command>AllowExecute</command>
<params>
<param>
<name>Password</name>
<type>STRING</type>
<password>true</password>
</param>
</params>
</action>
minimum
<minimum></minimum>
Parent
The minimum element provides the ability to define a value that represents the lowest number accepted by the Action. The minimum and maximum elements are supported in the following parameter types:
- Ranged Float
- Ranged Integer
- Track
In the example, the minimum value of 79 will be accepted for this ranged integer type action named Ranged Integer.
Example
<action>
<name>Test Action with Paramters</name>
<command>TestActionWithParamters</command>
<params>
<param>
<name>RANGED_INTEGER</name>
<type>RANGED_INTEGER</type>
<minimum>79</minimum>
<maximum>120</maximum>
</param>
</params>
</action>
maximum
<maximum></maximum>
Parent
The maximum element provides the ability to define a value that represents the highest number accepted by the Action. The minimum and maximum elements are supported in the following parameter types:
- Ranged Float
- Ranged Integer
- Track
In the example, the minimum value of 120 will be accepted for this ranged integer type action named Ranged Integer.
Example
<action>
<name>Test Action with Paramters</name>
<command>TestActionWithParamters</command>
<params>
<param>
<name>RANGED_INTEGER</name>
<type>RANGED_INTEGER</type>
<minimum>79</minimum>
<maximum>120</maximum>
</param>
</params>
</action>
variable_type
<varaible_type></varaible_type>
Parent
The variable type element is only used with the VARIABLE_SELECTOR
parameter type. The Variable Selector parameter type will return a list of a type of variable found within the project. The variable type element is used to define the type of variable that will be returned. Supported variable types include:
- boolean
- string
- number
- float
- device
- media
- user
- room
In the example, the Action named: Test Action with Parameters will return all of the boolean and string variables found in the project. An integrator can then select the desired variable and it will be placed within the Action.
Example
<action>
<name>Test Action with Variable Paramters</name>
<command>TestActionWithVarParamters</command>
<params>
<param>
<name>Test boolean Variable Selector</name>
<type>VARIABLE_SELECTOR</type>
<variabletype>boolean</variabletype>
</param>
<param>
<name>Test string Variable Selector</name>
<type>VARIABLE_SELECTOR</type>
<variabletype>string</variabletype>
</param>
</params>
</action>
Commands XML
<commands></commands>
This area contains definitions for the XML elements that are supported in the Commands section of a device driver’s driver.xml file. These Commands are specific to the device and fall outside of the commands defined by the Proxy. Defining these commands in the driver XML will make them available under the Device Specific Programming area of Composer Pro
For example, a AV Switch might have the following section in the XML of the .c4z file:
<commands>
<command>
<name>MAIN_ZONE_ON</name>
<description>MAIN_ZONE_ON</description>
</command>
<command>
<name>MAIN_ZONE_OFF</name>
<description>MAIN_ZONE_OFF</description>
</command>
<command>
<name>ZONE2_ON</name>
<description>ZONE2_ON</description>~
</command>
<command>
<name>ZONE2_OFF</name>
<description>~ZONE2_OFF</description>~
</command>
</command>
The commands defined here fall outside of the scope found in the AV Switch area of the Proxy and Protocol Guide. Additional information regarding Commands and how they can be configured in a driver can be found here: DriverWorks Fundamentals: Commands
commands
<commands></commands>
Parent
The commands element contains the driver’s XML that defines the Commands displayed in the Device Specific Programming area of Composer Pro. It is the root element for all Commands. In the example, two commands are defined within the <commands></commands>
XML: a command named “MAIN ZONE ON” and a command named MAIN ZONE OFF.
Example
<commands>
<command>
<name>MAIN_ZONE_ON</name>
<description>MAIN_ZONE_ON</description>
</command>
<command>
<name>MAIN_ZONE_OFF</name>
<description>MAIN_ZONE_OFF</description>
</command>
</commands>
command
<command></command>
Parent
The command element contains the driver’s XML that defines an individual Command which is made available in Composer Pro for programming purposes. In the example, a commands is defined within the <command></command>
XML named “MAIN ZONE ON”.
Example
<commands>
~<command>~
~<name>~MAIN_ZONE_ON~</name>~
~<description>~MAIN_ZONE_ON~</description>~
~</command>~
</commands>
name
<name></name>
Parent
The name element serves two purposes with regard to Command XML. First, it is used to name a command defined within the XML and that name is displayed in the Device Specific Programming in Composer Pro.
Secondly, the contents defined in the name element of the Command XML is used by the LUA function ExecuteCommand. This function must be defined in the driver’s LUA code. The first parameter that the ExecuteCommand function requires is the value defined in the name XML element. The function is then handled however needed within the ExecuteCommand Code.
Example
In the example, a Command named SelectFavorite has been defined. SelectFavorite will be displayed in the Device Specific Programming in Composer Pro. Additionally, it will be passed as the first parameter in the LUA ExecuteCommand function defined in the driver’s LUA code.
<command>
<name>SelectFavorite</name>
<description>Select Favorite PARAM1 in PARAM2</description>
<sort_order>1</sort_order>
<params>
<param>
<name>Favorite</name>
<type>CUSTOM_SELECT:GetFavoritesForProgramming</type>
</param>
</params>
</command>
description
<description></description>
Parent
The description element is used to provide text that helps describe the purpose of the command that is defined in the XML. This text is displayed in Composer pro programming. In the example, the description element is used to inform the user that the Turn On command has the ability to turn on a zone which is chosen from a dynamic List to a certain level, which is also chosen from a dynamically created list.
Example
<command>
<name>Turn On</name>
<description>Turn on PARAM1 to PARAM2</description>
<params>
<param>
<name>Zone</name>
<type>DYNAMIC_LIST</type>
</param>
<param>
<name>Level</name>
<type>DYNAMIC_LIST</type>
</param>
</params>
</command>
sort_order
<sort_order></sort_order>
Parent
The sort order element is used to assign order to commands. This order reflects the manner in which the commands are displayed in Composer Pro’s programming area. For more information, please see: Sorting Commands.
In the example, the sort order element is used to display the command Select Channel 3 in the third spot in a list of channels.
Example
<command>
<name>Select Channel 3</name>
<description>Select Channel PARAM1</description>
<sort_order>3</sort_order>
<params>
<param>
<name>Channel</name>
<type>CUSTOM_SELECT:SelectChannelParamSelectThree</type>
</param>
</params>
</command>
params
<params></params>
Parent
The params element contains the XML definition of the Command Parameter Types that the command defined in the XML will use. It is the root element for al parameters for a command.
In the example, the command Toggle has a params element containing the XML definition of one parameter. The parameter name is Zone and uses the Command Parameter Type of DYNAMIC LIST to dynamically create a list of Zones that the command can toggle through.
Example
<command>
<name>Toggle</name>
<description>Toggle PARAM1</description>
<params>
<param>
<name>Zone</name>
<type>DYNAMIC_LIST</type>
</param>
</params>
</command>
param
<param></param>
Parent
The param element contains the XML definition for a single parameter for the Command Parameter Type that the command defined in the XML will use.
In the example, the command Toggle has a params element containing the XML definition of one parameter defined within the <param></param> element. The parameter name is Zone and uses the Command Parameter Type of DYNAMIC LIST to dynamically create a list of Zones that the command can toggle through.
Example
<command>
<name>Toggle</name>
<description>Toggle PARAM1</description>
<params>
<param>
<name>Zone</name>
<type>DYNAMIC_LIST</type>
</param>
</params>
</command>
type
<param></param>
Parent
The type element is used to identify which of the support Command Parameter Type are being used by the parameter.
The following Command Parameter Types are supported:
Device Selector | The Device Selector command parameter type supports the Device Selector property. Device Selector allows you (as the driver developer) to display a list of devices based on driver name. |
Custom Select | The ability of a Proxy driver to deliver a browse-able list of related elements can be supported through the use of the CUSTOM SELECT property. For more information, please see: Using Custom Select. |
Dynamic List | The Dynamic List command parameter type supports the ability to use the Dynamic List Property. This property provides ability to include driver-based, dynamically updated lists in ComposerPro’s Advanced Properties screen. For more information, please see: Using Dynamic List and the UpdatePropertyList API. |
LIST | The List command parameter type supports the ability to provide a static list of selectable objects within the Device Specific Commands tab in ComposerPro. Implementation of this command needs to be done within the driver LUA code. |
Ranged Float | The Ranged Float command parameter type supports the ability to provide a range of selectable floating-point or non-integer numbers within the Device Specific Commands tab in ComposerPro. |
Ranged Integer | The Ranged Integer command parameter type supports the ability to provide a range of selectable integers within the Device Specific Commands tab in ComposerPro. |
String | The STRING command parameter type supports the ability to provide a string within the Device Specific Commands tab in ComposerPro. |
In the example, the command Toggle has a params element containing the XML definition of one parameter defined within the <param></param>
element. The parameter name is Zone and uses the Command Parameter Type of DYNAMIC LIST to dynamically create a list of Zones that the command can toggle through.
Example
<command>
<name>Toggle</name>
<description>Toggle PARAM1</description>
<params>
<param>
<name>Zone</name>
<type>DYNAMIC_LIST</type>
</param>
</params>
</command>
Events XML
<events></events>
This area contains definitions for the XML elements that are supported in the Events section of a device driver’s driver.xml file. A driver can trigger events within the Control4 system. Events are used to cause other things to happen within the system using custom programming. They can be considered “when” statements. One of the duties of your driver is to expose all events. Examples of Events include:
- When the door opens.
- When it is 7:00 AM.
- When it is sunrise.
Note that a limit of 1000 Events per driver exists within the Control4 Operating System. Exceeding this limit results in undesirable handling of Events.
For more information regard Events and how they can be used in conjunction with your driver, please see: Events
events
<events></eventss>
Parent
The events element contains the driver’s XML that defines the Events displayed in Composer Pro programming. It is the root element for all Events.
In the example, and Event named “Static Event” is defined under the <events></events>
XML.
Example
<events>
<event>
<id>0</id>
<name>Static Event</name>
<description>When the NAME Static Event changes</description>
<sort_order>1</sort_order>
</event>
</events>
event
<event></even t>
Parent
The property element contains the driver’s XML that defines an individual Event displayed in Composer Pro programming
In the example, and Event named “Static Event” is defined under the <events></events>
XML.
Example
<events>
<event>
<id>0</id>
<name>Static Event</name>
<description>When the NAME Static Event changes</description>
<sort_order>1</sort_order>
</event>
</events>
id
<id></id>
Parent
The id element provides a way to assign a numerical identification value to an individual Event. All Events require an <id></id>
value. It is recommended that Events be numbered beginning with 0.
In the example, and Event named “Static Event” is defined under the <events></events>
XML and has been assigned an Id value of 0.
Example
<events>
<event>
<id>0</id>
<name>Static Event</name>
<description>When the NAME Static Event changes</description>
<sort_order>1</sort_order>
</event>
</events>
name
<name></name>
Parent
The name element contains the name of the Event. This name is used to identify the Event and is displayed in Composer Pro programming.
In the example, the Event name is “Static Event”.
Example
<events>
<event>
<id>0</id>
<name>Static Event</name>
<description>When the NAME Static Event changes</description>
<sort_order>1</sort_order>
</event>
</events>
description
<description></description>
Parent
The description element needs to contain the NAME macro. NAME is a key value that is equivalent to your driver’s unique name. Every conditional needs to include NAME. ComposerPro treats the NAME macro in your Event XML in a way that replaces it with your driver’s unique name. The unique name is formatted by the name of the room where the driver resides followed by “->”, followed by the name of the driver as it is named in the project.
For example, consider that the name of our example driver is “Living Room Lamp” and it is in the Living Room. Based on this, “Living Room->Living Room Lamp” will replace NAME when your Event programming description is displayed in the Event window and the script actions area of ComposerPro. Using the example, ComposerPro will display the description XML element as: “When the Living Room->Living Room Lamp Static Event changes”.
Example
<events>
<event>
<id>0</id>
<name>Static Event</name>
<description>When the NAME Static Event changes</description>
<sort_order>1</sort_order>
</event>
</events>
sort_order
<sort_order></sort_order>
Parent
The sort order element allows for an ordered display of Events in Composer Pro. These Events can be selected by integrators configuring event based programming. In the example, the Actions will be displayed in the following order:
- Test Event 1
- Test Event 2
- Test Event 3
For more information on Sorting Actions please see: Sorting Events in Composer Pro
Example
<events>
<event>
<id>1</id>
<name>Test Event 1</name>
<description>When the NAME Static Event changes</description>
<sort_order>1</sort_order>
</event>
<event>
<id>2</id>
<name>Test Event 2</name>
<description>When the NAME Event 1 changes</description>
<sort_order>2</sort_order>
</event>
<event>
<id>3</id>
<name>Test Event 2</name>
<description>When the NAME Event 2 changes</description>
<sort_order>3</sort_order>
</event>
<event>
</events>
Capabilities XML
<capabilites></capabilites>
Capabilities tell the Proxy what your device can do. Not all devices of a particular type have the same capabilities. In these cases, the driver’s XML contains information which enables the proxy driver to determine what capabilities are available. For example, a Receiver-Tuner might have the included XML code in the .c4z file:
<capabilities>
<has_discrete_volume_control>True</has_discrete_volume_control>
<has_up_down_volume_control>True</has_up_down_volume_control>
<has_discrete_input_select>True</has_discrete_input_select>
<has_toad_input_select>True</has_toad_input_select>
<has_discrete_surround_mode_select>True</has_discrete_surround_mode_select>
<has_toad_surround_mode_select>True</has_toad_surround_mode_select>
<has_tune_up_down>True</has_tune_up_down>
<has_search_up_down>False</has_search_up_down>
<has_discrete_preset>True</has_discrete_preset>
<has_preset_up_down>True</has_preset_up_down>
<preset_count>40</preset_count>
<can_upclass>False</can_upclass>
<can_downclass>False</can_downclass>
<video_provider_count>1</video_provider_count>
<video_consumer_count>4</video_consumer_count>
<audio_provider_count>2</audio_provider_count>
<audio_consumer_count>8</audio_consumer_count>
<has_discrete_mute_control>True</has_discrete_mute_control>
<has_toggle_mute_control>True</has_toggle_mute_control>
<has_discrete_channel_select>True</has_discrete_channel_select>
<has_discrete_input_select>True</has_discrete_input_select>
<has_channel_up_down>True</has_channel_up_down>
<has_feedback>True</has_feedback>
<serialdelay>0</serialdelay>
<serialsettings>9600 8 none 1 none 232</serialsettings>
</capabilities>
Connections XML
<connections></connections>
Every driver within the Control4 system publishes the connections capabilities that are available for the device being controlled. These connections are utilized to create the bindings within the Control4 system. The connections to the device you are creating a driver for can be implemented using serial (RS-232) or Internet (TCP/IP) protocols.
The Connections XML defines all of the supported connections for the device. In addition to the network/communication bindings, your DriverWorks driver will have all of the other bindings necessary for your device as long as they are correctly defined in the
For more information regarding Connections, please see: Connections
connections
<connections></connections>
Parent
The connections element contains the driver’s XML that defines the Connections that are made available for the driver in Composer Pro. It is the root element for all Connections.
Example
In the example, three connections are defined: Serial RS-232, POOL and Thermostat.
~<connections>~
<connection>
<id>1</id>
<facing>6</facing>
<connectionname>Serial RS-232</connectionname>
<type>1</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>RS_232</classname>
</class>
</classes>
</connection>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>POOL</connectionname>
<type>2</type>
<consumer>false</consumer>
<audiosource>false</audiosource>
<videosource>false</videosource>
<linelevel>false</linelevel>
<classes>
<class>
<classname>POOL</classname>
</class>
</classes>
</connection>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>Thermostat</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>THERMOSTAT</classname>
</class>
</classes>
<hidden>True</hidden>
</connection>
</connections>
connection
<connection></connection>
Parent
The connection element contains the driver’s XML that defines an individual Connection which is made available for the driver in Composer Pro.
Example
In the example, a single connection for a Thermostat is defined.
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>Thermostat</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>THERMOSTAT</classname>
</class>
</classes>
<hidden>True</hidden>
</connection>
</connections>
id
<id></id>
Parent
The id element contains the connection’s id value. This id number must be in the correct range for the particular type of connection being defined. Below are the ranges:
Binding | Range |
---|---|
Control Bindings | 1 - 999 |
Video Inputs | 1000 - 1099 |
Video Outputs | 2000 - 2999 |
Audio Inputs | 3000 - 3099 |
Audio Outputs | 4000 - 4999 |
Proxy Bindings | 5000 - 5999 |
Network Bindings | 6000 - 6999 |
Room Bindings | 7000 - 7999 |
Power Manager | 8000 - 8999 |
Example
In the example, a single connection for a Thermostat is defined using an id value of 5001. This is a proxy binding connection.
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>Thermostat</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>THERMOSTAT</classname>
</class>
</classes>
<hidden>True</hidden>
</connection>
</connections>
facing
<facing></facing>
Parent
This connection element indicates which side of the device this connection is on if it is a physical connection. Values are:
Location | Value |
---|---|
Front | 0 |
Back | 1 |
Top | 2 |
Bottom | 3 |
Left | 4 |
Right | 5 |
Unknown | 6 |
Example
In the example, a single connection for a Thermostat is defined using a facing value of 6. In this example, the physical connection location of the thermostat is unknown
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>Thermostat</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>THERMOSTAT</classname>
</class>
</classes>
<hidden>True</hidden>
</connection>
</connections>
connectionname
<connectionname></connectionname>
Parent
The connectionname element indicates the name of this connection. This name is used by Composer when displaying the connection.
Example
In the example, a single connection for a Thermostat is defined using a connectionname of “Thermostat”. This connection will be displayed as “Thermostat” in the connections area of Composer Pro.
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>Thermostat</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>THERMOSTAT</classname>
</class>
</classes>
<hidden>True</hidden>
</connection>
</connections>
type
<type></type>
Parent
The type element indicates the type of this connection. Supported values include:
Type | Value |
---|---|
Control | 1 |
Proxy | 2 |
Audio/Video | 3 |
Nectwork | 4 |
Video | 5 |
Audion | 6 |
Room | 7 |
Example
In the example, a single connection for a Thermostat is defined using a type value of 2. This connection is a Proxy connection type.
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>Thermostat</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>THERMOSTAT</classname>
</class>
</classes>
<hidden>True</hidden>
</connection>
</connections>
consumer
<consumer></consumer>
Parent
The consumer element indicates (True or False) if this connection is the consumer (or a provider) for the connection.
Example
In the example, a single connection for a Thermostat is defined using a consumer value of False. This connection is not on the receiving end of a provider/consumer connection.
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>Thermostat</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>THERMOSTAT</classname>
</class>
</classes>
<hidden>True</hidden>
</connection>
</connections>
audiosource
<audiosource></audiosource>
Parent
The audiosource element indicates (True or False) if this connection is a source of audio.
Example
In the example, a single connection for a Thermostat is defined using a audiosource value of False. This indicates that this connection is not a source of audio distributions.
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>Thermostat</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>THERMOSTAT</classname>
</class>
</classes>
<hidden>True</hidden>
</connection>
</connections>
videosource
<videosource></videosource>
Parent
The videosource element indicates (True or False) if this connection is a source of video.
Example
In the example, a single connection for a Thermostat is defined using a videosource value of False. This indicates that this connection is not a source of video distributions.
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>Thermostat</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>THERMOSTAT</classname>
</class>
</classes>
<hidden>True</hidden>
</connection>
</connections>
linelevel
<linelevel></linelevel>
Parent
The linelevel element indicates (True or False) if this connection provides a line level source. Line level signals are the highest level signals before amplification.
Example
In the example, a single connection for a Thermostat is defined using a linelevel value of False. This indicates that this connection does not provide a linelevel source.
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>Thermostat</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<idautobind>0</idautobind>
<classes>
<class>
<classname>THERMOSTAT</classname>
</class>
</classes>
<hidden>True</hidden>
</connection>
</connections>
idautobind
<idautobind></idautobind>
Parent
The idautobind element is an optional tag that allows the connection to automatically connect to a connection with the defined idautobind value. The supported value range is 0 - 999.
Example
In the example, a single connection for a Thermostat is defined using an idautobind value of 15. This indicates that this connection will automatically connect to another defined connection with the idautobind value of 15.
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>Thermostat</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<idautobind>15</idautobind>
<classes>
<class>
<classname>THERMOSTAT</classname>
</class>
</classes>
<hidden>True</hidden>
</connection>
</connections>
hidden
<hidden></hidden>
Parent
The hidden element is an optional tag to specify if this connection should be hidden in Composer Pro or not. This defaults to false, except for proxy bindings.
Example
In the example, a single connection for a Thermostat is defined using an hidden value of true. This indicates that this connection will not be displayed in Composer Pro as it is a Proxy connection.
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>Thermostat</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<idautobind>15</idautobind>
<classes>
<class>
<classname>THERMOSTAT</classname>
</class>
</classes>
<hidden>True</hidden>
</connection>
</connections>
classes
<classes></classes>
Parent
The classes XML element defines one or more classes for this connection. If the class is TCP or UDP then there may be a ports section as seen to the right. This includes the IP Port number for the network connection.
Example
In the example, a single serial connection is defined using the class name of TCP.
<connections>
<connection>
<id>1</id>
<facing>6</facing>
<connectionname>Serial RS-232</connectionname>
<type>1</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>8750</number>
</port>
</ports>
</class>
</classes>
</connection>
</connections>
class
<classes></classes>
Parent
The class element contains the driver’s XML that defines an individual Class needed by the connection.
Example
In the example, a single serial connection is defined using the class name of TCP.
<connections>
<connection>
<id>1</id>
<facing>6</facing>
<connectionname>Serial RS-232</connectionname>
<type>1</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>8750</number>
</port>
</ports>
</class>
</classes>
</connection>
</connections>
autobind
<autobind></autobind>
Parent
The autobind XML element, when set to True, marks this class as needed to be autobound. If an idautobind is provided then this class will be connected on that binding. Otherwise, it will be connected on the first connection in the project providing this class.
Example
In the example, a single serial connection is defined using the class name of TCP. Its autobind XML element is set to True.
<connections>
<connection>
<id>1</id>
<facing>6</facing>
<connectionname>Serial RS-232</connectionname>
<type>1</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TCP</classname>
<autobind>True</autobind>
<ports>
<port>
<number>8750</number>
</port>
</ports>
</class>
</classes>
</connection>
</connections>
name
<classname></classname>
Parent
The name element contains the name of the Class. This name is used to identify the connection and is displayed in Composer Pro Connections area.
Example
In the example, a single serial connection is defined using the class name of TCP.
<connections>
<connection>
<id>1</id>
<facing>6</facing>
<connectionname>Serial RS-232</connectionname>
<type>1</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>8750</number>
</port>
</ports>
</class>
</classes>
</connection>
</connections>
ports
<ports></ports>
Parent
The ports XML element defines one or more ports for the class used by the connection. If the class is TCP or UDP then there may be a ports section. This includes the IP Port number for the network connection.
Example
In the example, a single serial connection is defined using the class name of TCP. It has a single port defined: 8750.
<connections>
<connection>
<id>1</id>
<facing>6</facing>
<connectionname>Serial RS-232</connectionname>
<type>1</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>8750</number>
</port>
</ports>
</class>
</classes>
</connection>
</connections>
port
<port></port>
Parent
The port XML element defines a single port for the class used by the connection. If the class is TCP or UDP then there may be a ports section. This includes the IP Port number for the network connection.
Example
In the example, a single serial connection is defined using the class name of TCP. It has a single port defined: 8750.
<connections>
<connection>
<id>1</id>
<facing>6</facing>
<connectionname>Serial RS-232</connectionname>
<type>1</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>8750</number>
</port>
</ports>
</class>
</classes>
</connection>
</connections>
number
<number></number>
Parent
The number XML element defines the port identification value for a single port for the class used by the connection. If the class is TCP or UDP then there may be a ports section. This includes the IP Port number for the network connection.
Example
In the example, a single serial connection is defined using the class name of TCP. It has a single port defined: 8750.
<connections>
<connection>
<id>1</id>
<facing>6</facing>
<connectionname>Serial RS-232</connectionname>
<type>1</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>8750</number>
</port>
</ports>
</class>
</classes>
</connection>
</connections>
auto_connect
<auto_connect></auto_connect>
Parent
The auto_connect XML element, when set to True, creates an Auto Connect for this socket. This socket will be created and connected when the driver is started.
Example
In the example, a single serial connection is defined using the class name of TCP. Its auto_connect xml element is set to True.
<connections>
<connections>
<connection>
<id>1</id>
<facing>6</facing>
<connectionname>Serial RS-232</connectionname>
<type>1</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>8750</number>
</port>
</ports>
</class>
</classes>
<auto_connect>True</auto_connect>
</connection>
</connections>
monitor_connection
<monitor_connection></monitor_connection>
Parent
The monitor_connection XML element, when set to True, provides monitoring of this socket. Director will periodically check the connection, if data is not returned on this socket it will be considered down.
Example
In the example, a single serial connection is defined using the class name of TCP. Its monitor_connect xml element is set to True.
<connections>
<connection>
<id>1</id>
<facing>6</facing>
<connectionname>Serial RS-232</connectionname>
<type>1</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>8750</number>
</port>
</ports>
</class>
</classes>
<auto_connect>True</auto_connect>
<monitor_connection>True</monitor_connection>
</connection>
</connections>
keep_connection
<keep_connection></keep_connection>
Parent
The keep_connection XML element, when set to True, keeps this connection connected. This means if the connection goes down, Director will attempt to re-connect it.
Example
In the example, a single serial connection is defined using the class name of TCP. Its keep_connection xml element is set to True.
<connections>
<connection>
<id>1</id>
<facing>6</facing>
<connectionname>Serial RS-232</connectionname>
<type>1</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>8750</number>
</port>
</ports>
</class>
</classes>
<auto_connect>True</auto_connect>
<monitor_connection>True</monitor_connection>
<keep_connection>True</keep_connection>
</connection>
</connections>
delimiter
<keep_connection></keep_connection>
Parent
The delimiter XML element, is used to specify how a network driver should break up incoming packets. NOTE: If delimiter XML is specified, data will not be sent UNTIL the delimiter is reached. If no delimiter specified, data is sent on timeout.
Example
In the example, a single serial connection is defined using the class name of TCP. Its delimiter xml element is set to 0d
<connections>
<connection>
<id>1</id>
<facing>6</facing>
<connectionname>Serial RS-232</connectionname>
<type>1</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>8750</number>
</port>
</ports>
</class>
</classes>
<auto_connect>True</auto_connect>
<monitor_connection>True</monitor_connection>
<keep_connection>True</keep_connection>
<delimiter>0d</delimiter>
</connection>
</connections>
grow
<grow></grow>
Parent
The grow XML element is used to define the number of bytes to increase the size of receive buffers by when the original receiver buffer is overflowed.
Example
In the example, a single serial connection is defined using the class name of TCP. Its grow xml element is set to 255 bytes of increase.
<connections>
<connection>
<id>1</id>
<facing>6</facing>
<connectionname>Serial RS-232</connectionname>
<type>1</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>TCP</classname>
<ports>
<port>
<number>8750</number>
</port>
</ports>
</class>
</classes>
<auto_connect>True</auto_connect>
<monitor_connection>True</monitor_connection>
<keep_connection>True</keep_connection>
<delimiter>0d</delimiter>
<grow>255</grow>
</connection>
</connections>