NAV Navbar
lua

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 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 2022 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

http://www.control4.com

Introduction

Proxies (Commands)

A proxy driver is an interface to the Control4 system for a set of devices that share common functionality. For instance, most DVD disc changers have common controls such as PLAY, STOP, PAUSE and FAST FORWARD.  The disc changer proxy allows for a common user interface to control all disc changers.  The Control4 system (Director) sends information to and receives information from the proxy drivers.  The proxy drivers send information to and receives information from the protocol drivers. Remember, your DriverWorks driver interacts with the proxy driver which then interacts with the system.  As a driver developer you will be relying on this proxy to provide status (notification) to the Control4 system for the device you are controlling.  You will also receive commands from the system that you will act on to control the device.  These commands and notifications are at the heart of what you will be implementing in your driver.  Essentially your driver is becoming the go-between from the Control4 system and your device with the proxy driver giving structure to the commands and notifications which you will be implementing. Your driver can facilitate communications with multiple types of proxies for a single device. As an example, a Security System driver will utilize both the Security proxy and the Contacts proxy. These additional proxies are configured in the <connections> section of the .c4z.

Protocol (Notifications)

Two similar devices may have the same functionality but utilize a very different command set.  A protocol driver provides the device-specific information needed to communicate with the Control4 system.  In the case of DriverWorks, the DriverWorks driver is the protocol driver.  When combined with the device-specific.c4Z file it provides the custom code necessary to implement the 2-way device driver. In the case of DriverWorks, the DriverWorks driver is the protocol driver. When combined with the device-specific.c4Z file it provides the custom code necessary to implement the 2-way device driver.

What’s New

What’s New in 3.3.0

Light Proxy Color Enhancements

This release of the 3.3.0 beta Proxy and Protocol Guide has been delivered to support the Light Proxy’s new color management functionality. This includes:

Light V2 Proxy Capabilities

color_correlated_temperature_max

color_correlated_temperature_min

color_rate_behavior

color_rate_max

color_rate_min

color_trace_tolerance

supports_color

supports_color_correlated_temperature

Light V2 Proxy Commands

ADD_DRIVER_COLOR_PRESET

DELETE_DRIVER_COLOR_PRESET

MODIFY_DRIVER_COLOR_PRESET

SET_COLOR_TARGET

Light V2 Proxy Conversion Commands

This section lists the Commands used for converting to/from hue, saturation and lightness (HSV) and red, blue and green (RGB).

Light V2 Proxy Conditionals

IS_COLOR

Light v2 Protocol Notifications

LIGHT_COLOR_CHANGED

LIGHT_COLOR_CHANGING

Light V2 Proxy Events

light_color_changed

light_color_changing

Light V2 Proxy Variables

color_active_agents

color_presets

Light V2 Proxy Extras

New supporting documentation.

Advanced Lighting Scene Agent 

New supporting documentation.

Light Driver Development Best Practices

A new section has been added to the Light V2 proxy content including best practice recommendations for light driver developers.

Audio Video Switch Display Adjustable Bindings

O.S. releases 3.3.0 provides the ability to hide AV Switch Bindings that are not being used. This feature has been provided to better manage the UI display within ComposerPro.

What’s New in 3.2.3

Audio Equalization available on Navigators

The Amplifier and AV Switch Proxies have been enhanced to support the ability to display audio EQ functions on devices running Navigator. The enhancement includes a set of new Proxy Commands, Notifications and Capabilities to support this functionality.

Dynamic Transport Controls on Navigators

Audio Video drivers now have the ability to define which transport controls are displayed on Navigators. This includes which buttons appear on the Button Bar as well as the Media Dashboard. This enhancement allows for the appropriate transport controls being displayed for each AV device.

What’s New in 3.2.2

There were no changes to this content for Operating System 3.2.2.

What’s New in 3.2.1

There were no changes to this content for Operating System 3.2.1.

What’s New in 3.2.0

Proxies that were Modified** 

Security Proxy The REQUEST_DEFAULT_USER_CODE partition notification was added as a mechanism for the protocol driver to initiate the communication to get that default user code upon driver update.

The following Security Protocol Notifications were deprecated from the SDK: ALARM, ALARM_CLEAR, AWAY, DISARM, HOME, TROUBLE. Please see the Security Panel Notification and Security Partition Notification areas for the latest list of Notifies.

What was New in 3.1.2

Proxies that were Deprecated** 

The following Proxies were deprecated from the Proxy and Protocol Guide:

What was New in 3.1.0

Proxies that were Modified** 

Light V2 Proxy light sample.c4i - A sample driver has been included to assist with better understanding the basic flow of commands from the Light Proxy as well as receiving protocol notifications. The driver can be found in the Samples directory under the root level of the DriverWorks SDK.zip file

Media Service Proxy Detail Screen Type - Information regarding the implementation of the Detail Type Screen has been added to the documentation.

What was New in O.S.3

Proxies that were Modified** 

KeyPad Proxy

New Button Linking functionality has been added to the Proxy. Button Linking supports the ability of a driver interacting with a second driver using Button State and Button LED State.

Light (V2) Proxy LightV2 Proxy has been significantly enhanced in this release. It is recommended that Light Driver writers thoroughly review the Proxy content in this release. The changes included not only impact drivers written against OS 3. Previously delivered Light Proxy elements have been modified or in some cases deprecated.

In OS 3, the proxy has been conceptually split into two components. The first being a Wall Control/Keypad portion and the second is a redesigned Light portion.The Light portion has been developed as a Bulb Library. The ultimate goal of the Bulb Library is to support ,more versatility for drivers to interrogate, group, control and manage individual drivers and bulbs. Bulb color, target level, minimum and maximum levels, cold start timing and other features are implemented in the Bulb Library. Dynamic Capabilities have also been added to the Light Portion. Note that all changes maintain backwards compatibility for driver side interaction. However, Navigators will have functionality deprecated due to performance reasons or improved ways of communicating with the driver.

Media Service Proxy Favoriting: In conjunction with the ability to "Favorite" Navigator UI screens in OS 3, drivers written using the Media Service Proxy can now provide the ability for end users to designate favorite media delivered through an Media Service Proxy driver such as Playlists, Albums, Tracks, Stations, Movies, TV Shows, etc.

DashboardChanged Event: The DashboardChanged event now includes content on the use of custom icons and actions.

Driver Notification Context Example: New code examples on have been added to the Media Service Proxy Driver Notification Prototype section in the Appendix.

 Best Practices A new section called Best Practices has been added to the Proxy and Protocol Guide. This section contains information regarding the use cases that fall outside of the typical Proxy/Protocol driver implementation. This release contains Best Practice content on the following:

Using the new Proxy-less command UPDATE PROPERTY. This is a non proxy-specific function that can be called from any device to change a property of any other device.

OS 3 Navigator UI and Volume Control - Managing Volume Commands in conjunction with the use of OS 3's new volume control slider on the Control4 UI.

Amplifier Protocol Notifications

AUDIO PARAMETER CHANGED

Audio parameter has changed

Signature

AUDIO_PARAMETER_CHANGED ()

Parameter Description
int Output Binding ID

Returns

None

BALANCE LEVEL CHANGED

Selected balance level has changed.

Signature

BALANCE_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

BASS LEVEL CHANGED

Selected bass level has changed

Signature

BASS_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

INPUT OUTPUT CHANGED

Selected inputs & outputs have changed.

Signature

INPUT_OUTPUT_CHANGED ()

Parameter Description
int INput Binding ID
int Output Binding ID

Returns

None

LOUDNESS CHANGED

Loudness state (On/Off) has changed.

Signature

LOUDNESS_CHANGED ()

Parameter Description
bool True/False
int Output Binding ID

Returns

None

MUTE CHANGED

MUTE state (On/Off) has changed.

Signature

MUTE_CHANGED ()

Parameter Description
bool True/False
int Output Binding ID

Returns

None

OFF

Device has turned off.

Signature

OFF ()

Parameter

None

Returns

None

ON

Device has turned on.

Signature

ON ()

Parameter

None

Returns

None

TREBLE LEVEL CHANGED

Selected treble level has changed.

Signature

TREBLE_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

VOLUME LEVEL CHANGED

Selected volume level has changed.

Signature

VOLUME_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

Amplifier Proxy Capabilities

audio consumer count

Count of number of audio consumers (inputs) of the device. This value must match the number of connections in the driver.

Signature

<audio_consumer_count></audio_consumer_count>

Parameter Description
int Number of audio consumers.

Example

<capabilities>
   <audio_consumer_count>8</audio_consumer_count>
</capabilities>

audio provider count

Count of number of audio providers (outputs) of the device. This value must match the number of connections in the driver.

Signature

<audio_provider_count></audio_provider_count>

Parameter Description
int Number of audio providers.

Example

<capabilities>
   <audio_provider_count>8</audio_provider_count>
</capabilities>

can downclass

Specifies if the device switch can down convert. For example: S-Video -> Composite

Signature

<can_downclass></can_downclass>

Parameter Description
bool True/False

Example

<capabilities>
   <can_downclass>true</can_downclass>
</capabilities>

can switch separately

Device specific capability that must be set to True to in order for a device’s Composer Pro interface reflecting independent audio and video signal switching.

Signature

<can_switch_separately></can_switch_separately>

Parameter Description
bool True/False

Usage Note

This capability is not related with the requires separate switching capability.  A setting of True or False will have no impact on requires separate switching.

Example

<capabilities>
   <can_switch_separately>true</can_switch_separately>
</capabilities>

can upclass

Specifies if the device switch can up convert. For example: Composite -> S-Video

Signature

<can_upclass></can_upclass>

Parameter Description
bool True/False

Example

<capabilities>
   <can_upclass>true</can_upclass>
</capabilities>

has audio signal sense

Specifies device switching is capable of sensing audio on an input. This is useful in triggering programming in ComposerPro based on the this setting.

Signature

<has_audio_signal_sense></has_audio_signal_sense>

Parameter Description
bool True/False

Example

<capabilities>
   <has_audio_signal_sense>true</has_audio_signal_sense>
</capabilities>

has discrete balance control

Capable of directly specifying a balance setting.

Signature

<has_discrete_balance_control></has_discrete_balance_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_balance_control>true</has_discrete_balance_control>
</capabilities>

has discrete bass control

Capable of directly specifying a bass setting.

Signature

<has_discrete_bass_control></has_discrete_bass_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_bass_control>true</has_discrete_bass_control>
</capabilities>

has discrete loudness control

Capable of directly specifying a loudness setting.

Signature

<has_discrete_loudness_control></has_discrete_loudness_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>

has discrete mute control

Capable of directly specifying mute ON or OFF setting.

Signature

<has_discrete_ mute_control></has_discrete_ mute_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_mute_control>true</has_discrete_mute_control>
</capabilities>

has discrete treble control

Capable of directly specifying a treble setting.

Signature

<has_discrete_treble_control></has_discrete_treble_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_treble_control>true</has_discrete_treble_control>
</capabilities>

has discrete volume control

Capable of directly specifying a volume setting.

Signature

<has_discrete_volume_control></has_discrete_volume_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_volume_control>true</has_discrete_volume_control>
</capabilities>

has discrete loudness control

Capable of handling ON/OFF loudness control.

Signature

<has_discrete_loudness_control></has_discrete_loudness_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>

has toggle mute control

Capable of handling ON/OFF mute control.

Signature

<has_toggle_mute_control></has_toggle_mute_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_toggle_mute_control>true</has_toggle_mute_control>
</capabilities>

has up down balance control

Capable of directly specifying a balance setting.

Signature

<has_up_down_balance_control></has_up_down_balance_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_balance_control>true</has_up_down_balance_control>
</capabilities>

has up down bass control

Capable of directly specifying a bass setting.

Signature

<has_up_down_bass_control></has_up_down_bass_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_bass_control>true</has_up_down_bass_control>
</capabilities>

has up down treble control

Capable of directly specifying a treble setting.

Signature

<has_up_down_treble_control></has_up_down_treble_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_treble_control>true</has_up_down_treble_control>
</capabilities>

has up down volume control

Has capability of handling volume UP and DOWN adjustments.

Signature

<has_up_down_volume_control></has_up_down_volume_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_volume_control>true</has_up_down_volume_control>
</capabilities>

has video signal sense

Specifies if the device switching is capable of sensing video on an input. This is useful in triggering programming in ComposerPro based on the this setting.

Signature

<has_video_signal_sense></has_video_signal_sense>

Parameter Description
bool True/False

Example

<capabilities>
   <has_video_signal_sense>true</has_video_signal_sense>
</capabilities>

requires separate switching

Device specific capability that when set to True notifies Director of the existence of individual audio and video paths. This capability has no impact on Composer Pro user interface. For that reason, when set to True it is recommended that the capability can switch separately be set to True as well.

Signature

<requires_separate_switching></requires_separate_switching>

Parameter Description
bool True/False

Example

<capabilities>
   <requires_separate_switching>true</requires_separate_switching>
</capabilities>

video consumer count

Count of number of video consumers (inputs) of the device. This value must match the number of connections in the driver.

Signature

<video_consumer_count></video_consumer_count>

Parameter Description
int Number of video consumers.

Example

<capabilities>
   <video_consumer_count>8</video_consumer_count>
</capabilities>

video provider count

Count of number of video providers (outputs) of the device. This value must match the number of connections in the driver.

Signature

<video_provider_count></video_provider_count>

Parameter Description
int Number of audio providers.

Example

<capabilities>
   <video_provider_count>8</video_provider_count>
</capabilities>

Amplifier Navigator EQ

Introduction

The ability to display audio equalization controls on devices running Navigator was added in conjunction with Operating System 3.2.3. Currently, the only Proxies that support Navigator EQ controls are the Amplifier and AV Switch Proxies.

The majority of the of the commands, notifications and capabilities defined here must be implemented in your driver to display EQ controls. Several commands are optional including SET_AUDIOMODE_BYPASS, SET_AUDIOMODE_EQ and SET_AUDIOMODE_TONECONTROL as these have been included to suspect legacy Audio Matrix Switches.

Note that this functionality is disabled by default. The HIDE EQ FROM NAVS CHANGED notification must be sent with a value of False to enable the EQ functionality in Navigator.

LOUDNESS OFF

Navigator EQ command called to set the loudness off for indicated output. The driver should notify proxy with the LOUDNESS_CHANGED notification of the new value.

Signature

LOUDNESS_OFF

Parameter Description
int OUTPUT: OutputBindingID

Returns

None

LOUDNESS ON

Navigator EQ command called to set the loudness on for indicated output. The driver should notify proxy with the LOUDNESS_CHANGED notification of the new value.

Signature

LOUDNESS_ON

Parameter Description
int OUTPUT: OutputBindingID

Returns

None

SET AUDIOMODE BYPASS

Navigator EQ command called to change the output's mode to BYPASS. This is an optional command and should be used only if your device needs to switch modes.

Signature

SET_AUDIOMODE_BYPASS

Parameter Description
int OUTPUT: OutputBindingID

Returns

None

SET AUDIOMODE EQ

Navigator EQ command called to change the output's mode to EQUALIZER. This is an optional command and should be used only if your device needs to switch modes.

Signature

SET_AUDIOMODE_EQ

Parameter Description
int OUTPUT: OutputBindingID

Returns

None

SET AUDIOMODE TONECONTROL

Navigator EQ command called to change the output's mode to TONE_CONTROL. This is an optional command and should be used only if your device needs to switch modes.

Signature

SET_AUDIOMODE_TONECONTROL

Parameter Description
int OUTPUT: OutputBindingID

Returns

None

SAVE EQ TO CUSTOM PRESET

Navigator EQ command called to save the current EQ values to a custom preset with a name. The driver should notify proxy with the EQ_NAMES_CHANGED notification with the updated name.

Signature

SAVE_EQ_TO_CUSTOM_PRESET

Parameter Description
int INDEX: Zero based custom preset index value used to save the custom preset. The index range is from 0 to the number of custom presets defined in the <eq_preset_nav_count> capability, minus one due to the range being zero-based.
str NAME: Name for the new custom index. Base64 encoded.
int OUTPUT: OutputBindingID

Returns

None

SET BASS LEVEL

Navigator EQ command called to set the bass level for tone control. The driver should notify proxy with the BASS_LEVEL_CHANGED notification of the new value.

Signature

SET_BASS_LEVEL

Parameter Description
int OUTPUT: OutputBindingID
int LEVEL: Bass level. range is -12 to 12

Returns

None

SET EQPRESET

Navigator EQ command called to change the selected preset for an output.

Signature

SET_EQPRESET

Parameter Description
int INDEX: Index for the selected preset.
int OUTPUT: OutputBindingID

Returns

None

SET EQ GAIN VALUES

Navigator EQ command called to set the current equalizer’s gain values.

Signature

SET_EQ_GAIN_VALUES

Parameter Description
str VALUES: Comma delimited string of updated numeric gain values, one value per band.

Returns

None

SET TREBLE LEVEL

Navigator EQ command called to set the treble level for tone control. The driver should notify the proxy with TREBLE_LEVEL_CHANGED notification of the new value.

Signature

SET_TREBLE_LEVEL

Parameter Description
int OUTPUT: OutputBindingID
int LEVEL: Treble level. Range is -12 to 12.

Returns

None

AUDIOMODE CHANGED

Navigator EQ notification that the output's audio mode has changed to either Tone Control or Equalizer for the output. This is an optional notification and should be used only if your device has audio modes.

Signature

AUDIOMODE_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
int AUDIOMODE: 1 = TONE_CONTROL: This is sent sent when a Tone Control value is changed. 2 = EQUALIZER: This is sent when a EQ value is changed such as Treble or Bass.

Returns

None

BALANCE LEVEL CHANGED

Navigator EQ notification that the balance has changed.

Signature

BALANCE_LEVEL_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
int LEVEL: New balance level. Range is 0 to 100.

Returns

None

Example

-- Notify Balance level is set to 'Full Left' for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BALANCE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 0 }, "NOTIFY")



-- Notify Balance level is set to 'Center' for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BALANCE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 50 }, "NOTIFY")



-- Notify Balance level is set to 'Full Right' for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BALANCE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 100 }, "NOTIFY")

BASS LEVEL CHANGED

Navigator EQ notification that the bass has changed.

Signature

BASS_LEVEL_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
int LEVEL: New bass level. Range is -12 to 12.

Returns

None

Example

-- Notify Bass Level is at -6 for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BASS_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = -6 }, "NOTIFY") 

-- Notify Bass Level is at +6 for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BASS_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 6 }, "NOTIFY")

EQ DISPLAY ORDER CHANGED

Navigator EQ notification of the order that the names from EQ_NAMES_CHANGED should be presented to the user.

Signature

EQ_DISPLAY_ORDER_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
table Table of indexes that represents display order of the names. Note that any programming for selecting a preset will be INDEX based, not name based. Hence the names can be changed but the programming will be tied to the index at time of creation.

Returns

None

Example

C4:SendToProxy(5001, "EQ_DISPLAY_ORDER_CHANGED", {​​​​​​​ [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5, OUTPUT = "4002" }​​​​​​​, "NOTIFY")

C4:SendToProxy(5001, "EQ_DISPLAY_ORDER_CHANGED", {​​​​​​​ 1, 2, 3, 4, 5, OUTPUT = "4002" }​​​​​​​, "NOTIFY")

EQ NAMES CHANGED

Navigator EQ notification of the current names for the equalizer presets.

Signature

EQ_NAMES_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
table Table of names.

Returns

None

Example

C4:SendToProxy(5001, "EQ_NAMES_CHANGED", { [1] = "FLAT", [2] = "CLASSICAL", [3] = "JAZZ", [4] = "POP", [5] = "ROCK", OUTPUT = "4002" }, "NOTIFY")

C4:SendToProxy(5001, "EQ_NAMES_CHANGED", {"FLAT", "CLASSICAL", "JAZZ", "POP", "ROCK", OUTPUT = 4002}, "NOTIFY")

EQ FREQS CHANGED

Navigator EQ notification that the frequencies of a equalizer have been modified.

Signature

EQFREQS_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
num VALUES: Comma delimited list of current equalizer frequencies.

Returns

None

Example

-- Notify Gains and Frequencies for EQ Bands for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "EQGAINS_CHANGED", { OUTPUT = "4002", VALUES = "7.5,3.8,5.4,4.59,7.8,7.4" }, "NOTIFY")_

C4:SendToProxy(5001, "EQFREQS_CHANGED", { OUTPUT = "4002", VALUES = "33,125,750,3000,8000,16000" }, "NOTIFY")

EQ GAINS CHANGED

Navigator EQ notification that the gains of an equalizer have been modified.

Signature

EQGAINS_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
num VALUES: Comma delimited list of current equalizer values.

Returns

None

Example

-- Notify Gains and Frequencies for EQ Bands for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "EQGAINS_CHANGED", { OUTPUT = "4002", VALUES = "7.5,3.8,5.4,4.59,7.8,7.4" }, "NOTIFY")_

C4:SendToProxy(5001, "EQFREQS_CHANGED", { OUTPUT = "4002", VALUES = "33,125,750,3000,8000,16000" }, "NOTIFY")

EQ PRESET CHANGED

Navigator EQ notification used when a different preset is selected for an output. Should be called after SET_EQPRESET is sent or if the preset is changed from a different event.

Signature

EQPRESET_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
int EQPRESET: Newly selected equalizer index. Range is 0 to maximum number defined in the <eq_preset_nav_count> capability.

Returns

None

Example

-- Notify change of current EQ Preset for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "EQPRESET_CHANGED", { OUTPUT = "4002", EQPRESET = 2 }, "NOTIFY")

HIDE EQ FROM NAVS CHANGED

Navigator EQ notification that the equalizer should be shown or hidden from Navigator. This must be sent with a value of False to enable the EQ functionality in Navigator.

Signature

HIDEEQFROMNAVS_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
bool ENABLED: True to hide this output from Navigators. False to allow output eq controls to be shown. Default is True.

Returns

None

Example

-- Notify Hide (or show) Navigator EQ for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "HIDEEQFROMNAVS_CHANGED", { OUTPUT = "4002", ENABLED = false }, "NOTIFY")

LOUDNESS CHANGED

Navigator EQ notification that the loudness has changed.

Signature

LOUDNESS_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
bool ENABLED: LOUDNESS: True for loudness on, False for loudness off.

Returns

None

TREBLE LEVEL CHANGED

Navigator EQ notification that the treble level has changed.

Signature

TREBLE_LEVEL_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
int LEVEL: LOUDNESS: New treble level. Range is -12 to 12.

Returns

None

Example

-- Notify Treble Level is at -6 for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "TREBLE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = -6 }, "NOTIFY")

-- Notify Treble Level is at +6 for Output 3 (Binding ID 4002) C4:SendToProxy(5001, "TREBLE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 6 }, "NOTIFY")

<has_eq_preset_control></has_eq_preset_control>: Boolean capability where True indicates this device supports the navigator equalizer interface and should allow navigators to interact with equalizers.

<eq_preset_nav_count></eq_preset_nav_count>: Capability that requires a count (integer) of the number of presets to be presented to the Navigators.

<eq_band_nav_count></<eq_band_nav_count>: Capability that requires a count (integer) of the number of adjustable bands for equalizer control.

<use_tone_max_value></use_tone_max_value>: Capability that requires the max value (integer) for tone controls.

<use_tone_min_value></use_tone_min_value>: Capability that requires the minimum value (integer) for tone controls.

Audio Output Bindings and Proxy Events

Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.

For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.

Amplifier Proxy Commands

BACK

Pulse Back button

Signature

BACK ()

Parameters

None

Returns

None

BINDING CHANGE ACTION

Command sent when a bound binding changes. Performs any actions needed to the protocol.

Signature

BINDING_CHANGE_ACTION ()

Parameter Description
str BindingID of the changed binding.

Returns

None

CANCEL

Pulse Cancel button

Signature

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Signature

DASH ()

Parameter

None

Returns

None

DISCONNECT OUTPUT

Disconnect (turn off) selected output on device

Signature

DISCONNECT_OUTPUT ()

Parameter Description
Int Output BindingID

Returns

None

EMIT CODE

Emit IR/Serial code. This is used by the AVGen IR/Serial Proxy.

Signature

EMIT_CODE ()

Parameter Description
Int ID OF IR Code

Returns

None

EMIT MACRO

Emit IR/Serial code macro (used by AVGen IR/Serial Proxy)

Signature

EMIT_MACRO ()

Parameter Description
str MacroCodeName

Returns

None

GET AUDIO INPUTS

Command sent to the protocol during the proxy initialization. Returns available audio inputs from the protocol device.

Signature

GET_AUDIO_INPUTS ()

Parameters

None

Returns

None

HYPHEN

Pulse ‘-’ button

Signature

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Signature

INFO ()

Parameters

None

Returns

None

LOUDNESS OFF

Turn loudness off.

Signature

LOUDNESS_OFF ()

Parameter Description
int Output Binding ID

Returns

None

LOUDNESS ON

Turn loudness on.

Signature

LOUDNESS_ON ()

Parameter Description
int Output Binding ID

Returns

None

LOUDNESS TOGGLE

Toggle loudness on/off.

Signature

LOUDNESS_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

MUTE OFF

Turning muting off.

Signature

MUTE_OFF ()

Parameter Description
int Output Binding ID

Returns

None

MUTE ON

Turn muting on.

Signature

MUTE_ON ()

Parameter Description
int Output Binding ID

Returns

None

MUTE TOGGLE

Toggle muting on/off.

Signature

MUTE_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

NUMBER 0

Pulse ‘0’ button

Signature

Number_0 ()

Parameters

None

Returns

None

NUMBER 1

Pulse ‘1’ button

Signature

Number_1 ()

Parameters

None

Returns

None

NUMBER 2

Pulse ‘2’ button

Signature

Number_2 ()

Parameters

None

Returns

None

NUMBER 3

Pulse ‘3’ button

Signature

Number_3 ()

Parameters

None

Returns

None

NUMBER 4

Pulse ‘4’ button

Signature

Number_4 ()

Parameters

None

Returns

None

NUMBER 5

Pulse ‘5’ button

Signature

Number_5 ()

Parameters

None

Returns

None

NUMBER 6

Pulse ‘6’ button

Signature

Number_6 ()

Parameters

None

Returns

None

NUMBER 7

Pulse ‘7’ button

Signature

Number_7 ()

Parameters

None

Returns

None

NUMBER 8

Pulse ‘8’ button

Signature

Number_8 ()

Parameters

None

Returns

None

NUMBER 9

Pulse ‘9’ button

Signature

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Signature

OFF ()

Parameters

None

Returns

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

ON

Turn device On.

Signature

ON ()

Parameters

None

Returns

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

POUND

Pulse ‘#’ button

Signature

POUND ()

Parameters

None

Returns

None

PULSE BALANCE DOWN

Pulse balance down (Left)

Signature

PULSE_BALNCE_DOWN ()

Parameters

None

PULSE BALANCE UP

Pulse balance up (Right)

Signature

PULSE_BALNCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

PULSE BASS DOWN

Pulse bass down (Left)

Signature

PULSE_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

PULSE BASS UP

Pulse bass up (Right)

Signature

PULSE_BASS_UP ()

Parameters

None

Returns

None

PULSE INPUT

Toggle (cycle through) input selection on device.

Signature

PULSE_INPUT

Parameters

None

Returns

None

PULSE SUR UP

Toggle (cycle through) surround mode presets on device.

Signature

PULSE_SUR_UP

Parameter Description
int Output Binding ID

PULSE VOL DOWN

Pulse volume level down.

Signature

PULSE_VOL_DOWN

Parameter Description
int Output Binding ID

Returns

None

PULSE VOL UP

Pulse volume level up.

Signature

PULSE_VOL_UP

Parameter Description
int Output Binding ID

Returns

None

PULSE TREBLE DOWN

Pulse treble down.

Signature

PULSE_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

PULSE TREBLE UP

Pulse treble up.

Signature

PULSE_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

RECALL

Pulse Recall button

Signature

RECALL ()

Parameters

None

Returns

None

STAR

Pulse * button

Signature

STAR ()

Parameters

None

Returns

None

START BALANCE DOWN

Start ramping balance down (left).

Signature

START_BALANCE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START BASS DOWN

Start ramping bass down.

Signature

START_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START BASS UP

Start ramping bass up.

Signature

START_BASS_UP ()

Parameter Description
int Output Binding ID

Returns

None

START TREBLE DOWN

Start ramping treble down.

Signature

START_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START TREBLE UP

Start ramping treble up.

Signature

START_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

START VOL DOWN

Start ramping volume down.

Signature

START_VOL_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START VOL UP

Start ramping volume up.

Signature

START_VOL_UP ()

Parameter Description
int Volume Level
int Output Binding ID

Returns

None

SET ALL EQ SETTINGS

Set balance to a specified position.

Signature

SET_ALL_EQ_SETTINGS ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET BALANCE

Set balance to a specified position.

Signature

SET_BALANCE ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET BALANCE UP

Set balance to a specified position.

Signature

SET_BALANCE_UP ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET BASS LEVEL

Set bass to a specified level.

Signature

SET_BASS_LEVEL

Parameter Description
int Output Binding ID

Returns

None

SET DIGI OFF

Used with the v.3 amp to turn digital inputs off.

Signature

SET_DIGI_OFF ()

Parameters

None

Returns

None

SET DIGI ON

Used with the v.3 amp to turn digital inputs on.

Signature

SET_DIGI_ON ()

Parameters

None

Returns

None

SET INPUT

Specify input selection of device.

Signature

SET_INPUT ()

Parameter Description
int Input Binding ID - should be in the BindingID range below.
int Optional. Output Binding ID - should be in the BindingID range below.

Returns

None

Usage Note

SET LOUDNESS

Turn loudness on.

Signature

SET_LOUDNESS ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET MAX VOLUME

Set maximum allowable volume level

Signature

SET_MAX_VOLUME ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET OUTPUT INPUT

Specify input and output selection of device.

Signature

SET_OUTPUT_INPUT ()

Parameter Description
int Input Binding ID
int Output Binding ID

Returns

None

SET SURROUND MODE

Select specified surround mode preset on device.

Signature

SET_SURROUND_MODE ()

Parameter Description
int Surround Mode
int Output Binding ID

Returns

None

SET TREBLE LEVEL

Set treble to a specified level.

Signature

SET_TREBLE_LEVEL ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET UP DOWN SWAP

Swap page UP/DOWN buttons (used by AVGen)

Signature

SET_UP_DOWN_SWAP ()

Parameter Description
bool True/False

Returns

None

STOP VOL DOWN

Stop ramping volume down.

Signature

SET_VOL_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

SET VOLUME LEVEL

Set volume to a specified level.

Signature

SET_VOLUME_LEVEL () 

Parameter Description
int Level
int Output Binding ID

Returns

None

STOP BALANCE DOWN

Start ramping balance.

Signature

STOP_BALANCE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP BASS DOWN

Stop ramping bass

Signature

STOP_BALANCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP BASS DOWN

Stop ramping bass down.

Signature

STOP_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP BASS UP

Stop ramping bass up

Signature

STOP_BASS_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP TREBLE DOWN

Stop ramping the treble down

Signature

STOP_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP TREBLE UP

Stop ramping the treble up.

Signature

STOP_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP VOL DOWN

Stop ramping the volume down.

Signature

STOP_VOL_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP VOL UP

Stop ramping the volume up.

Signature

STOP_VOL_UP ()

Parameter Description
int Output Binding ID

Returns

None

Audio Switch Proxy Commands

BACK

Pulse Back button

Signature

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Signature

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Signature

DASH ()

Parameter

None

Returns

None

DISCONNECT OUTPUT

Disconnect (turn off) selected output on device

Signature

DISCONNECT_OUTPUT ()

Parameter Description
Int Output BindingID

Returns

None

SET LOUDNESS

Turn loudness on.

Signature

SET_LOUDNESS ()

Parameter Description
int Level
int Output Binding ID

Returns

None

Audio Video Switch Capabilities

audio consumer count

Count of number of audio consumers (inputs) of the device. This value must match the number of connections in the driver.

Signature

<audio_consumer_count></audio_consumer_count>

Parameter Description
int Number of audio consumers.

Example

<capabilities>
   <audio_consumer_count>8</audio_consumer_count>
</capabilities>

audio provider count

Count of number of audio providers (outputs) of the device. This value must match the number of connections in the driver.

Signature

<audio_provider_count></audio_provider_count>

Parameter Description
int Number of audio providers.

Example

<capabilities>
   <audio_provider_count>8</audio_provider_count>
</capabilities>

can downclass

Specifies if the A/V switch can down convert. For example: S-Video -> Composite

Signature

<can_downclass></can_downclass>

Parameter Description
bool True/False

Example

<capabilities>
   <can_downclass>true</can_downclass>
</capabilities>

can switch separately

Device specific capability that must be set to True to in order for an AV Switch’s Composer Pro interface reflecting independent audio and video signal switching.

Signature

<can_switch_separately></can_switch_separately>

Parameter Description
bool True/False

Usage Note

This capability is not related with the requires separate switching capability.  A setting of True or False will have no impact on requires separate switching.

Example

<capabilities>
   <can_switch_separately>true</can_switch_separately>
</capabilities>

can upclass

Specifies if the A/V switch can up convert. For example: Composite -> S-Video

Signature

<can_upclass></can_upclass>

Parameter Description
bool True/False

Example

<capabilities>
   <can_upclass>true</can_upclass>
</capabilities>

has audio signal sense

Specifies AV switching is capable of sensing audio on an input. This is useful in triggering programming in ComposerPro based on the this setting.

Signature

<has_audio_signal_sense></has_audio_signal_sense>

Parameter Description
bool True/False

Example

<capabilities>
   <has_audio_signal_sense>true</has_audio_signal_sense>
</capabilities>

has discrete balance control

Capable of directly specifying a balance setting.

Signature

<has_discrete_balance_control></has_discrete_balance_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_balance_control>true</has_discrete_balance_control>
</capabilities>

has discrete bass control

Capable of directly specifying a bass setting.

Signature

<has_discrete_bass_control></has_discrete_bass_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_bass_control>true</has_discrete_bass_control>
</capabilities>

has discrete loudness control

Capable of directly specifying a loudness setting.

Signature

<has_discrete_loudness_control></has_discrete_loudness_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>

has discrete mute control

Capable of directly specifying mute ON or OFF setting.

Signature

<has_discrete_ mute_control></has_discrete_ mute_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_mute_control>true</has_discrete_mute_control>
</capabilities>

has discrete treble control

Capable of directly specifying a treble setting.

Signature

<has_discrete_treble_control></has_discrete_treble_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_treble_control>true</has_discrete_treble_control>
</capabilities>

has discrete volume control

Capable of directly specifying a volume setting.

Signature

<has_discrete_volume_control></has_discrete_volume_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_volume_control>true</has_discrete_volume_control>
</capabilities>

has discrete loudness control

Capable of handling ON/OFF loudness control.

Signature

<has_discrete_loudness_control></has_discrete_loudness_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>

has toggle mute control

Capable of handling ON/OFF mute control.

Signature

<has_toggle_mute_control></has_toggle_mute_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_toggle_mute_control>true</has_toggle_mute_control>
</capabilities>

has up down balance control

Capable of directly specifying a balance setting.

Signature

<has_up_down_balance_control></has_up_down_balance_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_balance_control>true</has_up_down_balance_control>
</capabilities>

has up down bass control

Capable of directly specifying a bass setting.

Signature

<has_up_down_bass_control></has_up_down_bass_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_bass_control>true</has_up_down_bass_control>
</capabilities>

has up down treble control

Capable of directly specifying a treble setting.

Signature

<has_up_down_treble_control></has_up_down_treble_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_treble_control>true</has_up_down_treble_control>
</capabilities>

has up down volume control

Has capability of handling volume UP and DOWN adjustments.

Signature

<has_up_down_volume_control></has_up_down_volume_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_volume_control>true</has_up_down_volume_control>
</capabilities>

has video signal sense

Specifies AV switching is capable of sensing video on an input. This is useful in triggering programming in ComposerPro based on the this setting.

Signature

<has_video_signal_sense></has_video_signal_sense>

Parameter Description
bool True/False

Example

<capabilities>
   <has_video_signal_sense>true</has_video_signal_sense>
</capabilities>

requires separate switching

Device specific capability that when set to True notifies Director of the existence of individual audio and video paths. This capability has no impact on Composer Pro user interface. For that reason, when set to True it is recommended that the capability can switch separately be set to True as well.

Signature

<requires_separate_switching></requires_separate_switching>

Parameter Description
bool True/False

Example

<capabilities>
   <requires_separate_switching>true</requires_separate_switching>
</capabilities>

video consumer count

Count of number of video consumers (inputs) of the device. This value must match the number of connections in the driver.

Signature

<video_consumer_count></video_consumer_count>

Parameter Description
int Number of video consumers.

Example

<capabilities>
   <video_consumer_count>8</video_consumer_count>
</capabilities>

video provider count

Count of number of video providers (outputs) of the device. This value must match the number of connections in the driver.

Signature

<video_provider_count></video_provider_count>

Parameter Description
int Number of audio providers.

Example

<capabilities>
   <video_provider_count>8</video_provider_count>
</capabilities>

Audio Video Switch Protocol Notifications

AUDIO PARAMETER CHANGED

Audio parameter has changed

Signature

AUDIO_PARAMETER_CHANGED ()

Parameter Description
int Output Binding ID

Returns

None

BALANCE LEVEL CHANGED

Selected balance level has changed.

Signature

BALANCE_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

BASS LEVEL CHANGED

Selected bass level has changed

Signature

BASS_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

INPUT OUTPUT CHANGED

Selected inputs & outputs have changed.

Signature

INPUT_OUTPUT_CHANGED ()

Parameter Description
int INput Binding ID
int Output Binding ID

Returns

None

LOUDNESS CHANGED

Loudness state (On/Off) has changed.

Signature

LOUDNESS_CHANGED ()

Parameter Description
bool True/False
int Output Binding ID

Returns

None

MUTE CHANGED

MUTE state (On/Off) has changed.

Signature

MUTE_CHANGED ()

Parameter Description
bool True/False
int Output Binding ID

Returns

None

OFF

Device has turned off.

Signature

OFF ()

Parameter

None

Returns

None

ON

Device has turned on.

Signature

ON ()

Parameter

None

Returns

None

TREBLE LEVEL CHANGED

Selected treble level has changed.

Signature

TREBLE_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

VOLUME LEVEL CHANGED

Selected volume level has changed.

Signature

VOLUME_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

Audio Video Switch Navigator EQ

Introduction

The ability to display audio equalization controls on devices running Navigator was added in conjunction with Operating System 3.2.3. Currently, the only Proxies that support Navigator EQ controls are the Amplifier and AV Switch Proxies.

The majority of the of the commands, notifications and capabilities defined here must be implemented in your driver to display EQ controls. Several commands are optional including SET_AUDIOMODE_BYPASS, SET_AUDIOMODE_EQ and SET_AUDIOMODE_TONECONTROL as these have been included to suspect legacy Audio Matrix Switches.

Note that this functionality is disabled by default. The HIDE EQ FROM NAVS CHANGED notification must be sent with a value of False to enable the EQ functionality in Navigator.

LOUDNESS OFF

Navigator EQ command called to set the loudness off for indicated output. The driver should notify proxy with the LOUDNESS_CHANGED notification of the new value.

Signature

LOUDNESS_OFF

Parameter Description
int OUTPUT: OutputBindingID

Returns

None

LOUDNESS ON

Navigator EQ command called to set the loudness on for indicated output. The driver should notify proxy with the LOUDNESS_CHANGED notification of the new value.

Signature

LOUDNESS_ON

Parameter Description
int OUTPUT: OutputBindingID

Returns

None

SET AUDIOMODE BYPASS

Navigator EQ command called to change the output's mode to BYPASS. This is an optional command and should be used only if your device needs to switch modes.

Signature

SET_AUDIOMODE_BYPASS

Parameter Description
int OUTPUT: OutputBindingID

Returns

None

SET AUDIOMODE EQ

Navigator EQ command called to change the output's mode to EQUALIZER. This is an optional command and should be used only if your device needs to switch modes.

Signature

SET_AUDIOMODE_EQ

Parameter Description
int OUTPUT: OutputBindingID

Returns

None

SET AUDIOMODE TONECONTROL

Navigator EQ command called to change the output's mode to TONE_CONTROL. This is an optional command and should be used only if your device needs to switch modes.

Signature

SET_AUDIOMODE_TONECONTROL

Parameter Description
int OUTPUT: OutputBindingID

Returns

None

SAVE EQ TO CUSTOM PRESET

Navigator EQ command called to save the current EQ values to a custom preset with a name. The driver should notify proxy with the EQ_NAMES_CHANGED notification with the updated name.

Signature

SAVE_EQ_TO_CUSTOM_PRESET

Parameter Description
int INDEX: Zero based custom preset index value used to save the custom preset. The index range is from 0 to the number of custom presets defined in the <eq_preset_nav_count> capability, minus one due to the range being zero-based.
str NAME: Name for the new custom index. Base64 encoded.
int OUTPUT: OutputBindingID

Returns

None

SET BASS LEVEL

Navigator EQ command called to set the bass level for tone control. The driver should notify proxy with the BASS_LEVEL_CHANGED notification of the new value.

Signature

SET_BASS_LEVEL

Parameter Description
int OUTPUT: OutputBindingID
int LEVEL: Bass level. range is -12 to 12

Returns

None

SET EQPRESET

Navigator EQ command called to change the selected preset for an output.

Signature

SET_EQPRESET

Parameter Description
int INDEX: Index for the selected preset.
int OUTPUT: OutputBindingID

Returns

None

SET EQ GAIN VALUES

Navigator EQ command called to set the current equalizer’s gain values.

Signature

SET_EQ_GAIN_VALUES

Parameter Description
str VALUES: Comma delimited string of updated numeric gain values, one value per band.

Returns

None

SET TREBLE LEVEL

Navigator EQ command called to set the treble level for tone control. The driver should notify the proxy with TREBLE_LEVEL_CHANGED notification of the new value.

Signature

SET_TREBLE_LEVEL

Parameter Description
int OUTPUT: OutputBindingID
int LEVEL: Treble level. Range is -12 to 12.

Returns

None

AUDIOMODE CHANGED

Navigator EQ notification that the output's audio mode has changed to either Tone Control or Equalizer for the output. This is an optional notification and should be used only if your device has audio modes.

Signature

AUDIOMODE_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
int AUDIOMODE: 1 = TONE_CONTROL: This is sent sent when a Tone Control value is changed. 2 = EQUALIZER: This is sent when a EQ value is changed such as Treble or Bass.

Returns

None

BALANCE LEVEL CHANGED

Navigator EQ notification that the balance has changed.

Signature

BALANCE_LEVEL_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
int LEVEL: New balance level. Range is 0 to 100.

Returns

None

Example

-- Notify Balance level is set to 'Full Left' for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BALANCE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 0 }, "NOTIFY")



-- Notify Balance level is set to 'Center' for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BALANCE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 50 }, "NOTIFY")



-- Notify Balance level is set to 'Full Right' for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BALANCE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 100 }, "NOTIFY")

BASS LEVEL CHANGED

Navigator EQ notification that the bass has changed.

Signature

BASS_LEVEL_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
int LEVEL: New bass level. Range is -12 to 12.

Returns

None

Example

-- Notify Bass Level is at -6 for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BASS_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = -6 }, "NOTIFY") 

-- Notify Bass Level is at +6 for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BASS_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 6 }, "NOTIFY")

EQ DISPLAY ORDER CHANGED

Navigator EQ notification of the order that the names from EQ_NAMES_CHANGED should be presented to the user.

Signature

EQ_DISPLAY_ORDER_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
table Table of indexes that represents display order of the names. Note that any programming for selecting a preset will be INDEX based, not name based. Hence the names can be changed but the programming will be tied to the index at time of creation.

Returns

None

Example

C4:SendToProxy(5001, "EQ_DISPLAY_ORDER_CHANGED", {​​​​​​​ [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5, OUTPUT = "4002" }​​​​​​​, "NOTIFY")

C4:SendToProxy(5001, "EQ_DISPLAY_ORDER_CHANGED", {​​​​​​​ 1, 2, 3, 4, 5, OUTPUT = "4002" }​​​​​​​, "NOTIFY")

EQ NAMES CHANGED

Navigator EQ notification of the current names for the equalizer presets.

Signature

EQ_NAMES_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
table Table of names.

Returns

None

Example

C4:SendToProxy(5001, "EQ_NAMES_CHANGED", { [1] = "FLAT", [2] = "CLASSICAL", [3] = "JAZZ", [4] = "POP",   [5] = "ROCK", OUTPUT = "4002" }, "NOTIFY")

C4:SendToProxy(5001, "EQ_NAMES_CHANGED", {"FLAT", "CLASSICAL", "JAZZ", "POP", "ROCK", OUTPUT = 4002}, "NOTIFY")

EQ FREQS CHANGED

Navigator EQ notification that the frequencies of a equalizer have been modified.

Signature

EQFREQS_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
num VALUES: Comma delimited list of current equalizer frequencies.

Returns

None

Example

-- Notify Gains and Frequencies for EQ Bands for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "EQGAINS_CHANGED", { OUTPUT = "4002", VALUES = "7.5,3.8,5.4,4.59,7.8,7.4" }, "NOTIFY")_

C4:SendToProxy(5001, "EQFREQS_CHANGED", { OUTPUT = "4002", VALUES = "33,125,750,3000,8000,16000" }, "NOTIFY")

EQ GAINS CHANGED

Navigator EQ notification that the gains of an equalizer have been modified.

Signature

EQGAINS_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
num VALUES: Comma delimited list of current equalizer values.

Returns

None

Example

-- Notify Gains and Frequencies for EQ Bands for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "EQGAINS_CHANGED", { OUTPUT = "4002", VALUES = "7.5,3.8,5.4,4.59,7.8,7.4" }, "NOTIFY")_

C4:SendToProxy(5001, "EQFREQS_CHANGED", { OUTPUT = "4002", VALUES = "33,125,750,3000,8000,16000" }, "NOTIFY")

EQ PRESET CHANGED

Navigator EQ notification used when a different preset is selected for an output. Should be called after SET_EQPRESET is sent or if the preset is changed from a different event.

Signature

EQPRESET_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
int EQPRESET: Newly selected equalizer index. Range is 0 to maximum number defined in the <eq_preset_nav_count> capability.

Returns

None

Example

-- Notify change of current EQ Preset for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "EQPRESET_CHANGED", { OUTPUT = "4002", EQPRESET = 2 }, "NOTIFY")

HIDE EQ FROM NAVS CHANGED

Navigator EQ notification that the equalizer should be shown or hidden from Navigator. This must be sent with a value of False to enable the EQ functionality in Navigator.

Signature

HIDEEQFROMNAVS_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
bool ENABLED: True to hide this output from Navigators. False to allow output eq controls to be shown. Default is True.

Returns

None

Example

-- Notify Hide (or show) Navigator EQ for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "HIDEEQFROMNAVS_CHANGED", { OUTPUT = "4002", ENABLED = false }, "NOTIFY")

LOUDNESS CHANGED

Navigator EQ notification that the loudness has changed.

Signature

LOUDNESS_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
bool ENABLED: LOUDNESS: True for loudness on, False for loudness off.

Returns

None

TREBLE LEVEL CHANGED

Navigator EQ notification that the treble level has changed.

Signature

TREBLE_LEVEL_CHANGED

Parameter Description
int OUTPUT: OutputBindingID
int LEVEL: LOUDNESS: New treble level. Range is -12 to 12.

Returns

None

Example

-- Notify Treble Level is at -6 for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "TREBLE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = -6 }, "NOTIFY")

-- Notify Treble Level is at +6 for Output 3 (Binding ID 4002) C4:SendToProxy(5001, "TREBLE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 6 }, "NOTIFY")

<has_eq_preset_control></has_eq_preset_control>: Boolean capability where True indicates this device supports the navigator equalizer interface and should allow navigators to interact with equalizers.

<eq_preset_nav_count></eq_preset_nav_count>: Capability that requires a count (integer) of the number of presets to be presented to the Navigators.

<eq_band_nav_count></<eq_band_nav_count>: Capability that requires a count (integer) of the number of adjustable bands for equalizer control.

<use_tone_max_value></use_tone_max_value>: Capability that requires the max value (integer) for tone controls.

<use_tone_min_value></use_tone_min_value>: Capability that requires the minimum value (integer) for tone controls.

Audio Output Bindings and Proxy Events

Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.

For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.

Display Adjustable AV Switch Bindings

O.S. releases 3.3.0 and later provides the ability to hide AV Switch Bindings that are not in use. This feature has been provided to better manage the UI display in ComposerPro. This is especially useful for AV Switch devices that have a large number of bindings. Displaying all of the bindings for these devices can make the use of UI cumbersome.

Assumptions:

AV Switch Proxy Functionality Using Display Adjustable Bindings

Driver XML to Support Hidden Bindings

To allow the AV Switch Proxy to auto hide/unhide a binding, the driver needs to have a new XML tag included in the each connection in the driver’s XML: <ExtraInfo>D2</ExtraInfo>.

The ExtraInfo tag must include the value of D2 as the parameter for each connection. For example, see the XML for connection 3096 to the right.

<connection>
     <id>3096</id>
     <type>6</type>
     <ExtraInfo>D2</ExtraInfo>
     <connectionname>TX 96</connectionname>
     <consumer>True</consumer>
</connection>

 Capability to Support Hidden Bindings

allow_dynamic_resize

Capability that allows for AV Switch bindings to be hidden in ComposerPro. Defaults to false.

 Signature

<allow_dynamic_resize>false</allow_dynamic_resize>

Additional Information and Expected Limitations

Audio Video Switch Proxy Commands

BACK

Pulse Back button.

Signature

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Signature

CANCEL ()

Parameters

None

Returns

None

CONNECT OUTPUT

Numerical value of the output. Switch the output to passed ID.

Signature

CONNECT OUTPUT ()

Parameter Description
int Output Binding ID

Returns

None

Usage Note

Preface band width tuner capability must be used in the driver for the CONNECT OUTPUT command to be set.

DASH

Pulses the ‘-’ button.

Signature

DASH ()

Parameter

None

Returns

None

DISCONNECT OUTPUT

Disconnect (turn off) selected output on device.

Signature

DISCONNECT_OUTPUT ()

Parameter Description
Int Output BindingID

Returns

None

EMIT CODE

Emit IR/Serial code (used by AVGen IR/Serial Proxy).

Signature

EMIT_CODE ()

Parameter Description
Int ID OF IR Code

Returns

None

EMIT MACRO

Emit IR/Serial code macro (used by AVGen IR/Serial Proxy)

Signature

EMIT_MACRO ()

Parameter Description
str MacroCodeName

Returns

None

GET AUDIO INPUTS

Command sent to the protocol during the proxy initialization. Returns available audio inputs from the protocol device.

Signature

GET_AUDIO_INPUTS ()

Parameters

None

Returns

None

HYPHEN

Pulse ‘-’ button

Signature

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Signature

INFO ()

Parameters

None

Returns

None

LOUDNESS OFF

Turn loudness off.

Signature

LOUDNESS_OFF ()

Parameter Description
int Output Binding ID

Returns

None

LOUDNESS ON

Turn loudness on.

Signature

LOUDNESS_ON ()

Parameter Description
int Output Binding ID

Returns

None

LOUDNESS TOGGLE

Toggle loudness on/off.

Signature

LOUDNESS_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

MUTE OFF

Turn muting off.

Signature

MUTE_OFF ()

Parameter Description
int Output Binding ID

Returns

None

MUTE ON

Turn muting on.

Signature

MUTE_ON ()

Parameter Description
int Output Binding ID

Returns

None

MUTE TOGGLE

Toggle muting on/off.

Signature

MUTE_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

NUMBER 0

Pulse ‘0’ button

Signature

Number_0 ()

Parameters

None

Returns

None

NUMBER 1

Pulse ‘1’ button

Signature

Number_1 ()

Parameters

None

Returns

None

NUMBER 2

Pulse ‘2’ button

Signature

Number_2 ()

Parameters

None

Returns

None

NUMBER 3

Pulse ‘3’ button

Signature

Number_3 ()

Parameters

None

Returns

None

NUMBER 4

Pulse ‘4’ button

Signature

Number_4 ()

Parameters

None

Returns

None

NUMBER 5

Pulse ‘5’ button

Signature

Number_5 ()

Parameters

None

Returns

None

NUMBER 6

Pulse ‘6’ button

Signature

Number_6 ()

Parameters

None

Returns

None

NUMBER 7

Pulse ‘7’ button

Signature

Number_7 ()

Parameters

None

Returns

None

NUMBER 8

Pulse ‘8’ button

Signature

Number_8 ()

Parameters

None

Returns

None

NUMBER 9

Pulse ‘9’ button

Signature

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Signature

OFF ()

Parameters

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

ON

Turn device On.

Signature

ON ()

Parameters

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

POUND

Pulse ‘#’ button

Signature

POUND ()

Parameters

None

Returns

None

PULSE BALANCE DOWN

Pulse balance down (Left)

Signature

PULSE_BALNCE_DOWN ()

Parameters

None

Returns

None

PULSE BALANCE UP

Pulse balance up (Right)

Signature

PULSE_BALNCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

PULSE BASS DOWN

Pulse bass down (Left)

Signature

PULSE_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

PULSE BASS UP

Pulse bass up (Right)

Signature

PULSE_BASS_UP ()

Parameters

None

Returns

None

PULSE INPUT

Toggle (cycle through) input selection on device.

Signature

PULSE_INPUT

Parameters

None

Returns

None

PULSE SUR UP

Toggle (cycle through) surround mode presets on device.

Signature

PULSE_SUR_UP

Parameter Description
int Output Binding ID

Returns

None

PULSE VOL DOWN

Pulse volume level down.

Signature

PULSE_VOL_DOWN

Parameter Description
int Output Binding ID

Returns

None

PULSE VOL UP

Pulse volume level up.

Signature

PULSE_VOL_UP

Parameter Description
int Output Binding ID

Returns

None

PULSE TREBLE DOWN

Pulse treble down.

Signature

PULSE_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

PULSE TREBLE UP

Pulse treble up.

Signature

PULSE_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

RECALL

Pulse Recall button

Signature

RECALL ()

Parameters

None

Returns

None

SET BALANCE

Set balance to a specified position.

Signature

SET_BALANCE ()

Parameter Description
int Output Binding ID

Returns

None

SET BALANCE UP

Set balance to a specified position.

Signature

SET_BALANCE_UP ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET BASS LEVEL

Set bass to a specified level.

Signature

SET_BASS_LEVEL

Parameter Description
int Output Binding ID

Returns

None

SET DIGI OFF

Used with the v.3 amp to turn digital inputs off.

Signature

SET_DIGI_OFF ()

Parameters

None

Returns

None

SET DIGI ON

Used with the v.3 amp to turn digital inputs on.

Signature

SET_DIGI_ON ()

Parameters

None

Returns

None

SET INPUT

Specify input selection of device.

Signature

SET_INPUT ()

Parameter Description
int Input Binding ID - should be in the BindingID range below.
int Optional. Output Binding ID - should be in the BindingID range below.

Returns

None

Usage Note

SET LOUDNESS

Turn loudness on.

Signature

SET_LOUDNESS ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET OUTPUT INPUT

Specify input and output selection of device.

Signature

SET_OUTPUT_INPUT ()

Parameter Description
int Input Binding ID
int Output Binding ID

Returns

None

SET SURROUND MODE

Select specified surround mode preset on device.

Signature

SET_SURROUND_MODE ()

Parameter Description
int Surround Mode
int Output Binding ID

Returns

None

SET TREBLE LEVEL

Set treble to a specified level.

Signature

SET_TREBLE_LEVEL ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET UP DOWN SWAP

Swap page UP/DOWN buttons (used by AVGen)

Signature

SET_UP_DOWN_SWAP ()

Parameter Description
bool True/False

Returns

None

STOP VOL DOWN

Stop ramping volume down.

Signature

SET_VOL_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

SET VOLUME LEVEL

Set volume to a specified level.

Signature

SET_VOLUME_LEVEL () 

Parameter Description
int Level
int Output Binding ID

Returns

None

STAR

Pulse button

Signature

STAR ()

Parameters

None

Returns

None

START BALANCE DOWN

Start ramping balance down (left).

Signature

START_BALANCE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START BASS DOWN

Start ramping bass down.

Signature

START_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START BASS UP

Start ramping bass up.

Signature

START_BASS_UP ()

Parameter Description
int Output Binding ID

Returns

None

START TREBLE DOWN

Start ramping treble down.

Signature

START_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START TREBLE UP

Start ramping treble up.

Signature

START_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

START VOL DOWN

Start ramping volume down.

Signature

START_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START VOL UP

Start ramping volume up.

Signature

START_VOL_UP ()

Parameter Description
int Volume Level
int Output Binding ID

Returns

None

STOP BALANCE DOWN

Start ramping balance.

Signature

STOP_BALANCE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP BASS DOWN

Stop ramping bass

Signature

STOP_BALANCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP BASS DOWN

Stop ramping bass

Signature

STOP_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP BASS UP

Stop ramping bass

Signature

STOP_BASS_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP TREBLE DOWN

Stop ramping the treble down

Signature

STOP_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP TREBLE UP

Stop ramping the treble up.

Signature

STOP_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP VOL DOWN

Stop ramping the volume down

Signature

STOP_VOL_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

CD Player Capabilities

media count

Number of discs available within the changer

Signature

<media_count></media_count>

Parameter Description
int Number of discs.

Example

<capabilities>
   <media_count>12</media_count>
</capabilities>

media type

Media that the device is capable of playing. Bitmask values include:

Signature

<media_type></media_type>

Parameter Description
int Number of discs.

Example

<capabilities>
   <media_type>0X2</media_type>
</capabilities>

CD Player Protocol Notifications

DISC CHANGED

Selected disc has changed.

Signature

DISC_CHANGED ()

Parameter Description
int Disc Number

Returns

None

OFF

Device has turned Off.

Signature

OFF ()

Parameter

None

Returns

None

ON

Device has turned On.

Signature

ON ()

Parameter

None

Returns

None

PAUSE

Device is paused.

Signature

PAUSE ()

Parameter

None

Returns

None

PLAY

Device has entered a playback state.

Signature

PLAY ()

Parameter

None

Returns

None

STOP

Device has entered a stopped state.

Signature

STOP ()

Parameter

None

Returns

None

TRACK CHANGED

Selected track has changed.

Signature

TRACK_CHANGED ()

Parameter Description
int Track Number

Returns

None

Audio Output Bindings and Proxy Events

Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.

For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.

CD Player Proxy Commands

BACK

Pulse Back button

Signature

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Signature

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Signature

DASH ()

Parameters

None

Returns

None

DOWN

Pulse down navigation.

Signature

DOWN ()

Parameters

None

Returns

None

EJECT

Eject disc.

Signature

EJECT ()

Parameters

None

Returns

None

EMIT CODE

Emit IR/Serial code (used by AVGen IR/Serial Proxy).

Signature

EMIT_CODE ()

Parameter Description
Int ID of IR Code

Returns

None

EMIT MACRO

Emit IR/Serial code macro.

Signature

EMIT_MACRO ()

Parameter Description
str MacroCodeName

Returns

None

ENTER

Navigate Enter key

Signature

Enter ()

Parameters

None

Returns

None

GO TO DISC

Select specified disc.

Signature

GO_TO_DISC ()

Parameter Description
int Disc Number

Returns

None

GO TO DISC TRACK

Select specified disc and track.

Signature

GO_TO_DISC_TRACK ()

Parameter Description
int Disc Number
int Track Number

Returns

None

GO TO TRACK

Select specified track.

Signature

GO_TO_TRACK ()

Parameter Description
int Track Number

Returns

None

HYPHEN

Pulse ‘-’ button

Signature

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Signature

INFO ()

Parameters

None

Returns

None

LEFT

Pulse left navigation.

Signature

LEFT ()

Parameters

None

Returns

None

Navigate menu.

Signature

MENU ()

Parameters

None

Returns

None

NUMBER 0

Pulse ‘0’ button

Signature

Number_0 ()

Parameters

None

Returns

None

NUMBER 1

Pulse ‘1’ button

Signature

Number_1 ()

Parameters

None

Returns

None

NUMBER 2

Pulse ‘2’ button

Signature

Number_2 ()

Parameters

None

Returns

None

NUMBER 3

Pulse ‘3’ button

Signature

Number_3 ()

Parameters

None

Returns

None

NUMBER 4

Pulse ‘4’ button

Signature

Number_4 ()

Parameters

None

Returns

None

NUMBER 5

Pulse ‘5’ button

Signature

Number_5 ()

Parameters

None

Returns

None

NUMBER 6

Pulse ‘6’ button

Signature

Number_6 ()

Parameters

None

Returns

None

NUMBER 7

Pulse ‘7’ button

Signature

Number_7 ()

Parameters

None

Returns

None

NUMBER 8

Pulse ‘8’ button

Signature

Number_8 ()

Parameters

None

Returns

None

NUMBER 9

Pulse ‘9’ button

Signature

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Signature

OFF ()

Parameters

None

Returns

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

ON

Turn device On.

Signature

ON ()

Parameters

None

Returns

`None `

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

OPEN CLOSE

Open/close disc tray.

Signature

OPEN_CLOSE ()

Parameters

None

Returns

`None `

PAGE DOWN

Pulse menu Page down.

Signature

PAGE_DOWN ()

Parameters

None

Returns

`None `

PAGE UP

Pulse menu Page up.

Signature

PAGE_UP ()

Parameters

None

Returns

`None `

PLAY

Place device in a playback state.

Signature

PLAY ()

Parameters

None

Returns

`None `

PAUSE

Place device in stop state.

Signature

PAUSE ()

Parameters

None

Returns

`None `

POUND

Pulse # button.

Signature

POUND ()

Parameters

None

Returns

`None `

RECALL

Pulse the recall button.

Signature

RECALL ()

Parameters

None

Returns

`None `

Pulse right navigation button.

Signature

RIGHT ()

Parameters

None

Returns

`None `

SCAN FWD

Pulse/scan forward within track/chapter.

Signature

SCAN_FWD ()

Parameters

None

Returns

`None `

SCAN REV

Pulse scan reverse within track/chapter.

Signature

SCAN_REV ()

Parameters

None

Returns

`None `

SET UP DOWN SWAP

Swap page UP/DOWN buttons.

Signature

POUND ()

Parameter Description
bool True/False

Returns

`None `

SKIP FWD

Advance to next track/chapter.

Signature

SKIP_FWD ()

Parameters

None

Returns

`None `

SKIP REV

Seek to previous track/chapter.

Signature

SKIP_REV ()

Parameters

None

Returns

`None `

STAR

Pulse * button.

Signature

STAR ()

Parameters

None

Returns

`None `

START DOWN

Initiate down arrow navigation.

Signature

START_DOWN ()

Parameters

None

Returns

`None `

START LEFT

Pulse left navigation.

Signature

START_LEFT ()

Parameters

None

Returns

`None `

START PAGE DOWN

Start menu Page down.

Signature

START_PAGE_DOWN ()

Parameters

None

Returns

`None `

START PAGE UP

Start menu Page up.

Signature

START_PAGE_UP ()

Parameters

None

Returns

`None `

START PAGE RIGHT

Initiate right-arrow navigation.

Signature

START_RIGHT ()

Parameters

None

Returns

`None `

START SCAN FWD

Initiate scan forward within track/chapter.

Signature

START_SCAN_FWD ()

Parameters

None

Returns

`None `

START SCAN REV

Initiate scan forward within track/chapter.

Signature

START_SCAN_REV ()

Parameters

None

Returns

`None `

START UP

Initiate up-arrow navigation.

Signature

START_UP ()

Parameters

None

Returns

`None `

STOP

Place device in stop state.

Signature

STOP ()

Parameters

None

Returns

`None `

STOP SCAN FWD

Terminate scan forward within track/chapter.

Signature

STOP_SCAN_FWD ()

Parameters

None

Returns

`None `

STOP SCAN REV

Terminate reverse scan within track/chapter.

Signature

STOP_SCAN_REV ()

Parameters

None

Returns

`None `

STOP PAGE DOWN

Stop menu page down.

Signature

STOP_PAGE_DOWN ()

Parameters

None

Returns

`None `

STOP DOWN

Terminate down-arrow navigation.

Signature

STOP_DOWN ()

Parameters

None

Returns

`None `

STOP UP

Stop menu Page down.

Signature

STOP_UP ()

Parameters

None

Returns

`None `

STOP LEFT

Terminate left navigation.

Signature

STOP_LEFT ()

Parameters

None

Returns

`None `

STOP PAGE UP

Stop menu page up.

Signature

STOP_PAGE_UP ()

Parameters

None

Returns

`None `

STOP RIGHT

Terminate RIGHT navigation.

Signature

STOP_RIGHT ()

Parameters

None

Returns

`None `

TV VIDEO

Toggle TV/video input.

Signature

TV_VIDEO ()

Parameters

None

Returns

`None `

UP

Pulse up navigation.

Signature

UP ()

Parameters

None

Returns

`None

Disc Changer Capabilities

can play cd

Disc Changer is capable of playing CD audio formats.

Signature

<can_play_cd></can_play_cd>

Parameter Description
bool True/False

Returns

None

Example

<capabilities>
   <can_play_cd>true</can_play_cd>
</capabilities>

can scan media

Disc Changer is capable of scanning media and returning disc information via the driver.

Signature

<can_scan_media></can_scan_media>

Parameter Description
bool True/False

Returns

None

Example

<capabilities>
   <can_scan_media>true</can_scan_media>
</capabilities>

has discreet disc button

Capable of seeking directly to a specified disc.

Signature

<has_discrete_disc_button></has_discrete_disc_button>

Parameter Description
bool True/False

Returns

None

Example

<capabilities>
   <has_discreet_disc_button>true</has_discreet_disc_button>
</capabilities>

has discreet disc access

Capable of seeking directly to a specified disc (and specified track on that disc).

Signature

<has_discrete_disc_access></has_discrete_disc_access>

Parameter Description
bool True/False

Returns

None

Example

<capabilities>
   <has_discreet_disc_access>true</has_discreet_disc_access>
</capabilities>

has discreet input selection

Capable of directly selecting specified input.

Signature

<has_discrete_input_selection></has_discrete_input_selection>

Parameter Description
bool True/False

Returns

None

Example

<capabilities>
   <has_discreet_disc_button>true</has_discreet_disc_button>
</capabilities>

media count

Number of discs available within the changer.

Signature

<media_count></media_count>

Parameter Description
int nMediaCount

Returns

None

Example

<capabilities>
   <media_count>true</media_count>
</capabilities>

media type

Media that the device is capable of playing. Bitmask of:

Signature

<media_type></media_type>

Parameter Description
int nMediaTypeBitmask

Returns

None

Example

<capabilities>
   <media_type>true</media_type>
</capabilities>

selection delay

Delay time in milliseconds before new tuner selection is online.

Signature

<selection_delay></selection_delay>

Parameter Description
bool True/False

Returns

None

Example

<capabilities>
   <selection_delay>true</selection_delay>
</capabilities>

Disc Changer Protocol Notifications

DISC CHANGED

Selected disc has changed.

Signature

DISC_CHANGED ()

Parameter Description
int Disc Number

Returns

None

OFF

Device has turned Off.

Signature

OFF ()

Parameter

None

Returns

None

ON

Device has turned On.

Signature

ON ()

Parameter

None

Returns

None

PAUSE

Device is paused.

Signature

PAUSE ()

Parameter

None

Returns

None

PLAY

Device has entered a playback state.

Signature

PLAY ()

Parameter

None

Returns

None

STOP

Device has entered a stopped state.

Signature

STOP ()

Parameter

None

Returns

None

TOC

Issued when scanning the table of contents for a particular disc or cd.  Director will use this information to lookup and populate the database with the disc information if the lookup succeeds.  This command can also be used to indicate a slot now is empty and contains no disc.

Signature

TOC ()

Parameter

Parameter Description
int Index of the disc being scanned
str ‘cd’ for CD or ‘dvd’ for DVD
data table of contents

Returns

None

TRACK CHANGED

Selected track has changed.

Signature

TRACK_CHANGED ()

Parameter Description
int Track Number

Returns

None

Audio Output Bindings and Proxy Events

Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.

For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.

Disc Changer Proxy Commands

BACK

Pulse Back button

Signature

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Signature

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Signature

DASH ()

Parameter

None

Returns

None

DOWN

Pulse down navigation.

Signature

DOWN ()

Parameters

None

Returns

None

EJECT

Eject disc/tape.

Signature

EJECT ()

Parameters

None

Returns

None

EMIT CODE

Emit IR/Serial code (used by AVGen IR/Serial Proxy).

Signature

EMIT_CODE ()

Parameter Description
Int ID OF IR Code

Returns

None

EMIT MACRO

Emit IR/Serial code macro (used by AVGen IR/Serial Proxy)

Signature

EMIT_MACRO ()

Parameter Description
str MacroCodeName

Returns

None

ENTER

Navigate Enter key

Signature

Enter ()

Parameters

None

Returns

None

GO TO DISC TRACK

Select specified disc and track.

Signature

GO_TO_DISC_TRACK ()

Parameter Description
int Disc Number
int Track Number

Returns

None

GO TO TRACK

Select specified track.

Signature

GO_TO_TRACK ()

Parameter Description
int Track Number

Returns

None

HYPHEN

Pulse ‘-’ button

Signature

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Signature

INFO ()

Parameters

None

Returns

None

LEFT

Pulse left navigation.

Signature

LEFT ()

Parameters

None

Returns

None

Navigate menu.

Signature

MENU ()

Parameters

None

Returns

None

NUMBER 0

Pulse ‘0’ button

Signature

Number_0 ()

Parameters

None

Returns

None

NUMBER 1

Pulse ‘1’ button

Signature

Number_1 ()

Parameters

None

Returns

None

NUMBER 2

Pulse ‘2’ button

Signature

Number_2 ()

Parameters

None

Returns

None

NUMBER 3

Pulse ‘3’ button

Signature

Number_3 ()

Parameters

None

Returns

None

NUMBER 4

Pulse ‘4’ button

Signature

Number_4 ()

Parameters

None

Returns

None

NUMBER 5

Pulse ‘5’ button

Signature

Number_5 ()

Parameters

None

Returns

None

NUMBER 6

Pulse ‘6’ button

Signature

Number_6 ()

Parameters

None

Returns

None

NUMBER 7

Pulse ‘7’ button

Signature

Number_7 ()

Parameters

None

Returns

None

NUMBER 8

Pulse ‘8’ button

Signature

Number_8 ()

Parameters

None

Returns

None

NUMBER 9

Pulse ‘9’ button

Signature

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Signature

OFF ()

Parameters

None

Returns

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

ON

Turn device On.

Signature

ON ()

Parameters

None

Returns

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

OPEN CLOSE

Open/close disc tray.

Signature

OPEN_CLOSE ()

Parameters

None

Returns

None

PAUSE

Place device in stop state.

Signature

PAUSE ()

Parameters

None

Returns

None

PAGE DOWN

Pulse menu Page down.

Signature

PAGE_DOWN ()

Parameters

None

Returns

`None `

PAGE UP

Pulse menu Page up.

Signature

PAGE_UP ()

Parameters

None

Returns

`None `

PLAY

Place device in a playback state.

Signature

PLAY ()

Parameters

None

Returns

`None `

POUND

Pulse # button.

Signature

POUND ()

Parameters

None

Returns

`None `

Pulse Aspect Ratio

Toggle (cycle though) aspect ratio.

Signature

PULSE_ASPECT_RATIO ()

Parameters

None

Returns

`None

RECALL

Pulse Recall button.

Signature

RECALL ()

Parameters

None

Returns

None

Pulse Right Navigation button.

Signature

RIGHT ()

Parameters

None

Returns

None

SCAN FWD

Pulse/scan forward within track/chapter.

Signature

SCAN_FWD ()

Parameters

None

Returns

None

SCAN REV

Pulse scan reverse within track/chapter.

Signature

SCAN_REV ()

Parameters

None

Returns

None

SKIP FWD

Advance to next track/chapter.

Signature

CSKIP_FWD ()

Parameters

None

Returns

None

SKIP REV

Seek to previous track/chapter.

Signature

SKIP_REV ()

Parameters

None

Returns

None

SET UP DOWN SWAP

Swap page UP/DOWN buttons.

Signature

SET_UP_DOWN_SWAP ()

Parameter Description
bool True/False

Returns

None

STAR

Pulse * button.

Signature

STAR ()

Parameters

None

Returns

None

START DOWN

Initiate down arrow navigation.

Signature

START_DOWN ()

Parameters

None

Returns

None

START LEFT

Pulse left navigation.

Signature

START_LEFT ()

Parameters

None

Returns

None

START PAGE DOWN

Start menu Page down.

Signature

START_PAGE_DOWN ()

Parameters

None

Returns

None

START PAGE UP

Start menu Page up.

Signature

START_PAGE_UP ()

Parameters

None

Returns

None

START PAGE RIGHT

Initiate right-arrow navigation.

Signature

START_RIGHT ()

Parameters

None

Returns

None

START SCAN FWD

Initiate scan forward within track/chapter.

Signature

START_SCAN_FWD ()

Parameters

None

Returns

None

START SCAN REV

Initiate scan backwards within track/chapter.

Signature

START_SCAN_REV ()

Parameters

None

Returns

None

START UP

Initiate up-arrow navigation.

Signature

START_UP ()

Parameters

None

Returns

None

STOP

Place device in stop state.

Signature

STOP ()

Parameters

None

Returns

None

STOP LEFT

Terminate left navigation.

Signature

STOP_LEFT ()

Parameters

None

Returns

None

STOP PAGE DOWN

Stop menu page down.

Signature

STOP_PAGE_DOWN ()

Parameters

None

Returns

None

STOP DOWN

Terminate down-arrow navigation.

Signature

STOP_DOWN ()

Parameters

None

Returns

None

STOP PAGE DOWN

Stop menu page up.

Signature

STOP_PAGE_UP ()

Parameters

None

Returns

None

STOP RIGHT

Terminate RIGHT navigation.

Signature

STOP_RIGHT ()

Parameters

None

Returns

None

STOP SCAN FWD

Terminate scan forward within track/chapter.

Signature

STOP_SCAN_FWD ()

Parameters

None

Returns

None

STOP SCAN REV

Terminate reverse scan within track/chapter.

Signature

STOP_SCAN_REV ()

Parameters

None

Returns

None

STOP UP

Stop menu Page down.

Signature

STOP_UP ()

Parameters

None

Returns

None

TV VIDEO

Toggle TV/video input.

Signature

TV_VIDEO ()

Parameters

None

Returns

None

UP

Pulse up navigation.

Signature

CUP ()

Parameters

None

Returns

None

UPDATE PROGRESS SCAN MEDIA

Notification of the progress of the current media scan

Signature

UPDATE_PROGRESS_SCAN_MEDIA ()

Parameter Description
num total number of discs to be scanned
num CURRENT INDEX - how many currently have been scanned

Returns

None

GO TO DISC

Select specified disc.

Signature

GO_TO_DISC ()

Parameter Description
int Disc Number

Returns

None

DVD Player Protocol Notifications

DISC CHANGED

Selected disc has changed.

Signature

DISC_CHANGED ()

Parameter Description
int Disc Number

Returns

None

OFF

Device has turned Off.

Signature

OFF ()

Parameter

None

Returns

None

ON

Device has turned On.

Signature

ON ()

Parameter

None

Returns

None

PAUSE

Device is paused.

Signature

PAUSE ()

Parameter

None

Returns

None

PLAY

Device has entered a playback state.

Signature

PLAY ()

Parameter

None

Returns

None

STOP

Device has entered a stopped state.

Signature

STOP ()

Parameter

None

Returns

None

TOC

Issued when scanning the table of contents for a particular disc or cd.  Director will use this information to lookup and populate the database with the disc information if the lookup succeeds.  This command can also be used to indicate a slot now is empty and contains no disc.

Signature

TOC ()

Parameter

Parameter Description
int Index of the disc being scanned
str ‘cd’ for CD or ‘dvd’ for DVD
data table of contents

Returns

None

TRACK CHANGED

Selected track has changed.

Signature

TRACK_CHANGED ()

Parameter Description
int Track Number

Returns

None

Generic Media Player Protocol Notifications

Using the List Parameter

There are two ways to handle sending a list of media information. The first involves the protocol driver manually creating the .xml for the list and then passing that list to the proxy. The format of the list can be seen to the right.

<list>
       <clear>true</clear>
       <top>false</top>
       <alpha>true</alpha>
       <title>Smashing Pumpkins</title>
       <total_items>80</total_items>
       <num_items>21</num_items>
       <first>0</first>
       <items>
               <item>
                       <id>1</id>
                       <text>Siamese Dream</text>
                       <type>1</type>
               </item>
               <item>
                       <id>2</id>
                       <text>Greatest Hits</text>
                       <type>1</type>
               </item>                
       </items>
</list>

The second method involves adding new list data to an existing list and passing the updated list along. This prevents the protocol driver from having to recreate a list every time new data is passed. The commands below need to reside inside the protocol driver’s Lua code:

NEW LIST

Creates a new media data list.

Signature

NEW_LIST ()

Parameter Description
title text string of the list title.
total_items Numerical value of the total number of items in the list.
num_items Numerical value of the new items added to the list.
first First item in the return list.
clear True or False. Indicates whether or not the cache for the previously returned items should be cleared, or not.

ADD LIST ITEM

Adds an item to a media data list.

Signature

ADD_LIST_ITEM ()

Parameter Description
id Id of the item being added to the list.
type Type of items being added to the list; playable, selectable.
text Display text for the new item.
last True or False. This parameter is passed last and triggers the list to be sent to the UI (if True)

When the protocol is ready to send a new list it should send a NEW_LIST command followed by ADD_LIST_ITEM for each item to be added to the list.

ADD MENU ITEM

Adds an item to a media data menu.

Signature

ADD_MENU_ITEM ()

Parameter Description
id Id of the item being added to the menu.
type Type of items being added to the list; playable, selectable
text Display text for the new menu item.
last True or False. This parameter is passed last and triggers the menu to be sent to the UI (if True).

NEW_MENU

Creates a new menu of media data.

Signature

NEW_MENU ()

Parameter Description
title Text string of the menu title.
num_items Numerical value of the new items added to the list.

When the protocol is ready to send a new menu it should send a NEW_MENU command followed by ADD_MENU_ITEM for each item to be added to the menu. See the example to the right._

-- MENU_LIST

<menu_list>
       <title>Main Menu</title>
       <total_items>4</total_items>
       <num_items>4</num_items>
       <first>0</first>
       <items>
               <item>
                       <id>0</id>
                       <type>4</type>
                       <text>Playlists</text>
               </item>
               <item>
                       <id>1</id>
                       <type>4</type>
                       <text>Artists</text>
               </item>
               <item>
                       <id>2</id>
                       <type>4</type>
                       <text>Albums</text>
               </item>
               <item>
                       <id>4</id>
                       <type>4</type>
                       <text>Songs</text>
               </item>
       </items>
</menu_list>


LIST TYPE CHANGED

Signature

LIST_TYPE_CHANGED ()

Parameter Description
list type Watch or Listen

MEDIA INFO CHANGED

Signature

MEDIA_INFO_CHNAGED ()

Parameter Description
media_info_1
media_info_2
media_info_3

MEDIA LABELS CHANGED

Signature

MEDIA_LABELS_CHNAGED ()

Parameter Description
repeat_modes

ONLINE STATUS CHANGED

Signature

ONLINE_STATUS_CHNAGED ()

Parameter Description
online_status

PLAY STATUS CHANGED

Signature

PLAY_STATUS_CHNAGED ()

Parameter Description
play_status

QUEUE PROGRESS CHANGED

Signature

QUEUE_PROGRESSS_CHNAGED ()

Parameter Description
play
total

REPEAT CHANGED

Signature

REPEAT_CHNAGED ()

Parameter Description
repeat_modes

REPEAT MODES CHANGED

Signature

REPEAT_MODES_CHNAGED ()

Parameter Description
repeat_modes

SET REPEAT MODES

Signature

SET_REPEAT_MODES ()

Parameter Description
repeat_modes

SET SHUFFLE MODES

Signature

SET_SHUFFLE_MODES ()

Parameter Description
shuffle_modes

SHUFFLE CHANGED

Signature

SHUFFLE_CHANGED ()

Parameter Description
shuffle_mode

SHUFFLE MODES CHANGED

Signature

SHUFFLE_MODES_CHANGED ()

Parameter Description
shuffle_modes

Generic Media Player Commands

GET ALPHA LOOKUP

Command that returns the index of the first item in the list that begins with the specified character.

Signature

GET_ALPHA_LOOKUP ()

Parameter Description
String Letter

SendToProxy

<alpha_lookup>

GET LIST

Command to obtain the current list.

Signature

GET_LIST ()

Parameters

None

SendToProxy

<list>

GET NEXT

Command that returns the index of the first item in the list that begins with the specified character.

Signature

GET_NEXT ()

Parameter Description
FIRST The index of the first item to be returned.
NUM The number of items to return.

SendToProxy

<list>

GET MENU

Command to obtain the list of items in the menu.

Signature

GET_MENU ()

Parameters

None

SendToProxy

<menu_list>

GET REPEAT MODES

Command to obtain supported repeat modes.

Signature

GET_REPEAT_MODES ()

Parameters

None

SendToProxy

<rtepeat_modes>

GET SHUFFLE MODES

Command to obtain supported repeat modes.

Signature

GET_SHUGGLE_MODES ()

Parameters

None

SendToProxy

<shuffle_modes>

LIST BACK

Command to return to the previous list.

Signature

LIST_BACK ()

Parameters

None

SendToProxy

<list>

LIST SELECT

Command to select an item from a list of media on the GenericMediaPlayer. If the item has a child list, that list is sent to the UI. If the item is playable, playback should be started.

Signature

LIST_SELECT ()

Parameter Description
ITEM The id of the item selected
TYPE The item type returned in the list.
TITLE The name of the item.

SendToProxy

<list>

Command to select an item from the list of menu items returned with GET_MENU.

Signature

MENU_SELECT ()

Parameter Description
ITEM The id of the item selected
TYPE The item type returned in the list.
TITLE The name of the item.

SendToProxy

None

PAUSE

Command to pause media playback on the GenericMediaPlayer.

Signature

PAUSE ()

Parameters

None

SendToProxy

None

PLAY

Command to start media playback.

Signature

PLAY ()

Parameters

None

SendToProxy

None

PLAYPAUSE

Command to start media playback if currently paused or pause media playback if currently playing.

Signature

PLAYPAUSE ()

Parameters

None

SendToProxy

None

RESET

Command to reset the GenericMediaPlayer. This command is used to switch between different media types. A new list and menu should be sent to the UI when this command is sent.

Signature

RESET ()

Parameter Description
TYPE The new media type tp be shown

SendToProxy

None

SCAN FWD

Command to scan forward through current media.

Signature

SCAN_FWD ()

Parameters

None

SendToProxy

None

SCAN REV

Command to scan backwards through current media.

Signature

SCAN_REV ()

Parameters

None

SendToProxy

None

Command to filter items based on the search string.

Signature

SEARCH ()

Parameter Description
SEARCHSTRING The string used to filter results.

SendToProxy

None

SELECT PLAY

Command to select the specified item for playback. If an album, this will playback all tracks.

Signature

SELECT_PLAY ()

Parameter Description
ITEM The index of the item to be played.

SendToProxy

None

SET REPEAT

Command to set the repeat mode on the GenericMediaPlayer.

Signature

SELECT_REPEAT ()

Parameter Description
MODE One of the modes returned with the <repeat_modes> tag

SendToProxy

None

SET SHUFFLE

Command to obtain the shuffle mode for the GenericMediaPlayer.

Signature

SELECT_SHUFFLE ()

Parameter Description
MODE One of the modes returned with the <shuffle_modes> tag

SendToProxy

None

SKIP FWD

Command that starts playback of the next media item.

Signature

SKIP_FWD ()

Parameters

None

SendToProxy

None

SKIP REV

Command that starts playback of the previous media item.

Signature

SKIP_REV ()

Parameters

None

SendToProxy

None

START SCAN FWD

Command to start scan forward or fast forward through the current playing media item.

Signature

START_SCAN_FWD ()

Parameters

None

SendToProxy

None

START SCAN REV

Command to start scan backwards or rewind through the currently playing media item.

Signature

START_SCAN_REV ()

Parameters

None

SendToProxy

None

STOP

Command to stop media playback.

Signature

STOP ()

Parameters

None

SendToProxy

None

STOP SCAN FWD

Command to stop scanning forward through the current media.

Signature

STOP_SCAN_FWD ()

Parameters

None

SendToProxy

None

STOP SCAN REV

Command to stop scanning backward through the current media.

Signature

STOP_SCAN_REV ()

Parameters

None

SendToProxy

None

Generic Media Player and Coverart

Media cover art can be displayed on the UI in two ways. The first process involves the coverart image being sent directly to the UI using the device protocol. The image is converted to a .jpg file and stored in the following location on the device:

/media/images/mediaplayer/<device_id>/coverart.jpg

In the path above, <device_id> is the id of the media player. See the NEW_COVER_ART notify below.

The second way to display cover art is to send a URL which represents the image location from the device proxy directly to the UI. See the COVERART_PATH_CHANGED notify below.

Also, the proxy supports receiving three cover art image formats:

Note that these images must be BASE64 encoded before reaching the proxy. The image is received by the proxy in one of the encoded formats from the media player using the SendToProxy: (“COVERART”) notification. Image information is sent with this notification along with the encoded image, including image width, height and format.

COVERART PATH CHANGED

Send the new cover art path for the current playing media.

Signature

COVERART_PATH_CHANGED ()

Parameter Description
image_path Path to the new image.
width Image width
height Image height

GET COVERART

Command that comes into Received from Proxy.

Signature

GET_COVERART ()

Example

function GetCoverArt()
       if (g_ShowCoverArt == true) then
          QueueDockCmd(CMD["GET_COVERART_RAW"], 0, 1, g_imageindex-1, 0, "")
       End
end

NEW COVERART

Send the data information to the UI. This information includes image height, width, format, size (if the image is in .jpg format) and the image path, which is where the image file was written.

Signature

NEW_COVERART ()

Parameter Description
cover_art Base64 encoded image.
width Image width
height Image height
size Size of the image in bytes - (needed for JPEG format only)
format Image format

new CoverArt

SendDataToUI(newCoverArt)

Signature

NEW_COVERART ()

Parameter Description
width Image width
height Image height
path Location of image

Example

AutoNode newCoverArt(C4XML::CreateXmlNode("NEW_COVER_ART"));
newCoverArt->AddChild("image_path", m_ImagePath);
newCoverArt->AddChild("width", m_ImageWidth);
newCoverArt->AddChild("height", m_ImageHeight);
SendDataToUI( *newCoverArt );

Audio Output Bindings and Proxy Events

Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.

For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.

Generic Media Player Capabilities

has http playback

This capability instructs media manager to exclude/include movies with http based locations.

Signature

<has_http_playback></has_http_playback>

Parameter Description
bool true/false

Returns

None

Example

<capabilities>
   <has_http_playback>true</has_http_playback>
</capabilities>

has menu

This capability instructs media manager to exclude/include movies with http based locations.

Signature

<has_menu></has_menu>

Parameter Description
bool true/false

Returns

None

Example

<capabilities>
   <has_menu>true</has_menu>
</capabilities>

has repeat

Media Player supports repeating current media.

Signature

<has_repeat></has_repeat>

Parameter Description
bool true/false

Returns

None

Example

<capabilities>
   <has_repeat>true</has_repeat>
</capabilities>

Media Player supports searching.

Signature

<has_search></has_search>

Parameter Description
bool true/false

Returns

None

Example

<capabilities>
   <has_search>true</has_search>
</capabilities>

has shuffle

Media Player supports shuffling.

Signature

<has_shuffle></has_shuffle>

Parameter Description
bool true/false

Returns

None

Example

<capabilities>
   <has_shuffle>true</has_shuffle>
</capabilities>

has scan fwd

Media Player supports forward scanning of media.

Signature

<has_scan_fwd></has_scan_fwd>

Parameter Description
bool true/false

Returns

None

Example

<capabilities>
   <has_scan_fwd>true</has_scan_fwd>
</capabilities>

has scan rev

Media Player supports reverse scanning of media.

Signature

<has_scan_rev></has_scan_rev>

Parameter Description
bool true/false

Returns

None

Example

<capabilities>
   <has_scan_rev>true</has_scan_rev>
</capabilities>

has skip fwd

Media Player supports forward skipping through media.

Signature

<has_skip_fwd></has_skip_fwd>

Parameter Description
bool true/false

Returns

None

Example

<capabilities>
   <has_skip_fwd>true</has_skip_fwd>
</capabilities>

has skip rev

Media Player supports reverse skipping through media.

Signature

<has_skip_rev></has_skip_rev>

Parameter Description
bool true/false

Returns

None

Example

<capabilities>
   <has_skip_rev>true</has_skip_rev>
</capabilities>

has pause

Media Player supports pausing media.

Signature

<has_pause></has_pause>

Parameter Description
bool true/false

Returns

None

Example

<capabilities>
   <has_pause>true</has_pause>
</capabilities>

media labels

Media Player supports multiple ways to label media. This is a dynamic capability and can be defined on a device-by-device basis.

Signature

<media_labels></media_labels>

Parameter Description
bool true/false

Returns

None

Example

<capabilities>
   <media_labels>true</media_labels>
</capabilities>

repeat modes

Media Player supports multiple media repeat types. This is a dynamic capability and can be defined on a device-by-device basis.

Signature

<repeat_modes></repeat_modes>

Parameter Description
bool true/false

Returns

None

Example

<capabilities>
   <repeat_modes>true</repeat_modes>
</capabilities>

shuffle modes

Media Player supports multiple media shuffling types. This is a dynamic capability and can be defined on a device-by-device basis.

Signature

<shuffle_modes></shuffle_modes>

Parameter Description
bool true/false

Returns

None

Example

<capabilities>
   <shuffle_modes>true</shuffle_modes>
</capabilities>

Audio Output Bindings and Proxy Events

Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.

For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.

DVD Player Proxy Commands

BACK

Pulse Back button

Signature

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Signature

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Signature

DASH ()

Parameter

None

Returns

None

DOWN

Pulse down navigation.

Signature

DOWN ()

Parameters

None

Returns

None

EJECT

Eject disc/tape.

Signature

EJECT ()

Parameters

None

Returns

None

EMIT CODE

Emit IR/Serial code (used by AVGen IR/Serial Proxy).

Signature

EMIT_CODE ()

Parameter Description
Int ID OF IR Code

Returns

None

EMIT MACRO

Emit IR/Serial code macro.

Signature

EMIT_MACRO ()

Parameter Description
str MacroCodeName

Returns

None

ENTER

Navigate Enter key

Signature

Enter ()

Parameters

None

Returns

None

GO TO DISC

Select specified disc.

Signature

GO_TO_DISC ()

Parameter Description
int Disc Number

Returns

None

GO TO DISC TRACK

Select specified disc and track.

Signature

GO_TO_DISC_TRACK ()

Parameter Description
int Disc Number
int Track Number

Returns

None

GO TO TRACK

Select specified track.

Signature

GO_TO_TRACK ()

Parameter Description
int Track Number

Returns

None

GUIDE

Navigate Guide key.

Signature

GUIDE ()

Parameters

None

Returns

None

HYPHEN

Pulse ‘-’ button

Signature

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Signature

INFO ()

Parameters

None

Returns

None

LEFT

Pulse left navigation.

Signature

LEFT ()

Parameters

None

Returns

None

Navigate menu.

Signature

MENU ()

Parameters

None

Returns

None

NUMBER 0

Pulse ‘0’ button

Signature

Number_0 ()

Parameters

None

Returns

None

NUMBER 1

Pulse ‘1’ button

Signature

Number_1 ()

Parameters

None

Returns

None

NUMBER 2

Pulse ‘2’ button

Signature

Number_2 ()

Parameters

None

Returns

None

NUMBER 3

Pulse ‘3’ button

Signature

Number_3 ()

Parameters

None

Returns

None

NUMBER 4

Pulse ‘4’ button

Signature

Number_4 ()

Parameters

None

Returns

None

NUMBER 5

Pulse ‘5’ button

Signature

Number_5 ()

Parameters

None

Returns

None

NUMBER 6

Pulse ‘6’ button

Signature

Number_6 ()

Parameters

None

Returns

None

NUMBER 7

Pulse ‘7’ button

Signature

Number_7 ()

Parameters

None

Returns

None

NUMBER 8

Pulse ‘8’ button

Signature

Number_8 ()

Parameters

None

Returns

None

NUMBER 9

Pulse ‘9’ button

Signature

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Signature

OFF ()

Parameters

None

Returns

`None `

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

ON

Turn device On.

Signature

ON ()

Parameters

None

Returns

`None `

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

OPEN CLOSE

Open/close disc tray.

Signature

OPEN_CLOSE ()

Parameters

None

Returns

`None `

PAGE DOWN

Pulse menu Page down.

Signature

PAGE_DOWN ()

Parameters

None

Returns

`None `

PAGE UP

Pulse menu Page up.

Signature

PAGE_UP ()

Parameters

None

Returns

`None `

PAUSE

Place device in stop state.

Signature

PAUSE ()

Parameters

None

Returns

`None `

PLAY

Place device in a playback state.

Signature

PLAY ()

Parameters

None

Returns

`None `

POUND

Pulse # button.

Signature

POUND ()

Parameters

None

Returns

`None `

PULSE ASPECT RATIO

Toggle (cycle though) aspect ratio.

Signature

PULSE_ASPECT_RATIO ()

Parameters

None

Returns

`None `

PVR

Pulse PVR button.

Signature

PVR ()

Parameters

None

Returns

None

RECALL

Pulse Recall button.

Signature

RECALL ()

Parameters

None

Returns

`None `

Pulse right navigation button.

Signature

RIGHT ()

Parameters

None

Returns

`None `

SCAN FWD

Pulse/scan forward within track/chapter.

Signature

SCAN_FWD ()

Parameters

None

Returns

`None `

SCAN REV

Pulse scan reverse within track/chapter.

Signature

SCAN_REV ()

Parameters

None

Returns

`None `

SET UP DOWN SWAP

Swap page UP/DOWN buttons (used by AVGen)

Signature

SET_UP_DOWN_SWAP ()

Parameter Description
bool True/False

Returns

`None `

SKIP FWD

Advance to next track/chapter.

Signature

SKIP_FWD ()

Parameters

None

Returns

None

SKIP REV

Seek to previous track/chapter.

Signature

SKIP_REV ()

Parameters

None

Returns

None

STAR

Pulse * button.

Signature

STAR ()

Parameters

None

Returns

None

START DOWN

Initiate down arrow navigation.

Signature

START_DOWN ()

Parameters

None

Returns

None

START LEFT

Pulse left navigation.

Signature

START_LEFT ()

Parameters

None

Returns

None

START PAGE DOWN

Start menu Page down.

Signature

START_PAGE_DOWN ()

Parameters

None

Returns

None

START PAGE UP

Start menu Page up.

Signature

START_PAGE_UP ()

Parameters

None

Returns

None

START PAGE RIGHT

Initiate right-arrow navigation.

Signature

START_RIGHT ()

Parameters

None

Returns

None

START SCAN FWD

Initiate scan forward within track/chapter.

Signature

START_SCAN_FWD ()

Parameters

None

Returns

None

START SCAN REV

Initiate scan forward within track/chapter.

Signature

START_SCAN_REV ()

Parameters

None

Returns

None

START UP

Initiate up-arrow navigation.

Signature

START_UP ()

Parameters

None

Returns

None

STOP

Place device in stop state.

Signature

STOP ()

Parameters

None

Returns

None

STOP DOWN

Terminate down-arrow navigation.

Signature

STOP_DOWN ()

Parameters

None

Returns

None

STOP LEFT

Terminate left navigation.

Signature

STOP_LEFT ()

Parameters

None

Returns

None

STOP PAGE DOWN

Stop menu page down.

Signature

STOP_PAGE_DOWN ()

Parameters

None

Returns

None

STOP PAGE UP

Stop menu page up.

Signature

STOP_PAGE_UP ()

Parameters

None

Returns

None

STOP RIGHT

Terminate RIGHT navigation.

Signature

STOP_RIGHT ()

Parameters

None

Returns

None

STOP SCAN FWD

Terminate scan forward within track/chapter.

Signature

STOP_SCAN_FWD ()

Parameters

None

Returns

None

STOP SCAN REV

Terminate reverse scan within track/chapter.

Signature

STOP_SCAN_REV ()

Parameters

None

Returns

None

STOP UP

Stop menu Page up.

Signature

STOP_UP ()

Parameters

None

Returns

None

TV VIDEO

Toggle TV/video input.

Signature

TV_VIDEO ()

Parameters

None

Returns

None

UP

Pulse up navigation.

Signature

UP ()

Parameters

None

Returns

None

Projector Protocol Notifications

AUDIO PARAMETER CHANGED

Audio parameter has changed

Signature

AUDIO_PARAMETER_CHANGED ()

Parameter Description
int Output Binding ID

Returns

None

BALANCE LEVEL CHANGED

Selected balance level has changed.

Signature

BALANCE_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

BASS LEVEL CHANGED

Selected bass level has changed

Signature

BASS_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

CHANNEL CHANGED

Selected channel has changed

Signature

CHANNEL_CHANGED ()

Parameter Description
int Channel Number
int Output Binding ID

Returns

None

Usage Note

If the BANDTYPE is not supplied, as in older drivers, the INPUT binding # will be used to determine which band the tuner is on. All DriverWorks drivers need to use the BANDTYPE parameter if they want the band to propagate up to Navigator to display the channel properly. If the DriverWorks driver does not know the current channel and the “has feedback” capability is not set to “True”, none of this matters and everything will keep working as it previously has.

A CHANNEL CHANGED must be issued immediately after the INPUT_CHANGED in order for the UI to update.

Example

C4:SendToproxy(5002,'INPUTCHANGED' {INPUT=3009,BANDTYPE='FMBand',MINCHANNEL=8750,MAXCHANNEL=10790,CHANNELSPACING=20})
    C4:SendToProxy(5002,'CHANNELCHANGED',CHANNEL=10290)

Note that in the example to the right, 5002 is the ProxyBindingID for the Tuner. INPUT 3009 is the ID for the FM Antenna on the 5002 Tuner.

Navigator determines AM/FM/XM with the following rule:

INPUT CHANGED

Selected input has changed.

Signature

INPUT_CHANGED ()

Parameter Description
int Binding ID of RF cloud
str One of the following case sensitive values: “AMBand” “FMBand”
int Lowest tune-able channel e.g. 8750 for FM, 530 for AM
int Highest tunable channel e.g. 10790 for FM, 1760 for AM
int Channel increment e.g. 20 for FM in U.S., 10 for AM in U.S.

Returns

None

Usage Note

If the BANDTYPE is not supplied, as in older drivers, the INPUT binding # will be used to determine which band the tuner is on. All DriverWorks drivers need to use the BANDTYPE parameter if they want the band to propagate up to Navigator to display the channel properly. If the DriverWorks driver does not know the current channel and the “hasfeedback” capability is not set to “True”, none of this matters and everything will keep working as it previously has.

A CHANNEL_CHANGED must be issued immediately after the INPUT_CHANGED in order for the UI to update.

Example

C4:SendToproxy(5002,'INPUTCHANGED' {INPUT=3009,BANDTYPE='FMBand',MINCHANNEL=8750,MAXCHANNEL=10790,CHANNELSPACING=20})

    C4:SendToProxy(5002,'CHANNELCHANGED',CHANNEL=10290)

Note that in the example to the right, 5002 is the ProxyBindingID for the Tuner. INPUT 3009 is the ID for the FM Antenna on the 5002 Tuner.

Navigator determines AM/FM/XM with the following rule: ID 3000 and 3001 are AM ID 3002 and 3003 are FM

LOUDNESS CHANGED

Loudness state (On/Off) has changed.

Signature

LOUDNESS_CHANGED ()

Parameter Description
bool True/False
int Output Binding ID

Returns

None

MUTE CHANGED

MUTE state (On/Off) has changed.

Signature

MUTE_CHANGED ()

Parameter Description
bool True/False
int Output Binding ID

Returns

None

OFF

Device has turned off.

Signature

OFF ()

Parameter

None

Returns

None

ON

Device has turned on.

Signature

ON ()

Parameter

None

Returns

None

TREBLE LEVEL CHANGED

Selected treble level has changed.

Signature

TREBLE_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

VOLUME LEVEL CHANGED

Selected volume level has changed.

Signature

VOLUME_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

Projector Proxy Commands

BACK

Pulse Back button

Signature

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Signature

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Signature

DASH ()

Parameter

None

Returns

None

DISCONNECT OUTPUT

Disconnect (turn off) selected output on device.

Signature

DISCONNECT_OUTPUT ()

Parameter Description
Int Output BindingID

Returns

None

EMIT CODE

Emit IR/Serial code (used by AVGen IR/Serial Proxy).

Signature

EMIT_CODE ()

Parameter Description
Int ID OF IR Code

Returns

None

EMIT MACRO

Emit IR/Serial code macro (used by AVGen IR/Serial Proxy)

Signature

EMIT_MACRO ()

Parameter Description
str MacroCodeName

Returns

None

GET DEFAULT INPUT

Command sent to the protocol during the proxy initialization. Returns the input designated as the default from the protocol device.

Signature

GET_DEFAULT_INPUT ()

Parameters

None

Returns

None

HYPHEN

Pulse ‘-’ button

Signature

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Signature

INFO ()

Parameters

None

Returns

None

LOUDNESS OFF

Turn loudness off.

Signature

LOUDNESS_OFF ()

Parameter Description
int Output Binding ID

Returns

None

LOUDNESS ON

Turn loudness on.

Signature

LOUDNESS_ON ()

Parameter Description
int Output Binding ID

Returns

None

LOUDNESS TOGGLE

Toggle loudness on/off.

Signature

LOUDNESS_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

MUTE OFF

Turn muting off.

Signature

MUTE_OFF ()

Parameter Description
int Output Binding ID

Returns

None

MUTE ON

Turn muting on.

Signature

MUTE_ON ()

Parameter Description
int Output Binding ID

Returns

None

MUTE ON

Toggle muting on/off.

Signature

MUTE_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

NUMBER 0

Pulse ‘0’ button

Signature

Number_0 ()

Parameters

None

Returns

None

NUMBER 1

Pulse ‘1’ button

Signature

Number_1 ()

Parameters

None

Returns

None

NUMBER 2

Pulse ‘2’ button

Signature

Number_2 ()

Parameters

None

Returns

None

NUMBER 3

Pulse ‘3’ button

Signature

Number_3 ()

Parameters

None

Returns

None

NUMBER 4

Pulse ‘4’ button

Signature

Number_4 ()

Parameters

None

Returns

None

NUMBER 5

Pulse ‘5’ button

Signature

Number_5 ()

Parameters

None

Returns

None

NUMBER 6

Pulse ‘6’ button

Signature

Number_6 ()

Parameters

None

Returns

None

NUMBER 7

Pulse ‘7’ button

Signature

Number_7 ()

Parameters

None

Returns

None

NUMBER 8

Pulse ‘8’ button

Signature

Number_8 ()

Parameters

None

Returns

None

NUMBER 9

Pulse ‘9’ button

Signature

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Signature

OFF ()

Parameters

None

Returns

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

ON

Turn device On.

Signature

ON ()

Parameters

None

Returns

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

PAGE DOWN

Pulse menu Page down.

Signature

PAGE_DOWN ()

Parameters

None

Returns

None

PAGE UP

Pulse menu Page up.

Signature

PAGE_UP ()

Parameters

None

Returns

None

PIP

Pulse menu PIP button..

Signature

PIP ()

Parameter Description
str MacroCodeName

Returns

`None `

POUND

Pulse # button.

Signature

POUND ()

Parameters

None

Returns

None

PRESET DOWN

Toggle (cycle down) tuning preset.

Signature

PRESET_DOWN ()

Parameters

None

Returns

None

PRESET UP

Toggle (cycle UP) tuning preset.

Signature

PRESET_UP ()

Parameters

None

Returns

None

Pulse Aspect Ratio

Toggle (cycle though) aspect ratio.

Signature

PULSE_ASPECT_RATIO ()

Parameters

None

Returns

None

PULSE BALANCE DOWN

Pulse balance down (Left)

Signature

PULSE_BALNCE_DOWN ()

Parameters

None

Returns

None

PULSE BALANCE UP

Pulse balance up.

Signature

PULSE_BALNCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

PULSE BASS DOWN

Pulse bass down (Left)

Signature

PULSE_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

PULSE BASS UP

Pulse bass up (Right)

Signature

PULSE_BASS_UP ()

Parameters

None

Returns

None

PULSE CHANNEL DOWN

Pulse channel value down.

Signature

PULSE_CHANNEL_DOWN ()

Parameters

None

Returns

None

PULSE CHANNEL UP

Pulse channel value up.

Signature

PULSE_CHANNEL_UP ()

Parameters

None

Returns

None

PULSE INPUT

Toggle (cycle through) input selection on device.

Signature

PULSE_INPUT

Parameters

None

Returns

None

PULSE TREBLE DOWN

Pulse treble down.

Signature

PULSE_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

PULSE TREBLE UP

Pulse treble up.

Signature

PULSE_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

PULSE VOL DOWN

Pulse volume level down.

Signature

PULSE_VOL_DOWN

Parameter Description
int Output Binding ID

Returns

None

PULSE VOL UP

Pulse volume level up.

Signature

PULSE_VOL_UP

Parameter Description
int Output Binding ID

Returns

None

PVR

Pulse PVR button.

Signature

PVR ()

Parameters

None

Returns

None

RECALL

Pulse Recall button.

Signature

RECALL ()

Parameters

None

Returns

None

SEARCH DOWN

Pulse tuning search down

Signature

SEARCH_DOWN ()

Parameters

None

Returns

None

SEARCH UP

Pulse tuning search UP

Signature

SEARCH_UP ()

Parameters

None

Returns

None

SET BALANCE

Set balance to a specified position.

Signature

SET_BALANCE ()

Parameter Description
int Output Binding ID

Returns

None

SET BALANCE UP

Set balance to a specified position.

Signature

SET_BALANCE_UP ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET BASS LEVEL

Set bass to a specified level.

Signature

SET_BASS_LEVEL

Parameter Description
int Output Binding ID

Returns

None

SET DEFAULT INPUT

Specify the default input selection of device.

Signature

SET_DEAFULT_INPUT ()

Parameter Description
int Input Binding ID - should be in the BindingID range.
int Optional. Output Binding ID - should be in the BindingID range.

Returns

`None `

Usage Note

SET INPUT

Specify the input selection of device.

Signature

SET_INPUT ()

Parameter Description
int Input Binding ID - should be in the BindingID range.
int Optional. Output Binding ID - should be in the BindingID range.

Returns

None

Usage Note

SET LOUDNESS

Turn loudness on.

Signature

SET_LOUDNESS ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET PRESET

Select specified tuning preset.

Signature

SET_PRESET ()

Parameter Description
int Preset Number

Returns

None

SET TREBLE LEVEL

Set treble to a specified level.

Signature

SET_TREBLE_LEVEL ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET UP DOWN SWAP

Swap page UP/DOWN buttons.

Signature

POUND ()

Parameter Description
bool True/False

Returns

None

SET VOLUME LEVEL

Set volume to a specified level.

Signature

SET_VOLUME_LEVEL () 

Parameter Description
int Level
int Output Binding ID

Returns

None

SET VOL UP

Begin ramping volume up.

Signature

SET_VOL_UP ()

Parameter Description
int Output Binding ID

Returns

None

STAR

Pulse * button.

Signature

STAR ()

Parameters

None

Returns

None

START BALANCE DOWN

Start ramping balance down (left).

Signature

START_BALANCE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START BALANCE UP

Start ramping balance UP (right).

Signature

START_BALANCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

START BASS UP

Start ramping bass up.

Signature

START_BASS_UP ()

Parameter Description
int Output Binding ID

Returns

None

START CH DOWN

Start ramping channel down.

Signature

START_CH_DOWN ()

Parameters

None

Returns

None

START PAGE DOWN

Start menu Page down.

Signature

START_PAGE_DOWN ()

Parameters

None

Returns

None

START PAGE UP

Start menu Page up.

Signature

START_PAGE_UP ()

Parameters

None

Returns

None

START SEARCH DOWN

Begin tuning search down.

Signature

START_SEARCH_DOWN ()

Parameters

None

Returns

None

START SEARCH UP

Begin tuning search UP.

Signature

START_SEARCH_UP ()

Parameters

None

Returns

None

START VOL DOWN

Start ramping volume down.

Signature

START_VOL_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START PAGE RIGHT

Initiate right-arrow navigation.

Signature

START_RIGHT ()

Parameters

None

Returns

None

START SCAN FWD

Initiate scan forward within track/chapter.

Signature

START_SCAN_FWD ()

Parameters

None

Returns

None

START SCAN REV

Initiate scan backwards within track/chapter.

Signature

START_SCAN_REV ()

Parameters

None

Returns

None

START UP

Initiate up-arrow navigation.

Signature

START_UP ()

Parameters

None

Returns

None

STOP BALANCE DOWN

Start ramping balance.

Signature

STOP_BALANCE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP BALANCE UP

Stop ramping balance up.

Signature

STOP_BALANCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP BASS DOWN

Stop ramping bass

Signature

STOP_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP PAGE DOWN

Stop menu page down.

Signature

STOP_PAGE_DOWN ()

Parameters

None

Returns

None

STOP PAGE UP

Stop menu page up.

Signature

STOP_PAGE_UP ()

Parameters

None

Returns

None

TV VIDEO

Toggle TV/video input.

Signature

TV_VIDEO ()

Parameters

None

Returns

None

Receiver Capabilities

audio consumer count

Count of number of audio consumers (inputs) of the device. This value must match the number of connections in the driver.

Signature

<audio_consumer_count></audio_consumer_count>

Parameter Description
int Number of audio consumers.

Example

<capabilities>
   <audio_consumer_count>8</audio_consumer_count>
</capabilities>

audio provider count

Count of number of audio providers (outputs) of the device. This value must match the number of connections in the driver.

Signature

<audio_provider_count></audio_provider_count>

Parameter Description
int Number of audio providers.

Example

<capabilities>
   <audio_provider_count>8</audio_provider_count>
</capabilities>

can downclass

Specifies if the A/V switch can down convert. For example: S-Video -> Composite

Signature

<can_downclass></can_downclass>

Parameter Description
bool True/False

Example

<capabilities>
   <can_downclass>true</can_downclass>
</capabilities>

can switch

Device specific capability that when set to True designates switching capability on the receiver.

Signature

<can_switch></can_switch>

Parameter Description
bool True/False

Example

<capabilities>
   <can_switch>true</can_switch>
</capabilities>

can switch separately

Device specific capability that must be set to True to in order for an AV Switch’s Composer Pro interface reflecting independent audio and video signal switching.

Signature

<can_switch_separately></can_switch_separately>

Parameter Description
bool True/False

Example

<capabilities>
   <can_switch_separately>true</can_switch_separately>
</capabilities>

Usage Note

This capability is not related with the requires separate switching capability.  A setting of True or False will have no impact on requires separate switching.

can upclass

Specifies if the A/V switch can up convert. For example: Composite -> S-Video

Signature

<can_upclass></can_upclass>

Parameter Description
bool True/False

Example

<capabilities>
   <can_upclass>true</can_upclass>
</capabilities>

has audio signal sense

Specifies AV switching is capable of sensing audio on an input. This is useful in triggering programming in ComposerPro based on the this setting.

Signature

<has_audio_signal_sense></has_audio_signal_sense>

Parameter Description
bool True/False

Example

<capabilities>
   <has_audio_signal_sense>true</has_audio_signal_sense>
</capabilities>

has discrete balance control

Capable of directly specifying a balance setting.

Signature

<has_discrete_balance_control></has_discrete_balance_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_balance_control>true</has_discrete_balance_control>
</capabilities>

has discrete bass control

Capable of directly specifying a bass setting.

Signature

<has_discrete_bass_control></has_discrete_bass_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_bass_control>true</has_discrete_bass_control>
</capabilities>

has discrete loudness control

Capable of directly specifying a loudness setting.

Signature

<has_discrete_loudness_control></has_discrete_loudness_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>

has discrete mute control

Capable of directly specifying mute ON or OFF setting.

Signature

<has_discrete_ mute_control></has_discrete_ mute_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_mute_control>true</has_discrete_mute_control>
</capabilities>

has discrete treble control

Capable of directly specifying a treble setting.

Signature

<has_discrete_treble_control></has_discrete_treble_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_treble_control>true</has_discrete_treble_control>
</capabilities>

has discrete volume control

Capable of directly specifying a volume setting.

Signature

<has_discrete_volume_control></has_discrete_volume_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_volume_control>true</has_discrete_volume_control>
</capabilities>

has discrete loudness control

Capable of handling ON/OFF loudness control.

Signature

<has_discrete_loudness_control></has_discrete_loudness_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>

has toggle mute control

Capable of handling ON/OFF mute control.

Signature

<has_toggle_mute_control></has_toggle_mute_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_toggle_mute_control>true</has_toggle_mute_control>
</capabilities>

has up down balance control

Capable of directly specifying a balance setting.

Signature

<has_up_down_balance_control></has_up_down_balance_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_balance_control>true</has_up_down_balance_control>
</capabilities>

has up down bass control

Capable of directly specifying a bass setting.

Signature

<has_up_down_bass_control></has_up_down_bass_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_bass_control>true</has_up_down_bass_control>
</capabilities>

has up down treble control

Capable of directly specifying a treble setting.

Signature

<has_up_down_treble_control></has_up_down_treble_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_treble_control>true</has_up_down_treble_control>
</capabilities>

has up down volume control

Has capability of handling volume UP and DOWN adjustments.

Signature

<has_up_down_volume_control></has_up_down_volume_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_volume_control>true</has_up_down_volume_control>
</capabilities>

has video signal sense

Specifies AV switching is capable of sensing video on an input. This is useful in triggering programming in ComposerPro based on the this setting.

Signature

<has_video_signal_sense></has_video_signal_sense>

Parameter Description
bool True/False

Example

<capabilities>
   <has_video_signal_sense>true</has_video_signal_sense>
</capabilities>

video consumer count

Count of number of video consumers (inputs) of the device. This value must match the number of connections in the driver.

Signature

<video_consumer_count></video_consumer_count>

Parameter Description
int Number of video consumers.

Example

<capabilities>
   <video_consumer_count>8</video_consumer_count>
</capabilities>

video provider count

Count of number of video providers (outputs) of the device. This value must match the number of connections in the driver.

Signature

<video_provider_count></video_provider_count>

Parameter Description
int Number of audio providers.

Example

<capabilities>
   <video_provider_count>8</video_provider_count>
</capabilities>

Receiver Protocol Notifications

AUDIO PARAMETER CHANGED

Audio parameter has changed

Signature

AUDIO_PARAMETER_CHANGED ()

Parameter Description
int Output Binding ID

Returns

None

BALANCE LEVEL CHANGED

Selected balance level has changed.

Signature

BALANCE_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

BASS LEVEL CHANGED

Selected bass level has changed

Signature

BASS_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

INPUT OUTPUT CHANGED

Selected inputs & outputs have changed.

Signature

INPUT_OUTPUT_CHANGED ()

Parameter Description
int INput Binding ID
int Output Binding ID

Returns

None

LOUDNESS CHANGED

Loudness state (On/Off) has changed.

Signature

LOUDNESS_CHANGED ()

Parameter Description
bool True/False
int Output Binding ID

Returns

None

MUTE CHANGED

MUTE state (On/Off) has changed.

Signature

MUTE_CHANGED ()

Parameter Description
bool True/False
int Output Binding ID

Returns

None

OFF

Device has turned off.

Signature

OFF ()

Parameter

None

Returns

None

ON

Device has turned on.

Signature

ON ()

Parameter

None

Returns

None

TREBLE LEVEL CHANGED

Selected treble level has changed.

Signature

TREBLE_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

VOLUME LEVEL CHANGED

Selected volume level has changed.

Signature

VOLUME_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

## SURROUND MODE CHANGED

Surround mode setting has changed.

Signature

SURROUND_MODE_CHANGED ()

Parameter Description
int Output Binding ID
int Surround Mode ID value

Returns

None

Audio Output Bindings and Proxy Events

Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.

For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.

Receiver Proxy Commands

BACK

Pulse Back button

Signature

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Signature

CANCEL ()

Parameters

None

Returns

None

CONNECT OUTPUT

Numerical value of the output. Switch the output to passed ID.

Signature

CONNECT OUTPUT ()

Parameter Description
int Output Binding ID

Returns

None

Usage Note

Preface band width tuner capability must be used in the driver for the CONNECT OUTPUT command to be set.

DASH

Pulses the ‘-’ button.

Signature

DASH ()

Parameter

None

Returns

None

DISCONNECT OUTPUT

Disconnect (turn off) selected output on device.

Signature

DISCONNECT_OUTPUT ()

Parameter Description
Int Output BindingID

Returns

None

HYPHEN

Pulse ‘-’ button

Signature

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Signature

INFO ()

Parameters

None

Returns

None

LOUDNESS OFF

Turn loudness off.

Signature

LOUDNESS_OFF ()

Parameter Description
int Output Binding ID

Returns

None

LOUDNESS ON

Turn loudness on.

Signature

LOUDNESS_ON ()

Parameter Description
int Output Binding ID

Returns

None

LOUDNESS ON

Toggle loudness on/off.

Signature

LOUDNESS_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

MUTE OFF

Toggle loudness on/off.

Signature

MUTE_OFF ()

Parameter Description
int Output Binding ID

Returns

None

MUTE ON

Turn muting on.

Signature

MUTE_ON ()

Parameter Description
int Output Binding ID

Returns

None

MUTE ON

Toggle muting on/off.

Signature

MUTE_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

NUMBER 0

Pulse ‘0’ button

Signature

Number_0 ()

Parameters

None

Returns

None

NUMBER 1

Pulse ‘1’ button

Signature

Number_1 ()

Parameters

None

Returns

None

NUMBER 2

Pulse ‘2’ button

Signature

Number_2 ()

Parameters

None

Returns

None

NUMBER 3

Pulse ‘3’ button

Signature

Number_3 ()

Parameters

None

Returns

None

NUMBER 4

Pulse ‘4’ button

Signature

Number_4 ()

Parameters

None

Returns

None

NUMBER 5

Pulse ‘5’ button

Signature

Number_5 ()

Parameters

None

Returns

None

NUMBER 6

Pulse ‘6’ button

Signature

Number_6 ()

Parameters

None

Returns

None

NUMBER 7

Pulse ‘7’ button

Signature

Number_7 ()

Parameters

None

Returns

None

NUMBER 8

Pulse ‘8’ button

Signature

Number_8 ()

Parameters

None

Returns

None

NUMBER 9

Pulse ‘9’ button

Signature

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Signature

OFF ()

Parameters

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

ON

Turn device On.

Signature

ON ()

Parameters

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

PAGE DOWN

Pulse menu Page down.

Signature

PAGE_DOWN ()

Parameters

None

Returns

None

PAGE UP

Pulse menu Page up.

Signature

PAGE_UP ()

Parameters

None

Returns

`None `

POUND

Pulse ‘#’ button

Signature

POUND ()

Parameters

None

Returns

None

PULSE BALANCE DOWN

Pulse balance down.

Signature

PULSE_BALNCE_DOWN ()

Parameters

None

Returns

None

PULSE BALANCE UP

Pulse balance up

Signature

PULSE_BALNCE_RIGHT ()

Parameter Description
int Output Binding ID

Returns

None

PULSE BASS DOWN

Pulse bass down.

Signature

PULSE_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

PULSE BASS UP

Pulse bass up.

Signature

PULSE_BASS_UP ()

Parameters

None

Returns

None

PULSE INPUT

Toggle (cycle through) input selection on device.

Signature

PULSE_INPUT

Parameters

None

Returns

None

PULSE SUR UP

Toggle (cycle through) surround mode presets on device.

Signature

PULSE_SUR_UP

Parameter Description
int Output Binding ID

Returns

None

PULSE VOL DOWN

Pulse volume level down.

Signature

PULSE_VOL_DOWN

Parameter Description
int Output Binding ID

Returns

None

PULSE VOL UP

Pulse volume level up.

Signature

PULSE_VOL_UP

Parameter Description
int Output Binding ID

Returns

None

PULSE TREBLE DOWN

Pulse treble down.

Signature

PULSE_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

PULSE TREBLE UP

Pulse treble up.

Signature

PULSE_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

RECALL

Pulse Recall button

Signature

RECALL ()

Parameters

None

Returns

None

Pulse RIGHT Navigation.

Signature

RIGHT ()

Parameters

None

Returns

None

SET BALANCE

Set balance to a specified position.

Signature

SET_BALANCE ()

Parameter Description
int Output Binding ID

Returns

None

SET BASS LEVEL

Set bass to a specified level.

Signature

SET_BASS_LEVEL

Parameter Description
int Output Binding ID

Returns

None

SET INPUT

Specify input selection of device.

Signature

SET_INPUT ()

Parameter Description
int Input Binding ID - should be in the BindingID range below.
int Optional. Output Binding ID - should be in the BindingID range below.

Returns

None

Usage Note

SET OUTPUT INPUT

Specify input and output selection of device.

Signature

SET_OUTPUT_INPUT ()

Parameter Description
int Input Binding ID
int Output Binding ID

Returns

None

SET SURROUND MODE

Select specified surround mode preset on device.

Signature

SET_SURROUND_MODE ()

Parameter Description
int Surround Mode
int Output Binding ID

Returns

None

SET TREBLE LEVEL

Set treble to a specified level.

Signature

SET_TREBLE_LEVEL ()

Parameter Description
int Level
int Output Binding ID

Returns

None

STOP VOL DOWN

Start ramping volume up.

Signature

SET_VOL_UP ()

Parameter Description
int Output Binding ID

Returns

None

SET VOLUME LEVEL

Set volume to a specified level.

Signature

SET_VOLUME_LEVEL () 

Parameter Description
int Level
int Output Binding ID

Returns

None

STAR

Pulse button

Signature

STAR ()

Parameters

None

Returns

None

START BALANCE DOWN

Start ramping balance down (left).

Signature

START_BALANCE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START BALANCE UP

Start ramping balance up (right).

Signature

START_BALANCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

START BASS DOWN

Start ramping bass down.

Signature

START_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START BASS UP

Start ramping bass up.

Signature

START_BASS_UP ()

Parameter Description
int Output Binding ID

Returns

None

START CH DOWN

Start ramping channel down.

Signature

START_CH_DOWN ()

Parameter

None

Returns

None

START CH UP

Start ramping channel up.

Signature

START_CH_UP ()

Parameter

None

Returns

None

START LEFT

Pulse left navigation.

Signature

START_LEFT ()

Parameters

None

Returns

None

START PAGE DOWN

Start menu Page down.

Signature

START_PAGE_DOWN ()

Parameters

None

Returns

`None `

START PAGE UP

Start menu Page up.

Signature

START_PAGE_UP ()

Parameters

None

Returns

`None `

START RIGHT

Initiate right arrow navigation.

Signature

START_RIGHT ()

Parameters

None

Returns

None

START TREBLE DOWN

Start ramping treble down.

Signature

START_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START TREBLE UP

Start ramping treble up.

Signature

START_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

START VOL DOWN

Start ramping volume down.

Signature

START_VOL_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START VOL UP

Start ramping volume up.

Signature

START_VOL_UP ()

Parameter Description
int Volume Level
int Output Binding ID

Returns

None

STOP BALANCE DOWN

Start ramping balance.

Signature

STOP_BALANCE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP BASS DOWN

Stop ramping bass

Signature

STOP_BALANCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP BASS DOWN

Stop ramping bass

Signature

STOP_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP BASS UP

Stop ramping bass

Signature

STOP_BASS_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP CH UP

StOP ramping channel up.

Signature

STOP_CH_UP ()

Parameter

None

Returns

None

STOP CH DOWN

Stop ramping channel down.

Signature

STOP_CH_DOWN ()

Parameter

None

Returns

None

STOP LEFT

Stop left navigation.

Signature

STOP_LEFT ()

Parameters

None

Returns

None

STOP RIGHT

Stop right arrow navigation.

Signature

STOP_RIGHT ()

Parameters

None

Returns

None

STOP PAGE DOWN

Stop menu page down.

Signature

STOP_PAGE_DOWN ()

Parameters

None

Returns

None

STOP PAGE DOWN

Stop menu page up.

Signature

STOP_PAGE_UP ()

Parameters

None

Returns

None

STOP TREBLE DOWN

Stop ramping the treble down

Signature

STOP_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP TREBLE UP

Stop ramping the treble up.

Signature

STOP_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP VOL DOWN

Stop ramping the volume down

Signature

STOP_VOL_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP VOL UP

Stop ramping the volume up.

Signature

STOP_VOL_UP ()

Parameter Description
int Output Binding ID

Returns

None

@ _6-DOWN

DOWN

PULSE DOWN NAVIGATION

Signature

DOWN ()

Parameter

None

Returns

None

Satellite Receiver Capabilities

audio consumer count

Count of number of audio consumers (inputs) of the device. This value must match the number of connections in the driver.

Signature

<audio_consumer_count></audio_consumer_count>

Parameter Description
int Number of audio consumers.

Example

<capabilities>
   <audio_consumer_count>8</audio_consumer_count>
</capabilities>

audio provider count

Count of number of audio providers (outputs) of the device. This value must match the number of connections in the driver.

Signature

<audio_provider_count></audio_provider_count>

Parameter Description
int Number of audio providers.

Example

<capabilities>
   <audio_provider_count>8</audio_provider_count>
</capabilities>

can downclass

Specifies if the A/V switch can down convert. For example: S-Video -> Composite

Signature

<can_downclass></can_downclass>

Parameter Description
bool True/False

Example

<capabilities>
   <can_downclass>true</can_downclass>
</capabilities>

can switch separately

Device specific capability that must be set to True to in order for an AV Switch’s Composer Pro interface reflecting independent audio and video signal switching.

Signature

<can_switch_separately></can_switch_separately>

Parameter Description
bool True/False

Example

<capabilities>
   <can_switch_separately>true</can_switch_separately>
</capabilities>

Usage Note

This capability is not related with the requires separate switching capability.  A setting of True or False will have no impact on requires separate switching.

can switch

Device specific capability that when set to True designates switching capability on the receiver.

Signature

<can_switch></can_switch>

Parameter Description
bool True/False

Example

<capabilities>
   <can_switch>true</can_switch>
</capabilities>

can upclass

Specifies if the A/V switch can up convert. For example: Composite -> S-Video

Signature

<can_upclass></can_upclass>

Parameter Description
bool True/False

Example

<capabilities>
   <can_upclass>true</can_upclass>
</capabilities>

has audio signal sense

Specifies AV switching is capable of sensing audio on an input. This is useful in triggering programming in ComposerPro based on the this setting.

Signature

<has_audio_signal_sense></has_audio_signal_sense>

Parameter Description
bool True/False

Example

<capabilities>
   <has_audio_signal_sense>true</has_audio_signal_sense>
</capabilities>

has discrete balance control

Capable of directly specifying a balance setting.

Signature

<has_discrete_balance_control></has_discrete_balance_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_balance_control>true</has_discrete_balance_control>
</capabilities>

has discrete bass control

Capable of directly specifying a bass setting.

Signature

<has_discrete_bass_control></has_discrete_bass_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_bass_control>true</has_discrete_bass_control>
</capabilities>

has discrete loudness control

Capable of directly specifying a loudness setting.

Signature

<has_discrete_loudness_control></has_discrete_loudness_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>

has discrete mute control

Capable of directly specifying mute ON or OFF setting.

Signature

<has_discrete_ mute_control></has_discrete_ mute_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_mute_control>true</has_discrete_mute_control>
</capabilities>

has discrete treble control

Capable of directly specifying a treble setting.

Signature

<has_discrete_treble_control></has_discrete_treble_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_treble_control>true</has_discrete_treble_control>
</capabilities>

has discrete volume control

Capable of directly specifying a volume setting.

Signature

<has_discrete_volume_control></has_discrete_volume_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_volume_control>true</has_discrete_volume_control>
</capabilities>

has toggle loudness control

Capable of toggling ON/OFF loudness control.

Signature

<has_toggle_loudness_control></has_toggle_loudness_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_toggle_loudness_control>true</has_toggle_loudness_control>
</capabilities>

has toggle mute control

Capable of handling ON/OFF mute control.

Signature

<has_toggle_mute_control></has_toggle_mute_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_toggle_mute_control>true</has_toggle_mute_control>
</capabilities>

has up down balance control

Capable of directly specifying a balance setting.

Signature

<has_up_down_balance_control></has_up_down_balance_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_balance_control>true</has_up_down_balance_control>
</capabilities>

has up down bass control

Capable of directly specifying a bass setting.

Signature

<has_up_down_bass_control></has_up_down_bass_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_bass_control>true</has_up_down_bass_control>
</capabilities>

has up down treble control

Capable of directly specifying a treble setting.

Signature

<has_up_down_treble_control></has_up_down_treble_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_treble_control>true</has_up_down_treble_control>
</capabilities>

has up down volume control

Has capability of handling volume UP and DOWN adjustments.

Signature

<has_up_down_volume_control></has_up_down_volume_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_up_down_volume_control>true</has_up_down_volume_control>
</capabilities>

has video signal sense

Specifies AV switching is capable of sensing video on an input. This is useful in triggering programming in ComposerPro based on the this setting.

Signature

<has_video_signal_sense></has_video_signal_sense>

Parameter Description
bool True/False

Example

<capabilities>
   <has_video_signal_sense>true</has_video_signal_sense>
</capabilities>

video consumer count

Count of number of vidoe consumers (inputs) of the device. This value must match the number of connections in the driver.

Signature

<video_consumer_count></video_consumer_count>

Parameter Description
int Number of video consumers.

Example

<capabilities>
   <video_consumer_count>8</video_consumer_count>
</capabilities>

video provider count

Count of number of video providers (outputs) of the device. This value must match the number of connections in the driver.

Signature

<video_provider_count></video_provider_count>

Parameter Description
int Number of audio providers.

Example

<capabilities>
   <video_provider_count>8</video_provider_count>
</capabilities>

Satellite Receiver Protocol Notifications

AUDIO PARAMETER CHANGED

Audio parameter has changed

Signature

AUDIO_PARAMETER_CHANGED ()

Parameter Description
int Output Binding ID

Returns

None

BALANCE LEVEL CHANGED

Selected balance level has changed.

Signature

BALANCE_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

BASS LEVEL CHANGED

Selected bass level has changed

Signature

BASS_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

INPUT OUTPUT CHANGED

Selected inputs & outputs have changed.

Signature

INPUT_OUTPUT_CHANGED ()

Parameter Description
int INput Binding ID
int Output Binding ID

Returns

None

LOUDNESS CHANGED

Loudness state (On/Off) has changed.

Signature

LOUDNESS_CHANGED ()

Parameter Description
bool True/False
int Output Binding ID

Returns

None

MUTE CHANGED

MUTE state (On/Off) has changed.

Signature

MUTE_CHANGED ()

Parameter Description
bool True/False
int Output Binding ID

Returns

None

OFF

Device has turned off.

Signature

OFF ()

Parameter

None

Returns

None

ON

Device has turned on.

Signature

ON ()

Parameter

None

Returns

None

TREBLE LEVEL CHANGED

Selected treble level has changed.

Signature

TREBLE_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

VOLUME LEVEL CHANGED

Selected volume level has changed.

Signature

VOLUME_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SURROUND MODE CHANGED

Surround mode setting has changed.

Signature

SURROUND_MODE_CHANGED ()

Parameter Description
int Output Binding ID
int Surround Mode ID value

Returns

None

Satellite Receiver Proxy Commands

BACK

Pulse Back button

Signature

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Signature

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Signature

DASH ()

Parameter

None

Returns

None

DISCONNECT OUTPUT

Disconnect (turn off) selected output on device.

Signature

DISCONNECT_OUTPUT ()

Parameter Description
Int Output BindingID

Returns

None

DOWN

PULSE DOWN NAVIGATION

Signature

DOWN ()

Parameter

None

Returns

None

EMIT CODE

Emit IR/Serial code.

Signature

EMIT_CODE ()

Parameter Description
Int ID of the IR Code

Returns

None

EMIT MACRO

Emit IR/Serial code macro (used by AVGen IR/Serial Proxy)

Signature

EMIT_MACRO ()

Parameter Description
str MacroCodeName

Returns

None

ENTER

Navigate Enter key

Signature

Enter ()

Parameters

None

Returns

None

GUIDE

Pulse info button.

Signature

GUIDE ()

Parameters

None

Returns

None

HYPHEN

Pulse ‘-’ button

Signature

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Signature

INFO ()

Parameters

None

Returns

None

LEFT

Pulse left navigation button.

Signature

LEFT ()

Parameters

None

Returns

None

LOUDNESS OFF

Turn loudness off.

Signature

LOUDNESS_OFF ()

Parameter Description
int Output Binding ID

Returns

None

LOUDNESS ON

Turn loudness on.

Signature

LOUDNESS_ON ()

Parameter Description
int Output Binding ID

Returns

None

LOUDNESS TOGGLE

Toggle loudness on/off.

Signature

LOUDNESS_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

MUTE OFF

Turn muting off.

Signature

MUTE_OFF ()

Parameter Description
int Output Binding ID

Returns

None

MUTE ON

Turn muting on.

Signature

MUTE_ON ()

Parameter Description
int Output Binding ID

Returns

None

MUTE TOGGLE

Toggle muting on/off.

Signature

MUTE_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

NUMBER 0

Pulse ‘0’ button

Signature

Number_0 ()

Parameters

None

Returns

None

NUMBER 1

Pulse ‘1’ button

Signature

Number_1 ()

Parameters

None

Returns

None

NUMBER 2

Pulse ‘2’ button

Signature

Number_2 ()

Parameters

None

Returns

None

NUMBER 3

Pulse ‘3’ button

Signature

Number_3 ()

Parameters

None

Returns

None

NUMBER 4

Pulse ‘4’ button

Signature

Number_4 ()

Parameters

None

Returns

None

NUMBER 5

Pulse ‘5’ button

Signature

Number_5 ()

Parameters

None

Returns

None

NUMBER 6

Pulse ‘6’ button

Signature

Number_6 ()

Parameters

None

Returns

None

NUMBER 7

Pulse ‘7’ button

Signature

Number_7 ()

Parameters

None

Returns

None

NUMBER 8

Pulse ‘8’ button

Signature

Number_8 ()

Parameters

None

Returns

None

NUMBER 9

Pulse ‘9’ button

Signature

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Signature

OFF ()

Parameters

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

ON

Turn device On.

Signature

ON ()

Parameters

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

OPEN CLOSE

Open/Close disc tray.

Signature

OPEN_CLOSE ()

Parameters

None

PAGE DOWN

Pulse menu Page down.

Signature

PAGE_DOWN ()

Parameters

None

Returns

None

PAGE UP

Pulse menu Page up.

Signature

PAGE_UP ()

Parameters

None

Returns

`None `

Pause

Place device in pause state.

Signature

PAUSE ()

Parameters

None

Returns

None

PIP

Pulse menu PIP button.

Signature

PIP ()

Parameter Description
str MacroCodeName

Returns

None

PLAY

Place device in a playback state.

Signature

PLAY ()

Parameters

None

Returns

None

POUND

Pulse ‘#’ button

Signature

POUND ()

Parameters

None

Returns

None

PRESET DOWN

Toggle (cycle down) tuning preset

Signature

PRESET_DOWN ()

Parameters

None

Returns

None

PRESET UP

Toggle (cycle up) tuning preset

Signature

PRESET_UP ()

Parameters

None

Returns

None

PULSE ASPECT RATIO

Toggle (cycle though) aspect ratio.

Signature

PULSE_ASPECT_RATIO ()

Parameters

None

Returns

None

PULSE BALANCE DOWN

Pulse balance down (Left)

Signature

PULSE_BALNCE_DOWN ()

Parameters

None

Returns

None

PULSE BALANCE UP

Pulse balance up (Right)

Signature

PULSE_BALNCE_RIGHT ()

Parameter Description
int Output Binding ID

Returns

None

PULSE BASS DOWN

Pulse bass down (Left)

Signature

PULSE_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

PULSE BASS UP

Pulse bass up (Right)

Signature

PULSE_BASS_UP ()

Parameters

None

Returns

None

PULSE CHANNEL DOWN

Pulse channel value down.

Signature

PULSE_CHANNEL_DOWN ()

Parameters

None

Returns

None

PULSE CHANNEL UP

Pulse channel value up.

Signature

PULSE_CHANNEL_UP ()

Parameters

None

Returns

None

PULSE INPUT

Toggle (cycle through) input selection on device.

Signature

PULSE_INPUT

Parameters

None

Returns

None

PULSE TREBLE DOWN

Pulse treble down.

Signature

PULSE_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

PULSE TREBLE UP

Pulse treble up.

Signature

PULSE_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

PULSE VOL DOWN

Pulse volume level down.

Signature

PULSE_VOL_DOWN

Parameter Description
int Output Binding ID

Returns

None

PVR

Pulse PVR button.

Signature

PVR ()

Parameters

None

Returns

None

PULSE VOL UP

Pulse volume level up.

Signature

PULSE_VOL_UP

Parameter Description
int Output Binding ID

Returns

None

RECALL

Pulse Recall button

Signature

RECALL ()

Parameters

None

Returns

None

Pulse RIGHT NAVIGATION

Signature

RIGHT ()

Parameters

None

Returns

None

SCAN FWD

Pulse/scan forward within track/chapter.

Signature

SCAN_FWD ()

Parameters

None

Returns

None

SCAN REV

Pulse scan reverse within track/chapter.

Signature

SCAN_REV ()

Parameters

None

Returns

None

SEARCH DOWN

Pulse tuning search down

Signature

SEARCH_DOWN ()

Parameters

None

Returns

None

SEARCH UP

Pulse tuning search UP

Signature

SEARCH_UP ()

Parameters

None

Returns

None

SET BALANCE

Set balance to a specified position.

Signature

SET_BALANCE ()

Parameter Description
int Output Binding ID

Returns

None

SET BALANCE UP

Set balance to a specified position.

Signature

SET_BALANCE ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET BASS LEVEL

Set bass to a specified level.

Signature

SET_BASS_LEVEL

Parameter Description
int Output Binding ID

Returns

None

SET CHANNEL

Tune device to the specified channel.

Signature

SET_CHANNEL ()

Parameter Description
str Channel value in string format.

Returns

None

Example

The examples to the right detail the table of information that is received from the proxy when a channel is selected:

FM:
ReceivedFromProxy:  SET_CHANNEL
BindingID           5002
CHANNEL             96.3
INPUT               3028
OUTPUT              0

AM:
ReceivedFromProxy: SET_CHANNEL
INPUT              3027
BindingID          5002
CHANNEL            1100
INPUT              3027
OUTPUT             0

In the FM example, channel 96.3 has been selected in the tuner protocol. The 96.3 value is passed into the data table as a string.

It is important to note that if the bandwidth type (AM, FM) is not provided (and the proxy in question is not TV) a manner in which to identify the bandwidth type will need to be developed. An example of this code follows:


if tParams['BANDTYPE'] == nil then
       if (string.find(tParams['CHANNEL'],"%p") ~= nil) then
        tParams['BANDTYPE'] = 'FM'
        local ChannelLen = string.len(tParams['CHANNEL'] )
        local ChannelFix = string.sub(tParams['CHANNEL'],1,ChannelLen-2) .. '.' .. string.sub(tParams['CHANNEL'],ChannelLen-1,ChannelLen-1)
        tParams ['CHANNEL'] = ChannelFix
       else
        tParams['BANDTYPE'] = 'AM'
      end
    end 

SET LOUDNESS

Turn loudness on.

Signature

SET_LOUDNESS ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET OUTPUT INPUT

Specify input and output selection of device.

Signature

SET_OUTPUT_INPUT ()

Parameter Description
int Input Binding ID
int Output Binding ID

Returns

None

SET UP DOWN SWAP

Swap page UP/DOWN buttons (used by AVGen)

Signature

POUND ()

Parameter Description
bool True/False

Returns

None

SET VOLUME LEVEL

Set volume to a specified level.

Signature

SET_VOLUME_LEVEL () 

Parameter Description
int Level
int Output Binding ID

Returns

None

SET PRESET

Set specified tuning preset

Signature

SET_PRESET () 

Parameter Description
int Preset Number

Returns

None

SET TREBLE LEVEL

Set treble to a specified level.

Signature

SET_TREBLE_LEVEL ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SKIP FWD

Advance to next track/chapter.

Signature

SKIP_FWD ()

Parameters

None

Returns

None

STAR

Pulse button

Signature

STAR ()

Parameters

None

Returns

None

START BALANCE DOWN

Start ramping balance down (left).

Signature

START_BALANCE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START BALANCE UP

Start ramping balance up (right).

Signature

START_BALANCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

START BASS DOWN

Start ramping bass down.

Signature

START_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START BASS UP

Start ramping bass up.

Signature

START_BASS_UP ()

Parameter Description
int Output Binding ID

Returns

None

START CHANNEL UP

Start ramping channel up.

Signature

START_CHANNEL_UP ()

Parameter

None

Returns

None

START DOWN

Start down NAVIGATION.

Signature

START_DOWN ()

Parameters

None

Returns

None

START LEFT

Pulse left navigation.

Signature

START_LEFT ()

Parameters

None

Returns

None

START PAGE DOWN

Start menu Page down.

Signature

START_PAGE_DOWN ()

Parameters

None

Returns

None

START PAGE UP

Start menu Page up.

Signature

START_PAGE_UP ()

Parameters

None

Returns

None

START RIGHT

Initiate right arrow navigation.

Signature

START_RIGHT ()

Parameters

None

Returns

None

START SCAN FWD

Initiate scan forward within track/chapter.

Signature

START_SCAN_FWD ()

Parameters

None

Returns

None

START SCAN REV

Initiate scan backward within track/chapter.

Signature

START_SCAN_REV ()

Parameters

None

Returns

None

START SEARCH DOWN

Initiate tuning search down

Signature

START_SEARCH_DOWN ()

Parameters

None

Returns

None

START SEARCH UP

Initiate tuning search up.

Signature

START_SEARCH_UP ()

Parameters

None

Returns

None

START TREBLE DOWN

Start ramping treble down.

Signature

START_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START TREBLE UP

Start ramping treble up.

Signature

START_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

START VOL DOWN

Start ramping volume down.

Signature

START_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP SCAN REV

Stop scan forward within track/chapter.

Signature

STOP_SCAN_REV ()

Parameters

None

Returns

None

START UP

Initiate up arrow navigation.

Signature

START_UP ()

Parameters

None

Returns

None

STOP BALANCE DOWN

Start ramping balance down.

Signature

STOP_BALANCE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP BASS DOWN

Stop ramping bass down

Signature

STOP_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP BALANCE UP

Stop ramping balance up.

Signature

STOP_BALANCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP BASS UP

Stop ramping bass up.

Signature

STOP_BASS_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP CHANNEL UP

Stop ramping channel up.

Signature

STOP_CHANNEL_UP ()

Parameter

None

Returns

None

STOP LEFT

Stop left navigation.

Signature

STOP_LEFT ()

Parameters

None

Returns

None

STOP RIGHT

Stop right arrow navigation.

Signature

STOP_RIGHT ()

Parameters

None

Returns

None

STOP SCAN FWD

Stop scan forward within track/chapter.

Signature

STOP_SCAN_FWD ()

Parameters

None

Returns

None

STOP SEARCH DOWN

Stop tuning search down

Signature

STOP_SEARCH_DOWN ()

Parameters

None

Returns

None

STOP SEARCH UP

Stop tuning search UP

Signature

STOP_SEARCH_UP ()

Parameters

None

Returns

None

STOP PAGE DOWN

Stop menu page down.

Signature

STOP_PAGE_DOWN ()

Parameters

None

Returns

None

STOP PAGE DOWN

Stop menu page up.

Signature

STOP_PAGE_UP ()

Parameters

None

Returns

None

STOP TREBLE DOWN

Stop ramping the treble down

Signature

STOP_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP TREBLE UP

Stop ramping the treble up.

Signature

STOP_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP UP

Stop up arrow navigation.

Signature

STOP_UP ()

Parameters

None

Returns

None

STOP VOL DOWN

Stop ramping the volume down

Signature

STOP_VOL_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP VOL UP

Stop ramping the volume up.

Signature

STOP_VOL_UP ()

Parameter Description
int Output Binding ID

Returns

None

TV VIDEO

Toggle TV/video input.

Signature

TV_VIDEO ()

Parameters

None

Returns

None

TUNE DOWN

Toggle (cycle down) frequency or channel

Signature

TUNE_DOWN ()

Parameters

None

Returns

None

TUNE UP

Toggle (cycle UP) frequency or channel

Signature

TUNE_UP ()

Parameters

None

Returns

None

STAR

Pulse up button.

Signature

UP ()

Parameters

None

Returns

None

Tuner Capabilities

audio consumer count

Count of number of audio consumers (inputs) of the device. This value must match the number of connections in the driver.

Signature

<audio_consumer_count></audio_consumer_count>

Parameter Description
int Number of audio consumers.

Example

<capabilities>
   <audio_consumer_count>8</audio_consumer_count>
</capabilities>

audio provider count

Count of number of audio providers (outputs) of the device. This value must match the number of connections in the driver.

Signature

<audio_provider_count></audio_provider_count>

Parameter Description
int Number of audio providers.

Example

<capabilities>
   <audio_provider_count>8</audio_provider_count>
</capabilities>

has channel up down

Tuner can cycling up or down for valid channels

Signature

<has_channel_up_down></has_channel_up_down>

Parameter Description
bool True/False

Example

<capabilities>
   <has_channel_up_down>true</has_channel_up_down>
</capabilities>

has discrete channel select

Capability of directly selecting specified channel.

Signature

<has_discrete_channel_select></has_ discrete_channel_select>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_channel_select>true</has_discrete_channel_select>
</capabilities>

has discrete input select

Capability of directly selecting specified input.

Signature

<has_discrete_input_select></has_ discrete_input_select>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_input_select>true</has_discrete_input_select>
</capabilities>

has discrete preset

Capable of directly selecting from a preset list.

Signature

<has_discrete_preset></has_discrete_preset>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_preset>true</has_discrete_preset>
</capabilities>

has feedback

Device has the ability to report back the tuner channel. Required so the Tuner channel can be displayed through navigator.

Signature

<has_feedback></has_feedback>

Parameter Description
bool True/False

Example

<capabilities>
   <has_feedback>true</has_feedback>
</capabilities>

has provider count

Count of number of video providers (outputs) of the device.

Signature

<has_provider_count></has_provider_count>

Parameter Description
int Number of video providers.

Example

<capabilities>
   <has_provider_count>8</has_provider_count>
</capabilities>

has preset up down

Tuner can cycle up or down through a preset list.

Signature

<has_preset_up_down></has_preset_up_down>

Parameter Description
bool True/False

Example

<capabilities>
   <has_preset_up_down>true</has_preset_up_down>
</capabilities>

has toad input select

Capability of toggling through inputs

Signature

<has_toad_input_select></has_toad_input_select>

Parameter Description
bool True/False

Example

<capabilities>
   <has_toad_input_select>true</has_toad_input_select>
</capabilities>

has tune up down

Tuner can cycle up or down through tuning frequencies or channels

Signature

<has_tune_up_down></has_tune_up_down>

Parameter Description
bool True/False

Example

<capabilities>
   <has_tune_up_down>true</has_tune_up_down>
</capabilities>

preset count

Number of Tuner presets available.

Signature

<preset_count></preset_count>

Parameter Description
int Number of Presets

Example

<capabilities>
   <preset_count>6</preset_count>
</capabilities>

selection delay

Delay time in milliseconds before new tuner selection is online.

Signature

<selection_delay></selection_delay>

Parameter Description
bool True/False

Example

<capabilities>
   <selection_delay>true</selection_delay>
</capabilities>

video consumer count

Count of number of video consumers (inputs) of the device. This value must match the number of connections in the driver.

Signature

<video_consumer_count></video_consumer_count>

Parameter Description
int Number of video consumers.

Example

<capabilities>
   <video_consumer_count>8</video_consumer_count>
</capabilities>

preface band with tuner capability

Specifies if the device can switch to the Tuner input (AM, FM..) and then send the SET_CHANNEL command.

Signature

<preface_bandwith_tuner_capability></preface_bandwith_tuner_capability>

Parameter Description
bool True/False

Example

<capabilities>
   <preface_bandwith_tuner_capability>true</preface_bandwith_tuner_capability>
</capabilities>

Tuner Protocol Notifications

CHANNEL CHANGED

Selected disc has changed.

Signature

CHANNEL_CHANGED ()

Parameter Description
int CHANNEL Number

Returns

None

Usage Note

Usage Note:If the BANDTYPE is not supplied, as in older drivers, the INPUT binding # will be used to determine which band the tuner is on. All DriverWorks drivers need to use the BANDTYPE parameter if they want the band to propagate up to Navigator to display the channel properly. If the DriverWorks driver does not know the current channel and the “has feedback” capability is not set to “True”, none of this matters and everything will keep working as it previously has.

A CHANNEL CHANGED must be issued immediately after the INPUT CHANGED in order for the UI to update.

Example

C4:SendToProxy(5002, "INPUT_CHANGED", {INPUT=3014,BANDTYPE='FMBand',MINCHANNEL=8750,MAXCHANNEL=10450,CHANNELSPACING=10})

C4:SendToProxy(5002, "CHANNEL_CHANGED", {CHANNEL=8780})

Note that in the example to the right, 5002 is the ProxyBindingID for the Tuner. INPUT 3014 is the ID for the FM Antenna on the 5002 Tuner.

Navigator determines AM/FM/XM with the following rule:

INPUT CHANGED

Selected input has changed.

Signature

INPUT_CHANGED ()

Parameter Description
int Binding ID of RF cloud
str One of the following case sensitive values: “AMBand” “FMBand”
int Lowest tune-able channel e.g. 8750 for FM, 530 for AM
int Highest tunable channel e.g. 10790 for FM, 1760 for AM
int Channel increment e.g. 20 for FM in U.S., 10 for AM in U.S.

Returns

None

Usage Note

If the BANDTYPE is not supplied, as in older drivers, the INPUT binding # will be used to determine which band the tuner is on. All DriverWorks drivers need to use the BANDTYPE parameter if they want the band to propagate up to Navigator to display the channel properly. If the DriverWorks driver does not know the current channel and the “hasfeedback” capability is not set to “True”, none of this matters and everything will keep working as it previously has.

A CHANNEL_CHANGED must be issued immediately after the INPUT_CHANGED in order for the UI to update.

Example

C4:SendToproxy(5002,'INPUTCHANGED',{INPUT=3009,BANDTYPE='FMBand',MINCHANNEL=8750,
  MAXCHANNEL=10790,CHANNELSPACING=20})

C4:SendToProxy(5002,'CHANNELCHANGED',CHANNEL=10290)

Note that in the example to the right, 5002 is the ProxyBindingID for the Tuner. INPUT 3009 is the ID for the FM Antenna on the 5002 Tuner.

Navigator determines AM/FM/XM with the following rule:

OFF

Device has turned Off.

Signature

OFF ()

Parameter

None

Returns

None

ON

Device has turned On.

Signature

ON ()

Parameter

None

Returns

None

RADIO TEXT CHANGED

Text from RDS has changed.

Signature

RADIO_TEXT_CHANGED ()

Parameter Description
str Radio information/text from RDS. Currently playing title.

Usage Note

MaxImum 64 characters is two free form text strings.

Returns

None

PSN CHANGED

Text from PSN has changed.

Signature

PSN_CHANGED ()

Parameter Description
str Radio information/text from the station ID. Periodically updated from the station.

Usage Note

MaxImum 64 characters is two free form text strings.

Returns

None

Audio Output Bindings and Proxy Events

Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.

For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.

Tuner Proxy Commands

BACK

Pulse Back button

Signature

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Signature

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Signature

DASH ()

Parameter

None

Returns

None

HYPHEN

Pulse ‘-’ button

Signature

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Signature

INFO ()

Parameters

None

Returns

None

NUMBER 0

Pulse ‘0’ button

Signature

Number_0 ()

Parameters

None

Returns

None

NUMBER 1

Pulse ‘1’ button

Signature

Number_1 ()

Parameters

None

Returns

None

NUMBER 2

Pulse ‘2’ button

Signature

Number_2 ()

Parameters

None

Returns

None

NUMBER 3

Pulse ‘3’ button

Signature

Number_3 ()

Parameters

None

Returns

None

NUMBER 4

Pulse ‘4’ button

Signature

Number_4 ()

Parameters

None

Returns

None

NUMBER 5

Pulse ‘5’ button

Signature

Number_5 ()

Parameters

None

Returns

None

NUMBER 6

Pulse ‘6’ button

Signature

Number_6 ()

Parameters

None

Returns

None

NUMBER 7

Pulse ‘7’ button

Signature

Number_7 ()

Parameters

None

Returns

None

NUMBER 8

Pulse ‘8’ button

Signature

Number_8 ()

Parameters

None

Returns

None

NUMBER 9

Pulse ‘9’ button

Signature

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Signature

OFF ()

Parameters

None

Returns

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

ON

Turn device On.

Signature

ON ()

Parameters

None

Returns

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

PAGE DOWN

Pulse menu Page down.

Signature

PAGE_DOWN ()

Parameters

None

Returns

None

PAGE UP

Pulse menu Page up.

Signature

PAGE_UP ()

Parameters

None

Returns

None

POUND

Pulse # button.

Signature

POUND ()

Parameters

None

Returns

None

PRESET DOWN

Toggle (cycle down) tuning preset.

Signature

PRESET_DOWN ()

Parameters

None

Returns

None

PRESET UP

Toggle (cycle UP) tuning preset.

Signature

PRESET_UP ()

Parameters

None

Returns

None

PULSE CHANNEL DOWN

Pulse channel value down.

Signature

PULSE_CHANNEL_DOWN ()

Parameters

None

Returns

None

PULSE CHANNEL UP

Pulse channel value up.

Signature

PULSE_CHANNEL_UP ()

Parameters

None

Returns

None

RECALL

Pulse Recall button.

Signature

RECALL ()

Parameters

None

Returns

None

SEARCH DOWN

Pulse tuning search down

Signature

SEARCH_DOWN ()

Parameters

None

Returns

None

SEARCH UP

Pulse tuning search UP

Signature

SEARCH_UP ()

Parameters

None

Returns

None

SET PRESET

Select specified tuning preset.

Signature

SET_PRESET ()

Parameter Description
int Preset Number

Returns

None

STAR

Pulse * button.

Signature

STAR ()

Parameters

None

Returns

None

START CH DOWN

Start ramping channel down.

Signature

START_CH_DOWN ()

Parameters

None

Returns

None

START CH UP

Start ramping channel UP.

Signature

START_CH_UP ()

Parameters

None

Returns

None

STOP CH UP

StOP ramping channel UP.

Signature

STOP_CH_UP ()

Parameters

None

Returns

None

START PAGE DOWN

Start menu Page down.

Signature

START_PAGE_DOWN ()

Parameters

None

Returns

None

START PAGE UP

Start menu Page up.

Signature

START_PAGE_UP ()

Parameters

None

Returns

None

START SEARCH DOWN

Begin tuning search down.

Signature

START_SEARCH_DOWN ()

Parameters

None

Returns

None

START SEARCH UP

Begin tuning search UP.

Signature

START_SEARCH_UP ()

Parameters

None

Returns

None

STOP CH DOWN

Stop ramping channel down.

Signature

STOP_CH_DOWN ()

Parameters

None

Returns

None

STOP PAGE DOWN

Stop menu page down.

Signature

STOP_PAGE_DOWN ()

Parameters

None

Returns

None

STOP PAGE UP

Stop menu page up.

Signature

STOP_PAGE_UP ()

Parameters

None

Returns

None

STOP SEARCH UP

Stop tuning search up.

Signature

STOP_SEARCH_UP ()

Parameters

None

Returns

None

STOP SEARCH DOWN

Stop tuning search down.

Signature

STOP_SEARCH_DOWN ()

Parameters

None

Returns

None

TUNE DOWN

Toggle (cycle down) frequency or channel

Signature

TUNE_DOWN ()

Parameters

None

Returns

None

TUNE UP

Toggle (cycle up) frequency or channel

Signature

TUNE_UP ()

Parameters

None

Returns

None

TV Proxy Commands

BACK

Pulse Back button

Signature

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Signature

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Signature

DASH ()

Parameter

None

Returns

None

DISCONNECT OUTPUT

Disconnect (turn off) selected output on device.

Signature

DISCONNECT_OUTPUT ()

Parameter Description
Int Output BindingID

Returns

None

EMIT CODE

Emit IR/Serial code.

Signature

EMIT_CODE ()

Parameter Description
Int ID of the IR Code

Returns

None

EMIT MACRO

Emit IR/Serial code macro.

Signature

EMIT_MACRO ()

Parameter Description
str MacroCodeName

Returns

None

GET DEFAULT INPUT

Command sent to the protocol during the proxy initialization. Returns the input designated as the default from the protocol device.

Signature

GET_DEFAULT_INPUT ()

Parameters

None

Returns

None

HYPHEN

Pulse ‘-’ button

Signature

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Signature

INFO ()

Parameters

None

Returns

None

LOUDNESS OFF

Turn loudness off.

Signature

LOUDNESS_OFF ()

Parameter Description
int Output Binding ID

Returns

None

LOUDNESS ON

Turn loudness on.

Signature

LOUDNESS_ON ()

Parameter Description
int Output Binding ID

Returns

None

LOUDNESS TOGGLE

Toggle loudness on/off.

Signature

LOUDNESS_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

MUTE OFF

Turn muting off.

Signature

MUTE_OFF ()

Parameter Description
int Output Binding ID

Returns

None

MUTE ON

Turn muting on.

Signature

MUTE_ON ()

Parameter Description
int Output Binding ID

Returns

None

MUTE TOGGLE

Toggle muting on/off.

Signature

MUTE_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

NUMBER 0

Pulse ‘0’ button

Signature

Number_0 ()

Parameters

None

Returns

None

NUMBER 1

Pulse ‘1’ button

Signature

Number_1 ()

Parameters

None

Returns

None

NUMBER 2

Pulse ‘2’ button

Signature

Number_2 ()

Parameters

None

Returns

None

NUMBER 3

Pulse ‘3’ button

Signature

Number_3 ()

Parameters

None

Returns

None

NUMBER 4

Pulse ‘4’ button

Signature

Number_4 ()

Parameters

None

Returns

None

NUMBER 5

Pulse ‘5’ button

Signature

Number_5 ()

Parameters

None

Returns

None

NUMBER 6

Pulse ‘6’ button

Signature

Number_6 ()

Parameters

None

Returns

None

NUMBER 7

Pulse ‘7’ button

Signature

Number_7 ()

Parameters

None

Returns

None

NUMBER 8

Pulse ‘8’ button

Signature

Number_8 ()

Parameters

None

Returns

None

NUMBER 9

Pulse ‘9’ button

Signature

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Signature

OFF ()

Parameters

None

Returns

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

ON

Turn device On.

Signature

ON ()

Parameters

None

Returns

None

Usage Note

The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.

PAGE DOWN

Pulse menu Page down.

Signature

PAGE_DOWN ()

Parameters

None

Returns

None

PAGE UP

Pulse menu Page up.

Signature

PAGE_UP ()

Parameters

None

Returns

None

PIP

Pulse menu PIP button..

Signature

PIP ()

Parameter Description
str MacroCodeName

Returns

None

POUND

Pulse # button.

Signature

POUND ()

Parameters

None

Returns

None

PRESET DOWN

Toggle (cycle down) tuning preset.

Signature

PRESET_DOWN ()

Parameters

None

Returns

None

PRESET UP

Toggle (cycle UP) tuning preset.

Signature

PRESET_UP ()

Parameters

None

Returns

None

Pulse Aspect Ratio

Toggle (cycle though) aspect ratio.

Signature

PULSE_ASPECT_RATIO ()

Parameters

None

Returns

None

PULSE BALANCE DOWN

Pulse balance down (Left)

Signature

PULSE_BALNCE_DOWN ()

Parameters

None

Returns

None

PULSE BALANCE UP

Pulse balance up (Right)

Signature

PULSE_BALNCE_RIGHT ()

Parameter Description
int Output Binding ID

Returns

None

PULSE BASS DOWN

Pulse bass down (Left)

Signature

PULSE_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

PULSE BASS UP

Pulse bass up (Right)

Signature

PULSE_BASS_UP ()

Parameters

None

Returns

None

PULSE CHANNEL DOWN

Pulse channel value down.

Signature

PULSE_CHANNEL_DOWN ()

Parameters

None

Returns

None

PULSE CHANNEL UP

Pulse channel value up.

Signature

PULSE_CHANNEL_UP ()

Parameters

None

Returns

None

PULSE INPUT

Toggle (cycle through) input selection on device.

Signature

PULSE_INPUT

Parameters

None

Returns

None

PULSE TREBLE DOWN

Pulse treble down.

Signature

PULSE_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

PULSE TREBLE UP

Pulse treble up.

Signature

PULSE_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

PULSE VOL DOWN

Pulse volume level down.

Signature

PULSE_VOL_DOWN

Parameter Description
int Output Binding ID

Returns

None

PULSE VOL UP

Pulse volume level up.

Signature

PULSE_VOL_UP

Parameter Description
int Output Binding ID

Returns

None

PVR

Pulse PVR button.

Signature

PVR ()

Parameters

None

Returns

None

RECALL

Pulse Recall button.

Signature

RECALL ()

Parameters

None

Returns

None

SEARCH DOWN

Pulse tuning search down

Signature

SEARCH_DOWN ()

Parameters

None

Returns

None

SEARCH UP

Pulse tuning search UP

Signature

SEARCH_UP ()

Parameters

None

Returns

None

SET BALANCE

Set balance to a specified position.

Signature

SET_BALANCE ()

Parameter Description
int Output Binding ID

Returns

None

SET BALANCE UP

Set balance to a specified position.

Signature

SET_BALANCE_UP ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET BASS LEVEL

Set bass to a specified level.

Signature

SET_BASS_LEVEL

Parameter Description
int Output Binding ID

Returns

None

SET CHANNEL

Tune device to the specified channel.

Signature

SET_CHANNEL ()

Parameter Description
str Channel value in string format.

Returns

None

SET DEFAULT INPUT

Specify the default input selection of device.

Signature

SET_DEAFULT_INPUT ()

Parameter Description
int Input Binding ID - should be in the BindingID range.
int Optional. Output Binding ID - should be in the BindingID range.

Returns

None

Usage Note

SET INPUT

Specify the input selection of device.

Signature

SET_INPUT ()

Parameter Description
int Input Binding ID - should be in the BindingID range.
int Optional. Output Binding ID - should be in the BindingID range.

Returns

None

Usage Note

SET LOUDNESS

Turn loudness on.

Signature

SET_LOUDNESS ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET PRESET

Select specified tuning preset.

Signature

SET_PRESET ()

Parameter Description
int Preset Number

Returns

None

SET TREBLE LEVEL

Set treble to a specified level.

Signature

SET_TREBLE_LEVEL ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET UP DOWN SWAP

Swap page UP/DOWN buttons.

Signature

SET_UP_DOWN_SWAP ()

Parameter Description
bool True/False

Returns

None

SET VOLUME LEVEL

Set volume to a specified level.

Signature

SET_VOLUME_LEVEL () 

Parameter Description
int Level
int Output Binding ID

Returns

None

SET VOL UP

Begin ramping volume up.

Signature

SET_VOL_UP ()

Parameter Description
int Output Binding ID

Returns

None

STAR

Pulse * button.

Signature

STAR ()

Parameters

None

Returns

None

START BALANCE DOWN

Start ramping balance down (left).

Signature

START_BALANCE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START BALANCE UP

Start ramping balance UP (right).

Signature

START_BALANCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

START BASS DOWN

Start ramping bass down.

Signature

START_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START BASS UP

Start ramping bass up.

Signature

START_BASS_UP ()

Parameter Description
int Output Binding ID

Returns

None

START CH DOWN

Start ramping channel down.

Signature

START_CH_DOWN ()

Parameters

None

Returns

None

START CH UP

Start ramping channel up.

Signature

START_CH_UP ()

Parameters

None

Returns

None

START DOWN

Initiate down-arrow navigation.

Signature

START_DOWN ()

Parameters

None

Returns

None

START LEFT

Initiate left-arrow navigation.

Signature

START_LEFT ()

Parameters

None

Returns

None

START PAGE DOWN

Start menu Page down.

Signature

START_PAGE_DOWN ()

Parameters

None

Returns

None

START PAGE UP

Start menu Page up.

Signature

START_PAGE_UP ()

Parameters

None

Returns

None

START PAGE RIGHT

Initiate right-arrow navigation.

Signature

START_RIGHT ()

Parameters

None

Returns

None

START SEARCH DOWN

Begin tuning search down.

Signature

START_SEARCH_DOWN ()

Parameters

None

Returns

None

START SEARCH UP

Begin tuning search UP.

Signature

START_SEARCH_UP ()

Parameters

None

Returns

None

START TREBLE UP

Start ramping treble up.

Signature

START_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

START TREBLE DOWN

Start ramping treble down.

Signature

START_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START UP

Initiate up-arrow navigation.

Signature

START_UP ()

Parameters

None

Returns

None

START VOL DOWN

Start ramping volume down.

Signature

START_VOL_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START VOL UP

Start ramping volume up.

Signature

START_VOL_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP BALANCE DOWN

Start ramping balance.

Signature

STOP_BALANCE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP BALANCE UP

Stop ramping bass

Signature

STOP_BALANCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP BASS DOWN

Stop ramping bass down.

Signature

STOP_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP BASS UP

Stop ramping bass up.

Signature

STOP_BASS_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP CH DOWN

Stop ramping channel down.

Signature

STOP_CH_DOWN ()

Parameters

None

Returns

None

STOP CH UP

Stop ramping channel up.

Signature

STOP_CH_UP ()

Parameters

None

Returns

None

STOP DOWN

Stop down-arrow navigation.

Signature

STOP_DOWN ()

Parameters

None

Returns

None

START LEFT

Stop left-arrow navigation.

Signature

STOP_LEFT ()

Parameters

None

Returns

None

STOP PAGE DOWN

Stop menu page down.

Signature

STOP_PAGE_DOWN ()

Parameters

None

Returns

None

STOP PAGE DOWN

Stop menu page up.

Signature

STOP_PAGE_UP ()

Parameters

None

Returns

None

STOP PAGE RIGHT

Stop right-arrow navigation.

Signature

STOP_RIGHT ()

Parameters

None

Returns

None

STOP SEARCH DOWN

Stop tuning search down.

Signature

STOP_SEARCH_DOWN ()

Parameters

None

Returns

None

STOP SEARCH UP

Stop tuning search UP.

Signature

STOP_SEARCH_UP ()

Parameters

None

Returns

None

STOP TREBLE DOWN

Stop ramping treble down.

Signature

STOP_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP TREBLE UP

Stop ramping treble up.

Signature

STOP_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP UP

Initiate up-arrow navigation.

Signature

STOP_UP ()

Parameters

None

Returns

None

TUNE DOWN

Toggle (cycle down) frequency or channel.

Signature

TUNE_DOWN ()

Parameters

None

Returns

None

TUNE UP

Toggle (cycle down) frequency or channel.

Signature

TUNE_UP ()

Parameters

None

Returns

None

TV VIDEO

Toggle TV/video input.

Signature

TV_VIDEO ()

Parameters

None

Returns

None

TV Protocol Notifications

AUDIO PARAMETER CHANGED

Audio parameter has changed

Signature

AUDIO_PARAMETER_CHANGED ()

Parameter Description
int Output Binding ID

Returns

None

BALANCE LEVEL CHANGED

Selected balance level has changed.

Signature

BALANCE_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

BASS LEVEL CHANGED

Selected bass level has changed

Signature

BASS_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

CHANNEL CHANGED

Selected channel has changed

Signature

CHANNEL_CHANGED ()

Parameter Description
int Channel Number

Returns

None

INPUT CHANGED

Selected Input has changed.

Signature

INPUT_CHANGED ()

Parameter Description
int Input Binding ID

Returns

None

LOUDNESS CHANGED

Loudness state (On/Off) has changed.

Signature

LOUDNESS_CHANGED ()

Parameter Description
bool True/False
int Output Binding ID

Returns

None

MUTE CHANGED

MUTE state (On/Off) has changed.

Signature

MUTE_CHANGED ()

Parameter Description
bool True/False
int Output Binding ID

Returns

None

OFF

Device has turned off.

Signature

OFF ()

Parameter

None

Returns

None

ON

Device has turned on.

Signature

ON ()

Parameter

None

Returns

None

TREBLE LEVEL CHANGED

Selected treble level has changed.

Signature

TREBLE_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

VOLUME LEVEL CHANGED

Selected volume level has changed.

Signature

VOLUME_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

XM Tuner Protocol Notifications

AVAILABLE CHANNEL MAP

Displays current artist.

Signature

AVAILBLE_CHANNEL_MAP ()

Parameter Description
num MAP HALF: 1 is used for channels 0-127. 0 is used for channels 128 - 255.
str MAP STRING: 32 character (hex values) string representing the binary (1 = available or 0 = not) state of each of the channels in all possible combinations. Each hex digit covers all the possible available combinations of 4 channels.

Example

00000000000000000000000000000001 indicates that channel 0 (or 128) is the only channel available. 00000000000000000000000000000002 indicates that channel 1 (or 129) is the only channel available. 00000000000000000000000000000003 indicates that channels 0 & 1 (or 128 & 129) are the only channels available. 00000000000000000000000000000004 indicates that channel 2 (or 130) is the only channel available. 00000000000000000000000000000005 indicates that channels 0 & 2 (or 128 & 130) are the only channels available. 00000000000000000000000000000006 indicates that channels 1 & 2 (or 129 & 130) are the only channels available. 00000000000000000000000000000007 indicates that channels 0, 1 & 2 (or 128, 129 & 130) are the only channels available. 00000000000000000000000000000008 indicates that channel 3 (or 131) is the only channel available. 00000000000000000000000000000009 indicates that channels 0 & 3 (or 128 & 131) are the only channels available. 0000000000000000000000000000000A indicates that channels 1 & 3 (or 129 & 131) are the only channels available. 0000000000000000000000000000000B indicates that channels 0, 1 & 3 (or 128, 129 & 131) are the only channels available. 0000000000000000000000000000000C indicates that channels 2 & 3 (or 130 & 131) are the only channels available. 0000000000000000000000000000000D indicates that channels 0, 2 & 3 (or 128, 130 & 131) are the only channels available. 0000000000000000000000000000000E indicates that channels 1, 2 & 3 (or 129, 130 & 131) are the only channels available. 0000000000000000000000000000000F indicates that channels 0, 1, 2 & 3 (or 128, 129, 130 & 131) are the only channels available.

SIGNAL STRENGTH

Displays strength of signal.

Signature

SIGNAL_STRENGTH ()

Parameter Description
int 0 = “None”, 1 = “Weak”, 2 = “Fair”, 3 = “Good”

Returns

None

SONG INFO CHANGED

Displays current song information.

Signature

SONG_INFO_CHANGED ()

Parameter Description
str ARTIST, TITLE, CATEGORY, CHANNEL, NAME

Returns

None

XMARDS ID

Satellite Digital Audio Radio Service

Signature

XMARDS_ID ()

Parameter Description
str Value representing the XM SDARS value of the satellite device.

Returns

None

XM CATEGORY NAME CHANGE

Displays current station name.

Signature

XM_CATEGORY_NAME_CHANGE ()

Parameter Description
num Channel
str Channel name

Returns

None

XM GET AVAILABLE CHANNELS

Displays available XM channels.

Signature

XM_GET_AVAILABLE_CHANNELS ()

Parameter Description
num MAP HALF: 1 is used for channels 0-127. 0 is used for channels 128 - 255.

Returns

None

Example

00000000000000000000000000000001 indicates that channel 0 (or 128) is the only channel available. 00000000000000000000000000000002 indicates that channel 1 (or 129) is the only channel available. 00000000000000000000000000000003 indicates that channels 0 & 1 (or 128 & 129) are the only channels available. 00000000000000000000000000000004 indicates that channel 2 (or 130) is the only channel available. 00000000000000000000000000000005 indicates that channels 0 & 2 (or 128 & 130) are the only channels available. 00000000000000000000000000000006 indicates that channels 1 & 2 (or 129 & 130) are the only channels available. 00000000000000000000000000000007 indicates that channels 0, 1 & 2 (or 128, 129 & 130) are the only channels available. 00000000000000000000000000000008 indicates that channel 3 (or 131) is the only channel available. 00000000000000000000000000000009 indicates that channels 0 & 3 (or 128 & 131) are the only channels available. 0000000000000000000000000000000A indicates that channels 1 & 3 (or 129 & 131) are the only channels available. 0000000000000000000000000000000B indicates that channels 0, 1 & 3 (or 128, 129 & 131) are the only channels available. 0000000000000000000000000000000C indicates that channels 2 & 3 (or 130 & 131) are the only channels available. 0000000000000000000000000000000D indicates that channels 0, 2 & 3 (or 128, 130 & 131) are the only channels available. 0000000000000000000000000000000E indicates that channels 1, 2 & 3 (or 129, 130 & 131) are the only channels available. 0000000000000000000000000000000F indicates that channels 0, 1, 2 & 3 (or 128, 129, 130 & 131) are the only channels available.

XM GET CHANNEL DETAILS CHANGED

Displays current channel details.

Signature

XM_GET_CHANNEL_DETAILS_CHANGED ()

Parameter Description
num Channel
str Channel name

Returns

None

Audio Output Bindings and Proxy Events

Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.

For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.

TV Capabilities

has audio

Television is capable of producing audio.

Signature

<has_audio></has_audio>

Parameter Description
bool True/False

Example

<capabilities>
   <has_audio>true</has_audio>
</capabilities>

has discrete balance control

Capable of directly specifying a balance setting.

Signature

<has_discrete_balance_control></has_discrete_balance_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_balance_control>true</has_discrete_balance_control>
</capabilities>

has discrete bass control

Capable of directly specifying a bass setting.

Signature

<has_discrete_bass_control></has_discrete_bass_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_bass_control>true</has_discrete_bass_control>
</capabilities>

has discrete channel select

Capability of direcretly selecting specified channel.

Signature

<has_discrete_channel_select></has_discrete_ channel_select>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_channel_select>true</has_discrete_channel_select>
</capabilities>

has discrete input select

Capability of directly selecting specified input.

Signature

<has_discrete_input_select></has_discrete_input_select>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_input_select>true</has_discrete_input_select>
</capabilities>

has discrete loudness control

Capable of directly specifying a loudness setting.

Signature

<has_discrete_loudness_control></has_discrete_loudness_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>

has discrete mute control

Capable of directly specifying mute ON or OFF setting.

Signature

<has_discrete_ mute_control></has_discrete_ mute_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_mute_control>true</has_discrete_mute_control>
</capabilities>

has discrete treble control

Capable of directly specifying a treble setting.

Signature

<has_discrete_treble_control></has_discrete_treble_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_treble_control>true</has_discrete_treble_control>
</capabilities>

has discrete volume control

Capable of directly specifying a volume setting.

Signature

<has_discrete_volume_control></has_discrete_volume_control>

Parameter Description
bool True/False

Example

<capabilities>
   <has_discrete_volume_control>true</has_discrete_volume_control>
</capabilities>

requires channel after input

When set to True, the TV proxy will first switch the input and then select the channel. It is recommended that this capability be set to True.

Signature

<requires_channel_after_input></requires_channel_after_input>

Parameter Description
bool True/False

Example

<capabilities>
   <requires_channel_after_input>true</requires_channel_after_input>
</capabilities>

Dynamic Transport Controls in Navigator

Introduction

Beginning with O.S. 3.2.3, AV drivers have the ability to define which transport controls are displayed on Navigators. This includes which buttons appear on the Button Bar as well as the Media Dashboard.

This enhancement allows for the appropriate transport controls being displayed for each AV device. This is accomplished using the driver’s Capabilities, Variables and several Proxy Commands.

Transport Controls and Driver XML

To designate which transport controls appear on Navigators, the driver’s capabilities XML needs to contain a new<transports></transports> section. Within the transports XML is a <supported></supported tag. The supported tag lists the default supported transports for the driver. Note that there is a fixed set of "transports" that can be included in the supported tag. These include:

  1. PLAY
  2. PAUSE
  3. STOP
  4. SCAN_FWD
  5. SCAN_REV
  6. SKIP_FWD
  7. SKIP_REV
  8. RECORD
  9. PG_UP
  10. PG_DOWN
  11. PRG_BTNS
  12. KEYPAD
  13. CH_UP_DN
  14. DPAD

The transport controls XML in the example to the right contains the full set of possible transports. A driver can support all of these or a subset of these transports.

<capabilities>
    <transports>
        <supported>
            PLAY, PAUSE, STOP, SCAN_FWD, SCAN_REV, SKIP_FWD, SKIP_REV,
            RECORD, PG_UP, PG_DOWN, PRG_BTNS, KEYPAD, CH_UP_DN, DPAD
        </supported>
    </transports>
</capabilities>

Button Bar and Driver XML

To designate which transport control buttons appear on the Button Bar, the transports capabilities XML needs to include a <button_bar></button_bar tag.

Within the button bar XML is a <buttons></buttons> tag. This tag contains the buttons that will display in the button bar. Each button is defined further in the XML with a <button></button> tag that includes an id, name, command, type.

Element Description
id Identification used for the button. For example: PLAY. This id value is important as it used by a corresponding Proxy Variable to identify this button.
name Name used for the button. For example: Play. This text will be displayed in the button if no alternative icon is defined.
command The command that is sent to the Room or Proxy. For example: PLAY.
type Whether the command is sent to the Room or the Proxy. Values include ROOM or PROXY.
`<capabilities>
`    <transports>
`        <button_bar>
`            <buttons>
`                <button>
`                    <id>PLAY</id>
`                    <name>Play</name>
`                    <command>PLAY</command>
`                    <type>PROXY</type>
`                </button>
`                ...
`            </buttons>
`            <default_buttons>GUIDE, MENU, CANCEL, INFO></default_buttons>
`        <button_bar>
`        ...
`    </transports>
`    ...
`</capabilities>

Note the <default_buttons></default_buttons> XML in the example to the right. This tag can contain up to eight default buttons in a comma separated list.

Example image of the Controls in the Button Bar:

Media Dashboard and Driver XML

The ability to define what transport controls display on the Media Dashboard is supported. The Media Dashboard is shown when Navigators are displaying a single line "dashboard" view of transport controls. This requires the addition of a <dashboard></dashboard>tag to the transports XML section. Note that Media Dashboard buttons are always shown using an icon. See below for more information.

<capabilities>
    <transports>
        <dashboard>
            <buttons>
                <button>
                    <id>PLAY</id>
                    <icon>http://sampleiconURL.com</icon>
                    <name>Play</name>
                    <command>PLAY</command>
                    <type>PROXY</type>
                </button>
                ...
            </buttons>
            <default_large>SCAN_REV, PLAY, PAUSE, SSCAN_FWD</default_large>
            <default_small>SCAN_REV, PLAY, PAUSE, SCAN_FWD</default_small>
        </dashboard>
        ...
    </transports>
    ...
</capabilities>

Note the use of the default_large and default_small XML tags in the example to the right:

<default_large> - A comma separated list of ID values which match those defined in the button XML section. A maximum of 7 IDs are allowed. default_large is meant for large user interfaces such as tablets.

<default_small> - A comma separated list of ID values which match those defined in the button XML section. A maximum of 5 IDs are allowed. default_small is meant for smaller user interfaces such as phones.

Referencing Built In Icons for the Media Dashboard

Media Dashboard button icons are typically accessed using the <icon></icon> tag containing a URL. In addition to this, a small set of built in icons can be referenced by using the following “ID”s and omitting the "icon" tag from the definition:

Icon ID Icon
PLAY
PAUSE
STOP
CH_UP
CH_DOWN
SCAN_FWD
SCAN_REV
SKIP_REV
SKIP_FWD
RECORD

For example, to use the built in icon for PLAY, see the example to the right.

<buttons>                
  <button>
     <id>PLAY</id>
     <name>Play</name>
     <command>PLAY</command>
     <type>PROXY</type>
  </button>
 ...
</buttons>

Example image of the Icons in the Media Dashboard:

Proxy Interface

The Proxy Interface is used to update the Variables defined in the next section.

A driver can update the currently enabled buttons and transports by making SendToProxy calls. SendToProxy does not necessarily need to be called unless the driver wants to change the buttons. If no changes from the provided default values in the Variables are needed; the Capability XML can simply be added to the driver and no other calls need to be made.

The SendToProxy call supports the use of the following parameters:

Parameter Description
replace Replaces the entire list with the given list which is a comma separated list of button IDs.
add Add a single button. A position is required for this parameter.
remove Remove a single button.

Example

To update the large dashboard to show just buttons with the IDs of PLAY and PAUSE:

C4:SendToProxy(PROXY_BINDING, "UPDATE_TRANSPORTS_DASHBOARD_LARGE", {replace = "PLAY,PAUSE"})

Example

To update the small dashboard:

C4:SendToProxy(PROXY_BINDING, "UPDATE_TRANSPORTS_DASHBOARD_SMALL", {replace = "PLAY,PAUSE"})

Example

To update supported transport controls:

C4:SendToProxy(PROXY_BINDING, "UPDATE_TRANSPORTS_SUPPORTED", {replace = "PLAY,PAUSE"})

Example

To update button bar buttons:

C4:SendToProxy(PROXY_BINDING, "UPDATE_TRANSPORTS_BUTTONS", {replace = "PLAY,PAUSE"})

Example

To use the add parameter, a position must also be specified to add the button. This is a zero-based index. For example, to add PLAY at index 5:

C4:SendToProxy(PROXY_BINDING, "UPDATE_TRANSPORTS_DASHBOARD_LARGE", {add = "PLAY", position = 5})

Example

To remove the button with the ID of PLAY from the large dashboard:

C4:SendToProxy(PROXY_BINDING, "UPDATE_TRANSPORTS_DASHBOARD_LARGE", {remove = "PLAY"})

Proxy Variables

The following Variables are used by Navigators. These Variables, with the exception of TRANSPORTS_DEFINITION, are set by using the SendToProxy commands defined in the previous section. This causes the Proxy to set the Variable value. Navigators then read that Variable value which results in the correct transport elements being displayed on the Navigator interface.

Note that It is not necessary for your driver to write Variable values.

TRANSPORTS_DEFINITION

Allows Navigators to get new button definitions without a Navigator refresh call. This cannot be updated by using SendToProxy. It is updated through the driver’s Capabilities at initialization or a driver update.

Parameter Description
XML <transports></transports> xml from the driver capabilities. Defaults to the full <transports>..</transports> from the driver’s capabilities. Must be updated when the driver is updated.

TRANSPORTS_BUTTONS

Parameter Description
str Comma separated list of button IDs referencing the buttons in the <button_bar >section of the capabilities. The UIs would show the buttons in the order specified here. For example: "GUIDE, MENU, CANCEL, INFO”. Defaults to the data set specified in <default_buttons></default_buttons> XML.

TRANSPORTS_SUPPORTED

Parameter Description
str Comma separated list of transports. The UIs would show the buttons in the order specified here. Defaults to the data set specified in <supported></supported> XML. This can be updated to include different sets on the fly such as hiding play and showing pause or vice versa when play/pause state changes.

TRANSPORTS_DASHBOARD_SMALL

Dashboard to use on smaller devices. The UIs would show the buttons in the order specified here.

Parameter Description
str Comma separated list of IDs. IDs reference button definitions in the media_dashboard capability. This should be 5 buttons or less. Defaults to the "default_small" set of transports in the media_dashboard: "SCAN_REV, PLAY, PAUSE, SCAN_FWD”. Defaults to the data set specified in <default_small></default_small> XML.

TRANSPORTS_DASHBOARD_LARGE

Dashboard to use on larger devices.

Parameter Description
str Comma separated list of IDs. The IDs reference button definitions in the media_dashboard capability. This should be 7 buttons or less. Defaults to the "default_large" set of transports in the media_dashboard: "SKIP_REV, SCAN_REV, PLAY, PAUSE, SCAN_FWD, SKIP_FWD, RECORD”. Defaults to the data set specified in <default_large></default_large> XML.

Blind Proxy Commands

SET LEVEL TARGET

Requests a blind to go to a different position.

Signature

SET_LEVEL_TARGET ()

Parameter Description
Int LEVEL TARGET - Integer of level that includes or is between level closed and level open (or level open + level closed secondary if level closed secondary is used).
str Level Target Name - String of the level value, such as Open, Closed, Secondary Closed

Returns

None

SET MOVEMENT

Signature

SET_MOVEMENT ()

Parameter Description
num Enumeration of the blind movement.

Returns

None

SET TYPE

Sets the blind type for the proxy.

Signature

SET_TYPE ()

Parameter Description
INT Enumeration of the blind type.

Blind Types:

If set to -1 then a dealer can select a choice from a pulldown in the proxy property control. This Notification sends DataToUI of blind setup xml.

Returns

None

Blind Protocol Notifications

SET CAN STOP

Configuration Notification used by the protocol to inform the proxy if the blind supports stopping or not.

Signature

SET_CAN_STOP ()

Parameter Description
bool A boolean indicating if the blind control supports stop.

Returns

None

Usage Note

The blind level will be sent to the UI using a DataToUI as set can_stop_click = boolean. This Notification sends DataToUI of: blind_setup xml.

SET HAS LEVEL

Configuration Notification used by the protocol to inform the proxy that the driver does or does not support level control.

Signature

SET_HAS_LEVEL ()

Parameter Description
bool HAS LEVEL - Boolean indicating if level support is available
int LEVEL OPEN - Open value. Blinds without feedback, regardless of stop support, should use 0.
int LEVEL CLOSED - Closed value. Blinds without feedback and without a stop function should use 1.  Blinds without feedback but with stop function should use 2 as the value of 1 is to indicate an unknown state in the case that someone pressed up or down and then pressed stop before the blind was able to get to the target open/close state.
bool HAS LEVEL CLOSED SECONDARY - Boolean indicating if the blind is using a secondary closed level
int LEVEL CLOSED SECONDARY - Secondary closed value for blinds that can go both directions from an Open state.
bool LEVEL DISCRETE CONTROL - Boolean indicating if the blind control has discrete level input. If false a UI will only send the specific level_closed and level_open values to the proxy/driver but a driver can still notify of various levels interpolated based on movement duration/time in each direction or using another formula. If true, the driver should support all level values in the range.  This could be discrete percentages or even include using level values of 1,2,3,... to execute presets but the driver should always be developed for close (level_close) and open (level_open) levels respectively.

Returns

None

Usage Note

All parameters are optional. This Notification sends DataToUI of: blind_setup xml.

SET MOVEMENT

Configuration Notification used by the protocol to inform the proxy that the driver is a particular blind movement function.  If this is used, the proxy will disable the pull-down from being select-able by a dealer.

Signature

SET_MOVEMENT ()

Parameter Description
int Enumeration of the blind movement type.

Movement Types:

If set to -1 then a dealer can again select a choice from a pull-down in the proxy property control.

Returns

None

Usage Note

This Notification sends DataToUI of: blind_setup xml.

SET TYPE

Configuration Notification used by the protocol to inform the proxy that the driver is a particular blind type.  If this is used, the proxy will disable the pulldown from being selectable by a dealer.

Signature

SET_TYPE ()

Parameter Description
int Enumeration of the blind type.

Movement Types:

If set to -1 then a dealer can select a choice from a pulldown in the proxy property control.

Returns

None

Usage Note

This Notification sends DataToUI of: blind_setup xml.

STOPPED

State Notification used by the protocol to inform the proxy the blinds have stopped moving.  A Stop notification that uses the optional LEVEL parameter should be used if a blind is moving and changes direction.

Signature

STOPPED ()

Parameter Description
INT LEVEL - Where the blinds stopped at. This will also set the general level as well to this value.

Returns

None

Usage Note

This Notification Fires Director Event: Stop level_final is also updated to the value passed in through the level parameter. Sends DataToUI "Stopped" including: level - The level it stopped at.

MOVING

State Notification Used by the protocol to inform the proxy the blinds have started to move.

Signature

MOVING ()

Parameter Description
int LEVEL TARGET - Integer of the target level that the blinds are currently expected to stop at.
num RAMP RATE - Number of milliseconds it is expected to take to get to the level_target.
int LEVEL (optional) - Integer of the level the blind started moving from. If not specified, the proxy assumes the last level sent by a STOPPED Notification. This optional parameter should be sent in the case the blind was moving to a level but is interrupted/commanded to go to a different level.  Without specifying this parameter in an interruption case, Toggle on UIs and UI display of blind movement and direction will be inaccurate. Drivers might need to do a STOP or GET for hardware position before the blind direction is commanded to go to the new position in order to obtain an accurate LEVEL for this value of where the blind was before the new movement began.

Returns

None

Usage Note

This Notification Fires Director Event: Moving. Sends DataToUI: "Moving" including:

Blind Capabilities

can stop

Capability to stop movement of blinds

Signature

<can_stop></can_stop>

Parameter Description
bool True/False

Usage Note

This capability was delivered pre-2.9.0. It is still supported by the latest version of the proxy for drivers that do not have the has_level capbility defined.

Example

<capabilities>
   <can_stop>true</can_stop>
</capabilities>

driver handles toggle

Capability to stop movement of blinds

Signature

<driver_handles_toggle></driver_handles_toggle>

Parameter Description
bool True/False

Usage Note

This capability defaults to false. If false, the proxy will handle the toggle commands (which sends SET_LEVEL_TARGET commands to the driver) or if true will send a LEVEL_TOGGLE command to the driver so the driver can handle toggle as it desires.

We strongly recommend driver developers do not set this to true unless they absolutely must. Inconsistencies will occur if there are a mix of different driver types in a blind group. This will cause blinds to move differently when that group is commanded to toggle.  

The blind proxy has logic that treats toggle the same as lights in Control4.  If a blind is not moving but open any amount and someone presses toggle, the proxy will always send a SET_LEVEL_TARGET of the closed value.  This is due to the high possibility of someone entering a room and not knowing what direction the blind previously moved. However, if a blind is currently in motion and someone presses toggle, the proxy will send SET_LEVEL_TARGET of the opposite direction that the blind is moving. This has the most natural use of toggle for real-world scenarios.

Example

<capabilities>
   <driver_handles_toggle>true</driver_handles_toggle>
</capabilities>

has level

A boolean capability indicating if the blind can support reporting of discrete level values through Notifications.  Default to False in order for older drivers to work.

Signature

<has_level></has_level>

Parameter Description
bool True/False

Usage Note

If stop is not supported 0 is closed and 1 is open.

If stop is supported 0 is closed and 1 is somewhere in the middle depending when stop is pressed and 2 for open.

If a blind supports closed, 4 distinct middle levels, and open then 0 is closed, 1-4 would be the distinct levels, and 5 would be open.

Reporting discrete values is possible even if accepting discrete commands is not. Presets, timers, or other formulas can be used to report discrete values.

Example

<capabilities>
    <has_level>true</has_level>
</capabilities>

level closed

Integer indicating the closed level of the control surface. Default to 0. This capability is only needed if has_level is set and the value is other than 0. The value passed in this capability should be less than the value for level_open.

Signature

<level_closed></level_closed>

Example

<capabilities\>
    <level_closed>true</level_closed>
</capabilities>

level open

Integer indicating the open level of the control surface. Defaults to 1 and must be a higher integer than level_closed. This capability is only needed if has_level is set and the value is other than 1.  For example, if the blind control supports adjustments every 5%, use 20.)

Signature

<level_open></level_open>

Example

<capabilities>
    <level_open>1</level_open>
</capabilities>

level unknown

Integer indicating the level value that is to be specified as "unknown blind position".  This is often, but not always, a value outside of the range of valid level values.  This allows a driver that is initializing (not yet communicating with the blind), lost communication or for any other reason does not know the exact location of the blind to notify Director that the current level is unknown.

Signature

<level_unknown></level_unknown>

Example

<capabilities\>
    <level_unknown>11</level_unknown>
</capabilities>

level discrete control

Boolean indicating if a control surface can be set by a COMMAND to something other than the level for closed and the level for open.

If false, a UI will only send level_closed and level_open integer values to the proxy/driver. However, a driver could still notify various levels interpolated based on movement and or duration/time in each direction or using another formula.

If true, the driver should support all level values in the level range. This could be discrete percentages or even include using level values of 1,2,3,... to execute presets. However, the min (0) and max (X) should always be programmed for close and open levels respectively.

Signature

<level_discrete_control</level_discrete_control>

Example

<capabilities>
    <level_discrete_control>true</level_discrete_control>
</capabilities>

level closed secondary

Integer indicating how far past open `(levelopen) the blind can go to a second closed state.   No default value exists for this capability and drivers should not include level_closed_secondary if a secondary closed position does not exist.

An example case is a full range louver with 11 positions (0% to 100% with 10% resolution) that has:

This gives the full close-open-close range of 0 to 10.  

It should be noted that a generic "Close" UI or Composer Programming commands will send the level_closed value for "Close".  No default value exists for this capability and drivers should not include level_closed_secondary if a secondary closed position does not exist.

Signature

<level_closed_secondary></level_closed_secondary>

Example

<capabilities>
    <level_closed_secondary>11</level_closed_secondary>
</capabilities>

movement

Integer enumeration of a movement function for the blind.  If set in the driver, the pull-down to select this value will be disabled in the proxy. For louvers and other slate type objects, the movement observed is that of the forward/leading (aka nearest to the person viewing the movement) edge of the louver or slate.  

An example for a general louver would be where the primary closed position for the leading edge is Down, so Up (Middle) would be Open, and an optional Secondary Closed would be where the front edge is furthest up.

Signature

<movememt></movement>

Parameter Description
0 Open/Close (Open/Close)
1 Up to Down (Up is open, Down is closed)
2 Down to Up (Down is open, Up is Closed)
3 Out to In (Out is Open, In is Closed)
4 Left to Right (Left is Open, Right is Closed)
5 Right to Left (Right is Open, Left is Closed)

Example

<capabilities>
    <movememt>4</movememt>
</capabilities>

type

Integer representing the enumeration of a type of blind. If set in a driver, the pull-down to select this value will be disabled in the proxy

Signature

<type></type>

Parameter Description
0 Shade (Default as all coverings are considered to be Shades in the industry)
1 Group
2 Blind (Since a blind has slates/louvers that often move, a blind can be bound to a louver movement for association)
3 Louvre
4 Curtain
5 Shutter
6 Blackout
7 Opaque Glass
8 Awning
9 Door
10 Screen

Example

<capabilities>
    <type>6</type>
</capabilities>

Blind Events

The following Events are included with the 2.9.0 and later releases. The events fired by the proxy have to deal with changes in the blind itself. They include:

Open (ID=1) - Fired when the blinds are opened from a closed state.

Fully Closed (ID=2) - Fired when the blinds are fully closed from an open state.

Stopped (ID=3) - Fired when the stop notify arrives at proxy.

Fully Opened (4) - Fired when the blinds are at their full open state

Moving (ID=5) - Fired when the moving notify arrives at proxy.

Level_Changed (ID=6) - Fired when the level changes.

Level_Target_Changed (ID=7) - Fired when the level end changes.

Opening (ID=8) - Fired when the blinds begin to open

Closing (ID=9) - Fired when the blinds begin to close.

Blind Variables

Registered Variables included in post 2.9.0 releases include:

Open (ID=1000) - A boolean indicating if the control is open.  Will be true when level is at level_open.

Fully Closed (ID=1001) - A boolean indicating if the control is fully closed.  Will be true when level is at level_closed.

Stopped (ID=1002) - A boolean indicating if the blind is stopped.  On drivers that support stop and extended functionality, drivers must send stopped = false when the hardware starts to move and stopped = true once it has finished moving.

Fully Open (ID=1003) - A boolean indicating if the control is fully open.

Level (ID=1004) - An integer indicating the blind level (level range is potentially unique per driver.

Target Level (ID=1005) - An integer indicating the target blind level when the hardware is to stop.  This is used to know if a driver is currently going up or down.

Type (ID=1006) - A string representation of the enumeration for the type.

Movement (ID=1007) - A string representation of the enumeration for the movement.

Opening (ID= 1008) - A boolean indicating if the control is in the process of opening.

Closing (ID= 1009) - A boolean indicating if the control is in the process of closing.

Camera Proxy Commands

CAMERA OFF

Command to turn camera image capturing off.

Signature

CAMERA_OFF ()

Parameters

None

Returns

None

CAMERA ON

Command to turn camera image capturing on.

Signature

CAMERA_ON ()

Parameters

None

Returns

None

CHECK ADDRESS PORT

Composer Pro command used in the Camera Test/Validation area. Verifies the camera Address and Port ID.

Signature

CHECK_ADDRESS_PORT ()

Parameter Description
str Address to verify.
int Port ID to verify.

Returns

None

CHECK URL

Composer Pro command used in the Camera Test/Validation area. Verifies the camera 's URL components.

Signature

CHECK_URL ()

Parameter Description
str A Mode: SNAPSHOT, MJPEG OR H264
str Address. The address to verify.
int Port ID to verify.
str Query. The path/query of the URL.

Returns

None

GET MJPEG QUERY

Command that is initiated in Composer Pro and immediately returns a block of XML information. It returns the query string needed to create the URL for MJPEG server push request.

Signature

GET_MJPEG_QUERY ()

Parameter Description
num The desired resolution x-axis value.
num The desired resolution y-axis value.
num The delay in milliseconds between pushed frames
str Query. The path/query of the URL.

Returns

XML: <mjpeg_query_string> url-query-string</mjpeg_query_string>

GET PROPERTIES

Command called once by a UI entity to learn how to access a camera. It returns a block of XML reporting the properties of the camera.

Signature

GET_PROPERTIES ()

Returns

 <camera_properties>
  <address >hostname or internet address</address>
  <http_port>port</http_port>
  <rtsp_port>port</rtsp_port>
  <authentication_required>true or false</authentication_required>
  <authentication_type>BASIC</authentication_type>
  <username>~username~</username>
  <password>password</password>
  <publicly_accessible>true or false</publicly_accessible>
</camera_properties>

GET RTSP H264 QUERY STRING

Command that is initiated in Composer Pro and immediately returns a block of XML information. It returns the query string needed to create the URL for RTSP H264 stream request.

Signature

GET_RTSP_H264_QUERY ()

Parameter Description
num The desired resolution x-axis value.
num The desired resolution y-axis value.
num The delay in milliseconds between pushed frames
str Query. The path/query of the URL.

Returns

XML: <rtsp_h264_query_string> url-query-string</rtsp_h264_query_string>

GET SNAPSHOT QUERY STRING

Command that is initiated in Composer Pro and immediately returns a block of XML information. It returns the query string needed to create the URL for HTTP snapshot request.

Signature

GET_SNAPSHOT_QUERY_STRING ()

Parameter Description
SIZE_X The desired resolution x-axis value.
SIZE_Y The desired resolution y-axis value.

Returns

XML: <snapshot_query_string>url-query-string</snapshot_query_string>

HOME

Move the camera to its home position.

Signature

HOME ()

Parameters

None

Returns

None

MOVE TO

Have the camera move to location x and y within the specified window.

Signature

MOVE_TO ()

Parameter Description
int Width
int Height
int The desired x-axis value.
int The desired y-axis value.

Returns

None

NIGHT MODE

Enable/disable night mode.

Signature

NIGHT_MODE ()

Parameter Description
bool True/False

Returns

None

PAN LEFT

Pan to the left.

Signature

PAN_LEFT ()

Parameters

None

Returns

None

PAN RIGHT

Pan to the right.

Signature

PAN_RIGHT ()

Parameters

None

Returns

None

PAN SCAN

Have the camera execute a complete scan from left to right.

Signature

PAN_SCAN ()

Parameters

None

Returns

None

PRESET

Set the camera to preset location.

Signature

NIGHT_MODE ()

Parameter Description
num Index Unit. Valid values: 1 – n, where n is max preset defined by capabilities

Returns

None

SET ADDRESS

Set the camera address.

Signature

SET_ADDRESS ()

Parameter Description
STR Camera Address

Returns

None

SET AUTHENTICATION REQUIRED

Composer Pro command to set whether or not authentication is required

Signature

SET_AUTHENTICATION_REQUIRED ()

Parameter Description
bool True/False

Returns

None

Usage Note

See the DriverWorks API documentation for URL Interface API: POST for Authentication information.

SET AUTHENTICATION TYPE

Composer Pro command to set whether or not authentication is required

Signature

SET_AUTHENTICATION_TYPE ()

Parameter Description
str BASIC or DIGEST

Returns

None

Usage Note

Note that as of 2.5.3 only Basic Authentication is supported. See the DriverWorks API documentation for URL Interface API: POST for Authentication information.

SET USERNAME

Composer Pro command to set the Authentication username.

Signature

SET_USERNAME ()

Parameter Description
str Username

Returns

None

Usage Note

See the DriverWorks API documentation for URL Interface API: POST for Authentication information.

SET HTTP PORT

Composer Pro command to set the HTTP Port

Signature

SET_HTTP_PORT ()

Parameter Description
int Port ID

Returns

None

SET RSTP PORT

Composer Pro Command to set the Rapid Spanning Tree Protocol port.

Signature

SET_RSTP_PORT ()

Parameter Description
int Port ID

Returns

None

SET PASSWORD

ComposerPro command to set the Authentication password.

Signature

SET_PASSWORD ()

Parameter Description
str Password

Returns

None

SET PUBLICLY ACCESSIBLE

Composer Pro command to set whether or not the camera can be accessed from public Internet.

Signature

SET_PUBLICLY_ACCESSIBLE ()

Parameter Description
bool True/False

Returns

None

SET SNAPSHOT REFRESH RATE

Sets image refresh rate in seconds.

Signature

SET_SNAPSHOT_REFRESH_RATE ()

Parameter Description
num Rate Unit in seconds.

Returns

None

TILT DOWN

Tilt camera down.

Signature

TILT_DOWN ()

Parameters

None

Returns

None

TILT SCAN

Have the camera execute a complete scan from top to bottom.

Signature

TILT_SCAN ()

Parameters

None

Returns

None

TILT UP

Tilt camera down.

Signature

TILT_UP ()

Parameters

None

Returns

None

USE DEFAULTS

Command to use the camera's factory defaults as defined by the driver capabilities.

Signature

USE_DEFAULTS ()

Parameters

None

Returns

None

ZOOM IN

Zoom canera in.

Signature

ZOOM_IN ()

Parameters

None

Returns

None

ZOOM OUT

Zoom camera out.

Signature

ZOOM_OUT ()

Parameters

None

Returns

None

Camera Protocol Notifications

ADDRESS CHANGED

Notification that the camera's address has a changed. Sent from the API OnNetworkBindingChanged.

Signature

ADDRESS_CHANGED ()

Parameter Description
str New address value.

Returns

None

HTTP PORT CHANGED

Notification that the HTTP port has changed. Used rarely but applicable in instances where the protocol driver sets the HTTP port.

Signature

HTTP_PORT_CHANGED ()

Parameters

None

Returns

None

HTTPS PORT CHANGED

Used to update the HTTPS port that will be used when constructing HTTPS URLs.

Signature

HTTPS_PORT_CHANGED ()

Parameter Description
int PORT - The new HTTPS port to be used.

Returns

None

DYNAMIC CAPABILITY CHANGED

Used to Notify the Proxy that the driver would like to change a capabilities value. This is only applicable to capabilities denoted as "Yes" in the Dynamic Capabilities section of this Proxy’s Capabilities section.

Signature

DYNAMIC_CAPABILITY_CHANGED ()

Parameter Description
str Capability - Capability string as defined in the c4i/.c4z. The value of this parameter would be the value as denoted in the .c4i/.c4z as well.

Returns

None

PROPERTY DEFAULTS

Notification sent from the protocol driver through ON DRIVER LATE INIT containing the camera's default properties

Signature

PROPERTY_DEFAULTS ()

Parameter Description
num HTTP Port. Default port is 80.
num RTSP Port. Default port is 554.
bool AUTHENTICATION_REQUIRED True/False.
str AUTHENTICATION_TYPE “BASIC” or “DIGEST”.
str Username - deafult_username
str Password - deafult_password

Returns

None

USE HTTPS CHANGED

Used to update the proxy to tell it to generate HTTPS URLs instead of HTTP URLs.

Signature

USE_HTTPS_CHANGED ()

Parameter Description
boolean USE_HTTPS - A flag that indicates an HTTPS URL should be generated instead of an HTTP URL.

Returns

None

Camera Properties

ADDRESS

The camera Hostname or Internet address. Displayed on the Camera Driver's Properties page in Composer Pro.

ASPECT RATIO

Allows for the setting of the desired aspect ratio for camera queries. Navigators use this value when sending a request to a camera. Displayed on the Camera Driver's Properties page in Composer Pro.

Populated by the defined:1 aspect_ratios_capability.

ASPECT RATIO LIST

Comma-delimited list of possible aspect ratios that the camera supports. The values here are displayed on the Camera Driver's Properties page in Composer Pro.

AUTHENTICATIONREQUIRED

Established whether or not authentication is required. Displayed on the Camera Driver's Properties page in Composer Pro.

AUTHENTICATIONTYPE

The type of authentication: "BASIC" or "DIGEST" Displayed on the Camera Driver's Properties page in Composer Pro. Note that prior to O.S Release 2.5.3 only Basic Authentication was supported.

HTTP PORT

The camera’s HTTP port. Displayed on the Camera Driver's Properties page in Composer Pro.

PASSWORD

The password value displayed on the Camera Driver's Properties page in Composer Pro.

PUBLICLYACCESSIBLE

Can the camera be accessed on public Internet. Displayed on the Camera Driver's Properties page in Composer Pro.

RTSP PORT

The camera’s RTSP port to setup H.264 stream. Displayed on the Camera Driver's Properties page in Composer Pro.

SNAPSHOT REFRESH RATE

The amount of time in seconds for the camera to refresh its image signal. Displayed on the Camera Driver's Properties page in Composer Pro.

USERNAME

The username value. This is displayed on the Camera Driver's Properties page in Composer Pro.

Additional Camera Proxy Information

User Interfaces

The Installer may need to adjust camera configuration based on the performance that they’re seeing at the installation. Here are the Control4 user interfaces that display camera streams:

Codec

Control4 only supports h.264 over RTSP.

Resolution

1280x720 is supported across all devices currently.

Frame Rate

Frame rate and iFrame intervals will vary based on location and content. If the content is consistently changing, a low iframe interval is recommended as the iframe is updated more often. On Screen Display doesn’t support a high frame rate. It is important to understand that Frame Rate is dependent on both the Control4 system configuration and what the cameras are monitoring. Because of this, exact guidelines are difficult to provide. However, a base line configuration as shown below may provide a good starting point.

Camera Capabilities

address readonly

Defaults to false.

Signature

<address_readonly></address_readonly>

Example

<capabilities>
    <address_readonly>false</address_readonly>
</capabilities>

aspect ratio

Comma-delimited list of possible aspect ratios that the camera supports. If this capabilities is not defined in the c4i/c4z file, it will default to ‘16x9,4x3’ for aspect_ratios.

Signature

<aspect_ratio></aspect_ratio>

Example

<capabilities>
    <aspect_ratio>false</aspect_ratio>
</capabilities>

default aspect ratio

The expected ratio that the camera will use at start up. The value in the default_aspect_ratio capability should be one of the entries in the aspect_ratios list. If this capabilities is not defined in the c4i/c4z file, it will default to 16x9.

Signature

<deafult_aspect_ratio></default_aspect_ratio>

Example

<capabilities>
    <default_aspect_ratio>false</default_aspect_ratio>
</capabilities>

default authentication required

Defaults to false.

Signature

<default_authentication_required></default_authentication_required

Example

<capabilities>
    <default_authentication_required>false</default_authentication_required>
</capabilities>

default authentication type

Defaults to BASIC.

Signature

<default_authentication_type></default_authentication_type>

Example

<capabilities>
    <default_authentication_type>BASIC</default_authentication_type>
</capabilities>

default http port

Defaults to 80.

Signature

<default_http_port></default_http_port>

Example

<capabilities>
    <default_http_port>80</default_http_port>
</capabilities>

default password

Defaults to “password”.

Signature

<default_password></default_password>

Example

<capabilities>
    <default_password>80</default_password>
</capabilities>

default rtsp port

Defaults to 554.

Signature

<default_rtsp_port></default_rtsp_port>

Example

<capabilities>
    <default_rtsp_port>554</default_rtsp_port>
</capabilities>

default username

Defaults to “username”.

Signature

<default_username></default_username>

Example

<capabilities>
    <default_username>username</default_username>
</capabilities>

has pan

True/False. Default is False.

Signature

<has_pan></has_pan>

Example

<capabilities>
    <has_pan>false</has_pan>
</capabilities>

has pan scan

True/False. Default is False.

Signature

<has_pan_scan></has_pan_scan>

Example

<capabilities>
    <has_pan_scan>false</has_pan_scan>
</capabilities>

has tilt

True/False. Default is False.

Signature

<has_tilt></has_tilt>

Example

<capabilities>
    <has_tilt>false</has_tilt>
</capabilities>

has tilt scan

True/False. Default is False.

Signature

<has_tilt_scan></has_tilt_scan>

Example

<capabilities>
    <has_tilt_scan>false</has_tilt_scan>
</capabilities>

has zoom

True/False. Default is False.

Signature

<has_zoom></has_zoom>

Example

<capabilities>
    <has_zoom>false</has_zoom>
</capabilities>

has home

True/False. Default is False.

Signature

<has_home></has_home>

Example

<capabilities>
    <has_home>false</has_home>
</capabilities>

has night mode

True/False. Default is False.

Signature

<has_night_mode></has_night_mode>

Example

<capabilities>
    <has_night_mode>false</has_night_mode>
</capabilities>

modes

Signature

<modes></modes>

Parameter Description
str SNAPSHOT – HTTP snapshot
str MJPEG– HTTP motion jpeg
str H264 – RTSP/(UDP)RTP H.264
str H264I – RTSP/(TCP)RTP Interlaced H.264

Example

<capabilities>
    <modes>MJPEG</modes>
</capabilities>

number presets

Signature

<number_presets></number_preets>

Parameter Description
num Number of Presets

Usage Note

Default is 0. Note that Navigator devices will truncate this value to a number in which they support.

Example

<capabilities>
    <number_presets>6</number_presets>
</capabilities>

show test url

Signature

<show_test_url></show_test_url>

Parameter Description
bool True/False

Usage Note

Default is True.

Example

<capabilities>
    <show_test_url>true</show_test_url>
</capabilities>

use http for h264

Signature

<use_http_for_h264> </use_http_for_h264> 

Parameter Description
bool True/False

Usage Note

Default is False.

Example

<capabilities>
    <use_http_for_h264>true</use_http_for_h264>
</capabilities>

Fan Proxy Commands

ON

Turn the fan on to the designated preset level. Another possible behavior would be to turn it back on to the most recent on speed.

Signature

ON ()

Parameters

None

Returns

None

OFF

Turn the fan OFF.

Signature

OFF ()

Parameters

None

Returns

None

TOGGLE

If the fan is on, turn it off. If the fan is off, do the same behavior as the ON command.

Signature

TOGGLE ()

Parameters

None

Returns

None

DESIGNATE PRESET

Specifies which fan preset value should be the default one to go to when an ON or TOGGLE command is sent.

Signature

DESIGNATE_PRESET ()

Parameter Description
num PRESET valid values: 1 – N

Returns

None

SET SPEED

Set the current speed of the fan to the designated level. Setting to 0 will turn the fan off.

Signature

SET_SPEED ()

Parameter Description
num SPEED valid values: 0 – N

Returns

None

CYCLE SPEED UP

Bump the fan up to the next higher speed from its current setting. It would be up to the protocol driver to decide if it wraps or stops when we’re already at the highest speed.

Signature

CYCLE_SPEED_UP ()

Parameters

None

Returns

None

CYCLE SPEED DOWN

Bump the fan down to the next lower speed from its current setting. It would be up to the protocol driver to decide if it wraps or stops when the fan is currently off.

Signature

CYCLE_SPEED_DOWN ()

Parameters

None

Returns

None

SET DIRECTION

Tell the fan which direction to spin. This command would only be valid if the can_reverse capability is set to true in the driver file.

Signature

SET_DIRECTION ()

Parameter Description
str FORWARD/REVERSE

Returns

None

TOGGLE DIRECTION

Reverse the direction which the fan is currently spinning. This command would only be valid if the can_reverse capability is set to true in the driver file.

Signature

TOGGLE_DIRECTION ()

Parameters

None

Returns

None

GET CURRENT STATE

Tell the protocol to report its current values. This wouldn’t be available through programming, but generated by the proxy to get its initial settings.

Signature

GET_CURRENT_STATE ()

Parameters

None

Returns

None

GET STATE

Command handled by the proxy driver. Immediately returns a block of XML information to the caller. Reports the current state of the device.

Signature

GET_STATE ()

Parameters

None

Returns

None

Example

<fan_state>
  <current_speed>3</current_speed>
  <is_reversed>false</is_reversed>
</fan_state>

GET SETUP

Command handled by the proxy driver. Immediately returns a block of XML information to the caller. Usually called just once by a UI entity to know how to setup the UI. This would report such things as how many settings the device has and what the name of those settings are.

Signature

GET_SETUP ()

Parameters

None

Returns

None

Example

<fan_setup>
   <speeds_count>4</speeds_count>
   <speed_names>Low,Low Medium,Medium High,High</speed_names>
   <can_reverse>false</can_reverse>
   <can_set_preset>true</can_set_preset>
   <preset_speed>3</preset_speed>
</fan_setup>

Fan Protocol Notifications

CURRENT SPEED

Received from the protocol driver when the fan speed changes. This would also happen when the fan turned off because it would be set to speed 0.

Signature

CURRENT_SPEED ()

Parameter Description
int SPEED valid values: 0 - N

Returns

None

DIRECTION

Received from the protocol driver when the fan direction changes.

Signature

DIRECTION ()

Parameter Description
str FORWARD/REVERSE

Returns

None

PRESET SPEED

Received from the proxy when the preset speed changes.

Signature

PRESET_SPEED ()

Parameter Description
int SPEED valid values: 1 - N

Returns

None

ON

Received from the protocol when the power goes from off to on. The proxy would assume that the fan just went to its preset speed. Would not be required, but could be used if the fan only has one speed.

Signature

ON ()

Parameters

None

Returns

None

OFF

Received from the protocol when the power goes from on to off. Would not be required, but could be used if the fan only has one speed.

Signature

OFF ()

Parameters

None

Returns

None

Fan Capabilities

can reverse

Signature

<can_reverse></can_reverse>

Parameter Description
bool TRUE/FALSE. Defaults to False.

Example

<capabilities>
   <can_reverse>true</can_reverse>
</capabilities>

can set preset

Signature

<can_set_preset></can_set_preset>

Parameter Description
bool TRUE/FALSE. Defaults to False.

Example

<capabilities>
   <can_set_preset>true</an_set_preset>
</capabilities>

discrete levels

Signature

<discrete_levels></discrete_levels>

Parameter Description
num 0 to N. Defaults to 1. A count of 0 would mean that the speeds are analog rather than discreet.

Example

<capabilities>
   <discrete_levels>1</discrete_levels>
</capabilities>

preset speed

Signature

<preset_speed></preset_speed>

Parameter Description
num 1 to N. Defaults to the highest available speed.

Example

<capabilities>
   <preset_speed>1</preset_speed>
</capabilities>

speed names

Signature

<speed_names></speed_names>

Parameter Description
num Default for 1 is “On”
num Default for 2 is “Low,High”
num Default for 3 is “Low,Medium,High”
num Default for 4 is “Low,Medium Low,Medium High,High”
num Default for 5 is “Low,Medium Low,Medium,Medium High,High”
num Default for >5 is ““Level 1,Level2, … Level N”

Example

<capabilities>
   <speed_names>3</speed_names>
</capabilities>

Fan Conditionals

Is On

Parameters

None

Returns

Returns true if the fan is on at any speed.

Is Off

Parameters

None

Returns

Returns true if the fan is off.

Current Speed Equal/NotEqual

Parameter Description
num SPEED value

Returns

True if the current speed is equal to (or not equal) to the reference number

Is Reversed

Parameters

None

Returns

Return true if the fan is spinning in reverse. This would only be available if the can_reverse capability is set to true in the driver file.

Fan Events

Fan Events

The following Events are supported by the Fan Proxy. The events fired by the proxy have to deal with changes in the fan itself. They include:

turned_on - Fired when the power goes from off to on.

turned_off - Fired when the power goes from on to off.

speed_changed - Fired when the speed number changes. Since turning on or off also involves a change of speed this would also fire when the fan turns on or off.

direction_changed - Fired when the fan spin direction changes. This would only be available if the can_reverse capability is set to true in the driver file.

Fan Variables

Fan Variables

The following Variables are supported by the Fan Proxy. They include:

Is On - Boolean: Read/Write

Current Selected Speed - Unsigned Long: Read/Write

Is Reversed - Boolean: Read/Write

Current Preset- Unsigned Long: Read/Write

Intercom Proxy Best Practices

OVERVIEW

Overview The Intercom Proxy interface is defined in terms of Commands, Requests and Notifications, each of which are described in this section of the proxy and Protocol Guide.

Intercom Proxy Commands are issued by a proxy consumer and may or may not result in an asynchronous notification in response. Commands typically change state of the Intercom Proxy, or other components of the intercom architecture.

Intercom Proxy Requests are issued from a proxy consumer with the expectation of getting a response from the protocol. Requests do not change state of the intercom proxy or any other component of the architecture. Notifications are sent from the intercom proxy to the intercom consumer asynchronously, and indicate a state change in the intercom proxy or one of its related architecture components.

All communication through the proxy interface is asynchronous. Even request responses, such as getting a list of known intercom devices, are returned asynchronously with respect to the request for that data.

Storing Session IDs

Many intercom API commands and requests require sessionId as an input parameter. The value for this parameter is provided by the intercom proxy in response to issuing a START_CALL command, and is included in the resulting OUTGOING_CALL and INCOMING_CALL notifications. The intercom proxy consumer is responsible for storing the sessionId returned with these notifications for use in subsequent commands and requests.

Using the RemoteAor Property

When the “remoteAor” parameter is used in a notification or command, the value is always the address of record of the other intercom device participating in an intercom call. For example, consider that intercom device A has address of record of “sip-user-A@192.168.1.123” and intercom device B has an address of record of “sip-user-B@192.168.1.123”. Intercom device A initiates a call with intercom device B, which results in an INCOMING_CALL notification on intercom device B. When intercom device B issues the ACCEPT_CALL command, which takes remoteAor as a parameter, intercom device B should use “sip-user-A@192.168.1.123” (the address of record of intercom device A, or the initiator) as the value of this parameter. Likewise, when intercom device A receives the CALL_ACCEPTED notification, it will contain a remoteAor property that has the value of the address of record of intercom device B, or “sip-user-B@192.168.1.123”.

Intercom Proxy Settings

Exclude from Navigator

This setting is used to control whether or not an intercom endpoint is displayed on the Navigator Landing Page. It can be used to hide endpoints from the user interface so that they can only be accessed from programming.

Do Not Disturb

This setting is used to control whether or not an intercom endpoint can receive incoming calls; it has no effect on the endpoint’s ability to make an outgoing call.

Auto Answer

This setting is used to control whether or not an intercom endpoint automatically answers incoming calls.

Send Video

This setting is used to control whether or not an intercom endpoint automatically sends video when it starts or receives a call; if the has_camera capability is false, this setting has no effect.

Monitor Mode

This setting is used to control whether or not an intercom endpoint is in monitor mode; a monitor mode call works like a baby monitor; it will quietly auto answer the incoming call on the receiver's (monitored) endpoint, the initiator's (monitoring) endpoint is automatically muted so that there is no transmission of sound to the monitored endpoint. The initiator can un-mute the call anytime two way communications are needed. Endpoints with monitor enabled will not receive broadcast calls, even if they are specified in the call group used for the broadcast.

Monitor mode also has a feature that allows the call to be taken over by different endpoint without having to end the original call. This feature is allows the user to continue to monitor a particular endpoint as they move from one room to another.

Ringer Volume

This setting is used to control the ringer volume level of an intercom endpoint.

Speaker Volume

This setting is used to control the speaker volume level of an intercom endpoint.

Microphone Gain

This setting is used to control microphone gain level of an intercom endpoint. Control4 intercom endpoints do not support microphone gain adjustments; this setting is provided for 3rd party use.

Show Main Video

This setting is used to control whether or not an intercom endpoint will display the main video window when the endpoint is in a call. If the has_camera capability is false, this setting has no effect.

Show Mirror Video

This setting is used to control whether or not an intercom endpoint will display the mirror video window when the endpoint is in a call. If the has_camera capability is false, this setting has no effect.

Camera Enabled

This setting is used to control whether or not an intercom endpoint’s camera will be used when the endpoint is in a call; if the has_camera capability is false, this setting has no effect.

AEC Enabled

This setting is used to control whether or not an intercom endpoint will use conservative auto echo cancelation (AEC) when the endpoint is in a call.

If the can_set_aec capability is false, this setting has no effect.

Play Door Chime

This setting is used to control whether or not an intercom endpoint will use the door chime sound effect when a call is received from a door station. If this setting is disabled the endpoint will ring normally when a door station call is received.

Intercom Call Commands

ACCEPT CALL

This command may be issued by the receiver of a call invitation (i.e. an INCOMING_CALL notification) and causes the call associated with the given session id to be accepted. This command will result in a CALL_ACCEPTED notification being sent to both the initiator and the receiver of the call.

Signature

ACCEPT_CALL ()

Parameter Description
num DEVICE_ID - The proxy ID of the caller
num REMOTE_DEVICE - The proxy ID of the callee
num SESSION_ID - The session ID of the call
num AUDIO - The requested audio cap for the call.
num VIDEO - The requested video cap for the call.

Returns

None

END CALL

This command can be issued by either the initiator or receiver and causes the indicated session to be ended. This command will result in a CALL_ENDED notification being sent to both the initiator and the receiver of the call. For broadcast calls, when the caller ends the call the remoteAor should be set to the value “broadcast” (without the quotes)

Signature

END_CALL ()

Parameter Description
num DEVICE_ID - The proxy ID of the caller
num REMOTE_DEVICE - The proxy ID of the callee
num SESSION_ID - The session ID of the call

Returns

None

MUTE CALL

This command can be issued by either the initiator or receiver; the endpoint of the issuer will be muted or un-muted, depending on the value of the flag

Signature

MUTE_CALL ()

Parameter Description
bool muteAudio - A Boolean flag indicating whether to mute or un-mute the indicated session. (0=false, 1=true)

Returns

None

Example

<MUTE_CALL>
   <muteAudio>[0]</muteAudio>
</MUTE_CALL>

PAUSE CALL

This command can be issued by either the initiator or receiver and causes the call associated with the indicated session to be placed on hold (or paused). This command will result in a CALL_PAUSED notification being sent to both the initiator and the receiver of the call.

Signature

PAUSE_CALL ()

Parameter Description
num DEVICE_ID - The proxy ID of the caller
num REMOTE_DEVICE - The proxy ID of the callee
num SESSION_ID - The session ID of the call

Returns

None

PLAY DOOR CHIME

This command can be issued by any device to play the currently defined door chime sound effect on that device.

Signature

PLAY_DOOR_CAHIME ()

Parameters

None

Returns

None

REJECT CALL

This command may be issued by the receiver of a call invitation and causes the call associated with the given session id to be rejected (ended). This command will result in a CALL_REJECTED notification being sent to both the initiator and the receiver of the call.

Signature

REJECT_CALL ()

Parameter Description
num DEVICE_ID - The proxy ID of the caller
num REMOTE_DEVICE - The proxy ID of the callee
num SESSION_ID - The session ID of the call

Returns

None

RESUME CALL

This command can be issued by an intercom device that has already paused the call associated with the indicated session id. This command will result in a CALL_RESUMED notification being sent to both the initiator and the receiver of the call.

Signature

RESUME_CALL ()

Parameter Description
num DEVICE_ID - The proxy ID of the caller
num REMOTE_DEVICE - The proxy ID of the callee
num SESSION_ID - The session ID of the call

Returns

None

START BROADCAST CALL

This command is issued by the initiator of a new broadcast call to a pre-defined group of intercom devices. The command will result in an OUTGOING_CALL notification to the initiator and an INCOMING_CALL notification to the receiver.

Signature

START_BROADCAST_CALL ()

Parameter Description
num DEVICE_ID - The proxy ID of the caller
num AUDIO - The requested audio cap for the call.
num VIDEO - The requested video cap for the call.
num GROUP_ID - The group ID of the group being called

Returns

None

START CALL

Handles the start call command.

Signature

START_CALL ()

Parameter Description
num DEVICE_ID - The proxy ID of the caller
num REMOTE_DEVICE_ID - The proxy ID of the callee
num AUDIO - The requested audio cap for the call.
num VIDEO - The requested video cap for the call.
num RING - The ring parameter for the call

Returns

None

START CUSTOM CALL

Handles the start monitor call command

Signature

START_CUSTOM_CALL ()

Parameter Description
num DEVICE_ID - The proxy ID of the caller
num AUDIO - The requested audio cap for the call.
num VIDEO - The requested video cap for the call.
num DEVICES - The devices in the custom call

Returns

None

START MONITOR CALL

This command is issued by the initiator of a new monitoring call to a specified receiver. The receiver must be in monitor mode. The command will result in an OUTGOING_CALL notification to the initiator and an INCOMING_CALL notification to the receiver

Signature

START_MONITOR_CALL ()

Parameter Description
num DEVICE_ID - The proxy ID of the caller
num REMOTE_DEVICE_ID - The proxy ID of the callee
num AUDIO - The requested audio cap for the call.
num VIDEO - The requested video cap for the call.
num RING - The ring parameter for the call

Returns

None

Intercom Call Requests

GET CUSTOM BUTTONS

The Intercom Proxy provides the ability to define two (2) custom buttons for each endpoint. These custom buttons will generate “on pressed” and “on released” events that can be used as programming triggers in Composer. This request is issued to obtain the custom button so that they can be displayed by the user interface. Detection of the “pressed” and “released” states of these buttons is the responsibility of the user interface displaying them, as well as the generation of the “pressed” and “released” notifications.

Signature

GET_CUSTOM_BUTTONS ()

Parameter Description
num The Proxy Device ID of the intercom endpoint whose custom button information is to be returned.

Example

<GET_CUSTOM_BUTTONS>
   <idDevice>[22]</idDevice>
</GET_CUSTOM_BUTTONS>

Response Parameters

Parameter Description
id The proxy device id of the intercom endpoint to which this request’s response is sent. This value is used to insure that the response is processed by proper device driver (i.e. the "requestor"). It is a number that is greater than or equal to zero (0).
custom_button An xml record describing a single custom button to be displayed on the active session view in the UI.
index The serial index of the current custom button. (0 or 1)
state The default state of the current custom button. (0=off or 1=on)
title The display title (or label) of the current custom button.

Response Prototype

<custom_buttons id=[integer value]>
  <custom_button>
   <index>[integer value]</index>
   <state>[integer value]</state>
   <title>[string value]</title>
  </custom_button>
  <custom_button>
   <index>[integer value]</index>
   <state>[integer value]</state>
   <title>[string value]</title>
  </custom_button>
</custom_buttons>

GET DEVICE

This request is issued to obtain the device properties of a specified intercom endpoint.

Signature

GET_DEVICE ()

Parameter Description
num The Proxy Device ID of the intercom endpoint whose custom button information is to be returned.

Example

<GET_DEVICE>
  <idDevice>[integer value]</idDevice>
</GET_DEVICE>

Response Parameters

Parameter Description
proxyid The proxy device id of the intercom endpoint for which the data was requested. It is a number that is greater than or equal to zero (0)
protocolid The protocol device id of the intercom endpoint for which the data was requested. It is a number that is greater than or equal to zero (0).
hasCamera A Boolean flag indicating whether or not the indicated intercom device has a camera. (0=false, 1=true)
hasDisplay A Boolean flag indicating whether or not the specified intercom endpoint has a display. (0=false, 1=true)
isDoorStation A Boolean flag indicating whether or not the indicated intercom device is a door station. (0=false, 1=true)
displayName The display name to be used when referring to the specified intercom endpoint in the system’s user interface (UI).
sipUserName The SIP user name for the specified intercom endpoint.
sipAOR The SIP address of record for the specified intercom endpoint. This takes the form of “sip user name@sip server IP address”.

Response Prototype

<device_props id=[integer value]>
    <proxyId>[integer value]</proxyId>
    <protocolId>[integer value]</protocolId>
    <hasCamera>[integer value]</hasCamera>
    <hasDisplay>[integer value]</hasDisplay>
    <hasButtons>[integer value]</hasButtons>
    <isDoorStation>[integer value]</isDoorStation>
    <displayName>[string value]</displayName>
    <sipUserName>[string value]</sipUserName>
    <sipAOR>[string value]</sipAOR>
</device_props>

GET DEVICE LIST

This request is issued to obtain the device properties of all of the intercom endpoints in the project.

Signature

GET_DEVICE_LIST ()

Parameters

None

Response Parameters

Parameter Description
device_list A container for the collection of device property records.
device_props A device_props record for each intercom endpoint in the project. See the response format for the GET_DEVICE.

Response Prototype

<device_list>
   <device_props id=Id1>
    [see the GET_DEVICE response format]
   </device_props>
   <device_props id=Id2>
    [see the GET_DEVICE response format]
   </device_props>
   <device_props id=IdN>
    [see the GET_DEVICE response format]
   </device_props>
</device_list>

GET SESSION

This request is issued to obtain the active session information for the requesting device.

Signature

GET_SESSION ()

Parameters

None

Response Parameters

Parameter Description
ID The proxy device id of the intercom endpoint to which this request’s response is sent. This value is used to insure that the response is processed by proper device driver (i.e. the "requestor"). It is a number that is greater than or equal to zero (0).
sessionId Numeric value indicating the session id for the active session.
videoMode Numeric value indicating video mode being used for this session by the specified endpoint. (0=transmit/receive, 1=transmit only, 2=receive only, 3=no video)
audioMode Numeric value indicating audio mode being used for this session by the specified endpoint. (0=transmit/receive, 1=transmit only, 2=receive only, 3=no audio)
callerName The device name of the intercom endpoint which initiated the call.
callerDevId The proxy device id of the intercom endpoint which initiated the call.
calleeDevId The proxy device id of the intercom endpoint which received the call.
calleName The device name of the intercom endpoint which received the call.

Response Prototype

<device_session id=[integer value]>
   <sessionId>[integer value]</sessionId>
   <videoMode>[integer value]</videoMode>
   <audioMode>[integer value]</audioMode>
   <callerDevId>[integer value]</callerDevId>
   <callerName>[string value]</callerName>
   <calleeDevId>[integer value]</calleeDevId>
   <calleeName>[string value]</calleeName>
</device_session>

GET SESSION LIST

This request is issued to obtain the session information of all of sessions on this endpoint.

Signature

GET_SESSION_LIST ()

Parameters

None

Response Parameters

Parameter Description
session_list A container for the collection of session information records.
device_session A device_props record for each intercom endpoint in the project. See the response format for the GET_SESSION.

Response Prototype

<session_list>
  <device_session id=Id1>
   [see the GET_SESSION response format]
  </device_session>
  <device_session id=Id2>
   [see the GET_SESSION response format]
  </device_session>
  <device_session id=IdN>
   [see the GET_SESSION response format]
  </device_session>
</session_list>

GET DEVICE

This request is issued to obtain the current timeout setting for manually answering a call. If the timeout duration expires before a call is answered, the call is automatically ended. This value is configured in the Video Intercom Agent in Composer.

Signature

GET_TIMEOUT ()

Parameter

None

Response Parameters

Parameter Description
num The duration (in seconds) for how long a new call should wait without being answered before the call is ended (number from 10 to 120).

Response Prototype

<timeout>
  <value>[integer value]</value>
</timeout>

Intercom Call Notifications

CALL ACCEPTED

This notification is issued when a call is accepted, it is sent to the initiator and the receiver involved in accepting the specified session.

Signature

CALL_ACCEPTED ()

Parameter Description
num The Device ID of the Proxy.
num The Session ID of the SIP session.
num value of the audio cap
num value of the video cap

CALL ENDED

This notification is issued when a session is ended, it is sent to the initiator and all receiver(s) involved in the specified session.

Signature

CALL_ENDED ()

Parameter Description
num The Device ID of the Proxy.
num The Session ID of the SIP session.
num hang up type (how the call was ended

CALL ENABLED CHANGE

Notification sent to the proxy when the camera enabled value of the intercom has changed

Signature

CALL_ENABLED_CHANGE ()

Parameter Description
str The new enabled value (true/false) of the intercom

CALL PAUSED

This notification is issued when a session is paused, it is sent to the initiator and all receiver(s) involved in the specified session.

Signature

CALL_PAUSED ()

Parameter Description
num The Device ID of the Proxy.
num The Session ID of the SIP session.

CALL REJECTED

This notification is issued when a call is rejected, it is sent to the initiator and the receiver involved in rejecting the specified session.

Signature

CALL_REJECTED ()

Parameter Description
num The Device ID of the Proxy.
num The Session ID of the SIP session.
num hang up type (how the call was ended

CALL RESUMED

This notification is issued when a session is resumed, it is sent to the initiator and all receiver(s) involved in the specified session.

Signature

CALL_ RESUMED ()

Parameter Description
num The Device ID of the Proxy.
num The Session ID of the SIP session.

INCOMING CALL

This notification is issued when a call invite is received; it is only sent to the receiver involved in the specified session.

Signature

INCOMING_CALL ()

Parameter Description
num The Device ID of the Proxy.
num The Session ID of the SIP session.
num Call type.
num remote_device_id = the proxy ID of the remote endpoint
num value of the audio cap
num value of the video cap

OUTGOING CALL

This notification is issued when a call invite is SENT; it is only sent to the initiator involved in the specified session.

Signature

OUTGOING_CALL ()

Parameter Description
num The Device ID of the Proxy.
num The Session ID of the SIP session.
num Call type.
num remote_device_id = the proxy ID of the remote endpoint
num value of the audio cap
num value of the video cap

Intercom State Commands

SET AUTO ANSWER

This command is issued to toggle the “Do Not Disturb” setting of the intercom. This command will result in an AUTO_ANSWER_CHANGED notification to the indicated proxy consumer.

Signature

SET_AUTO_ANSWER ()

Parameter Description
int Boolean flag indicating the new state for this setting. (0=false, 1=true)

Returns

None

Example

<SET_AUTO_ANSWER>
   <autoAnswer>[0]</autoAnswer>
</SET_AUTO_ANSWER>

SET AEC ENABLE

This command is issued to enable or disable automatic echo cancellation on intercom devices that support this capability.

Signature

SET_AEC_ENABLE ()

Parameter Description
int A Boolean flag indicating whether enable or disable auto-echo cancellation. Enabled = 1, true, yes or on. Disabled = 0, false, no or off.

Returns

None

Example

<SET_AEC_ENABLED>
    <aecEnabled>[0]</aecEnabled>
</SET_AEC_ENABLED>

SET CAMERA ENABLE

This command is issued to enable or disable the camera on an intercom device.

Signature

SET_CAMERA_ENABLE ()

Parameter Description
bool Boolean flag indicating whether enable or disable the camera on an intercom device. Enabled = 1, true, yes or on. Disabled = 0, false, no or off.

Returns

None

Example

<SET_CAMERA_ENABLED>
    <cameraEnable>[true]</cameraEnabled>
</SET_CAMERA_ENABLED>

SET DND

This command is issued to toggle the “Do Not Disturb” setting of the intercom.

Signature

SET_DND ()

Parameter Description
bool Boolean flag indicating the new state for this setting. (0=false, 1=true)

Returns

None

Example

<SET_DND>
   <dndSettingd>[true]</dndSetting>
</SET_DND>

SET EXCLUDE FROM NAVIGATOR

This command is issued to toggle the visibility of the intercom endpoint in a proxy user interface. This command will result in an EXCLUDE_FROM_NAVIGATOR_CHANGED notification to the proxy.

Signature

SET_EXCLUDE_FROM_NAVIGATOR ()

Parameter Description
bool Boolean flag indicating the new state for this setting. (0=false, 1=true)

Returns

None

Example

<SET_EXCLUDE_FROM_NAV>
   <excludeFromNav>[1]</excludeFromNav>
</SET_EXCLUDE_FROM_NAV>

SET SEND VIDEO

This command is issued by a proxy consumer to cause the state of the send video setting to change. This command will result in a SEND_VIDEO_CHANGED

Signature

SET_SEND_VIDEO ()

Parameter Description
bool Boolean flag indicating the new state for this setting. (0=false, 1=true)

Returns

None

Example

<SET_SEND_VIDEO>
   <sendVideo>[1]</sendVideo>
</SET_SEND_VIDEO>

SET MICROPHONE GAIN

This command is issued by a proxy consumer to cause the microphone gain for the indicated intercom device to change. This command will result in a MICROPHONE_GAIN_CHANGED notification to the indicated device.

Signature

SET_MICROPHONE_GAIN ()

Parameter Description
bool Boolean flag indicating the new state for this setting. (0=false, 1=true)

Returns

None

Example

<SET_MICROPHONE_GAIN>
    <microphoneGain>[0]</microphoneGain>
</SET_MICROPHONE_GAIN>

SET MONITOR MODE

This command will result in a MONITOR_MODE_CHANGED notification to the proxy consumer for the indicated intercom device.

Signature

SET_ MONITOR_MODE ()

Parameter Description
bool Boolean flag indicating the new state for this setting. (0=false, 1=true)

Returns

None

Example

<SET_MONITOR_MODE>
    <monitorMode>[0]</monitorMode>
</SET_MONITOR_MODE>

SET RINGER VOLUME

This command is issued to cause the ringer volume setting to be changed for the indicated intercom device. This command will result in a RINGER_VOLUME_CHANGED notification to the proxy consumer for the indicated intercom device.

Signature

SET_RINGER_VOLUME E ()

Parameter Description
NUM A numeric value 0 - 100 indicating the new value for the ringer volume setting

Returns

None

Example

<SET_RINGER_VOLUME>
   <ringerVol>[1]</ringerVol>
</SET_RINGER_VOLUME>

SET SHOW MAIN VIDEO

This command is issued to cause the ringer volume setting to be changed for the indicated intercom device. This command will result in a RINGER_VOLUME_CHANGED notification to the proxy consumer for the indicated intercom device.

Signature

SET_SHOW_MAIN_VIDEO ()

Parameter Description
bool Boolean flag indicating the new value for this setting. (0=false, 1=true)

Returns

None

Example

<SET_SHOW_MAIN_VIDEO>
   <showMainVideo>[0]</showMainVideo>
</SET_SHOW_MAIN_VIDEO

SET SIP PROXY IP

This command established the IP Address of the SIP Proxy.

Signature

SET_SIP_PROXY_IP ()

Parameter Description
str A string representing the IP address of the SIP server, such as “192.168.1.13” (without the quotes)

Returns

None

Example

<SET_SIP_PROXY_IP>
   <sipproxyip>[192.168.1.13]</sipproxyip>
</SET_SIP_PROXY_IP>

SET SPEAKER VOLUME

This command is issued by a proxy consumer to cause the current speaker volume setting to be changed. This command will result in a SPEAKER_VOLUME_CHANGED notification to the proxy consumer for the indicated intercom device.

Signature

SET_SPEAKER_VOLUME ()

Parameter Description
num A numeric value 0-100 that indicates the new speaker volume setting

Returns

None

Example

<SET_SPEAKER_VOLUME>
   <speakerVol>[50]</speakerVol>
</SET_SPEAKER_VOLUME>

Intercom State Requests

GET CURRENT STATE

This request is issued to obtain the current device state of the intercom endpoint making the request.

Signature

GET_CURRENT_STATE ()

Request Parameters

None

Response Parameters

Parameter Description
id The proxy device id of the intercom endpoint to which this request’s response is sent. This value is used to insure that the response is processed by proper device driver (i.e. the requestor). It is a number that is greater than or equal to zero (0).
num Numeric value indicating the current state of the device. (0=not ready, 1=idle, 2=busy, 3=max calls)

Response Prototype

<device_state proxyid=[10]>
   <currentState>[2]</currentState>
</device_state>

GET STATE

This request is issued to obtain the device state of a specified intercom endpoint.

Signature

GET_STATE ()

Request Parameter Description
idDevice This request is issued to obtain the device state of a specified intercom endpoint.

Request Prototype

See example to the right.

<GET_STATE>
   <idDevice>[17]</idDevice>
</GET_STATE>

Response Parameters

Parameter Description
id The proxy device id of the intercom endpoint to which this request’s response is sent. This value is used to insure that the response is processed by proper device driver (i.e. the requestor). It is a number that is greater than or equal to zero (0).
excludeFromNav Boolean flag indicating the current state for this setting. (0=false, 1=true)
playDoorChime Boolean flag indicating the current value of this setting. (0=false, 1=true)
dndSetting Boolean flag indicating the current value of this setting. (0=false, 1=true)
autoAnswer Boolean flag indicating the current value of this setting. (0=false, 1=true)
currrentState Numeric value indicating the current state of the device. (0=not ready, 1=idle, 2=busy, 3=max calls)
sendVideo Boolean flag indicating the current value of this setting. (0=false, 1=true)
monitorMode Boolean flag indicating the current value of this setting. (0=false, 1=true)
ringerVol Numeric value indicating the current value of this setting. (0 to 100)
speakerVol Numeric value indicating the current value of this setting. (0 to 100)
microphoneGain Numeric value indicating the current value of this setting. (0 to 100)
showMainVideo Boolean flag indicating the current value of this setting. (0=false, 1=true)
showMirrorVideo Boolean flag indicating the current value of this setting. (0=false, 1=true)
cameraEnabled Boolean flag indicating the current value of this setting. (0=false, 1=true)
aecEnabled Boolean flag indicating the current value of this setting. (0=false, 1=true)

Response Prototype

<device_state proxyid=[integer value]>
   <excludeFromNav>[integer value]</excludeFromNav>
   <playDoorChime>[integer value]</playDoorChime>
   <dndSetting>[integer value]</dndSetting>
   <autoAnswer>[integer value]</autoAnswer>
   <currentState>[integer value]</currentState>
   <sendVideo>[integer value]</sendVideo>
   <monitorMode>[integer value]</monitorMode>
   <ringerVol>[integer value]</ringerVol>
   <speakerVol>[integer value]</speakerVol>
   <microphoneGain>[integer value]</microphoneGain>
   <showMainVideo>[integer value]</showMainVideo >
   <showMirrorVideo>[integer value]</showMirrorVideo >
   <cameraEnabled>[integer value]</cameraEnabled >
   <aecEnabled>[integer value]</aecEnabled >
</device_state> 

GET STATE LIST

This request is issued to obtain the device state of all of intercom endpoints in the project

Signature

GET_STATE_LIST ()

Request Prototype

See example to the right.

<state_list>
   <device_state id=Id1> 
     See GET_STATE response format
   </device_state>
   <device_state id=Id2> 
     See GET_STATE response format
   </device_state>
   <device_state id=IdN> 
     See GET_STATE response format
  </device_state>
</state_list>

Intercom State Notifications

AUTO ANSWER CHANGED

This notification is issued when a call is accepted, it is sent to the initiator and the receiver involved in accepting the specified session.

Signature

AUTO_ANSWER_CHANGED ()

Parameter Description
int The proxy device id of the intercom endpoint whose device state information is being returned
int autoAnswer: Boolean flag indicating the current state for this setting. (0=false, 1=true)

Example

<device_state id=[10]>
   <autoAnswer>[1]</autoAnswer>
</device_state>

CAMERA ENABLED CHANGED

This notification is issued by the proxy when the endpoint’s Camera Enabled setting has changed.

Signature

CAMERA_ENABLED_CHANGED ()

Parameter Description
int The proxy device id of the intercom endpoint whose device state information is being returned
int cameraEnabled: Boolean flag indicating the current state for this setting. (0=false, 1=true)

Example

<device_state id=[10]>
   <cameraEnabled>[1]</cameraEnabled>
</device_state>

CONSERVATIVE AEC CHANGED

Notification sent to the proxy when the conservative aec enabled value of the intercom has changed

Signature

CONSERVATIVE_AEC_CHANGED ()

Parameter Description
bool enabled - the new enabled value (true/false) of the intercom

CURRENT STATE CHANGED

This notification is issued by the proxy when the endpoint’s current state has changed.

Signature

CURRENT_STATE__CHANGED ()

Parameter Description
num currentState - Numeric value indicating the current state of the device. (0=not ready, 1=idle, 2=busy, 3=max calls)

Example

<device_state proxyid =[10]>
   <currentState>[2]</currentState>
</device_state>

DEVICE STATE CHANGED

This notification is issued by the proxy when the endpoint’s current state has changed.

Signature

DEVICE_STATE__CHANGED ()

Parameter Description
excludeFromNav Boolean flag indicating the current state for this setting. (0=false, 1=true)
playDoorChime Boolean flag indicating the current value of this setting. (0=false, 1=true)
dndSetting Boolean flag indicating the current value of this setting. (0=false, 1=true)
autoAnswer Boolean flag indicating the current value of this setting. (0=false, 1=true)
currentState Numeric value indicating the current state of the device. (0=not ready, 1=idle, 2=busy, 3=max calls)
sendVideo Boolean flag indicating the current value of this setting. (0=false, 1=true)
monitorMode Boolean flag indicating the current value of this setting. (0=false, 1=true)
ringerVol Numeric value indicating the current value of this setting. (0 to 100)
speakerVol Numeric value indicating the current value of this setting. (0 to 100)
microphoneGain Numeric value indicating the current value of this setting. (0 to 100)
showMainVideo Boolean flag indicating the current value of this setting. (0=false, 1=true)
showMirrorVideo Boolean flag indicating the current value of this setting. (0=false, 1=true)
cameraEnable Boolean flag indicating the current value of this setting. (0=false, 1=true)
aecEnabled Boolean flag indicating the current value of this setting. (0=false, 1=true)

Example

<DEVICE_STATE_CHANGED>
   <excludeFromNav>[1]</excludeFromNav>
   <playDoorChime>[0]</playDoorChime>
   <dndSetting>[0]</dndSetting>
   <autoAnswer>[0]</autoAnswer>
   <sendVideo>[1]</sendVideo>
   <currentState>[3]</currentState>
   <monitorMode>[1]</monitorMode>
   <ringerVol>[50]</ringerVol>
   <speakerVol>[70]</speakerVol>
   <microphoneGain>[35]</microphoneGain>
   <showMainVideo>[1]</showMainVideo>
   <showMirrorVideo>[1]</showMirrorVideo>
   <cameraEnabled>[0]</cameraEnabled>
   <aecEnabled>[1]</aecEnabled>
</DEVICE_STATE_CHANGED

DEVICE STATE CHANGED

This notification is issued by the proxy when the endpoint’s Do Not Disturb setting has changed.

Signature

DND_CHANGED ()

Parameter Description
int The proxy device id of the intercom endpoint whose device state information is being returned
int dndSetting: Boolean flag indicating the current state for this setting. (0=false, 1=true)

Example

<device_state proxyid =[10]>
    <dndSetting>[1]</dndSetting>
</device_state>

EXCLUDE FROM NAVIGATOR CHANGED

This notification is issued by the proxy when the endpoint’s Exclude from Navigator setting has changed.

Signature

EXCLUDE_FROM_NAVIGATOR_CHANGED ()

Parameter Description
int The proxy device id of the intercom endpoint whose device state information is being returned
int dndSetting: Boolean flag indicating the current state for this setting. (0=false, 1=true)

Example

<device_state proxyid =[10]>
    <excludeFromNav>[0]</excludeFromNav>
</device_state>

MICROPHONE GAIN CHANGED

This notification is issued by the proxy when the endpoint’s Microphone Gain setting has changed.

Signature

MICROPHONE_GAIN_CHANGED ()

Parameter Description
int The proxy device id of the intercom endpoint whose device state information is being returned
int microphoneGain: Numeric value indicating the current value of this setting. (0 to 100)

Example

<device_state proxyid =[10]>
    <microphoneGain>[0]</microphoneGain>
</device_state>

MONITOR MODE CHANGED

This notification is issued by the proxy when the endpoint’s Monitor Mode setting has changed.

Signature

MONITOR_MODE_CHANGED ()

Parameter Description
int The proxy device id of the intercom endpoint whose device state information is being returned
monitorMode Boolean flag indicating the current value of this setting. (0=false, 1=true)

Example

<device_state proxyid =[10]>
    <monitorMode>[0]</monitorMode>
</device_state>

MUTE AUDIO CHANGED

Notification sent to the proxy when the audio muted value of the intercom has changed.

Signature

MUTE_AUDIO_CHANGED ()

Parameter Description
bool enabled: = the new enabled value (true/false) of the intercom

RINGER VOLUME CHANGED

This notification is issued by the proxy when the endpoint’s Monitor Mode setting has changed.

Signature

RINGER_VOLUME_CHANGED ()

Parameter Description
int The proxy device id of the intercom endpoint whose device state information is being returned
ringerVol Numeric value indicating the current value of this setting. (0 to 100)

Example

<device_state proxyid =[10]>
    <ringerVoL>[0]</ringerVoL>
</device_state>

SIP USERNAME CHANGED

Notification sent to the proxy when the SIP username value of the intercom has changed.

Signature

SIP_USERNAME_CHANGED ()

Parameter Description
STR username = the new username value of the intercom

SEND VIDEO CHANGED

This notification is issued by the proxy when the endpoint’s Monitor Mode setting has changed.

Signature

SEND_VIDEO_CHANGED ()

Parameter Description
int The proxy device id of the intercom endpoint whose device state information is being returned
BOOL sendVideo: Boolean flag indicating the current state for this setting. (0=false, 1=true)

Example

<device_state proxyid =[10]>
    <sendVideo>[0]</sendVideo>
</device_state>

SPEAKER VOLUME CHANGED

This notification is issued by the proxy when the endpoint’s Speaker Volume setting has changed.

Signature

SPEAKER_VOLUME_CHANGED ()

Parameter Description
int The proxy device id of the intercom endpoint whose device state information is being returned
num speakerVol: Numeric indicating the current state for this setting. (0=false, 1=true)

Example

<device_state proxyid =[10]>
    <speakerVol>[0]</speakerVol>
</device_state>

USE CAMERA CHANGED

Notification sent to the proxy when the use camera value of the intercom has changed

Signature

USE_CAMERA_CHANGED ()

Parameter Description
bool enabled: = the new enabled value (true/false) of the intercom

Intercom Call Group Commands

ADD DEVICE TO GROUP

This command is issued to add the specified intercom endpoint to the specified call group.

Signature

ADD_DEVICE_TO_GROUP ()

Parameter Description
str The name of the call group to which the specified endpoint should be added.
num The proxy id of the intercom endpoint that should be added to the call group.

Returns

None

Example

ADD_DEVICE_TO_GROUP>
  <name>[mydevice]</name>
  <idDevice>[10]</idDevice>
</ADD_DEVICE_TO_GROUP>

DELETE DEVICE FROM GROUP

This command is issued to remove the specified intercom endpoint from the specified call group. Attempting to delete a device from the “All” group will result in a command failure.

Signature

DELETE_DEVICE_FROM_GROUP ()

Parameter Description
str The name of the call group to which the specified endpoint should be added.
num The proxy id of the intercom endpoint that should be added to the call group.

Returns

None

Example

<DELETE_DEVICE_FROM_GROUP>
  <name>[mydevice]</name>
  <idDevice>[10]</idDevice>
</DELETE_DEVICE_FROM_GROUP>

DELETE GROUP

This command is issued to delete an intercom call group. Note that the “All” group cannot be deleted.

Signature

DELETE_GROUP ()

Parameter Description
str The name of the call group to which the specified endpoint should be added.

Returns

None

Example

<DELETE_GROUP>
  <name>[mydevice]</name>
</DELETE_GROUP>

CREATE GROUP

This command is issued to create a new intercom call group. Note that the text “All” is a reserved group name. The command will fail if this call is made with the group name “All”.

Signature

CREATE_GROUP ()

Parameter Description
str The name of the call group to which the specified endpoint should be added.

Returns

None

Example

<CREATE_GROUP>
  <name>[mydevice]</name>
</CREATE_GROUP>

EDIT GROUP

This command is issued to rename the specified intercom call group. Note that the name of the “All” group cannot be changed

Signature

EDIT_GROUP ()

Parameter Description
str The name of the call group to which the specified endpoint should be added.
str newName: The new name for the specified call group.

Returns

None

Example

<EDIT_GROUP>
  <name>[mydevice]</name>
  <newName>[mynewdevice]</newName>
</EDIT_GROUP>

Intercom Call Group Requests

GET GROUP LIST

This request is issued to obtain the group list of all of intercom call groups in the project except for the “All” group.

Signature

GET_CUSTOM_BUTTONS ()

Request Parameter Description
num The group ID of the call group.
str The name of the call group.

Example

<groups>
  <group>
   <id>[3]</id>
   <name>[group one]</name>
  </group>
  <group>
    <id>[4]</id>
    <name>[group two]</name>
  </group>
</groups>

Intercom Capabilites

audio codecs supported

This capability specifies the audio codecs supported by this device type. Its value is a comma delimited string. For example: “G711 ULAW, G711 ALAW”

Signature

<audio_codecs_supported></audio_codecs_supported>

Parameter Description
str Comma delimited string. (e.g. “G711 ULAW, G711 ALAW”)

Example

<capabilities>
   <audio_codecs_supported>G711 ULAW, G711 ALAW</audio_codecs_supported>
</capabilities>

video codecs supported

This capability specifies the video codecs supported by this device type. Its value is a comma delimited string. For example: “H263, H264”

Signature

<video_codecs_supported></video_codecs_supported>

Parameter Description
str Comma delimited string. (e.g. “H263, H264” )

Example

<capabilities>
   <video_codecs_supported>GH263, H264</video_codecs_supported>
</capabilities>

has camera

This capability specifies whether this device type has a camera. Its value is a Boolean string. For example, “True” or “False”

Signature

<has_camera></has_camera>

Parameter Description
bool True/False

Example

<capabilities>
   <has_camera>True</has_camera>
</capabilities>

has display

This capability specifies whether this device type has a video display. Its value is a Boolean string. For example: “True” or “False”

Signature

<has_display></has_display>

Parameter Description
bool True/False

Example

<capabilities>
   <has_display>True</has_display>
</capabilities>

has buttons

This capability specifies whether this device type has custom buttons. Its value is a Boolean string. For example: “True” or “False”

Signature

<has_buttons></has_buttons>

Parameter Description
bool True/False

Example

<capabilities>
   <has_buttons>True</has_buttons>
</capabilities>

can set aec

This capability specifies whether this device type has conservative auto echo cancellation. Its value is a Boolean string. For example: “True” or “False”

Signature

<can_set_aec></can_set_aec>

Parameter Description
bool True/False

Example

<capabilities>
   <can_set_aec>True</can_set_aec>
</capabilities>

is doorstation

This capability specifies whether this device type is a door station. Its value is a Boolean string. For example: “True” or “False”

Signature

<is_doorstation></is_doorstation>

Parameter Description
bool True/False

Example

<capabilities>
   <is_doorstation>True</is_doorstation>
</capabilities>

Intercom Events

Intercom Events

The following Events are supported by the Intercom Proxy. They include:

Incoming Call Fired when there is a new incoming call.

Outgoing Call Fired when there is a new outgoing intercom call.

Call SetupFired when a new call is setup.

Call Accepted Fired when an incoming call is accepted by the receiver.

Call Rejected Fired when an incoming call is rejected by the receiver.

Call Started Fired when there is new call session is started.

Call Ended Fired when an existing call session is ended

Call Paused Fired when an existing call session is paused.

Call Resumed Fired when an existing call session is resumed.

Do Not Disturb Changed Fired when the “Do Not Disturb” setting is changed.

Auto Answer Changed Fired when the “Auto Answer” setting is changed.

Monitor Mode Changed Fired when the “Monitoring” setting is changed.

Send Video Changed Fired when the “Send Video” setting is changed.

Ringer Volume Changed Fired when the “Ringer Volume” setting is changed.

Speaker Volume Changed Fired when the “Speaker Volume” setting is changed.

Microphone Gain Changed Fired when the “Microphone Gain” setting is changed

Custom Button N Pressed Fired when the “Custom Button N” is pressed. (where N = 0 or 1)

Custom Button N Released Fired when the “Custom Button N” is released. (where N = 0 or 1)

Intercom Conditionals

Intercom Conditionals

The following Conditionals are supported by the Intercom Proxy itself. They include:

Remote Name Matched Returns true if there is an incoming/outgoing call to a specified endpoint.

Do Not Disturb Returns true if “Do Not Disturb” is enabled on the current endpoint.

Auto Answer Returns true if “Auto Answer” is enabled on the current endpoint.

Send Video Returns true if “Send Video” is enabled on the current endpoint.

Monitor Mode Returns true if “Monitoring” is enabled on the current endpoint.

In A Call Returns true if there is an active session on the current endpoint.

Keypad Proxy Commands

Overview

This section describes describe the basic functionality of the Keypad Proxy. This proxy was introduced into the system in version 2.5.0, along with the gen3 lighting drivers. It is designed to be fairly generic, but there are a few capabilities that only Control4 keypads use such as track_previous_button. It should also work for fixed multi-row keypads. Configurable multi-row keypads are not supported with this proxy.

DELETE KEYPAD BUTTON

Used to delete a specific button from the keypad

Signature

DELETE_KEYPAD_BUTTON ()

Parameter Description
num ID value of the button to be deleted

Returns

None

KEYPAD ALL BUTTON COLOR

Used to set the color for all buttons on a keypad.

Signature

KEYPAD_ALL_BUTTON_COLOR ()

Parameter Description
OFF_COLOR ID value of the button to be deleted
ON_COLOR The new on/push color for the keypad
CURRENT_COLOR The color the keypad should immediately go to

Returns

None

KEYPAD BUTTON ACTION

Used to send remote commands to the keypad to have it act as if a button on the keypad was actually used.

Signature

KEYPAD_BUTTON_ACTION ()

Parameter Description
ACTION The action performed on the keypad: 0 = Release, 1 = Push, 2 = Click
BUTTON ID The ID of the button where the action is performed.

Returns

None

KEYPAD BUTTON COLOR

Used to set the color for a specific button on a keypad.

Signature

KEYPAD_BUTTON_COLOR ()

Parameter Description
OFF_COLOR ID value of the button to be deleted
ON_COLOR The new on/push color for the keypad
CURRENT_COLOR The color the keypad should immediately go to

Returns

None

KEYPAD BUTTON INFO

Used to change the settings on a particular button.

Signature

KEYPAD_BUTTON_INFO ()

Parameter Description
BUTTON ID The ID of the button being changed
NAME The name of the button (optional)
ON COLOR (string) The on/press color for the button (optional)
OFF COLOR (string) The off/release color for the button (optional)
ENGRAVING (string) The engraved name for the button (optional)
BUTTON BEHAVIOR (INT) The behavior for the button (optional)
LED BEHAVIOR (INT) The LED behavior for the button (optional)
STATE (bool) Used to indicate which color the button should use. A value of true means use the on/push color, a value of false means use the off/release color.
MATCH LED STATE Similar to state, but should only be applied if the LED is tracking a bound device.

Returns

None

FINISH

Used to send a finish value to the proxy. Only used if the custom_finishes capability is set to true in the protocol driver Valid values are:

Signature

FINISH ()

Returns

None

NEW KEYPAD BUTTON

Used to create a new button on the keypad. This is sent to the protocol by the proxy when the proxy is loaded. Thus the protocol doesn't have to store all its buttons settings, the proxy will do it.

Signature

NEW_KEYPAD_BUTTON ()

Parameter Description
BUTTON ID The ID of the button being changed
NAME The name of the button (optional)
ON COLOR (string) The on/press color for the button (optional)
OFF COLOR (string) The off/release color for the button (optional)
BUTTON BEHAVIOR (INT) The behavior for the button (optional)
LED BEHAVIOR (INT) The LED behavior for the button (optional)
SLOTS The number of slots the button takes up on the keypad.

Returns

None

SET TRACK PREV BUTTON

Indicates whether the keypad should track the previous button being used. This mainly for Control4 Configurable keypad devices (zigbee, wired, combo, etc)

Signature

SET_TRACK_PREV_BUTTON N ()

Parameter Description
MODE Boolean value.

Returns

None

Keypad Protocol Notifications

BEHAVIOR NAME

Used to inform (or update) the proxy of a button behavior name

Signature

BEHAVIOR_NAME ()

Parameter Description
num BUTTON ID: The ID of the behavior to send when selected by the user.
str NAME: The string to display to the user for the behavior.

Returns

None

CLICK COUNT

Used to inform the proxy that a button has been clicked multiple times. This is used by the proxy to fire the proper event (single, double, triple click, etc).

Signature

CLICK_COUNT ()

Parameter Description
num BUTTON ID: The ID of the button clicked by the user.
num COUNT: The number of times the button was clicked

Returns

None

DELETE KEYPAD BUTTON

Used to inform the proxy that a button is being deleted

Signature

DELETE_KEYPAD_BUTTON ()

Parameter Description
num BUTTON ID: The ID of the button to be deleted.

Returns

None

KEYPAD BUTTON ACTION

Used by the protocol to inform the proxy that some type of action occurred on a button. The proxy will then update colors, send the proper command to the bound device, etc.

Signature

KEYPAD_BUTTON_ACTION ()

Parameter Description
num BUTTON ID: The ID of the button to be deleted.
NUM ACTION: The action performed on the keypad: 0 = Release, 1 = Push, 2 = Click, 3 = Double Click, 4 = Triple Click

Returns

None

KEYPAD ALL BUTTON COLOR

Used by the protocol to inform the proxy of a change in color for every button on the keypad.

Signature

KEYPAD_ALL_BUTTON_COLOR ()

Parameter Description
str ON COLOR: The new on color for the button in RGB hex string.
str OFF COLOR: The new off color for the button in RGB hex string.
str CURRENT COLOR: The new current color for the button in RGB hex string.
str COLOR: The new on and off color for the button in RGB hex string.

Returns

None

KEYPAD BUTTON COLOR

This is used by the protocol to inform the proxy that is has been instructed to change the color of a button.

Signature

KEYPAD_BUTTON_COLOR ()

Parameter Description
num BUTTON ID: The ID of the button whose color is changing.
str ON COLOR: The new on color for the button in RGB hex string.
str OFF COLOR: The new off color for the button in RGB hex string.
str CURRENT COLOR: The new current color for the button in RGB hex string.
str COLOR: The new on and off color for the button in RGB hex string.

Returns

None

KEYPAD BUTTON INFO

Used by the protocol to inform the proxy of a changed setting for a particular button. It can have multiple parameters, but the only required one is BUTTON_ID.

Signature

KEYPAD_BUTTON_INFO ()

Parameter Description
num BUTTON ID: The ID of the button whose color is changing.
str NAME: The name of the button This will cause binding names to be updated.
str ENGRAVING: The engraving for the button.
str ON COLOR: The new on color for the button in RGB hex string.
str OFF COLOR: The new off color for the button in RGB hex string.
str CURRENT COLOR: The new current color for the button in RGB hex string.
str COLOR: The new on and off color for the button in RGB hex string.
STATE The current state of the button, so the proxy knows what color the button is using (state > 0 means on-color)
LED BEHAVIOR The assigned behavior of the LED associated with this button.
BUTTON BEHAVIOR The assigned behavior for this button.

Returns

None

LED BEHAVIOR NAME

Used to inform (or update) the proxy of a LED's behavior name

Signature

LED_BEHAVIOR_NAME ()

Parameter Description
num BUTTON ID: The ID of the LED behavior to send when selected by the user.
str NAME: The name of the button This will cause binding names to be updated.

Returns

None

NEW KEYPAD BUTTON

Used to inform the proxy about the existence of a new button on the keypad. If the specified button already exists, this notification will do nothing.

Signature

NEW_KEYPAD_BUTTON ()

Parameter Description
num BUTTON ID: The ID of the button whose color is changing.
str NAME: The name of the button This will cause binding names to be updated.
str ON COLOR: The new on color for the button in RGB hex string.
str OFF COLOR: The new off color for the button in RGB hex string.
str ENGRAVING: The engraving for the button.
num SLOTS: The size of the button.
BUTTON BEHAVIOR The assigned behavior for this button.
LED BEHAVIOR The assigned behavior of the LED associated with this button.
bool LOCK COLORS: - Whether the colors for this button should be locked in Composer Pro. TRUE/FALSE Note - The user will not be allowed to change them if True.

Returns

None

ONLINE CHANGED

Used by the protocol to notify the proxy if the device is online or offline. The payload of the notify message is a boolean indicating true/false

Signature

ONLINE_CHANGED ()

Parameter

None

Returns

None

Advanced Lighting Scene Agent

Capabilities

Capabilities provide a way for protocol driver to tell an agent what functionality the driver and/or hardware has. Capabilities need to be defined in the drivers c4i or c4z configuration file or updated via a Dynamic Capabilities Changed Notify.

Only capacities that are different from the defaults need to be specified.

advanced_scene_support

Whether the device supports the full Advanced Lighting Scenes commands and API's. This capability is primarily useful for drivers that want to support multi-scene elements. Additionally, Zigbee and zWave devices can take advantage of broadcast packets to avoid each driver needing to send a unicast packet, as would be done with reduced_als_support.

If this capability is true, drivers must include full support of the following:

Signature

<advanced_scene_support></advanced_scene_support>

Type

Boolean: defaults to false.

Dynamic Capability

No

Usage Note

If a driver is using the light v1 proxy and doesn't have either of the advanced_scene_support or reduced_als_support capabilities in its c4i file, the agent assumes that reduced_als_support is true. This allows existing 3rd party lights into advanced scenes. The v1 proxy was modified to abstract away the important differences from the protocol drivers. If a 3rd party driver does want full scene support, it must use the Light V2 proxy.

If any lights have full ALS support then only the "New" broadcast MIB is sent, otherwise the older ZCL MIB is sent, as according to logic in ALS "activate" function.

reduced_als_support

If the advanced_scene_support capability is false, a driver can use this reduced_als_support capability for most Advanced Lighting Scene support and inclusion. Most drivers will find this sufficient for ALS support and using this option greatly reduces development time and complexity for driver developers, as less than 1% of Control4 systems have implemented multi-element scenes. Specifying this option will cause ALS to send individual SET_BRIGHTNESS_TARGET and SET_COLOR_TARGET commands to a driver when a scene is activated. This means drivers do not have to implement PUSH_SCENE, ACTIVATE_SCENE, SYNC_SCENE, SCENE_ALL_SCENES, manage XML table lookups, or multi-element scenes that advanced_scene_support=true does require.

The device will be allowed into ALS scenes, but with the following limitations:

If this capability is true, drivers must include support for the following:

Signature

<reduced_als_support></reduced_als_support>

Type

Boolean: defaults to false.

Dynamic Capability

No

Usage Note

If a driver is using the light v1 proxy and doesn't have either of the advanced_scene_support or reduced_als_support capabilities in its c4i file, the agent assumes that reduced_als_support is true. This allows existing 3rd party lights into advanced scenes. The v1 proxy was modified to abstract away the important differences from the protocol drivers. If a 3rd party driver does want full scene support, it must use the Light V2 proxy.

If any lights have full ALS support then only the "New" broadcast MIB is sent, otherwise the older ZCL MIB is sent, as according to logic in ALS "activate" function.

supports_broadcast_scenes

Whether the device supports broadcasts. This includes Zigbee, ZWave, UDP. If supports_broadcast_scenes and supports_multicast_scenes are both false, the light V2 proxy will send a SYNC_SCENES command to the Protocol Driver with TIME and STATE parameters, when the device comes online.

If set to true, ALS assumes the device is always a zigbee device.

If set to true, LightV2 Proxy assumes the device is always a zigbee device.

Forces an OnZigbeeDeviceOnline(Offline) to occur when the standard DeviceOnline(Offline) command is called.

Signature

<support_broadcast_scenes></support_broadcast_scenes>

Type

Boolean: defaults to false.

Dynamic Capability

No

supports_multichannel_scenes

Causes the LightV2 proxy to send the "EXECUTE_SCENE" command to the device rather than a set level command. If supports_broadcast_scenes and supports_multicast_scenes are both false, the light V2 proxy will send a SYNC_SCENES command to the Protocol Driver with TIME and STATE parameters, when the device comes online.

Signature

<support_multichannel_scenes></support_ multichannel_scenes>

Type

Boolean: defaults to false.

Dynamic Capability

No

Variables

Note: Advanced Lighting Scene Agent does not currently have any enabled variables.

Events

The following are System Events that are provided and managed by the Proxy. These can be used for Composer Programming or other drivers to monitor the changes of a values reflected in a LightV2 proxy.

Scene Activated

This event is fired when the scene changes from the inactive to the active state.

ID

(sceneID * *5)

Scene DeActivated

This event is fired when the scene changes from the active to the inactive state.

ID

(sceneID * *5) + 1

All Members 100%

This event is fired when all the members are at 100%. This event is not exposed to Composer, so the user can't do programming off it.

ID

(sceneID * 5) + 2

All Members 0%

This event is fired when all the members are at 0%. This event is not exposed to Composer, so the user can't do programming off it.

ID

(sceneID * 5) + 3

Scene Invoked

This event is fired when the agent is told to activate a scene. This will fire even if the scene already active.

ID

(sceneID * 5) + 4

Asynchronous Commands

This section lists the Commands (Bound Call, aka SendToDevice in Lua) that the Proxy supports. These are for use by Navigators, Composer Programming and other services like Voice Control. The thing to remember with Proxies is that many of the commands are passed on to the Protocol and it is the Protocol drivers responsibility to ripple the commands result back up to the Proxy using a 'Notify' command. This allows the Protocol to optionally make slight adjustments to commands for its unique driver or hardware and then inform the Proxy of the change.

RAMP_SCENE_UP

Used to ramp a scene up until it is told to stop.

Parameters

SCENE_ID - Integer. Which scene to ramp up.

RAMP_SCENE_DOWN

Used to ramp a scene down until it is told to stop.

Parameters

SCENE_ID - Integer. Which scene to ramp down.

STOP_RAMP_SCENE

Used to ramp a scene down until it is told to stop.

Parameters

SCENE_ID - Integer. Which scene to stop ramping.

ACTIVATE_SCENE

Activates a scene. This scene will always be run and events fired, even if the scene is already active.

Parameters

SCENE_ID - Integer. ID of the scene to activate.

DEACTIVATE_SCENE

Always activates the scene that is referenced as the Toggle ID, even if the toggle scene is active. Common use case is to set two scenes toggle scenes to each other but it is possible to link multiple scenes to a single "Off" toggle scene or even create loops of multiple scenes that will activate the next scene in the scene loop when "Toggle Scene" is ran.

Parameters

SCENE_ID - Integer. ID of the scene to deactivate.

TOGGLE_SCENE

Will activate the scene ID specified if it is inactive. If the scene ID specified is active then the toggle scene ID will be activated.

Parameters

SCENE_ID - Integer. Integer. ID of the scene that will have its toggle scene activated.

Light Driver Development Best Practices

The purpose of this section is to provide best practice advice for driver developers developing lighting drivers. By following these recommendations, developers will ensure consistent behavior from their driver and other lighting drivers. Additionally, implementing these guidelines will greatly improve driver interaction with other components in the Control4 OS such as Agents, Customer Interfaces, Programming, etc.

Brightness Target API

A Brightness Target API has been released in conjunction with O.S. 3.3.0. The API is disabled by default for non-color capable drivers and can be enabled with the supports_target capability. The API includes the SET_BRIGHTNESS_TARGET proxy command and LIGHT_BRIGHTNESS_CHANGED and LIGHT_BRIGHTNESS_CHANGING proxy notifies.

Brightness target API should be used by all new driver written against the Light V2 Proxy and existing drivers should be updated if possible. The API is required for driver certification in 3.3.0. Dimmer drivers should now only use LIGHT_BRIGHTNESS_CHANGING and LIGHT_BRIGHTNESS_CHANGED notifies. Switch drivers only need to use the BRIGHTNESS_CHANGED notify. Note that the LEVEL_CHANGED notify should not be used.

Using the LIGHT_BRIGHTNESS_CHANGING notify command allows drivers to inform the proxy of brightness transitions. Customer Interfaces monitor LIGHT_BRIGHTNESS_CHANGING events and will display a brightness changing animation depending on the provided current brightness, target brightness and rate. This can be useful for devices that do not send intermediate status notifications when transitioning between brightness levels. It is also recommended to send brightness changing notify command in cases where the final level is unknown, such as holding a button to ramp a light, scene or group up or down. For example, if a customer holds a button to slow-ramp a light on, the driver should notify the proxy that the brightness is changing to 100%. This will in turn show a brightness changing animation on Customer Interfaces. Once the customer releases the button (e.g. at 30%), the driver should send a LIGHT_BRIGHTNESS_CHANGED notify to indicate where the light ramping stopped.

Previously, drivers had to 'emulate' slider movements on Customer Interfaces by sending periodic, incremental light level notifies during brightness transitions (e.g. every 20ms). These updates cause performance issues including:

Brightness and Color Changing API

OS 3.3.0 also introduced a new Light V2 proxy API that allows protocol drivers to notify the proxy that a light's color (LIGHT_COLOR_CHANGING) or brightness (LIGHT_BRIGHTNESS_CHANGING) is changing. The use of these notify commands are optional. However, it is recommended to notify the proxy of color or brightness transitions whenever possible. Using these notify commands allows other drivers or agents in the system to monitor the state of the light.

Using these notifies also allows additional Programming:

Enforcing min/max Capabilities

Beginning with OS 3.3.0, Advanced Lighting Scenes Agent, Customer Interfaces, Programming and other system components strictly enforce min/max and other capability settings in LightV2 Proxy drivers. It is recommended to verify if these capabilities are correct in your drivers. Existing out-of-range settings (e.g. in Advanced Lighting Scenes agent, Programming, etc.) will not be forcibly changed on upgrades but any new settings will enforce min/max capabilities.

For example, in pre-OS 3.3.0, Composer and the proxy only enforced click_rate_min/max capabilities in a driver's Properties. In the Advanced Lighting Scene Agent and Programming, it was possible to set a rate that was out of the click_rate_min/max range. In OS 3.3.0 and later, it will not be possible to set a rate out of this range. If these capabilities are not correct, partners and customers will not be able to use correct range when specifying ramp rates.

Handling Consecutive Brightness and Color commands

The Light V2 Proxy has independent commands to set color (chromaticity) (SET_COLOR_TARGET) and brightness (SET_BRIGHTNESS_TARGET). It is possible to send these commands to the protocol driver one immediately after the other (e.g, Programming, Customer Interfaces, Agents or other drivers). When these commands come in succession, a desired outcome is that the light transitions to the specified color and brightness, i.e., consecutive commands should not interfere or override each other.

Driver developers must make sure that consecutive color and brightness commands are handled correctly. If the device does not support consecutive commands, a best practice is to have a debouncing (and/or queuing) mechanism in the driver so that commands can be combined.

Default On and Dim Colors

All colored lights have a mandatory Default On Color and Default Dim Color presets. These provide a consistent behavior when turning the light on or off. Furthermore, these presets can be used as 'hooks' for other agents/drivers in the system that might want to change color that the light should turn on to or transition to while turning off.

Default On Color should be set whenever the devices turns on through SET_BRIGHTNESS_TARGET command, Button Click and Hold actions, etc.

Default Dim color should be used while the light is turning off, except in cases when the final level is unknown. For example, color should not be changed while dimming down using button hold since it is not known when the dimming will be stopped. For example, it is not known if the customer is dimming to turn off the light or to only lower the brightness.

Setting Color while the Light is Off

The Light V2 proxy allows sending SET_COLOR_TARGET commands to the protocol driver while the light is off. In Control4 OS. color chromaticity and brightness are independent. Because of this, the protocol driver should not turn on the light when a command to set the color is received while the light is off. Instead, drivers should save the last color that was sent while the light is off and set that color when the light subsequently turns on from the Control4 system.

Warm Dim

Warm Dim technology allows LED lights to dim down to a warmer color temperature. This replicates the effect of incandescent and halogen light bulbs. With color and color temperature support in OS 3.3.0, driver developers can 'emulate' Warm Dim behavior in their drivers. The following section explains how Warm Dimming is implemented for a Philips Hue driver. However, this approach is recommended for other drivers that support this behavior.

Principle of Operation for Philips Hue This feature is only available for lights that support color correlated temperature (CCT) control. Warm Dimming can be enabled or disabled on the Lighting Extras view on the Customer Interfaces or on the driver's Advanced Properties page in Composer. When enabled, a change to the light's brightness level will automatically change the color temperature of the light so that lower brightness results in warmer colors and vise versa.

When Warm Dimming is active, color correlated temperature of the light will follow a linear function of brightness, between the 'Warm Dimming CCT At Min Brightness' and 'Warm Dimming CCT At Max Brightness' Advanced Properties. 'Warm Dimming CCT At Min Brightness' and 'Warm Dimming CCT At Max Brightness' are color correlated temperatures of the light at 1% and 100% brightness, respectively:

cct = WarmDimmingCCTatMinBrightness + (targetBrightness - 1) * (WarmDimmingCCTatMaxBrightness - WarmDimmingCCTatMinBrightness) / 99

Enabling Warm Dimming does not change Default On Color and Default Dim Color settings. The light will turn on at the Default On Brightness and CCT will be the value for Default On Brightness on the warm dimming function.

The Following graph displays a Warm Dimming CCT change as function of brightness for the following settings:

Warm Dimming will be active only while changing brightness of the light. Changing the CCT does not affect brightness. Furthermore, if any color is selected (including CCT, e.g. via Customer Interfaces, Advanced Lighting Scenes, Programming) the light will transition to the specified color and will exit the 'emulated warm dimming' mode. To return a light to the emulated warm dimming mode, it must be turned off and then turned back on.

Keypad Button Link Bindings

BUTTON_LINK bindings are a way for drivers to interact with other drivers that either expose a physical or virtual Keypad Button or for drivers that want to integrate with drivers that have a physical or virtual button. Button State and LED State information are the information that can be passed between the drivers. For example, a Control4 Keypad exposes a BUTTON_LINK binding that the Tune-In driver integrates with so a user can select a playlist or change songs via a Control4 Physical Keypad.

BUTTON_LINK was designed and assumes button and led functionality is the same between all keypad button hardware existing in the Control4 project, which causes some drivers to have to sometimes have incomplete or even fake functionality, ie: Button Release or Button Color functionality because some Non-Control4 physical keypads do not have LEDs. Also hardware/drivers do not have an API that allows drivers to interrogate hardware for what is supported. Some new devices also have specific double and triple click support which is newer. Note that older drivers were not updated to support those multi-press calls that go over BUTTON_LINK bindings. There is also no limit to what can be sent over a BUTTON_LINK as it's purely just a passage.

A driver making use of another drivers physical keypad buttons will typically support the following Commands and Notifies and will check the binding ID of the messages of the bound call command to know which button (BUTTON_LINK) the message applies to.

Commands

DO_PUSH Button was Pushed. Driver can expect to get a CLICK or RELEASE sometime in the future.  If a driver does not care if the button is held or clicked, Control4 recommends executing native driver's functionality on Press rather than waiting for the upcoming CLICK or RELEASE.

DO_CLICK Button was Clicked, not held. Driver can expect to get a CLICK or RELEASE sometime in the future.  If a driver does not care if the button is held or clicked, Control4 recommends executing native driver's functionality on Press rather than waiting for the upcoming CLICK or RELEASE

DO_RELEASE Button was finally released. Note that drivers might tie up Director between a users physical PUSH and RELEASE. For example, a half second push may appear to the driver as many seconds of being held. This could result in causing unwanted results such as "runaway" volume or light ramping. There is no way to detect or work around this at the current time.

REQUEST_BUTTON_COLORS Causes the driver to respond back with BUTTON_COLORS and MATCH_LED_STATE calls to let the other end of the binding know what the colors and state of them are._ 

SET_BUTTON_COLOR Used to set the color of a button, this command name can be unique or non-existent for some drivers but this should be followed to make mass setting LED's possible from driver to driver.

Parameter Description
str BUTTON ID: String of the button, often used by a driver or proxy to lookup which of its buttons its setting. Sometimes it can be auto determined by which binding it came in on.

Notifications

BUTTON_COLORS

Parameter Description
str ON COLOR: COLOR STR type, value of string such as "ffccbb"
str OFF COLOR: COLOR STR type, value of a string such as "000000"

MATCH_LED_STATE

Parameter Description
bool STATE: Boolean if the Off (0/false) or On (1/true) color should be active.

Light V2 Capabilities

set_level

Configuration API indicating if the device brightness can be set discretely to a number between a min and a max. Defaults to false.

Signature

<set_level></set_level>

Type

Boolean

Dynamic Capability

Yes

Example

<capabilities>
    <set_level>false</set_level>
</capabilities>

supports_target

Configuration API indicating if the device and/or driver supports the new API for changes of what the light is actively ramping from, ramping to and the ramp rate. Defaults to false.

Signature

<supports_target></supports_target>

Type

Boolean

Dynamic Capability

Yes

Example

<capabilities>
    <supports_target>false</supports_target>
</capabilities>

dimmer

Configuration API indicating if the device can dim. Defaults to false.

Signature

<dimmer></dimmer>

Type

Boolean

Dynamic Capability

Yes

Example

<capabilities>
    <dimmer>false</dimmer>
</capabilities>

cold_start

Ramping API indicating if the lighting hardware supports cold start. Defaults to false.

Signature

<cold_start></<cold_start>

Type

Boolean

Dynamic Capability

No

Example

<capabilities>
    <cold_start>true</cold_start>
</capabilities>

color_correlated_temperature_max

Maximum CCT (aka Kelvin) degrees supported by the driver.

Signature

<color_correlated_temperature_max></color_correlated_temperature_max>

Type

Integer: Defaults to 20000.

Dynamic Capability

Yes

Example

<capabilities>
    <color_correlated_temperature_max>20000</color_correlated_temperature_max>
</capabilities>

color_correlated_temperature_min

Minimum CCT (aka Kelvin) degrees supported by the driver.

Signature

<color_correlated_temperature_min></color_correlated_temperature_min>

Type

Integer: Defaults to 1000.

Dynamic Capability

Yes

Example

<capabilities>
    <color_correlated_temperature_min>1000</color_correlated_temperature_min>
</capabilities>

color_rate_behavior

Supported color rate behaviors include:

0 - Unchangeable Rate. 1 - Device only supports one rate for brightness and color. 2 - Device supports ramping brightness and color at two different rates.

Signature

<color_rate_behavior></color_rate_behavior>

Type

Integer: Defaults to 0.

Dynamic Capability

Yes

Example

<capabilities>
    <color_rate_behavior>2</color_rate_behavior>
</capabilities>

color_rate_max

The maximum color rate (in milliseconds) supported for transitioning from one color to another. This capability should always be set for any color light driver, even if the transition rate is unchangeable. This capability is not intended use user-defined values. Values are supplied by the driver developer to ensure proper behavior.

These values are consumed by Advanced Lighting Scenes agent and custom programming actions to ensure that the color ramp rate specified is within the bounds set by the driver.

Signature

<color_rate_max></color_rate_max>

Type

Integer: Defaults to 0.

Dynamic Capability

Yes

Example

<capabilities>
    <color_rate_max>200</color_rate_max>
</capabilities>

color_rate_min

The minimum color rate (in milliseconds) supported for transitioning from one color to another. This capability should always be set for any color light driver, even if the transition rate is unchangeable. This capability is not intended use user-defined values. Values are supplied by the driver developer to ensure proper behavior.

These values are consumed by Advanced Lighting Scenes agent and custom programming actions to ensure that the color ramp rate specified is within the bounds set by the driver.

Signature

<color_rate_min></color_rate_min>

Type

Integer: Defaults to 0.

Dynamic Capability

Yes

Example

<capabilities>
    <color_rate_min>200</color_rate_min>
</capabilities>

has_fixed_ramp_rate

Ramping API indicating if the light has a fixed ramp rate and can not be changed via driver. Defaults to false.

Signature

<has_fixed_ramp_rate></<has_fixed_ramp_rate>

Type

Boolean

Dynamic Capability

Yes

Example

<capabilities>
    <has_fixed_ramp_rate>true</has_fixed_ramp_rate>
</capabilities>

fixed_ramp_rate

For devices that have has_fixed_ramp_rate set to true, this is the number of milliseconds it takes the device to ramp from min to max or vice versa. Used only by the Advanced Lighting Scenes Agent. Defaults to 0.

Signature

<fixed_ramp_rate></<fixed_ramp_rate>

Type

Integer

Dynamic Capability

Yes

Example

<capabilities>
    <fixed_ramp_rate>false</fixed_ramp_rate>
</capabilities>

click_rates

Ramping API that determines whether properties appear in composer allowing the user to set the click rates. Also enables "Fast On" and "Fast Off" presets.

Signature

<click_rates></<click_rates>

Type

Boolean

Dynamic Capability

No

Example

<capabilities>
    <click_rates>false</click_rates>
</capabilities>

click_rate_min

Ramping API that determines the minimum length of time (in milliseconds) that can be set for Click Rate of a keypad button press. This is also used for minimum time of ramp rate range for Composer Programming. Defaults to 0.

Signature

<click_rate_min></<click_rate_min>

Type

Integer

Dynamic Capability

No

Example

<capabilities>
    <click_rate_min>0</click_rate_min>
</capabilities>

click_rate_max

Ramping API that determines the maximum length of time (in milliseconds) that can be set for Click Rate of a keypad button press. Defaults to 1.

Signature

<click_rate_max></<click_rate_max>

Type

Integer

Dynamic Capability

No

Example

<capabilities>
    <click_rate_max>1</click_rate_max>
</capabilities>

color_trace_tolerance

If converting to RGB or HSV color spaces it is worth noting that these two are not as accurate in resolution as the CIE xy chromaticity color space.

Because of this, there can be a loss of accuracy when converting to them or between them. For example, a Control4 Customer Interface sends the color's Hue and Saturation. If a device operates in RGB color spaces, the reported color might differ because of a rounding issue when converting between the RGB and HSV color space. This capability is used to add a tolerance when the Control4 system compares if two colors are equal.

The LightV2 proxy internally stores color as xy chromaticity. Two colors are treated equal if they are within Euclid distance specified by the color_trace_tolerance capability.

The following are pre-calculated tolerances for some of the mostly used color spaces. If the device uses one of the color spaces listed bellow to set and report color, use its tolerance as the capability:

RGB: 0.006 HSV 0.001

Signature

<color_trace_tolerance></color_trace_tolerance>

Type

Float: Defaults to 0.006

Dynamic Capability

Yes

Example

<capabilities>
    <color_trace_tolerance>0.006</color_trace_tolerance>
</capabilities>

has_extras

Boolean indicating if the device has extras commands support. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

Signature

<has_extras></has_extras>

Type

Boolean. Defaults to false

Dynamic Capability

Yes

Example

<capabilities>
    <has_extras>true</has_extras>
</capabilities>

hold_rates

Ramping API that determines whether properties appear in Composer allowing the user to set hold rates. Defaults to false.

Signature

<hold_rates></<hold_rates>

Type

Boolean

Dynamic Capability

No

Example

<capabilities>
    <hold_rates>false</hold_rates>
</capabilities>

hold_rate_min

Ramping API that determines Minimum length of time (in milliseconds) that can be set for Hold Rate of a keypad button press. Defaults to 1000.

Signature

<hold_rate_min></<hold_rate_min>

Type

Integer

Dynamic Capability

No

Example

<capabilities>
    <hold_rate_min>1000</hold_rate_min>
</capabilities>

hold_rate_max

Ramping API that determines the maximum length of time (in milliseconds) that can be set for Hold Rate of a keypad button press Also used for the maximum time of ramp rate range for Composer Programming. Defaults to 86400000.

Signature

<hold_rate_max></<hold_rate_max>

Type

Integer

Dynamic Capability

No

Example

<capabilities>
    <hold_rate_max>86400000</hold_rate_max>
</capabilities>

load_group_support

Load Group capability Indicating if the light can participate in load groups and the driver follows all Load Group API requirements. Defaults to false.

Signature

<load_group_support></load_group_support>

Type

Boolean

Dynamic Capability

No

Example

<capabilities>
    <load_group_support>false</load_group_support>
</capabilities>

min_max

Composer capability that determines whether properties appear in Composer, allowing the user to set the min and max on levels (as a percent) for the device. Defaults to false.

Signature

<min_max></min_max>

Type

Boolean

Dynamic Capability

No

Example

<capabilities>
    <min_max>false</min_max>
</capabilities>

on_off

Composer capability that determines whether commands to directly turn the light on/off appear in Composer. Defaults to false.

Signature

<on_off></on_off>

Type

Boolean

Dynamic Capability

No

Example

<capabilities>
    <on_off>false</on_off>
</capabilities>

hide_proxy_events

Composer capability that determines whether the proxy’s Events (brightness, color changes and buttons events) should appear in Composer Programming. Defaults to false.

Signature

<hide_proxy_events></hide_proxy_events>

Type

Boolean

Dynamic Capability

No

Example

<capabilities>
    <hide_proxy_events>false</hide_proxy_events>
</capabilities>

has_button_events 

Composer capability that determines whether the driver has button events that should appear in Composer programming. Defaults to false.

Signature

<has_button_events></has_button_events>

Type

Boolean

Dynamic Capability

No

Example

<capabilities>
    <has_button_events>false</has_button_events>
</capabilities>

buttons_are_virtual

Keypad capability that determines whether the buttons on the device are real physical buttons or virtual such as Control4 Centralized Lighting Modules. Defaults to false.

Signature

<buttons_are_virtual></buttons_are_virtual>

Type

Boolean

Dynamic Capability

No

Example

<capabilities>
    <buttons_are_virtual>false</buttons_are_virtual>
</capabilities>

has_leds

Keypad capability that determines whether the properties appear in Composer to allow the dealer to set LED colors of keypad buttons. Defaults to false.

Signature

<has_leds></has_leds>

Type

Boolean

Dynamic Capability

No

Example

<capabilities>
    <has_leds>false</has_leds>
</capabilities>

num_buttons

Keypad capability that indicates the number of buttons the driver supports. The value can be one of the following options:

Defaults to 0.

Signature

<num_buttons></num_buttons>

Type

Integer

Dynamic Capability

No

Example

<capabilities>
    <num_buttons>3</num_buttons>
</capabilities>

supports_color

Whether the device can show a broad range of colors.

Signature

<supports_color></supports_color>

Type

Boolean: Defaults to false.

Dynamic Capability

Yes

Example

<capabilities>
    <supports_color>false</supports_color>
</capabilities>

supports_color_correlated_temperature

Whether the device has native support for color correlated temperature reporting in Kelvin. Set this capability to False if the driver can only do predefined color temperatures. If enabled via dynamic capability, it will be necessary to Notify the proxy of the current color immediately after the capability is enabled.

Signature

<supports_color_correlated_temperature></supports_color_correlated_temperature>

Type

Boolean: Defaults to false.

Dynamic Capability

Yes

Example

<capabilities>
  <supports_color_correlated_temperature>false<supports_color_correlated_temperature>
</capabilities>

supports_default_on

This feature is for lights that support a default ON brightness in their firmware. When enabled, the Light Proxy sends a SET_PRESET_LEVEL command to drivers when the brightness "On” preset is updated in the proxy through Composer or the PRESET_LEVEL system variable. This enables light switches that respond to local button presses to go to the same default ON level as what the Control4 system uses when a light is turned on or toggled via Navigators, Composer Programming, and keypad buttons.

Signature

<supports_default_on></supports_default_on>

Type

Boolean: Defaults to false.

Dynamic Capability

No

Example

<capabilities>
  <supports_default_on>false<supports_default_on>
</capabilities>

ramp_level

Whether the light supports commands being told to ramp to a brightness. Advanced Lighting Scenes also uses this to determine if the light can be dimmed in ALS.

Signature

<ramp_level></ramp_level>

Type

Boolean: Defaults to false.

Dynamic Capability

Yes

Example

<capabilities>
  <ramp_level>false</ramp_level>
</capabilities>

advanced_scene_support

Whether the device supports the full Advanced Lighting Scenes driver commands and API's.

Signature

<advanced_scene_support></advanced_scene_support>

Type

Boolean: Defaults to false.

Dynamic Capability

No

Example

<capabilities>
  <advanced_scene_support>false</advanced_scene_support>
</capabilities>

reduced_als_support

If the advanced_scene_support capability is false, a driver can use this reduced_als_support capability for Advanced Lighting Scene support. The device will be allowed into a scene, but the device can't participate in scene ramping and can only have either 0 or 1 elements in a scene.

Signature

<reduced_als_support></reduced_als_support>

Type

Boolean: Defaults to false.

Dynamic Capability

No

Example

<capabilities>
  <reduced_als_support>false</reduced_als_support>
</capabilities>

supports_broadcast_scenes

Whether the device supports broadcasts. This includes Zigbee, ZWave, UDP.

Signature

<supports_broadcast_scenes></supports_broadcast_scenes>

Type

Boolean: Defaults to false.

Dynamic Capability

No

Example

<capabilities>
  <supports_broadcast_scenes>false</supports_broadcast_scenes>
</capabilities>

supports_multichannel_scenes

Causes the LightV2 proxy to send the "EXECUTE_SCENE" command to the device rather than a set level command.

Signature

<supports_multichannel_scenes></supports_multichannel_scenes>

Type

Boolean: Defaults to false.

Dynamic Capability

No

Example

<capabilities>
  <supports_multichannel_scenes>false</supports_multichannel_scenes>
</capabilities>

hide_proxy_properties

Whether to show all proxy properties in composer. This is primarily only used for extremely limited hardware that can't ramp or do much else except turn on and off.

Signature

<hide_proxy_properties></hide_proxy_properties>

Type

Boolean: Defaults to false.

Dynamic Capability

No

Example

<capabilities>
  <hide_proxy_properties>false</hide_proxy_properties>
</capabilities>

Light V2 Conversion Commands

This section lists the Commands used for converting to/from hue, saturation and lightness (HSV) and red, blue and green (RGB).

Control4 OS 3.3.0 and later releases include native support for Color Chromaticity and Color Correlated Temperature (CCT) functionality. Navigators, the Light V2 Proxy, and the Advanced Lighting Scene (ALS) agent use this new color architecture. This means that Drivers written against the 3.3.0 Light V2 Proxy can now implement native color support.

Color API's between the proxy, ALS agent and drivers are based on the CIE 1931 XY Chromaticity standard for visible color.

Beginning with O.S. 3.3.0, all drivers (including non-color) should implement the new Brightness Target API for communicating brightness to the Light V2 proxy.

Understanding Chromaticity

Currently, no bulb or LED strip can produce all of the colors seen by the human eye. However, the range of colors lighting devices can produce is constantly growing. In addition to this, most lighting devices do not produce the same range of colors as other devices. In order to provide a consistent color experience in a home which could include various brands and models of bulbs or strip lighting; the Control4 color API needs to support all possible visible colors. Also, RGB and Hue/Saturation data values are not universal. The same RGB and Hue/Saturation data value across different lighting devices will often produce different actual visible colors. The use of Chromaticity can solve these issues.

Chromaticity allows for communicating a color using XY coordinates that is universal and can be computationally converted to various other color spaces, formats, and their respective data values. Below is a diagram showing all visible light wavelengths and their reference points according to the CIE 1931 Chromaticity standard. All visible colors can be specified by an XY coordinate.

The Use of Gamuts

Most light driver developers are familiar with Hue and Saturation or RGB values. Hue and Saturation are a data representation of how much of a color something is in relation to how much it can be in total. RGB is similar but also includes how much of its total brightness is used. Neither of these provide a way to verify if two different lighting devices are producing the same viewable color as seen by a home owner.

However, if a devices’ gamut value for the RGB or Hue/Sat value is known, it is possible to compare this device with a different device’s gamut values making it possible to understand how the two device's colors relate. Below are the gamut triangles of three different LED chips, used in a lighting products.

In the image above, you can see that Gamut B (the smaller Red triangle) can produce a far smaller range of colors than the Gamut A (Black) triangle. If we were to send the RGB data of "0,255,0" to two different devices (one device using Gamut A LED chips and another device using Gamut B LED chips) the actual visible green color light produced by both devices would be very different.

For example, consider a home owner wants to set two different light device colors to "White" or the center of each triangle: 255,255,255 for RGB and the device gamut values are not used in their respective drivers. The resulting visual white color that the home owner would see would be very different between the two light devices. In this case, the device using Gamut B LED chips would be a much lower Color Correlated Temperature (CCT). In fact, the difference between the two devices would be over 1000. This could certainly annoy many home owners. This is why it's very useful to know the gamut of your device if it is possible to obtain it

Driver developers that know the gamut of their LED chips also know that there are standard mathematical formulas for transitioning any RGB value to/from the more universal XY Chromaticity color space.

For driver developers who do not know their LED chips gamut or aren't interested in color accuracy the provided RGB↔XY lua conversion function can be used. Be aware that these calls map RGB and Hue/Saturation data values to the generic sRGB gamut and that the color a home owner or dealer selects on UIs may not match the color produced by the LED chips. Below is graphical representation for the sRGB gamut for reference.

Lack Brightness Values

Chromaticity does not include a data value for brightness. Reasons for this include:

Color Correlated Temperature (CCT)

Many colored lighting devices are designed to fulfill just the CCT implementation of color. Drivers do have the ability to specify if they support CCT, Full Color or both. Different configuration and UI features are available based on capabilities specified by the driver. Most all "full color" lights will inherently support CCT, as the image below shows.

Note that Control4 OS Color APIs also allow specifying if a color is CCT or "Full Color". This helps the device know if the user is trying to control the light in one mode vs another.

ColorCCTtoXY

This function converts a CCT (color temperature in Kelvin) color to the CIE-1931 xy chromaticity.

This function was released in conjunction with O.S. 3.3.0.

Signature

C4:ColorCCTtoXY (k)

Parameters

Parameter Description
num Number representing Kelvin temperature.

Returns

Parameter Description
num Number representing x component of the CIE-1931 xy chromaticity.
num Number representing y component of the CIE-1931 xy chromaticity.

ColorHSVtoRGB

This function converts an HSV color to the RGB color space.

This function was released in conjunction with O.S. 3.3.0.

Signature

C4:ColorHSVtoRGB (h, s, v, rgbScale)

Parameters

Parameter Description
num Number representing hue component of HSV.
num Number representing saturation component of HSV.
num Number representing value component of HSV.
num (Optional) Number representing RGB scale (1 to 255), default value 255.

Returns

Parameter Description
num Number representing the red component of RGB (in given scale).
num Number representing the green component of RGB (in given scale).
num Number representing the blue component of RGB (in given scale).

Example

lua
print(C4:ColorHSVtoRGB(80, 100, 50))

ColorHSVtoXY

This function converts an HSV color to a CIE-1931 xy chromaticity.

This function was released in conjunction with O.S. 3.3.0.

Signature

C4:ColorHSVtoXY (h, s, v)

Parameters

Parameter Description
num Number representing hue component of HSV.
num Number representing saturation component of HSV.
num Number representing value component of HSV.

Returns

Parameter Description
num Number representing the x component of the CIE-1931 xy chromaticity.
num Number representing the y component of the CIE-1931 xy chromaticity.

ColorRGBtoHSV

This function converts an RGB color to the HSV color space.

This function was released in conjunction with O.S. 3.3.0.

Signature

C4:ColorRGBtoHSV (r, g, b, rgbScale)

Parameters

Parameter Description
num Number representing the red component of RGB (in given scale).
num Number representing the green component of RGB (in given scale).
num Number representing the blue component of RGB (in given scale).
num (Optional) Number representing RGB scale (1 to 255), default value 255.

Returns

Parameter Description
num Number representing hue component of HSV.
num Number representing saturation component of HSV.
num Number representing value component of HSV.

ColorRGBtoXY

This function converts an RGB color to a CIE-1931 xy chromaticity.

This function was released in conjunction with O.S. 3.3.0.

Signature

C4:ColorRGBtoXY (r, g, b, rgbScale)

Parameters

Parameter Description
num Number representing the red component of RGB (in given scale).
num Number representing the green component of RGB (in given scale).
num Number representing the blue component of RGB (in given scale).
num (Optional) Number representing RGB scale (1 to 255). The default value is 255.

Returns

Parameter Description
num Number representing the x component of a CIE-1931 xy chromaticity.
num Number representing the y component of a CIE-1931 xy chromaticity.

ColorXYtoCCT

This function converts from a CIE-1931 xy chromaticity to a CCT (color temperature in Kelvin) color.

This function was released in conjunction with O.S. 3.3.0.

Signature

C4:ColorXYtoCCT (x, y)

Parameters

Parameter Description
num Number representing the x component of a CIE-1931 xy chromaticity.
num Number representing the y component of a CIE-1931 xy chromaticity.

Returns

Parameter Description
num Number representing the CIE-1931 xy chromaticity as a Kelvin temperature.

Usage Note

This function will return a color temperature for any value provided. This includes color values that fall outside of the usual white/CCT colors.

ColorXYtoHSV

This function converts a CIE-1931 xy chromaticity to the HSV color space.

This function was released in conjunction with O.S. 3.3.0.

Signature

C4:ColorXYtoHSV (x, y)

Parameters

Parameter Description
num Number representing the x component of a CIE-1931 xy chromaticity.
num Number representing the y component of a CIE-1931 xy chromaticity.

Returns

Parameter Description
num Number representing the hue component of HSV.
num Number representing the saturation component of HSV.
num Number representing the value component of HSV.

ColorXYtoRGB

This function converts a CIE-1931 xy chromaticity to the RGB color space.

This function was released in conjunction with O.S. 3.3.0.

Signature

C4:ColorXYtoRGB (x, y, rgbScale)

Parameters

Parameter Description
num Number representing the x component of a CIE-1931 xy chromaticity.
num Number representing the x component of a CIE-1931 xy chromaticity.
num (Optional) Number representing RGB scale (1 to 255). The default value is 255.

Returns

Parameter Description
num Number representing the red component of RGB in given scale.
num Number representing the green component of RGB in given scale.
num Number representing the blue component of RGB in given scale.

Light V2 Conditionals

The following Conditionals are used for Composer Programming to perform logic comparisons of Variables. This functionality is managed by the Proxy and Director.

IS_COLOR

Boolean. If the color of the light matches the color.

IS_ON

Boolean. If the light is on at any level.

IS_OFF

Boolean. If the light is at the "Off" preset.

BTN_PRESSED

Boolean. If the button is currently being pressed.

BTN_RELEASED

Boolean. If the button is not currently being pressed.

BTN_COLOR

Boolean. If the buttons led color matches a hex string.

BTN_NOT_COLOR

Boolean. If the buttons led color does not match a hex string.

Light V2 Commands

This section lists the Commands (Bound Call, aka SendToDevice in Lua) that the Light V2 proxy supports. These are for use by Navigators, Composer Programming and other services like Voice Control. The thing to remember with proxies is that many of the commands are passed on to the protocol, and it is the protocol drivers responsibility to ripple the commands result back up to the proxy using a 'Notify' command. This allows the protocol to optionally make slight adjustments to commands for its unique driver or hardware, and then inform the proxy of the change.

BUTTON ACTION

Used to perform a button action on the device via BUTTON_LINK bindings. This is useful if you want to do user dependent hold/release functionality in a driver or hardware. Proxy will create and maintain the consumer binding connections for TOP, BOTTOM and TOGGLE lightV2 buttons and their BUTTON_LINK bindings. When the proxy gets a BUTTON_ACTION command over one of the three binding connections, it will forward the command to the driver. The driver needs to send a BUTTON_ACTION Notify back to the proxy with the same BUTTON_ID and ACTION params and values so the proxy knows the command was successful and that the driver or hardware is tracking that the button is currently in a Pressed state. _

If a driver does not do send the Notify that a button is Pressed to the proxy, an additional (second) Press command will be auto-generated by the proxy and sent to the driver if the proxy receives a Click and has not been notified that the drivers button is in a Pressed state.

Signature

BUTTON_ACTION ()

Parameter Description
Number BUTTON_ID. ID for the button:
0 - Top
1 - Bottom
2 - Toggle
Number ACTION :
0 - RELEASE (HOLD)
1 - PRESS
2 - RELEASE (CLICK)

Returns

None

SET BRIGHTNESS TARGET

Used to set the target brightness of where the light is being requested to go.

All Lights have the following Presets at minimum and can be used by UI's, Voice Control, Programming, etc so a UI does not have to look up common Presets and/or levels for general control.

"On" - (Static Preset ID 1) This is the Preset that should be used when turning a light on. The level and rate that matches what a Top "Click" press would activate. The Level was imported from the PRESET LEVEL value in previous OS releases.

"Off" - (Static Preset ID 2) This is the Preset that should be used when turning a light off. This presets level and rate matches what the bottom "Click" on a physical device would be.

"Slow On" - (Static Preset ID 3) This is the level and rate that matches what a Top button "Hold" press would be.

"Slow Off" - Static Preset ID 4) This is the level and rate that matches what a Bottom button "Hold" press would be.

Additional presets can be added via the C4TYPE PRESET API. This will allow drivers that have common "20% 40% 60% 80%" presets to define these presets and the LightV2 proxy will automatically take care of creating keypad bindings and managing LED status tracking of those presets and keypad button status.

Signature

SET_BRIGHTNESS_TARGET ()

Parameter Description
Float LIGHT_BRIGHTNESS_TARGET_LEVEL. Number between min and max as reported by the device
Integer LIGHT_BRIGHTNESS_TARGET_PRESET ID
Integer LIGHT_BRIGHTNESS_TARGET_ PERCENT: Percent from 0 to 100
Integer RATE: Milliseconds for the transition. Optional. Will use driver default if parameter is not specified.
Integer RATE: Optional. Milliseconds for the transition. Will use driver default if parameter is not specified. Note that passing a -1 value in this parameter results in it being treated as the same as not specifying the parameter at all.

Returns

None

Usage Note

Control4 is discouraging the use of the following commands as they will be deprecated. The SET BRIGHTNESS TARGET API should be used in their place:

SET LIGHT LEVEL: Use SET BRIGHTNESS TARGET with the param RATE of 0.

RAMP TO LEVEL: Use SET BRIGHTNESS TARGET with RATE in milliseconds.

SET COLD START LEVEL

Used to set the cold start level for the device for drivers that support hardware based Cold Start behavior.

Signature

SET_COLD_START_LEVEL ()

Parameter Description
Integer LEVEL: 0 - 100

Returns

None

SET COLD START TIME

Used to set the cold start level for the device for drivers that support hardware based Cold Start behavior.

Signature

SET_COLD_START_TIME ()

Parameter Description
Integer TIME in milliseconds

Returns

None

SET MAX ON LEVEL

Used to set the maximum on level for the device

Signature

SET_MIN_ON_LEVEL ()

Parameter Description
Integer LEVEL: 0 - 100

Returns

None

SET MIN ON LEVEL

Used to set the minimum on level for the device

Signature

SET_MIN_ON_LEVEL ()

Parameter Description
Integer LEVEL: 0 - 100

Returns

None

SET PRESET LEVEL

Used to set brightness of the "On" Preset that is used when a user clicks the Top button of a light.

Signature

SET_PRESET_LEVEL ()

Parameter Description
Integer LEVEL: 0 - 100

Returns

None

TOGGLE

Used to toggle the light. If it is a dimmer and it is off, toggling will activate the "On" preset. Should only be used in Composer Programming when the current brightness of the light does not matter nor does the brightness level it will go to matter as delays of brightness reporting to the proxy or network issues will result in unreliable final brightness. If final brightness is important, then the On or Off presets should be specifically referenced in the SET_BRIGHTNESS_TARGET command.

Signature

TOGGLE ()

Parameter

None

Returns

None

SET CLICK RATE DOWN

Used to set the click rate down for the device.

Signature

SET_CLICK_RATE_DOWN ()

Parameter Description
Integer RATE in milliseconds

Returns

None

SET CLICK RATE UP

Used to set the click rate up for the device.

Signature

SET_CLICK_RATE_UP ()

Parameter Description
Integer RATE in milliseconds

Returns

None

SET_COLOR_TARGET

Sent to drivers to control it to change the color. Once drivers begin to change color, they should send a COLOR_CHANGING Notify. Then once the color has finished changing it should send a COLOR_CHANGED Notify.

Signature

SET_COLOR_TARGET()

Parameter Description
LIGHT_COLOR_TARGET_X = X Coordinate of CIE 1931 Chromaticity Diagram
LIGHT_COLOR_TARGET_Y = Y Coordinate of CIE 1931 Chromaticity Diagram
LIGHT_COLOR_TARGET_MODE = Integer of: 0 full color, 1 color correlated temperature. Default is 0. Most Bulb, LED strip and their drivers can likely ignore this. This is provided in the case that some bulbs or drivers need to track if they are in working in a cct mode or color mode. We recommend all drivers stick to only operating in full_color mode if possible.
RATE Integer. Optional Parameter of milliseconds to ramp over. Will use driver default if parameter is not used.

Returns

None

SET HOLD RATE UP

Used to set the hold rate up for the device.

Signature

SET_HOLD_RATE_UP ()

Parameter Description
Integer RATE in milliseconds

Returns

None

SET HOLD RATE DOWN

Used to set the hold rate down for the device.

Signature

SET_HOLD_RATE_DOWN ()

Parameter Description
Integer RATE in milliseconds

Returns

None

SET BUTTON COLOR

Used to set the color for a particular button for when the light is on/off

Signature

SET_BUTTON_COLOR ()

Parameter Description
Number BUTTON_ID
hex string ON_COLOR Optional. 6 character hex string, representing an RGB value.
hex string OFF_COLOR Optional. 6 character hex string, representing an RGB value.

Returns

None

SET ALL LED

Used to set the LED color of all the buttons on the device to one color (both on/off colors).

Signature

SET_ALL_LED ()

Parameter Description
hex string COLOR: 6 character hex string, representing an RGB value.

Returns

None

JOIN GROUP

Received when the driver is added to a Load Group.

Signature

JOIN_GROUP ()

Parameter Description
String GROUP_ID: Device ID of the Load Group driver
String KEEP_SYNC: 1 for True and 0 for False

Returns

None

LEAVE GROUP

Received when Load Group driver pop the light driver from the gropu.

Signature

LEAVE_GROUP

Parameter Description
String GROUP_ID Driver ID of the Load Group

Returns

None

SET GROUP SYNC

Received when Keep loads in sync property is changed. In case of checking the Keep loads in sync, GROUP_SET_LEVEL will be sent right before SET_GROUP_SYNC.

Signature

Parameter Description
String GROUP_ID Driver ID of the Load Group driver
String KEEP_SYNC 0 for False and 1 for True

Received

None

GROUP RAMP TO LEVEL

Received when group is ramping to level.

Signature

GROUP_RAMP_TO_LEVEL ()

Parameter Description
String GROUP_ID Driver ID of the Load Group
String LEVEL Level to ramp
String TIME Time rate for ramping

Returns

None

SET GROUP LEVEL

Received when group is setting light level.

Signature

GROUP_SET_LEVEL ()

Parameter Description
String GROUP_ID Driver ID of the Load Group
String LEVEL Light level to be set on the Light driver

None

GROUP START RAMP

Received when group start hold ramp operation.

Signature

GROUP_START_RAMP ()

Parameter Description
String GROUP_ID Driver ID of the Load Group
String RAMP_UP Value 1
String RATE Rate time in ms

Returns

None

GROUP STOP RAMP

Received when group stop hold ramp.

Signature

GROUP_STOP_RAMP ()

Parameter Description
String GROUP_ID Driver ID of the Load Group

Returns

None

UPDATE_COLOR_PRESET

Having a mandatory On color preset for all colored lights provides dealers a way of configuring various brands and models of lights in a way that a customer can have a consistent 'default on' color behavior. Without this feature, it's almost certain that different brands and models of lights would turn on to different colors or color temperatures.

In addition to the On color preset, having a mandatory Dim color preset for all colored lights provides dealers a way of configuring various brands and models of lights in a way that a customer can have a consistent 'warm dim' color behavior.

The 'On' color preset is the color that a light should generate at its 'Default On Brightness' level.

The 'Dim' color preset is the color that a light should generate at 1% brightness.

For example, consider a lights Default On Brightness is set to 80%. The On preset color is 4000CCT and the Dim preset color is 2000CCT. If the light was then set to a brightness level of 40%, the lights color would be 3000CCT. Also, if the lights brightness is set to 80% or higher, the color would always be 4000CCT. This formula would be used when a light is turned on (from off level) via a SET_BRIGHTNESS_TARGET and if no SET_COLOR_TARGET is additionally used.

Any further time that SET_BRIGHTNESS_TARGET is used, the driver should use the formula to calculate the new color and also set that color when the brightness is changed via SET_BRIGHTNESS_TARGET. If a SET_COLOR_TARGET command is used after the light has been turned on, then the formula for warm-dim functionality should no longer occur and the color should not be auto-adjusted until the light is turned off and back on again.

When all drivers follow this formula there will be consistent On and Warm Dim lighting experiences for customers.

In 3.3.0, the LightV2 Proxy 'Dim' and 'On' color presets can be changed in Composer and Navigator. Composer currently has a checkbox to 'enable' the Dim color, although this checkbox is not an 'enable dim color' feature. It is a 'hide the dim color preset in Composer' feature.

Upon 'disabling' the Dim color Composer is actually setting the Dim preset color to the On preset color. The LightV2 Proxy always has an On and Dim preset defined regardless of the checkbox in Composer being checked or unchecked. There isn't a 100% sure way for a driver to know if this checkbox is 'checked’. However, a driver could consider it potentially checked if the Dim and On preset colors are not the same color.

Signature

UPDATE_COLOR_PRESET()

Parameter Description
COMMAND String - This will be one of the following strings: "ADDED", "MODIFIED" "REMOVED"
ID Number. Preset ID
NAME String. Name of the preset.
COLOR_X Double - CIE 1931 Chromaticity Color.
COLOR\Y Double - CIE 1931 Chromaticity Color.
COLOR_MODE UInt. Color Mode (0 Full Color, 1 CCT)

Returns

None

SET_CLICK_RATE_UP

Used to set the click rate up for the device. When a driver gets this command, it MUST send a CLICK_RATE_UP notification with the value that the driver accepted.

Signature

SET_CLICK_RATE_UP()

Parameter Description
RATE Integer - In milliseconds

Returns

None

SET_CLICK_RATE_DOWN

Used to set the click rate down for the device. When a driver gets this command, it MUST send a CLICK_RATE_DOWN notification with the value that the driver accepted.

Signature

SET_CLICK_RATE_DOWN()

Parameter Description
RATE Integer - In milliseconds

Returns

None

Light V2 Events

The following are System Events that are provided and managed by the Proxy. These can be used for Composer Programming or other drivers to monitor the changes of a values reflected in a LightV2 proxy.

Light On Light has turned On. Event ID = 5100.

Light Off Light has turned Off. Event ID = 5101.

Light Brightness Changed The brightness of the light has changed. Event ID = 4001.

Light Brightness Changing The brightness of the light is changing. Event ID = 4000.

Light Color Changed The color of the light has changed. Event ID = 4003

Light Color Changing The color of the light is changing. Event ID = 4002

Old Light Level Changed The light level of the light has changed and is at the final brightness. Event ID = 5000.

0.

Keypad Events

An event is fired when something happens to one of the buttons on the device. The pattern for determining the Event ID is:

5001 + action + (btnID * 5).

The actions are:

The button IDs are determined by the protocol driver, but the standard ordering is:

Light V2 Protocol Notifications

BUTTON ACTION

Used to inform the proxy that a button state has changed on the device. Note that the Proxy expects a Release if it gets a Push. If it does not receive a Release, subsequent Pushes will not work and state/tracking will be off.

Signature

BUTTON_ACTION ()

Parameter Description
int BUTTON_ID: Index of the button being controlled.
int ACTION: The Event Type which include:
0 - Release
1 - Push
2 - Single Tap
3 - Double Tap
4 - Triple Tap

Returns

None

BUTTON INFO

Used to inform the proxy that a status of a button LED has changed. Color strings are in the format of 6 hex characters such as 000000, FFFFFF or 0000FF.

Signature

BUTTON_INFO ()

Parameter Description
int BUTTON_ID: Index of the button being controlled.
str NAME: Optional. Update the name of the button.
str ON_COLOR: Optional. Hex string for the On color.
str OFF_COLOR: Optional. Hex string for the Off color.
str CURRENT_COLOR: Optional. Hex string for the Current color.

Returns

None

CLICK COUNT

Used to tell the proxy that a button has been clicked multiple times.

Signature

CLICK_COUNT ()

Parameter Description
int BUTTON_ID: Index of the button being controlled.
int COUNT: Number of clicks.

Returns

None

CLICK RATE DOWN

Used to inform the proxy that the hardware click rate for the "Off" Brightness preset changed.

Signature

CLICK_RATE_DOWN ()

Parameter Description
int RATE: Number of milliseconds it takes for the light to ramp from all the way on to all the way off.

Returns

None

CLICK RATE UP

Used to inform the proxy that the hardware click rate for the "On" Brightness preset changed.

Signature

CLICK_RATE_UP ()

Parameter Description
int RATE: Number of milliseconds it takes for the light to ramp from all the way off to all the way on.

Returns

None

COLD START LEVEL

Used to inform the proxy that the hardware Cold Start level has changed. This is useful for hardware such as Control4’s Gen3 lighting where the hardware supports temporarily setting the brightness to this level in order to 'jump start' the capacitors/ballasts on LED and florescent lights. This value changes over time as capacitors and ballasts age.

Signature

COLD_START_LEVEL ()

Parameter Description
int BRIGHTNESS: Percent from 0-99 for the Min On brightness to be remapped to.

Returns

None

COLD START TIME

Used to inform the proxy that the hardware Cold Start level has changed. This is useful for hardware such as Control4’s Gen3 lighting where the hardware supports temporarily setting the brightness to a level for this number of milliseconds in order to 'jump start' the capacitors/ballasts on LED and florescent lights. This value changes over time as capacitors and ballasts age.

Signature

COLD_START_TIME ()

Parameter Description
int BRIGHTNESS: Number of milliseconds that the light is turned on to the COLD_START_LEVEL value.

Returns

None

DYNAMIC CAPABILITIES CHANGED

Used to update capabilities and proxy functionality without requiring a different c4i/c4z file. Also used for drivers that have capabilities that change during runtime. Multiple parameters can be set with a single notify for 'atomic changes' where some functionality may involve mutual exclusion/inclusion.

Signature

DYANAMIC_CAPABILITIES_CHANGED ()

Parameters

If the device supports Zigbee Broadcast Scenes one parameter is required:

Parameter Description
bool true/false

If the device supports dimming, the following parameter can be used to change if a light is a dimmer or switch at any time. This is very useful for having a single driver provide both functionality depending on what hardware is connected or detected. This can also provide a dealer the ability to make a dimmer act as a switch for UI's and system functionality.

Parameter Description
name dimmer
bool true/false

An Example for these parameters would be:

Notify("supports_broadcast_scenes=true","dimmer=true"

Returns

None

HOLD RATE DOWN

Used to inform the proxy that the hardware click rate for the "Slow Off" Brightness preset changed.

Signature

HOLD_RATE_DOWN ()

Parameter Description
int RATE: Number of milliseconds it takes for the light to ramp from all the way on to all the way off.

Returns

None

HOLD RATE UP

Used to inform the proxy that the hardware click rate for the "Slow On" Brightness preset changed.

Signature

HOLD_RATE_UP ()

Parameter Description
int RATE: Number of milliseconds it takes for the light to ramp from all the way off to all the way on.

Returns

None

LIGHT BRIGHTNESS CHANGED

Used to notify the proxy that a lights brightness changed. It is not required to send a LIGHT_BRIGHTNESS_CHANGING Notify before sending this, so devices like switches or some dimmers that do not provide status on where they are going can still be implemented with the new API. This notify should always be sent to the proxy when the driver starts and/or when the hardware comes online and the driver knows the actual brightness of the hardware.

Signature

LIGHT_BRIGHTNESS_CHANGED ()

Parameter Description
value LIGHT_BRIGHTNESS_CURRENT: Double. Raw value of where the light brightness stopped.

Returns

None

Usage Note

Dimmer Drivers should only use BRIGHTNESS_CHANGING and BRIGHTNESS_CHANGED notifies and no longer use LEVEL_CHANGE notify.

Switch drivers only need to use the BRIGHTNESS_CHANGED notify.

LIGHT BRIGHTNESS CHANGING

Used to notify the Light proxy that a light’s brightness is changing. The benefit of using this Notify is that drivers can provide data on how the light brightness is changing. Using this Notify greatly improves interaction with the system in numerous ways for components such as Advanced Lighting Scene Agent, Navigators and Composer Programming. A driver should enabled the supports_target capability if using this notify. Note the LIGHT_LEVEL notify should be avoided if a driver uses this API.

Behaviorally, the Light proxy generates percentage scaling for UI's and other system components. However, since a single percent may not be enough light resolution, programming and other system components can set raw values for a device.

In the case where the end of the ramping value is unknown, specifying the end point of where the device will change to (if no further interaction is done) is the best practice. For example, is if someone holds a button to slow-ramp a light On, the driver should Notify the proxy that the end point is 100 if 100 is the max value of the light.

Signature

LIGHT_BRIGHTNESS_CHANGING ()

Parameter Description
value LIGHT_BRIGHTNESS_CURRENT: Double. Raw value of the lighting level. Does not need to be 0-100% and can be based on the Min and Max Brightness capabilities such as 0-10, 0-99. 0-256 and even negative if the Brightness Min is defined as a negative number.
value LIGHT_BRIGHTNESS_TARGET: Double. Raw value of where the light is going to.
int RATE: Number of milliseconds it will take to ramp to the target level.

Returns

None

Usage Note

Dimmer Drivers should only use BRIGHTNESS_CHANGING and BRIGHTNESS_CHANGED notifies and no longer use LEVEL_CHANGE notify.

Switch drivers only need to use the BRIGHTNESS_CHANGED notify.

LIGHT COLOR CHANGED

Used to inform the proxy that the color has finished changing. It is possible to use this call without the LIGHT_COLOR_CHANGING Notify call being sent first but some Composer Programming paths will not be run.

Signature

LIGHT_COLOR_CHANGED ()

Parameter Description
LIGHT_COLOR_CURRENT_X The CIE 1931 X coordinate for where the color change stopped.
LIGHT_COLOR_CURRENT_Y The CIE 1931 Y coordinate for where the color change stopped.
LIGHT_COLOR_CURRENT_COLOR_MODE Optional. 0 for Full Color, 1 if the XY coordinate is a CCT

Returns

None

LIGHT COLOR CHANGING

Used to inform the proxy that the color is changing on the light. The optional parameters are useful in case the color changed without the proxy knowing which might be needed by some unreliable lighting hardware.

Signature

LIGHT_COLOR_CHANGING ()

Parameter Description
LIGHT_COLOR_TARGET_X CIE 1931 X coordinate for where the color is going to.
LIGHT_COLOR_TARGET_Y CIE 1931 Y coordinate for where the color is going to.
LIGHT_COLOR_TARGET_COLOR_MODE Optional. 0 for Full Color, 1 if the XY coordinate is a CCT
RATE Integer. Number of milliseconds it will take to ramp to the target level. 0 will be used if this parameter is not provided.
LIGHT_COLOR_CURRENT_X Optional. CIE 1931 X coordinate for where the color is changing from.
LIGHT_COLOR_CURRENT_Y Optional. CIE 1931 Y coordinate for where the color is changing from.
LIGHT_COLOR_CURRENT_COLOR_MODE Optional. 0 for Full Color, 1 if the XY coordinate is a CCT

Returns

None

LIGHT LEVEL

Used to inform the proxy that the light level has changed.

Signature

LIGHT_LEVEL ()

Parameter Description
int LEVEL: Percent from 0-100 of the current light level.

Returns

None

Usage Note

As of Operating System 3.3.0, drivers should no longer send incremental notifies of light level every 20ms, 500ms, 1000ms, etc, as the lights brightness ramps. Sending excessive incremental level updates caused performance issues including:

See the LIGHT_BRIGHTNESS_CHANGING notification for additional information.

MAX ON

Used to inform the proxy that the hardware maximum On level has changed. This is useful for hardware such as Control4’s Gen3 lighting where the hardware supports remapping where 100% brightness is at for the actual hardware. This does not change the available brightness percent range from 0-100%.

Signature

MAX_ON ()

Parameter Description
int BRIGHTNESS: Percent from 1-100 for the Max On brightness to be remapped to.

Returns

None

MIN ON

Used to inform the proxy that the hardware minimum On level has changed. This is useful for hardware such as Control4’s Gen3 lighting where the hardware supports remapping where 1% brightness is when the light is on. This does not change the available brightness percent range from 0-100%. Note that with LED lights, the usable minimum on range does change depending on bulb, age of bulb and other factors.

Signature

MIN_ON ()

Parameter Description
int BRIGHTNESS: Percent from 0-99 for the Min On brightness to be remapped to.

Returns

None

ONLINE CHANGED

Used to inform the proxy that the online status of the device has changed. Due to backwards compatibility, the proxy starts 'online' as many old devices did not report online status. UI functionality will be disabled if the light is offline.

Signature

ONLINE_CHANGED ()

Parameter Description
bool STATE: True/False. Whether the device is online or not.

Returns

None

ONLINE CHANGED

Used to inform the proxy that the online status of the device has changed. Due to backwards compatibility the proxy starts 'online' as many old devices did not report online status. UI functionality will be disabled if the light is offline.

Signature

ONLINE_CHANGED ()

Parameter Description
STATE Boolean. Whether the device is online or not.

Returns

None

PRESET LEVEL

This feature is only to be used if the actual hardware supports a physical button and the light can be programmed to turn on to a specific level. Used to set brightness preset of the "On" (ID = 1) Preset that is used when a user clicks the Top button of a light.

Signature

PRESET_LEVEL ()

Parameter Description
BRIGHTNESS Integer - Percent value from 1-100.

Returns

None

Light V2 Extras Interface Library

Overview

Extras are a way for driver developers to expose unique hardware functionality that users can interact with on a UI/Navigator. This functionality bypasses the need for a proxy to know about the unique features and how to handle them. A protocol driver notify is used to pass the Extras XML information from the protocol driver to the proxy, where the proxy caches the xml strings for current setup and state information. The UI uses a UI_REQUEST as needed to get the information if the UI has just rebooted/started/loaded and then the UI will get updates of these xml strings if it is listening for dataToUI's from the device. Extras objects are accessible through the "Extras Tab" located on the main Navigator screen for the Proxy.

Capabilities

The has_extras capability must be set to true to support the use of Extras. The library will automatically (via dynamic capability) set the has_extras capability when a first Section is created. Also, when the last section is removed, the has_extras capability will be disabled. The Extras class does not implement class destructor as it is not supported in Lua 5.1 and Lua JIT. In the case of setting the Extras class instance to nil, the Extras:cleanCapability() method should be called previously.

Protocol Notify and Proxy Messages

There are two notifies a driver must make to the proxy where this information is forwarded immediately to any UI's listening for dataToUI on the proxy and the information is also cached for future UI's to request: EXTRAS_SETUP_CHANGED and EXTRAS_STATE_CHANGED.

Whenever a driver changes values that are reflected in either the setup or state xml, it must make the notify to the proxy with the updated information. This includes if hardware or a feature is added or removed, a value for one of the objects was updated, and so on.

It is also advisable for protocol drivers to send this data either on initialization of the driver if the values are not likely to change when hardware comes online, or perhaps when the hardware comes online and the extras commands will be able to succeed.

In addition, it could be advisable that the state of objects is changed to hidden when hardware and/or disabled features are not available rather than sending new extras_setup notifies as this may cause a UI to redraw the extras page and reset defaults while a user is interacting with the Extras page on a UI.

EXTRAS SETUP CHANGED

Update the Extras Setup, displayed in the UI 

Signature

EXTRAS_SETUP_CHANGED ()

Parameter Description
XML XML text string of XML matching the Preset Schedule schema. Comes through to the UI as extras_setup. Note that as of OS 3, sending only a singular XML string is supported. For example, sending an array of Extras can result in Navigator performance issues.

Returns

None

EXTRAS STATE CHANGED

Update the Extras Setup, displayed in the UI 

Signature

EXTRAS_STATE_CHANGED ()

Parameter Description
XML XML text string of XML matching the Preset Schedule schema. To UI comes through as extras_state.

Returns

None

How UI's handle Extras objects

UI's will display objects in the order they are read in the EXTRAS_SETUP xml. If an object needs to have a default selection, number or string, the UI looks at the value attribute for the default. If no value is specified in the EXTRAS_SETUP the UI will default to a behavior listed below for each object type.

When a user changes a value on a UI, the UI will immediately send the command associated with that object down to a protocol driver as a command. The UI waits for a response that the protocol driver has handled the command and the protocol driver must send an updated EXTRAS_STATE notify for the object.

The EXTRAS_STATE does not need to include all states of all objects, only the states of the objects it wants to update (or acknowledged) it has received but it could contain more than just one objects updated state. A driver could also respond back with just the <extras_state><extra><object id="1"></extra></extras_state> if it wanted to acknowledge the command succeeded but not update the value. If a UI that sent the command does not get a response in 10 seconds, it will change the value of the object back to what it was prior to what the user had changed it from.

Extras Class

Overview

This class provides an interface between instances of the ExtrasObjectBasedClass. This class can cover following use cases:

ObjectParameters

Structure that contains all fields needed to initialize ExtrasObject instance

Field Name Field Type
id string
command string
label string
hidden string_bool
readonly string_bool
extraparams table<string,string>

Extras:addObjects

Adds extras object to the container in the section named sectionLabel

New object will be added at the end of the section and will be displayed as the last section element in the CI. In case of object array, Object order in the CI will be in the same order objects were sorted in the input array.

Function Signature:

Extras:addObjects(objects, sectionLabel)

Function Parameters:

Parameter Type Description
objects ExtrasObjectBasedClass\ ExtrasObjectBasedClass: List or individual extras object
sectionLabel string

Returns:

Name Type Description
cnt number Number of objects added

Extras:getObject

Returns extras object with id no matter the section

Function Signature:

Extras:getObject(id)

Function Parameters:

Parameter Type Description
id string ID of the extras object

Returns:

Name Type Description
object ExtrasObjectBasedClass nil

Extras:updateObject

Updates value and hide parameter for the object with objId and sends notification to proxy bound to proxyId

If value or hide is not provided, field value will not change. This methods updates fields and sends Proxy Notification that state has been changed.

Function Signature:

Extras:updateObject(proxyId, objId, newValue, hide)

Function Parameters:

Parameter Type Description
objId string ID of the extras object
newValue string Value to be updated
hide string_bool True or false string

Extras:removeObject

Removes extras object with id no matter the section.

Function Signature:

Extras:removeObject(id)

Function Parameters:

Parameter Type Description
id string ID of the extras object

Returns:

Name Type Description
ret boolean Returns true if removal was successful

Extras:makeSetupXml

This method makes complete XML string to be send as response to GET_EXTRAS_SETUP proxy command.

Function Signature:

Extras:makeSetupXml()

Returns:

Name Type Description
xml string

Extras:makeStateXml

This method makes complete XML string to be send as response to GET_EXTRAS_STATE proxy command or to be sent after extras object update.

Function Signature:

Extras:makeStateXml()

Returns:

Name Type
xml string

Extras:sendSetup

Builds xml and sends proxy notification EXTRAS_SETUP_CHANGED

Function Signature:

Extras:sendSetup(proxyId)

Extras:sendState

Builds xml and sends proxy notification EXTRAS_STATE_CHANGED

Function Signature:

Extras:sendState(proxyId)

Section

Structure that represent a section. Holds section name and ExtrasObject based classes array.

Field Name Field Type
label string
objects ExtrasObjectBasedClass]

ExtrasObjectBasedClass

This alias is for all classes that inherits the ExtrasObject class.

Type
Name Value
ExtrasObjectBasedClass ExtrasButton, ExtrasCheckbox

string_bool

Alias for values can be provided as hide argument

Type
Name Value
string_bool "true" "false"

Extras

Container class for the ExtrasObject based instances (Button, Checkbox ...) This class is used to hold ExtrasObject based instances and to handle XML assembling and sending. This class handles sections as well as = inheritsFrom(nil)

Field Name Field Type
sections Section
proxyId number
has_extras boolean

Function Parameters:

Parameter Type
proxyId number

Extras:addSection

Adds section to the instance

A Section table will be initialized and added in the self.sections field. The object field of the table type Section will bi initialized as empty table. Section order in the CI will be in the same order section were added in the container class instance.

Function Signature:

Extras:addSection(label)

Function Parameters:

Parameter Type Description
label string Name of the section that will be displayed in the CI

Returns:

Name Type Description
ret boolean Returns true if insertion was successful

Extras:removeSection

Removes the section with the label sectionLabel from the list

This method will remove the section with label sectionLabel and all objects in the section. Section indexes will be changed to fill the empty space but the order will not change.

Function Signature:

Extras:removeSection(sectionLabel)

Function Parameters:

Parameter Type Description
sectionLabel string

Returns:

Name Type Description
ret boolean Returns true if the operation was successful

Extras:getSection

Returns section table with the label sectionLabel

Function Signature:

Extras:getSection(sectionLabel)

Function Parameters:

Parameter Type Description
sectionLabel string

Returns:

Name Type Description
section Section: nil

Extras:changeSection

Moves extras object with id in section named newSection

Function Signature:

Extras:changeSection(id, newSection)

Function Parameters:

Parameter Type Description
id string ID of the extras object
newSection string Name of the new section to put the object

Extras:cleanCapability

This method cleans the has_extras capability.

Function Signature:

Extras:cleanCapability()

Extras:setCapability

This method sets the has_extras capability.

Function Signature:

Extras:setCapability()

Extras Button

Overview

This class represents an abstraction of the Extras Button object. The class interface provides following cations:

ExtrasButton : ExtrasObject

Class that represent extras button functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasButton = inheritsFrom(ExtrasObject)

Field Name Field Type
TYPE string
name string
text

ExtrasButton:construct

ExtrasButton constructor

Function Signature:

ExtrasButton:construct(objParams, text)

Function Parameters:

Parameter Type Description
objParams ObjectParameters For initialization of the base class
text string Button text that will be displayed on the button in the CI

ExtrasButton:makeSetupXml

Returns XML string that represents the button setup with all extraparameters

Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.

Function Signature:

ExtrasButton:makeSetupXml()

Returns:

Name Type
xml string

ExtrasButton:getStateXml

Returns XML string that represents extras object state

This method overrides the method from the base class. This string should be incorporated in response to GET_EXTRAS_STATE command. id and value fields will be escaped and integrated in the string.

The string will be return in the following command: - \<object id= "\[self.id]" value="\[self.value]" /\>

Function Signature:

ExtrasButton:getStateXml()

Returns:

Name Type
xml string

Extras Checkbox

Overview

This class represents an abstraction of the Extras Checkbox object. The class interface provides following cations:

ExtrasCheckbox : ExtrasObject

Class that represent extras checkbox functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasCheckbox = inheritsFrom(ExtrasObject)

Field Name Field Type
TYPE string
name Methafield

ExtrasCheckbox:construct

ExtrasCheckbox constructor

Function Signature:

ExtrasCheckbox:construct(objParams, value)

Function Parameters:

Parameter Type Description
objParams ObjectParameters For initialization of the base class
value string Checkbox value (true, false) that will be displayed on the button in the CI

ExtrasCheckbox:makeSetupXml

Returns XML string that represents the button setup with all extraparameters

Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.

Function Signature:

ExtrasCheckbox:makeSetupXml()

Returns:

Name Type Description
xml string

Extras Icon

Overview

This class represents an abstraction of the Extras Icon object. The class interface provides following cations:

ExtrasIcon : ExtrasObject

Class that represent extras icon functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasIcon = inheritsFrom(ExtrasObject)

Field Name Field Type
TYPE string
name Methafield

ExtrasIcon:construct

ExtrasIcon constructor

Function Signature:

ExtrasIcon:construct(objParams, value)

Function Parameters:

Parameter Type Description
objParams ObjectParameters: For initialization of the base class
value string Link or path to the image that will be displayed in the CI

ExtrasIcon:makeSetupXml

Returns XML string that represents the button setup with all extraparameters

Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.

Function Signature:

ExtrasIcon:makeSetupXml()

Returns:

Name Type Description
xml string

Extras List

Overview

This class represents an abstraction of the Extras List object. The class interface provides following cations:

ExtrasListParameters

Field Name Field Type
value string
maxSelections Maximal
minSelections Minimal
list table<string,string>

ExtrasList : ExtrasObject

Class that represent extras list functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasList = inheritsFrom(ExtrasObject)

Field Name Field Type
TYPE string
__name Methafield
maxSelections number
minSelections number
list table <string,string>

ExtrasList:construct

ExtrasList constructor

Function Signature:

ExtrasList:construct(objParams, listParams)

Function Parameters:

Parameter Description
objParams ObjectParameters: For initialization of the base class
ExtrasListParameters Parameters for initialization of the list

ExtrasList:makeListXml

Returns the xml string needed to for response to the GET_EXTRAS_SETUP proxy message.

Returns complete list tag. This tag should be a child tag of the object tag.

Function Signature:

ExtrasList:makeListXml()

Returns:

Name Type
mxl string

ExtrasList:makeSetupXml

Returns XML string that represents the list setup with all extraparameters

Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.

Function Signature:

ExtrasList:makeSetupXml()

Returns:

Name Type
xml string

Extras Number

Overview

This class represents an abstraction of the Extras Number object. The class interface provides following cations:

ExtrasNumber : ExtrasObject

Class that represent extras number functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasNumber = inheritsFrom(ExtrasObject)

Field Name Field Type
TYPE string
name Methafield
min number
max number
resolution number

ExtrasNumber:construct

ExtrasNumber constructor

Function Signature:

ExtrasNumber:construct(objParams, numberParams)

Function Parameters:

Parameter Type Description
objParams ObjectParameters For initialization of the base class
numberParams table<string,number\ string>

ExtrasNumber:makeSetupXml

Returns XML string that represents the button setup with all extraparameters

Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.

Function Signature:

ExtrasNumber:makeSetupXml()

Returns:

Name Type Description
xml string

Extras Object

ExtrasObject

Base class for classes that represent extras objects (button, checkbox ...) Should not create independent instance from this class This class only purpose is to be base class for extras object classesrasObject = inheritsFrom(nil)

Field Name Field Type
id string
command string
label string
hidden string_bool
readonly string_bool
extraparams table<string,string>

ExtrasObject:construct

ExtrasObject constructor

Function Signature:

ExtrasObject:construct(objParams)

Function Parameters:

Parameter Type Description
objParams ObjectParameters: Table of parameters needed to assemble XML

ExtrasObject:addExtraparam

Adding extra parameter to the Object instance

If extra parameter is added, tParams argument of the Proxy command will contain value of the extras object with id.

Function Signature:

ExtrasObject:addExtraparam(id, name)

Function Parameters:

Parameter Type Description
id string ID of the extras object that will be connected
name string of the extras object that will be connected

ExtrasObject:removeExtraparam

Removing extra parameter from the list

This method will remove extra parameter with id and value of that extras object will not be received in proxy command.

Function Signature:

ExtrasObject:removeExtraparam(id)

Function Parameters:

Parameter Type Description
id string

ExtrasObject:getStateXml

Returns XML string that represents extras object state

This string should be incorporated in response to GET_EXTRAS_STATE command. id and value fields will be escaped and integrated in the string. The string will be return in the following command: `- \<object id= "\[self.id]" value="\self.value" /> ``

Function Signature:

ExtrasObject:getStateXml()

Returns:

Name Type Description
xml string

ExtrasObject:getExtraparamsXml

Returns XML string that represents list of extraparameters

This string should be incorporated in response to GET_EXTRAS_SETUP Key and value of the extraparams field will be escaped end integrated in the message.

Function Signature:

ExtrasObject:getExtraparamsXml()

Returns:

Name Type Description
xml string

ExtrasObject:update

Update extras object individually.

This method should be called when the user wants to udate an object individually. The method from the Extras class will update all objects, this method will update just this on object. Also, this method is inherited by all ExtrasObjectBasedClass instances.

Function Signature:

ExtrasObject:update(value, hidden)

Function Parameters:

Parameter Type Description
value string New value for the extras object
hidden string Hide the object or not

ExtrasSlider : ExtrasObject

Class that represent extras slider functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasSlider = inheritsFrom(ExtrasObject)

Field Name Field Type
TYPE string
__name Methafield
min number\
max number\
resolution number\

ExtrasSlider:construct

ExtrasSlider constructor

Function Signature:

ExtrasSlider:construct(objParams, sliderParams)

Function Parameters:

Parameter Type Description
objParams ObjectParameters: For initialization of the base class
sliderParams table<string,number\ string>

ExtrasSlider:makeSetupXml

Returns XML string that represents the button setup with all extraparameters

Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.

Function Signature:

ExtrasSlider:makeSetupXml()

Returns:

Name Type Description
xml string

ExtrasObject

Base class for classes that represent extras objects (button, checkbox ...) Should not create independent instance from this class This class only purpose is to be base class for extras object classesrasObject = inheritsFrom(nil)

Field Name Field Type
id string
command string
label string
hidden string_bool
readonly string_bool
extraparams table<string,string>

ExtrasObject:construct

ExtrasObject constructor

Function Signature:

ExtrasObject:construct(objParams)

Function Parameters:

Parameter Type Description
objParams ObjectParameters: Table of parameters needed to assemble XML

ExtrasObject:addExtraparam

Adding extra parameter to the Object instance

If extra parameter is added, tParams argument of the Proxy command will contain value of the extras object with id.

Function Signature:

ExtrasObject:addExtraparam(id, name)

Function Parameters:

Parameter Type Description
id string ID of the extras object that will be connected
name string of the extras object that will be connected

ExtrasObject:removeExtraparam

Removing extra parameter from the list

This method will remove extra parameter with id and value of that extras object will not be received in proxy command.

Function Signature:

ExtrasObject:removeExtraparam(id)

Function Parameters:

Parameter Type Description
id string

ExtrasObject:getStateXml

Returns XML string that represents extras object state

This string should be incorporated in response to GET_EXTRAS_STATE command. id and value fields will be escaped and integrated in the string.The string will be return in the following command: - \<object id= "\[self.id]" value="\[self.value]" /\>

Function Signature:

ExtrasObject:getStateXml()

Returns:

Name Type Description
xml string

ExtrasObject:getExtraparamsXml

Returns XML string that represents list of extraparameters

This string should be incorporated in response to GET_EXTRAS_SETUP Key and value of the extraparams field will be escaped end integrated in the message.

Function Signature:

ExtrasObject:getExtraparamsXml()

Returns:

Name Type Description
xml string

ExtrasObject:update

Update extras object individually.

This method should be called when the user wants to update an object individually. The method from the Extras class will update all objects, this method will update just this on object. Also, this method is inherited by all ExtrasObjectBasedClass instances.

Function Signature:

ExtrasObject:update(value, hidden)

Function Parameters:

Parameter Type Description
value string New value for the extras object
hidden string Hide the object or not

Extras Slider

Overview

This class represents an abstraction of the Extras Slider object. The class interface provides following cations:

ExtrasSlider : ExtrasObject

Class that represent extras slider functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasSlider = inheritsFrom(ExtrasObject)

Field Name Field Type
TYPE string
name Methafield
min number
max number
resolution number

ExtrasSlider:construct

ExtrasSlider constructor

Function Signature:

ExtrasSlider:construct(objParams, sliderParams)

Function Parameters:

Parameter Type Description
objParams ObjectParameters For initialization of the base class
sliderParams table<string,number\ string>

ExtrasSlider:makeSetupXml

Returns XML string that represents the button setup with all extraparameters

Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.

Function Signature:

ExtrasSlider:makeSetupXml()

Returns:

Name Type Description
xml string

Extras Switch

Overview

This class represents apstraction of the Extras Switch object. The class interface provides following cations:

ExtrasSwitch : ExtrasObject

Class that represent extras switch functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasSwitch = inheritsFrom(ExtrasObject)

Field Name Field Type
TYPE string
__name Methafield

ExtrasSwitch:construct

ExtrasSwitch constructor

Function Signature:

ExtrasSwitch:construct(objParams, value)

Function Parameters:

Parameter Type Description
objParams ObjectParameters For initialization of the base class
value string Switch value (true, false) that will be displayed on the button in the CI

ExtrasSwitch:makeSetupXml

Returns XML string that represents the button setup with all extraparameters

Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.

Function Signature:

ExtrasSwitch:makeSetupXml()

Returns:

Name Type Description
xml string

Extras Text

Overview

This class represents an abstraction of the Extras Text object. The class interface provides following cations:

ExtrasText : ExtrasObject

Class that represent extras text functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasText = inheritsFrom(ExtrasObject)

Field Name Field Type
TYPE string
name Methafield

ExtrasText:construct

ExtrasText constructor

Function Signature:

ExtrasText:construct(objParams, value)

Function Parameters:

Parameter Type Description
objParams ObjectParameters For initialization of the base class
value string Text value that will be displayed on the element in the CI

ExtrasText:makeSetupXml

Returns XML string that represents the button setup with all extraparameters

Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.

Function Signature:

ExtrasText:makeSetupXml()

Returns:

Name Type Description
xml string

Extras Text Field

Overview

This class represents apstraction of the Extras Text Field object. The class interface provides following cations:

TextFieldMode

Type
Name Value
TextFieldMode "normal"\

ExtrasTextField : ExtrasObject

Class that represent extras checkbox functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasTextField = inheritsFrom(ExtrasObject)

Field Name Field Type
TYPE string
__name Methafield
mode TextFieldMode

ExtrasTextField:construct

ExtrasTextField constructor

Function Signature:

ExtrasTextField:construct(objParams, value, mode)

Function Parameters:

Parameter Type Description
objParams ObjectParameters For initialization of the base class
value string TextField value that will be displayed on the field in the CI
mode TextFieldMode Text field mode: password, numberic ...

ExtrasTextField:makeSetupXml

Returns XML string that represents the button setup with all extraparameters

Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.

Function Signature:

ExtrasTextField:makeSetupXml()

Returns:

Name Type Description
xml string

Extras Library Use Case Examples

Importing the library

To use this library, please move all *.lua files to the source directory of your driver, then import Extras.lua file in your driver.lua file. The Extras.lua file includes all other library files needed.

This library depends on a driver template. Please, make sure that the driver template files are included in the path. NOTE Make sure paths are setup correctly

How to use the library

Set Up

The code to the right is an example how to setup the extras library:

require "Extas"

function ON_DRIVER_INIT.SetupExtras() extras = Extras:new(DEFAULT_PROXY_BINDINGID) extras:addSection("ButtonLabel") extras:addSection("CheckboxLabel") local bt1Table = { id = "Button1ID", label = "Button 1 Label", command = "Button1Command", extraparams = { Checkbox4ID = "Extr1", Checkbox3ID = "Extr2", Button2ID = "Extr3" } } extras:addObjects({ExtrasButton:new(bt1Table, "ButtonText1"), ExtrasButton:new({id = "Button3ID", label = "Button 3 Label", command = "Button1Command"}, "ButtonText3"), ExtrasButton:new({id = "Button2ID", label = "Button 2 Label", command = "Button1Command"}, "ButtonText2"), ExtrasButton:new({id = "Button4ID", label = "Button 4 Label", command = "Button1Command"}, "ButtonText4")}, "ButtonLabel") extras:addObjects({ExtrasCheckbox:new({id = "Checkbox1ID", label = "Checkbox 1 Label", command = "Checkbox1Command"}, "true"), ExtrasCheckbox:new({id = "Checkbox2ID", label = "Checkbox 2 Label", command = "Checkbox1Command"}, "true"), ExtrasCheckbox:new({id = "Checkbox3ID", label = "Checkbox 3 Label", command = "Checkbox1Command"}, "true"), ExtrasCheckbox:new({id = "Checkbox4ID", label = "Checkbox 4 Label", command = "Checkbox1Command"}, "true")}, "CheckboxLabel") extras:sendSetup(DEFAULT_PROXY_BINDINGID) end

Handling Proxy Commands

The next code example shows how to write handlers for proxy commands received when extras change:

-- Proxy Command Handlers

PRX_CMD.Button1Command(proxyId, tParams) C4:SetVariable("Extras_Button1", os.date()) LogDebug(os.date() .. " " .. extras:getObject(tParams.id).label .. " - Extras Button pressed") end

function PRX_CMD.Checkbox1Command(proxyId, tParams) C4:SetVariable("Extras_Checkbox1", tParams.value) LogDebug(os.date() .. " " .. extras:getObject(tParams.id).label .. " - Extras Checkbox switched") extras:updateObject(proxyId, tParams.id, tParams.value) end

To handle changes in extras parameters coming from the device side, the updateObject method can be used. This method updates extras object instance and sends proxy notification that extras status has been changed. Also, each ExtrasObjectBasedClass class supports the ExtrasObjectBasedClass:update(value, hidden) method that enables extras update from the class instance directly.

It is nice to create a variable for each extras object, to give the partner opportunity to monitor and take action based on extras states. Sample variable definitions are to the right.

--Variable Examples

C4:AddVariable("Extras_Button1", "", "STRING")
C4:AddVariable("Extras_Checkbox1", "", "BOOL")

Sqishy

If the Lua Squish is used, the Module code snippet below should be included in the squishy file:

-- Lua Squish Sample

Module "Extras" "extras/Extras.lua"
Module "ExtrasObject" "extras/ExtrasObject.lua"
Module "ExtrasButton" "extras/ExtrasButton.lua"
Module "ExtrasCheckbox" "extras/ExtrasCheckbox.lua"
Module "ExtrasIcon" "extras/ExtrasIcon.lua"
Module "ExtrasList" "extras/ExtrasList.lua"
Module "ExtrasSwitch" "extras/ExtrasSwitch.lua"
Module "ExtrasNumber" "extras/ExtrasNumber.lua"
Module "ExtrasSlider" "extras/ExtrasSlider.lua"
Module "ExtrasText" "extras/ExtrasText.lua"
Module "ExtrasTextField" "extras/ExtrasTextField.lua"

In this case, the library can be used as git submodule.

Removing

To remove the object or the section please use following methods:

This way, you will avoid lost objects (objects that are in section array but will not be displayed because empty index before). It is strongly recommended to hide rather than remove objects that will be temporary removed form the CI.

Before destroying an Extras class instance, please use the Extras:cleanCapability() method. Also, please pay attention to the Capability section of the documentation.

Light V2 Variables

Light State: ID = 1000. Boolean indicating if the light Brightness is not at the Off preset. If you set this variable to true on a dimmer, it will go to the On preset. On a switch, only the first variable exists.

Light Brightness Percent: ID = 1001. An integer indicating the current brightness for a dimmer. The value should be between 0-100.

Click Rate Up:  ID = 1002. An integer indicating the number of milliseconds. (Used in "On" Preset).

Click Rate Down: ID = 1003. An integer indicating the number of milliseconds. (Used in "Off" Preset).

Hold Rate Up: ID = 1004. An integer indicating the number of milliseconds. (Used in "Slow On" Preset).

Default On Preset Brightness: ID = 1006. An integer indicating what the preset "On" brightness is and thus what a light Brightness would go to if the top wall keypad button is clicked, regardless what the light level is at and including even if the current brightness is higher. (Used in "On" Preset).

Max Brightness: ID = 1007. An integer indicating how high the light will go with a click. To go passed the max (still capped at 100%), you need to press and hold.

Min Brightness: ID = 1008. An integer on how low the light will go before skipping values between this number and 0/completely off.

Cold Start Brightness: ID = 1009. An integer of what level to go to when first turning on before attempting to do a ramp.

Cold Start Time: ID = 1010. An integer indicating the amount of time in milliseconds to stay at the cold start level before starting a ramp.

Color Presets ID=1300. An XML string containing all of the Color Presets that are configured in the system. For UI use only.

Color Active Presets ID=1301. An XML string containing all of the presets that are currently active. For UI use only.

Example

<active_presets>
   <preset>
      <name>Relax</name>
      <id>2</id>
      <origin>2</origin>
   </preset>
</active_presets>

In the example to the right, the origin value indicates if the preset came from a device (1), or the color agent (2).

Light Dynamic Capabilities ID=6661. An XML string containing the active dynamic capabilities for this light proxy. For UI use Only.

 Example

<DynamicCapabilities>
  <supports_broadcast_scenes>False</supports_broadcast_scenes>
  <dimmer>False</dimmer>
  <supports_target>False</supports_target>
  <supports_color>False</supports_color>
  <supports_color_correlated_temperature>False<supports_color_correlated_temperature>
  <color_correlated_temperature_min>1000<color_correlated_temperature_min>
  <color_correlated_temperature_max>20000</color_correlated_temperature_max>
  <color_rate_behavior>0</color_rate_behavior>
  <color_rate_min>0</color_rate_min>
  <color_rate_max>0</color_rate_max>
  <color_trace_tolerance>2</color_trace_tolerance>
  <has_extras>False</has_extras>
  <click_rate_min>0</click_rate_min>
  <click_rate_max>86400000</click_rate_max>
  <hold_rate_min>1000</hold_rate_min>
  <hold_rate_max>86400000</hold_rate_max>
</DynamicCapabilities>

Lock Proxy Commands

ADD USER

Adds a user.

Signature

ADD_USER ()

Parameter Description
str USER NAME
str PASSCODE
bool IS ACTIVE: Optional, true
bool SCHEDULED DAYS: Comma delimited BOOLEAN. Optional. Sunday – Saturday, true
int START DAY: 1-31.
int START MONTH: 1-12.
int START YEAR: YYYY.
int END DAY: 1-31
int END MONTH: 1-12.
int END YEAR: YYYY.
int START TIME: optional, minutes from midnight.
int END TIME: optional, minutes from midnight.
str SCHEDULE TYPE: Optional. daily
bool IS RESTRICTED SCHEDULE: Optional, true/false. Specifies whether or not to enforce the user’s schedule. Defaults to false.

Returns

None

CLOSE

Lock if status is unlocked. Called by bound relay.

Signature

CLOSE ()

Parameters

None

Returns

None

DELETE USER

Deletes a user.

Signature

DELETE_USER ()

Parameters

None

Returns

None

EDIT USER

Edits the user's schedule and status.

Signature

ADD_USER ()

Parameter Description
int USER ID
str USER NAME
str PASSCODE
bool IS ACTIVE: Optional, true
bool SCHEDULED DAYS: Comma delimited BOOLEAN. Optional. Sunday – Saturday, true
int START DAY: 1-31.
int START MONTH: 1-12.
int START YEAR: YYYY.
int END DAY: 1-31
int END MONTH: 1-12.
int END YEAR: YYYY.
int START TIME: optional, minutes from midnight.
int END TIME: optional, minutes from midnight.
str SCHEDULE TYPE: Optional. daily
bool IS RESTRICTED SCHEDULE: Optional, true/false. Specifies whether or not to enforce the user’s schedule. Defaults to false.

Returns

None

LOCK

Lock if status is unlocked.

Signature

LOCK ()

Parameters

None

Returns

None

OPEN

Unlock if status is unlocked. Called by bound relay.

Signature

OPEN ()

Parameters

None

Returns

None

REQUEST CAPABILITIES

This command results in the Protocol Notification CAPABILITIESCHANGED` being sent from the Protocol to the Proxy.

Signature

REQUEST_CAPABILITIES ()

Parameters

None

Returns

None

REQUEST CUSTOM SETTINGS

This command results in the Protocol Notification CUSTOM_SETTINGS being sent from the Protocol to the Proxy.

Signature

REQUEST_CUSTUM_SETTINGS ()

Parameters

None

Returns

None

REQUEST CUSTOM SETTINGS

This command results in the Protocol Notification HISTORY being sent from the Protocol to the Proxy.

Signature

REQUEST_HISTORY ()

Parameters

None

Returns

None

REQUEST SETTINGS

This command results in the Protocol Notification SETTINGS being sent from the Protocol to the Proxy.

Signature

REQUEST_SETTINGS ()

Parameters

None

Returns

None

REQUEST USERS

This command results in the Protocol Notification USERS being sent from the Protocol to the Proxy.

Signature

REQUEST_USERS ()

Parameters

None

Returns

None

SET ADMN CODE

Set the lock's administrator code.

Signature

PSET_ADMIN_CODE ()

Parameter Description
str PASSCODE

Returns

None

SET AUTO LOCK SECONDS

Set the number of seconds to wait before locking automatically after unlocked. A value of 0 means do not auto lock. Range determined by capabilities.

Signature

SET_AUTO_LOCK_SECONDS ()

Parameter Description
unti SECONDSE

Returns

None

SET CUSTOM SETTINGS

This command results in the Protocol Notification CUSTOM_SETTINGS being sent from the Protocol to the Proxy.

Signature

SET_CUSTUM_SETTINGS ()

Parameter Description
str NAME: Required.
str VALUE: Required. Value type must be converted based on custom setting type.

Returns

None

SET LANGUAGE

Set the lock's language. Values determined by capabilities.

Signature

SET_ LANGUAGE ()

Parameter Description
str LANGUAGE.

Returns

None

SET LOCK MODE

Set the lock’s mode. The supported modes are determined by capabilities.

Signature

SET_ LOCK_MODE ()

Parameter Description
str MODE: Required: normal

Returns

None

SET LOG FAILED ATTEMPTS

For lock’s that have internal log storage, sets whether or not to log failed attempts.

Signature

SET_LOG_FAILED_ATTEMPTS ()

Parameter Description
bool true/false

Returns

None

SET NUMBER LOG ITEMS

For locks that have internal log storage, set the maximum number of log items to store. Range determined by capabilities.

Signature

SET_NUMBER_LOG_ITEMS ()

Parameter Description
unit count

Returns

None

SET ONE TOUCH LOCKING

Set whether or not keypad activation will extend bolt if unlocked.

Signature

SET_ONE_TOUCH_LOCKING ()

Parameter Description
bool true/false

Returns

None

SET SCHEDULED LOCKOUT ENABLED

Disable or enable all user passcode access.

Signature

SET_SCHEDULED_LOCKOUT_ENABLED ()

Parameter Description
bool true/false

Returns

None

SET SHUT OUT TIMER

Set the number of seconds to wait after wrong code attempts has been reached. Range determined by capabilities.

Signature

SET_SHUT_OUT_TIMER ()

Parameter Description
unit SECONDS

Returns

None

SET WRONG CODE ATTEMPTS

Set the number of failed passcode attempts before users are temporarily shut out. Range determined by capabilities.

Signature

SET_WRONG_CODE_ATTEMPTS ()

Parameter Description
unit COUNT

Returns

None

SET VOLUME

Sets the lock’s volume.

Signature

SET_ VOLUME ()

Parameter Description
str high/low/silent

Returns

None

TOGGLE

Toggle the state of the lock. If the lock status is unknown or default, the resulting status is indeterminable

Signature

TOGGLE ()

Parameter

None

Returns

None

UNLOCK

Unlock if status is locked.

Signature

UNLOCK ()

Parameter

None

Returns

None

Lock Protocol Notifications

BATTERY STATUS CHANGED

Sent when battery status changed.

Signature

BATTERY_STATUS_CHANGED ()

Parameter Description
str BATTERY STATUS: Required parameter: normal, warning, or critical. Fires Events: BatteryNormal, BatteryWarning, BatteryCritical.

CAPABILITY CHANGED

Sent when a capability changes; or when requested by the protocol driver command REQUEST_CAPABILITES, and a capability has changed from what is defined in the driver capabilities XML

Signature

CCAPABILITY_CHANGED ()

Parameter Description
str NAME: Required parameter: The name of the setting is its XML tag as defined in <lock_setup>.
str VALUE: Required parameter: The capabilities new value.

HISTORY

Sent in response to the command REQUEST_HISTORY.

Signature

HISTORY ()

Parameter

None

Returns

None

Example

<lock_history>
    <history_item>
        <history_id>history-ID INT</history_id>
        <date>date STRING</date>
        <time>time STRING</time>
        <message>message STRING</message>
        <source>source STRING</source>
    </history_item>
</lock_history>

CUSTOM SETTINGS

Sent in response to the command REQUEST_CUSTOM_SETTINGS.

Signature

CUSTOM_SETTINGS ()

Parameter

None

Returns

None

Example

<lock_custom_settings>
    <custom_setting>
        <name>name STRING</name>
        <type>STRING,LIST,RANGED_INTEGER,RANGED_FLOAT,BOOLEAN</type>
        <mode> alpha|alpha-numeric|password</mode>
        <items>
            <item>item</item>
            <item>item</item>
        </items>
        <minimum>min</minimum>
        <maximum>max</maximum>
        <value>value</value>
</custom_setting>
</lock_custom_settings>

CUSTOM SETTINGS CHANGED

Sent in when a custom setting changes

Signature

CUSTOM_SETTINGS_CHANGED ()

Parameter

None

Returns

None

LOCK STATUS CHANGED

Sent in when a lock status changes for any reason.

Signature

LOCK_STAUS_CHANGED ()

Parameter Description
str LOCK STATUS: Required parameter: unknown, locked, unlocked, or fault.
str LAST ACTION DESCRIPTION: Optional parameter.
str SOURCE: Optional parameter: the source that affected the status change.
bool MANUAL: Optional parameter: true

Returns

None

SETTINGS

Sent in response to the command REQUEST_SETTINGS.

Signature

SETTINGS ()

Parameters

None

Returns

None

Example

<lock_settings>
    <admin_code>admin-code STRING</admin_code>
    <auto_lock_time>nINT</auto_lock_time>
    <log_item_count>nINT </log_item_count>
    <schedule_lockout_enabled>true|false</schedule_lockout_enabled>
    <lock_mode> normal|vacation|privacy</lock_mode>
    <log_failed_attempts>true|false</log_failed_attempts>
    <wrong_code_attempts>nINT</wrong_code_attempts>
    <shutout_timer>nINT</shutout_timer>
    <language>English|French|Spanish|etc</language>
    <volume>silent|low|high</volume>
    <one_touch_locking>true|false</one_touch_locking>
</lock_settings>

SETTINGS CHANGED

Sent when a setting changes.

Signature

SETTINGS_CHANGED ()

Parameter Description
str Required parameter. The name of the setting is its XML tag as defined in <lock_settings>’

Returns

None

USERS

Sent in response to the command REQUEST_HISTORY.

Signature

USERS ()

Parameter

None

Returns

None

USER ADDED

Sent when a user is added.

Signature

USER_ADDED ()

Parameter Description
int USER ID
str USER NAME
str PASSCODE
bool IS ACTIVE: Optional, true
bool SCHEDULED DAYS: Comma delimited BOOLEAN. Optional. Sunday – Saturday, true
int START DAY: 1-31.
int START MONTH: 1-12.
int START YEAR: YYYY.
int END DAY: 1-31
int END MONTH: 1-12.
int END YEAR: YYYY.
int START TIME: optional, minutes from midnight.
int END TIME: optional, minutes from midnight.
str SCHEDULE TYPE: Optional. daily
bool IS RESTRICTED SCHEDULE: Optional, true/false. Specifies whether or not to enforce the user’s schedule. Defaults to false.

Returns

None

USER CHANGED

Sent when a user setting is changed.

Signature

USER_CHANGED ()

Parameter Description
int USER ID
str USER NAME
str PASSCODE
bool IS ACTIVE: Optional, true
bool SCHEDULED DAYS: Comma delimited BOOLEAN. Optional. Sunday – Saturday, true
int START DAY: 1-31.
int START MONTH: 1-12.
int START YEAR: YYYY.
int END DAY: 1-31
int END MONTH: 1-12.
int END YEAR: YYYY.
int START TIME: optional, minutes from midnight.
int END TIME: optional, minutes from midnight.
str SCHEDULE TYPE: Optional. daily
bool IS RESTRICTED SCHEDULE: Optional, true/false. Specifies whether or not to enforce the user’s schedule. Defaults to false.

Returns

None

USER DELETED

Sent when a user setting is deleted.

Signature

USER_DELETED ()

Parameter Description
int USER ID
str USER NAME

Returns

None

Lock Capabilities

LOCK CAPABILITIES

The following Capabilities are supported with the Lock Proxy. Note that these capabilities will persist their values. This can result in inaccurate capability values being displayed on Navigators.

The correct way to update these capabilities when a driver is updated is with the DYNAMIC_CAPABILITY_CHANGED notification. For example see the lua code to the right which uses name/value pairs:

C4:SendToProxy(5001, 'CAPABILITY_CHANGED', { NAME = 'shutout_timer_values', VALUE = '10, 30' } , 'NOTIFY')

C4:SendToProxy(5001, 'CAPABILITY_CHANGED', { NAME = 'shutout_timer_display_values', VALUE = '10s, 30s' }, 'NOTIFY') 

Capabilities

<auto_lock_time_display_values></auto_lock_time_display_values>

Comma delimited list of correlating display values: str

<auto_lock_time_values></auto_lock_time_values>

Comma delimited list of increasing values: int

<has_admin_code></has_admin_code>

Defines whether the lock has an admin code that must be entered to access lock management. true|false

<has_auto_lock_time></has_auto_lock_time>

Defines whether a lock has an auto lock setting. A lock can auto lock after a set amount of time or not auto lock if time set to 0 – OFF: true|false

<has_custom_settings></has_custom_settings>

Defines whether the lock supports any custom settings that should be added to the list of standard proxy defined settings. See lock_custom_settings data-to-ui: true|false

<has_date_range_schedule></has_date_range_schedule>

Defines whether the lock supports a date range schedule for users: true|false

<has_daily_schedule></has_daily_schedule>

Defines whether the lock supports a daily schedule for users: true|false

<has_internal_history></has_internal_history>

Defines whether the lock maintains its own list of log / history items: true|false

<has_language></has_language>

Defines whether the lock has a setting for different languages: true|false

<has_log_item_count></has_log_item_count>

Defines whether a lock has a setting for the number of log items to store for internal logging/history: true|false

<has_log_failed_attempts></has_log_failed_attempts>

Defines whether a lock has a setting for logging failed keypad unlock attempts: true|false

<has_lock_modes></has_lock_modes>

Defines whether the lock has a setting for different modes. Vacation mode prevents users from opening a lock using the keypad. Privacy mode prevents users from opening a lock using the keypad. However, if a key is used during privacy mode the lock resets to normal mode. Not all modes have to be supported. true|false

<has_one_touch_locking></has_one_touch_locking>

Defines whether the lock has a setting to allow one touch locking at the keypad without entering full key code: true|false

<has_schedule_lockout></has_schedule_lockout>

Defines whether a lock has a schedule lockout setting. The schedule lockout can be used to prevent all users from manually unlocking a lock using the lock's keypad. This is similar to privacy mode: true|false

<has_settings></has_settings>

Defines whether the lock supports any settings: true|false

<has_shutout_timer></has_shutout_timer>

Defines whether the lock has a setting for how long to disable lock keypad after failed attempts: true|false

<has_volume></has_volume>

Defines whether the lock has a setting for volume: true|false

<has_wrong_code_attempts</has_wrong_code_attempts>

Defines whether the lock has a setting for the number of failed unlock attempts to allow before temporarily disabling the lock: true|false

<is_management_only></is_management_only>

Defines whether the lock is only used for managing users A lock that is management only does not support the LOCK, UNLOCK, and TOGGLE commands: true|false

<language_values></language_values>

English, French, Spanish …: str

<lock_modes_values></lock_modes_values>

normal, vacation, privacy: str

<log_item_count_values></log_item_count_values>

Comma delimited list of increasing values: int

<max_users></max_users>

The maximum number of user that can be added to a lock: int

<shutout_timer_display_values></shutout_timer_display_values>

Comma delimited list of correlating display values: str

<shutout_timer_values></shutout_timer_values>

Comma delimited list of increasing values: int

<wrong_code_attempts_values> </wrong_code_attempts_values>

Comma delimited list of increasing values: int

Lock Conditionals

LOCK CONDITIONALS

The Lock Proxy supports the following conditionals:

IS_LOCKED

IS_UNKNOWN

IS_UNLOCKED

IS_FAULT

IS_BATTERY_NORMAL

IS_BATTERY_WARNING

IS_BATTERY_CRITICAL

Lock Events

LOCK EVENTS

The Lock Proxy fires the following events:

Locked (1) – UI, keypad or deadbolt.

Unlocked (2) – UI, keypad or deadbolt.

LockedManually (3) – Keypad or deadbolt.

UnlockedManually (4) – Keypad or deadbolt.

LockedProxy (5) - Locked via the Proxy.

UnlockedProxy (6) - Unlocked via the proxy.

Fault (7) -Door/Lock Jam Event. Battery too low.

BatteryNormal (8) - Battery state change from Normal.

BatteryWarning (9) - Battery state change from Warning.

BatteryCritical (10) - Battery state change from Critical.

Lock Variables

LOCK VARIABLES

The Lock Proxy supports the following variables:

LockStatus (1000) – STRING: unknown, locked, unlocked, fault

BatteryStatus (1001) – STRING: normal, warning, critical

LastActionDescription (1002) - STRING: Description of the last action for the lock. For example: "User opened Lock." "Lock was Toggled."

Pool Capabilities

The following Capabilities are supported with the Pool Proxy:

<aux_types></aux_types> List of auxiliary types needed by the protocol driver. There are two types of auxiliary types supported: Toggle and List.

<pool_heat_modes></pool_heat_modes> xml list of pool heat modes.

<pool_pump_modes></pool_pump_modes> xml list of pool pump modes.

<spa_heat_modes></spa_heat_modes> xml list of spa heat modes.

<spa_ pump_modes></spa_ pump_modes> xml list of spa pump modes.

<temp_max></temp_max> Should be entered as Fahrenheit value, it is automatically adjusted to Celsius when the pool is set to Celsius.

<temp_min></temp_min> Should be entered as Fahrenheit value, it is automatically adjusted to Celsius when the pool is set to Celsius.

<provides_aux_list></provides_aux_list> Should be true (false by default) when the pool controller device provides aux list to the driver.

This capability disables name and type changes in Auxiliary Controls card in Composer Pro.

Example

The example capabilities XML is from the Jandy Aqualink driver.

<capabilities>
     <provides_aux_list>True</provides_aux_list>
         <pool_pumpmodes>Off,On</pool_pumpmodes>
         <spa_pumpmodes>Off,On</spa_pumpmodes>
         <temp_min>34</temp_min>
         <temp_max>104</temp_max>
         <pool_heat_modes>
               <mode>
                    <id>1</id>
                    <text>Heater</text>
                    <command>set_pool_heater</command>
               </mode>
               <mode>
                    <id>2</id>
                    <text>Solar Heater</text>
                    <command>set_solar_heater</command>
               </mode>
          </pool_heat_modes>
          <spa_heat_modes>
               <mode>
                    <id>1</id>
                    <text>Heater</text>
                    <command>set_spa_heater</command>
               </mode>
          </spa_heat_modes>
          <aux_types>
               <aux_type>
                    <type>TOGGLE</type>
                    <name>Toggle</name>
               </aux_type>
               <aux_type>
                    <type>LIST</type>
                    <provides_selected_item>false</provides_selected_item>
                    <name>Light Dimmer Jandy Colors</name>
                    <items>Off,Alpine White,Sky Blue,Cobalt Blue,Caribbean Blue,Spring Green,Emerald</items>
               </aux_type>
               <aux_type>
                    <type>LIST</type>
                    <provides_selected_item>false</provides_selected_item>
                    <name>Light Dimmer Pentair</name>
                    <items>Off,White,Light Green,Green,Cyan,Blue,Lavender,Magenta,Light Magenta,Color</items>
               </aux_type>
               <aux_type>
                    <type>LIST</type>
                    <provides_selected_item>false</provides_selected_item>
                    <name>Light Dimmer Hayward Color Logic</name>
                    <items>Off,Voodoo Lounge,Deep Blue Sea,Afternoon Skies,Emerald,Sangria,Cloud</items>
               </aux_type>
               <aux_type>
                    <type>LIST</type>
                    <provides_selected_item>false</provides_selected_item>
                    <name>Light Dimmer Jandy LED Water Colors</name>
                    <items>Off,Alpine White,Sky Blue,Cobalt Blue,Caribbean Blue,Spring Green</items>
               </aux_type>
               <aux_type>
                    <type>LIST</type>
                    <provides_selected_item>false</provides_selected_item>
                    <name>Light Dimmer Pentair Intellibright</name>
                    <items>Off,Sam,Party,Romance,Caribbean,American,California Sunset,Royal,Blue,Green,Red,White,Magenta</items>
               </aux_type>
               <aux_type>
                    <type>LIST</type>
                    <provides_selected_item>true</provides_selected_item>
                    <name>Dimmer</name>
                    <items>Off,25%,50%,75%,100%</items>
               </aux_type>
          </aux_types>
     </capabilities>

Pool Conditionals

The Pool Proxy supports the following conditionals:

IF_AIR_TEMPERATURE

IF_BUTTON

IF_POOL_SETPOINT

IF_POOL_TEMPERATURE

IF_PUMPMODE

IF_SPA_MODE

IF_SPA_SETPOINT

IF_SPA_TEMPERATURE

Pool Events

The Pool Proxy fires the following events:

AirTemperatureChanged

AirModeChanged

PoolHeatModeChanged

PoolSetpointChanged

PoolTemperatureChanged

PumpModeChanged

ScaleChanged

SpaHeatModeChanged

SpaModeChanged

SpaSetpointChanged

SpaTemperatureChanged

Pool Proxy Commands

SET AUX MODE

Received from the proxy when the auxiliary mode has been changed.

Signature

SET_AUX_MODE ()

Parameter Description
ID ID value of the auxiliary to set.
MODE ON/OFF

Returns

None

SET POOL HEAT MODE

Received from the proxy when pool het mode has been changed.

Signature

SET_POOL_HEATMODE ()

Parameter Description
MODE string: ON/OFF
ID int: heat mode ID

Returns

None

SET POOL PUMP MODE

Received from the proxy when pool pump mode has been changed.

Signature

SET_POOL_PUMPMODE ()

Parameter Description
PUMPMODE From : <pool_pumpmodes> capability.

Returns

None

SET POOL SETPOINT

Received from the proxy when pool temperature etpoint has been changed.

Signature

SET_POOL_SETPOINT ()

Parameter Description
SETPOINT int: Temperature

Returns

None

SET SPA HEAT MODE

Received from the proxy when spa heat mode been changed.

Signature

SET_SPA_HEATMODE ()

Parameter Description
MODE string: ON/OFF
ID int: heat mode ID

Returns

None

SET SPA PUMP MODE

Received from the proxy when spa pump mode has been changed.

Signature

SET_SPA_PUMPMODE ()

Parameter Description
PUMPMODE From : <SPA_pumpmodes> capability.

Returns

None

SET SPA SETPOINT

Received from the proxy when Spa Setpoint has been changed.

Signature

SET_SPA_SETPOINT ()

Parameter Description
SETPOINT int: Temperature

Returns

None

UPDATE AUX ITEM

Received from the proxy when the auxiliary id is changed in Auxiliary Controls card. The command should be received only when provides_aux_list capability is set to true.

Signature

AUX_ITEM_UPDATED ()

Parameter Description
ID str: Current aux ID
NEW_ID str: New aux ID

Returns

None

ADD AUX ITEM

Received from the proxy when an auxiliary item is added by clicking on the + icon in Auxiliary Controls card. The command should be received only when provides_aux_list capability is set to true.

Signature

AUX_ITEM_ADDED ()

Parameter Description
AUX_ID str: ID of the aux added

Returns

None

REMOVE AUX ITEM

Received from the proxy when an auxiliary item is removed by clicking on the - icon in Auxiliary Controls card. The command should be received only when provides_aux_list capability is set to true.

Signature

AUX_ITEM_ADDED ()

Parameter Description
ID str: ID of the aux removed

Returns

None

Pool Protocol Notifications

AIR TEMP CHANGED

Sent to the proxy to indicate that the air temperature has changed

Signature

AIR_TEMP_CHANGED ()

Parameter Description
TEMPERATURE Temperature value.

Returns

None

Example

C4:SendToProxy(5001, "AIR_TEMP_CHANGED", {TEMPERATURE = 99})

AUX NAMES CHANGED

This notification provides a way to override capabilities.

Signature

AUX_NAMES_CHANGED ()

Parameter Description
AUXNAMES XML UPDATE LIST - True

Returns

None

Example


<items>
    <item>
        <id>1</id>
        <item_text>Pool Cleaner</item_text>
        <type>Toggle</type>
    </item>
    <item>
        <id>2</id>
        <item_text>Low Speed Pump</item_text>
        <type>Toggle</type>
    </item>
    <item>
        <id>3</id>
        <item_text>Spa Spillover</item_text>
        <type>Toggle</type>
    </item>
</items>

AUX MODE CHANGED

Notification sent to the proxy to indicate whether Aux Buttons on the right side of the UI are On or Off.  ID corresponds to the button name ID in the BUTTONNAMES notify. Mode Y is On, N is Off.

Signature

AUX_MODE_CHANGED ()

Parameter Description
ID ID of auxiliary
MODE ON/OFF
SELECTED For type LIST from <aux_types> <items> item selected if is provided by the device.m

Returns

None

Example


<aux_state>
    <item>
        <id>1</id>
        <mode>ON</mode>
    </item>
    <item>
        <id>6</id>
        <mode>ON</mode>
        <selected>50%</selected>
    </item>
</aux_state>

HAS AIR CHANGED

Sent to the proxy to indicate that there is an outdoor air temperature available on this pool controller.  Determines whether the outdoor temperature is shown on the Navigator UI.

Signature

HAS_AIR_CHANGED ()

Parameter Description
HASAIR (“True/False”)

Returns

None

Example

C4:SendToProxy(5001, "HASAIR_CHANGED", {HASAIR = "True"})

HAS POOL CHANGED

Sent to the proxy to indicate that there is a Pool available on this controller. If ‘False’, Pool Setpoint is unavailable to set.

Signature

HAS_POOL_CHANGED ()

Parameter Description
HASPOOL (“True/False”)

Returns

None

Example

C4:SendToProxy(5001, "HASPOOL_CHANGED", {HASPOOL = "True"}) 

HAS SPA CHANGED

Sent to the proxy to indicate that there is a Spa available on this controller. If ‘False’, Spa Setpoint is unavailable to set.

Signature

HAS_SPA_CHANGED ()

Parameter Description
HASSPA (“True/False”)

Returns

None

Example

C4:SendToProxy(5001, "HASSPA_CHANGED", {HASSPA = "True"})

NUM AUXS CHANGED

Sent to the proxy to indicate the number of Aux Buttons available in ComposerPro, and on Navigator

Signature

NUM_AUXS_CHANGED ()

Parameter Description
AUXS Maximum number of auxiliaries.

Returns

None

Example

C4:SendToProxy(5001, "NUM_AUXS", {AUXS = 5}

POOL PUMPMODES LIST CHANGED

Sent to the proxy to indicate the number of Aux Buttons available in ComposerPro, and on Navigator

Signature

POOL_PUMPMODES_LIST_CHANGED ()

Parameter Description
POOL_PUMPMODES  Comma delimited list.

Returns

None

POOL SETPOINT CHANGED

Sent to the proxy to indicate that the setpoint on the pool controller has changed.

Signature

POOL_SETPOINT_CHANGED ()

Parameter Description
SETPOINT New setpoint.

Returns

None

Example

C4:SendToProxy(5001, "POOL_SETPOINT_CHANGED", {SETPOINT = 23})

POOL TEMP CHANGED

Sent to the proxy to indicate that the pool temperature has changed.

Signature

POOL_TEMP_CHANGED ()

Parameter Description
TEMPERATURE New temperature value.

Returns

None

Example

C4:SendToProxy(5001, "POOL_TEMP_CHANGED", {TEMPERATURE = 78})

POOL HEATMODE CHANGED

Sent to the proxy to indicate that the pool heat mode has changed.

Signature

POOL_HEATMODE_CHANGED ()

Parameter Description
XML HEATMODE.

Returns

None

Example


<pool_heatstate>
   <item>
        <id>set_pool_heater</id>
        <mode>ON</mode>
   </item>
   <item>
        <id>set_solar_heater</id>
        <mode>OFF</mode>
   </item>
</pool_heatstate>`

POOL HEATMODE LIST CHANGED

Sent to the proxy to indicate that the pool heat mode list has changed.

Signature

POOL_HEATMODE_LIST_CHANGED ()

Parameter Description
XML POOL_HEATMODE.

Returns

None

Example

<pool_heat_modes>
    <mode>
        <id>1</id>
        <text>Heater</text>
        <command>set_pool_heater</command>
    </mode>
    <mode>
        <id>2</id>
        <text>Solar Heater</text>
        <command>set_solar_heater</command>
    </mode>
</pool_heat_modes>

PUMP MODE CHANGED

Sent to the proxy to indicate that the pump mode has changed.

Signature

PUMP_MODE_CHANGED ()

Parameter Description
PUMPMODE From <pool_pumpmodes>True/False

Returns

None

Example

C4:SendToProxy(5001, "PUMP_MODE_CHANGED", {PUMPMODE = "True"})

SCALE CHANGED

Sent to the proxy to indicate that the Temperature scale has changed.

Signature

SCALE_CHANGED ()

Parameter Description
SCALE “C” or “F”

Returns

None

Example

C4:SendToProxy(5001, "SCALE_CHANGED", {SCALE = "C"})

SPA HEATMODE CHANGED

Sent to the proxy to indicate that the spa heat mode has changed.

Signature

SPA_HEATMODE_CHANGED ()

Parameter Description
XML HEATMODE.

Returns

None

Example

XML:
id: from <command>
mode: OFF | ON | ENABLED
 
<spa_heatstate>
    <item>
        <id>set_spa_heater</id>
        <mode>OFF</mode>
    </item>
</spa_heatstate>

SPA HEATMODES LIST CHANGED

This notification provides a way to override capabilities. It is sent to the proxy when the list of available spa heat modes has changed.

Signature

SPA_HEATMODES_LIST_CHANGED ()

Parameter Description
SPA_HEATPMODES  XML.

Returns

None

Example

XML
<spa_heat_modes>
    <mode>
        <id>1</id>
        <text>Heater</text>
        <command>set_spa_heater</command>
    </mode>
</spa_heat_modes>

SPA MODE CHANGED

Sent to the proxy to indicate whether the ‘Spa’ Aux button on the right side of the UI is On or Off.

Signature

SPA_MODE_CHANGED ()

Parameter Description
SPAMODE From <spa_pumpmodes>True/False

Returns

None

Example

C4:SendToProxy(5001, "SPA_MODE_CHANGED", {SPAMODE = "True"}) 

SPA PUMPMODES LIST CHANGED

This notification provides a way to override capabilities. It is sent to the proxy when the list of available spa pump modes has changed

Signature

SPA_PUMPMODES_LIST_CHANGED ()

Parameter Description
SPA_PUMPMODES  Comma delimited list.

Returns

None

SPA SETPOINT CHANGED

Sent to the proxy to indicate that the temperature setpoint on the spa controller has changed.

Signature

SPA_SETPOINT_CHANGED ()

Parameter Description
SETPOINT New setpoint value.

Returns

None

Example

C4:SendToProxy(5001, "SPA_SETPOINT_CHANGED", {SETPOINT = 103}) 

SPA TEMP CHANGED

Sent to the proxy to indicate that the spa temperature has changed.

Signature

SPA_TEMP_CHANGED ()

Parameter Description
TEMPERATURE New temperature value.

Returns

None

Example

C4:SendToProxy(5001, "SPA_TEMP_CHANGED", {TEMPERATURE = 105}) 

Pool Proxy UI Requests

GET PROPERTIES

Obtains the pool driver’s property information.

Example

    True     True     True                                         1                 Auxiliary Control 1                 Toggle                                         2                 Auxiliary Control 2                 Toggle                                         3                 Auxiliary Control 3                 Toggle                                         4                 Auxiliary Control 4                 Toggle                                         5                 Jandy Color Aux 5                 Light Dimmer Jandy Colors                                         6                 Dimmer Aux 6                 Dimmer                                         7                 Auxiliary Control 7                 Toggle                                         8                 Auxiliary Control 8                 Toggle                        

GET STATE

Obtains the pool’s state.

Example

<pool_state>
    <spamode>Off</spamode>
    <pumpmode>On</pumpmode>
    <pool_setpoint>86</pool_setpoint>
    <spa_setpoint>102</spa_setpoint>
    <pool_temp>79</pool_temp>
    <spa_temp>-1</spa_temp>
    <scale>F</scale>
    <air_temp>79</air_temp>
    <aux_state>
        <item>
            <id>1</id>
            <mode>ON</mode>
        </item>
        <item>
            <id>2</id>
            <mode>OFF</mode>
        </item>
        <item>
            <id>3</id>
            <mode>OFF</mode>
        </item>
        <item>
            <id>4</id>
            <mode>OFF</mode>
        </item>
        <item>
            <id>5</id>
            <mode>OFF</mode>
        </item>
        <item>
            <id>6</id>
            <mode>ON</mode>
            <selected>75%</selected>
        </item>
        <item>
            <id>7</id>
            <mode>ON</mode>
        </item>
        <item>
            <id>8</id>
            <mode>OFF</mode>
        </item>
        <item>
            <id>9</id>
            <mode>OFF</mode>
        </item>
        <item>
            <id>10</id>
            <mode>OFF</mode>
        </item>
        <item>
            <id>11</id>
            <mode>OFF</mode>
        </item>
        <item>
            <id>12</id>
            <mode>OFF</mode>
        </item>
        <item>
            <id>13</id>
            <mode>OFF</mode>
        </item>
        <item>
            <id>14</id>
            <mode>OFF</mode>
        </item>
        <item>
            <id>15</id>
            <mode>OFF</mode>
        </item>
    </aux_state>
    <pool_heatstate>
        <item>
            <id>set_pool_heater</id>
            <mode>ON</mode>
        </item>
        <item>
            <id>set_solar_heater</id>
            <mode>OFF</mode>
        </item>
    </pool_heatstate>
    <spa_heatstate>
        <item>
            <id>set_spa_heater</id>
            <mode>OFF</mode>
        </item>
    </spa_heatstate>
</pool_state>

GET SETUP

Obtains the driver’s setup information.

Example

pool_setup>
    <temp_min>34</temp_min>
    <temp_max>104</temp_max>
    <pool_pumpmodes>Off,On</pool_pumpmodes>
    <spa_pumpmodes>Off,On</spa_pumpmodes>
    <max_aux>15</max_aux>
    <pool_heat_modes>
        <mode>
            <id>1</id>
            <text>Heater</text>
            <command>set_pool_heater</command>
        </mode>
        <mode>
            <id>2</id>
            <text>Solar Heater</text>
            <command>set_solar_heater</command>
        </mode>
    </pool_heat_modes>
    <spa_heat_modes>
        <mode>
            <id>1</id>
            <text>Heater</text>
            <command>set_spa_heater</command>
        </mode>
    </spa_heat_modes>
    <aux_types>
        <aux_type>
            <type>TOGGLE</type>
            <name>Toggle</name>
        </aux_type>
        <aux_type>
            <type>LIST</type>
            <provides_selected_item>false</provides_selected_item>
            <name>Light Dimmer Jandy Colors</name>
            <items>Off,Alpine White,Sky Blue,Cobalt Blue,Caribbean Blue,Spring Green,Emerald Green,Emerald Rose,Magenta,Garnet Red,Violet,Color Splash</items>
        </aux_type>
        <aux_type>
            <type>LIST</type>
            <provides_selected_item>false</provides_selected_item>
            <name>Light Dimmer Pentair</name>
            <items>Off,White,Light Green,Green,Cyan,Blue,Lavender,Magenta,Light Magenta,Color Splash</items>
        </aux_type>
        <aux_type>
            <type>LIST</type>
            <provides_selected_item>false</provides_selected_item>
            <name>Light Dimmer Hayward Color Logic</name>
            <items>Off,Voodoo Lounge,Deep Blue Sea,Afternoon Skies,Emerald,Sangria,Cloud White,Twilight,Tranquility,Gemstone,USA,Mardi Gras,Cool Cabaret</items>
        </aux_type>
        <aux_type>
            <type>LIST</type>
            <provides_selected_item>false</provides_selected_item>
            <name>Light Dimmer Jandy LED Water Colors</name>
            <items>Off,Alpine White,Sky Blue,Cobalt Blue,Caribbean Blue,Spring Green,Emerald Green,Emerald Rose,Magenta,Violet,Slow Color Splash,Fast Color Splash,USA,Fat Tuesday,Disco Tech</items>
        </aux_type>
        <aux_type>
            <type>LIST</type>
            <provides_selected_item>false</provides_selected_item>
            <name>Light Dimmer Pentair Intellibright</name>
            <items>Off,Sam,Party,Romance,Caribbean,American,California Sunset,Royal,Blue,Green,Red,White,Magenta</items>
        </aux_type>
        <aux_type>
            <type>LIST</type>
            <provides_selected_item>true</provides_selected_item>
            <name>Dimmer</name>
            <items>Off,25%,50%,75%,100%</items>
        </aux_type>
    </aux_types>
</pool_setup>

Pool Proxy Variables

POOL VARIABLES

The Pool Proxy supports the following variables:

AIR_TEMPERATURE integer

POOL_HEATMODE string

POOL_SETPOINT integer

POOL_TEMPERATURE integer

PUMPMODE string

SCALE string

SPAMODE string

SPA_HEATMODE string

SPA_SETPOINT integer

SPA_TEMPERATURE integer

Security Capabilities

The following Capabilities are supported by the Security Proxy:

button_list

Defines buttons to be displayed on UI panel along with IDs for Keypad. locCode defines button's column (A...Z) and row (1...9). For example, A3 indicates column 1 row 3. Width defines button width (in columns).

Parameter
True/False

display_type

Define GUI display location and width.

Parameter Description
locCode location code
width

Example

<location>locCode</location> <width>nWidth</width>

has_alrm_cleared_event

Alarm capable of generating an event when alarm is cleared.

Parameter
True/False

has_alrm_event

Alarm capable of generating an event when activated

Parameter
True/False

has_trouble_event

Alarm capable of generating an event when alarm trouble is detected.

Parameter
True/False

Security Panel Commands

ADDITIONAL_PANEL_INFO

Command from the UI to the Proxy and then forwarded on to the Protocol. Has no Return values. This command will only be sent after having received a REQUEST_ADDITIONAL_INFO notification from the protocol driver.  The protocol driver will send the notification to the proxy driver, which will send a request_additional_info DataToUI command to the UIs.  The UIs will then prompt the user for additional info. After the information is entered, the UI will generate this command to send back to the protocol driver. See the REQUEST_ADDITIONAL_INFO notification.

Parameter Description
str Info: A copy of the info_string parameter that was passed with the request_additional_info request. The protocol driver will need this to know what actions to return to when it gets the new info.
str FunctionName: A copy of the function_name parameter that was passed with the request_additional_info request. The protocol driver may need this to know what actions to return to when it gets the new info.
str NewInfo: The new info provided by the UI in response to the Request_additional_info request.
str InterfaceID: A unique (str) to identify which interface is sending this command.

Returns

None

GET_ALL_PGM_INFO

Request to return information about each PGM active on the panel. The information consists of its id and a flag indicating if it is currently opened.

Parameters

None

Return Description
int PGM ID
bool True, False: True if PGM is Open.

GET_ALL_PARTITION_INFO

Request to return information to the panel proxy about each of its partitions. The information consists of its id, if it’s enabled, its binding id, and its current state.

Parameters

None

Return Description
int Partition ID
bool True, False: True if this partition is Open.
int Binding ID
str State

GET_ALL_ZONE_INFO

Request to return information about each zone on the panel. The information consists of its id, name, type_id, and a list of partitions the zone is included in, a flag indicating if it can be bypassed, and a flag indicating if it is currently opened.

Parameters

None

Return Description
int Zone ID
str Zone Name
int Zone Type ID
table Partitions the Zone is included in.
bool True, False: True if Zone can be bypassed.
bool True, False: True if Zone is currently Open.
str State

GET_PANEL_SETUP

Calls [GET_ALL_PARTITION_INFO\]1

PGM_CLOSE

Sends an ‘close’ command to the targeted PGM.

Parameter Description
int PGM ID: The id of the targeted PGM.

PGM_OPEN

Sends an ‘open’ command to the targeted PGM.

Parameter Description
int PGM ID: The id of the targeted PGM.

PGM_TOGGLE

Sends an ‘toggle’ command to the targeted PGM.

Parameter Description
int PGM ID: The id of the targeted PGM.

PGM_TRIGGER

Sends an ‘trigger’ command to the targeted PGM.

Parameter Description
int PGM ID: The id of the targeted PGM.

READ_PANEL_INFO

Send a command to the panel to read its partition and zone information.

SET_PANEL_TIME_DATE

Set the current date and time on the panel. This command is only available if the ‘can_set_time’ capability is set to ‘true’.

Parameter Description
int YEAR: The current year (4 digits)
int MONTH: The current month (2 digits 01-12)
int DAY: The current day of the month (2 digits 01-31)
int HOUR: The current hour in 24-hour time (2 digits 00-23)
int MINUTE: The current minute in the hour (2 digits 00-59)
int SECOND: The current second in the minute (2 digits 00-59)
str INTERFACE_ID: Unique string ID indicating from where the command originated.

SET_PARTITION_ENABLED

Set a flag to designate whether or not the specified partition is currently enabled. This command is only available if the ‘can_activate_partitions’ capability is set to ‘true’.

Parameter Description
str PARTITION_ID: The id number of the targeted partition.
bool ENABLED: ‘True’ if this partition should now be enabled, False if not.

SEND_PGM_COMMAND

Send a command to a PGM on the panel.

Parameter Description
int PGM ID: The id of the targeted PGM.
bool ENABLED: ‘True’ if this partition should now be enabled, False if not.
str COMMAND: Possible commands are: ‘open’, ‘close’, ‘toggle’, and ‘trigger’.

SET_ZONE_INFO

Set the information about a specified zone in the driver.

Parameter Description
int ZONE_ID: The id of the targeted zone.
str NAME: The name by which we will now refer to this zone.
str TYPE_ID: The type of zone that the Control4 project will consider this zone. This will determine which icons will show up when it is referenced. Valid values are:
”CONTACT_SENSOR"
”EXTERIOR_DOOR"
“EXTERIOR_WINDOW"
“INTERIOR_DOOR"
"MOTION_SENSOR"
"FIRE"
"GAS"
"CARBON_MONOXIDE"
"HEAT"
"WATER"
"SMOKE"
"PRESSURE"
"GLASS_BREAK"
"GATE"
"GARAGE_DOOR"
bool DATA_GUARDED: ‘True’ if these new settings should be protected so that information from the panel doesn’t overwrite them.
str INTERFACE_ID: Unique string ID indicating from where the command originated.

Security Panel Capabilities

The following Capabilities are supported with the Security System Controller Panel:

<can_set_time></can_set_time> Defaults to true.

<can_activate_partitions></can_activate_partitions> Defaults to true.

Security Panel Conditionals

The following Conditionals are supported with the Security System Controller Panel. System programming conditionals are handled by the proxy and return a true or false:

IN_TROUBLE: Returns True if the system is currently in a TROUBLE state.

Security Panel Events

The following Events are supported with the Security System Controller Panel.

TROUBLE: Fired when the security panel receives a TROUBLE notification.

TROUBLE_CLEAR: Fired when the TROUBLE state is cleared.

Security Panel Notifications

Overview

Sending Protocol Notifications requires the use of the SendToProxy API.

The first parameter for C4:SendToProxy is a binding id. The API doesn't not recognize Partiton Ids. The assumption is made that the panel binding defined in driver.xml is on binding id 5001. Then partition 1 is on binding id 5002, partition 2 on 5003, etc.

The second parameter is the text of the particular notification being sent. The Proxy knows the information being sent based off of this text. For example, when the parameter "PARTITION_ENABLED" is sent through SendtoProxy, the Camera proxy knows parameter type information that "PARTITION_ENABLED" should contain.

The third parameter is a table of the parameters for the particular notification. In this case, the PARTITION_ENABLED notification takes one parameter named "ENABLED". Its value is either "true" or "false". Note that the third parameter could also be sent as a string rather than a table. In this case the are no parameter names. The whole string is just interpreted as data for the notification. This usage is mostly deprecated, but some notifications (such as DISPLAY_TEXT) started out doing this and have never been changed so they don't break backward compatibility.

The fourth parameter is just the word "NOTIFY". This is just some extra information for BindingManager so it won't try to make assumptions about the type of message based on binding ids. It is recommended that it is included in C4:SendToProxy.

To the right are an examples fully formed PANEL_ZONE_STATE and ALL_ZONES_INFO Notifications being sent using the SendToProxy API.

-- PANEL_ZONE_STATE Example

function SendZoneState(ZoneId, IsOpen, AreInitializing)
    C4:SendToProxy( 5001, 
                    "PANEL_ZONE_STATE", 
                    {   ZONE_ID = ZoneId, 
                        ZONE_OPEN = IsOpen, 
                        INITIALIZING = AreInitializing 
                    }, 
                    "NOTIFY"
                  )
end



-- ALL_ZONES Example

function SendAllZoneInfo()

    local ZoneInfoXMLStr = 
    [[<zones>
        <zone>
            <id>1</id>
            <name>Back Door</name>
            <type_id>2</type_id>
            <partitions></partitions>
            <can_bypass>false</can_bypass>
            <is_open>false</is_open>
        </zone>
        <zone>
            <id>2</id>
            <name>Front Door</name>
            <type_id>2</type_id>
            <partitions></partitions>
            <can_bypass>false</can_bypass>
            <is_open>false</is_open>
        </zone>
        <zone>
            <id>3</id>
            <name>Back Window</name>
            <type_id>3</type_id>
            <partitions></partitions>
            <can_bypass>true</can_bypass>
            <is_open>true</is_open>
        </zone>
        <zone>
            <id>4</id>
            <name>Zone 4</name>
            <type_id>5</type_id>
            <partitions></partitions>
            <can_bypass>true</can_bypass>
            <is_open>false</is_open>
        </zone>
    </zones>]]

    C4:SendToProxy( 5001, 
                    "ALL_ZONES_INFO", 
                    ZoneInfoXMLStr,
                    "NOTIFY"
                  )
end

ALL_PGMS_INFO

Sends and XML string of all PGMs (relays) and respective PGM information.

Parameter Description
xml XML data. See example.

Example

<pgms>
        <pgm>
            <id>1</id>
            <is_open>true</is_open>
        </pgm>
        <pgm>
            <id>2</id>
            <is_open>false</is_open>
        </pgm>
        <pgm>
            <id>3</id>
            <is_open>false</is_open>
        </pgm>
</pgms>

ALL_ZONES_INFO

Sends and XML string of all zones and respective zone information.

Parameter Description
xml XML data. See example.

Example

<zones>
        <zone>
            <id>1</id>
            <name>Back Door</name>
            <type_id>2</type_id>
            <partitions></partitions>
            <can_bypass>false</can_bypass>
            <is_open>false</is_open>
        </zone>
        <zone>
            <id>2</id>
            <name>Front Door</name>
            <type_id>2</type_id>
            <partitions></partitions>
            <can_bypass>false</can_bypass>
            <is_open>false</is_open>
        </zone>
        <zone>
            <id>3</id>
            <name>Back Window</name>
            <type_id>3</type_id>
            <partitions></partitions>
            <can_bypass>true</can_bypass>
            <is_open>true</is_open>
        </zone>
        <zone>
            <id>4</id>
            <name>Zone 4</name>
            <type_id>5</type_id>
            <partitions></partitions>
            <can_bypass>true</can_bypass>
            <is_open>false</is_open>
        </zone>
</zones>

PANEL ADD PGM

Add a PGM (relay) to the panel.

Parameter Description
num PGM_ID: ID of the new PGM

Example

C4:SendToProxy(TargetBindingID, "PANEL_ADD_PGM", { PGM_ID = 1 }, "NOTIFY")

SYNC PANEL INFO

Tells the Panel proxy that the hardware has been initialized and is ready to function.

Parameters

None

Example

C4:SendToProxy(TargetBindingID, "PANEL_INITIALIZED", {}, "NOTIFY")

PANEL PARTITION STATE

Lets the panel know the state of the given partition. This is used in the Properties display in ComposerPro.

Parameter Description
num PARTITION_ID: ID of the target partition.
str STATE: A string listing its state. Supported values include: "ARMED" "ALARM" "OFFLINE" "EXIT_DELAY" "ENTRY_DELAY" "DISARMED_READY" "DISARMED_NOT_READY" "CONFIRMATION_REQUIRED"
str TYPE: Further information on the state. For example, it could be "Stay" for a type of ARMED. It could be "Burglary" for a type of ALARM. Can be "" if not needed.

Example

C4:SendToProxy(5001, "PANEL_PARTITION_STATE", {PARTITION_ID = 2, STATE = "ARMED", TYPE = "Stay"}, "NOTIFY")

PANEL PGM STATE

Current status of a PGM (relay): open or closed

Parameter Description
num PGM_ID: ID of the target PGM
bool PGM_OPEN: "true" if the PGM is opened. "false" if it is closed.
bool INITIALIZING: "true" if the PGM is initializing. This will prevent programming from firing.

Example

C4:SendToProxy(TargetBindingID, "PANEL_PGM_STATE", { PGM_ID = 1, PGM_OPEN = true, INITIALIZING = false }, "NOTIFY")

PANEL REMOVE PGM

Remove a PGM (relay) from the panel.

Parameter Description
num PGM_ID: ID of the PGM being removed

Example

C4:SendToProxy(TargetBindingID, "PANEL_REMOVE_PGM", { PGM_ID = 1 }, "NOTIFY")

PANEL_REMOVE_ ZONE

Remove a zone from the panel.

Parameter Description
num ID: ID of the target zone.

Example

C4:SendToProxy(TargetBindingID, "PANEL_REMOVE_ZONE", { ID = 2}, "NOTIFY")

PANEL_ZONE_INFO

Information about a given zone that Navigator or Composer can display.

Parameter Description
num ID: ID of the target zone.
str NAME: The zone's name either read from the panel or assigned by the user. Will default to "Zone NN"
num TYPE_ID: The type of zone so that the Control4 system can map its sensor binding to a type of sensor. Current valid types with their ids are:
UNKNOWN = 0
CONTACT_SENSOR= 1
EXTERIOR_DOOR= 2
EXTERIOR_WINDOW= 3
INTERIOR_DOOR = 4
MOTION_SENSOR = 5
FIRE = 6
GAS = 7
CARBON_MONOXIDE = 8
HEAT = 9
WATER = 10
SMOKE = 11
PRESSURE = 12
GLASS_BREAK= 13
GATE = 14
GARAGE_DOOR = 15
str PARTITIONS: Comma-delimited string of numbers indicating which partitions this zone is a member of. For example, if this zone is included in both partitions 1 and 3, the string would be "1,3"
bool IS_OPEN: "true" = open. "false" = closed.

Example

C4:SendToProxy(TargetBindingID, "PANEL_ZONE_INFO", { ID = 2, NAME = "ENTRYWAY", TYPE_ID = 5, PARTITIONS = "1,3", IS_OPEN = true}, "NOTIFY")

PANEL ZONE STATE

Sends the current status of a zone: open or closed.

Parameter Description
num ZONE_ID: ID of the target zone
bool ZONE_OPEN: "true" if the zone is opened. "false" if it is closed.
bool INITIALIZING: "true" if the zone is initializing. This will prevent programming from firing.

Example

C4:SendToProxy(TargetBindingID, "PANEL_ZONE_STATE", { ZONE_ID = 1, ZONE_OPEN = true, INITIALIZING = false }, "NOTIFY")

REQUEST_ADDITIONAL_PANEL_INFO

This is a notification that can allow two-way communication with the keypad. This command will cause Navigator to bring up the keypad screen with the prompt string. After the user types in something on the keypad, it will be returned to our driver through the ADDITIONAL_PANEL_INFO command.

Parameter Description
str PROMPT: The prompt string that will show up above the keypad on the Navigator string.
str INFO_STRING: This is a string that will not be shown to the user, but will be returned with the ADDITIONAL_INFO command. It is a way that information can be built up through multiple iterations of calls to REQUEST_ADDITIONAL_PANEL_INFO
str FUNCTION_NAME: This will not be shown to the user but will also be returned with the ADDITIONAL_INFO command. It is the function name of the handler in the driver code that should be called when the new information arrives.
bool MASK_DATA: “true" if the information being entered on the screen (such as a user code) should not be readable. If the flag is true, then each character will show up on the Navigator screen as a dot.
str INTERFACE_ID: Unique identification string for one of the UIs that the prompt will appear on.

Example

C4:SendToProxy(TargetBindingID, "REQUEST_ADDITIONAL_PANEL_INFO", { PROMPT = 
promptstring, INFO_STRING = infostring, FUNCTION_NAME = functionstring, MASK_DATA = true, INTERFACE_ID = interfaceid }, "NOTIFY")

SYNC PANEL INFO

This is a request to the proxy driver to re-send all of the information it has about the panel to ensure synchronization.

Parameters

None

Example

C4:SendToProxy(TargetBindingID, "SYNC_PANEL_INFO", {},  "NOTIFY")

TROUBLE CLEAR

Clear the trouble flag.

Parameter Description
num IDENTIFIER: Unique number for the trouble instance that has been resolved.

Example

C4:SendToProxy(TargetBindingID, "TROUBLE_CLEAR", { IDENTIFIER = 10 }, "NOTIFY")

TROUBLE START

List trouble that the panel is having on the Composer Property Page and on each of the Navigator partition screens.

Parameter Description
str TROUBLE_TEXT: Text listing the type of trouble. “For example: “Battery", "Communication", etc.)
num IDENTIFIER: Unique number for this instance of trouble.

Example

C4:SendToProxy(TargetBindingID, "TROUBLE_START", { TROUBLE_TEXT = "Battery", IDENTIFIER = 10 }, "NOTIFY")

Security Panel Variables

The Security System Controller Panel supports the following variable:

TROUBLE_TEXT String representing the text which will be displayed.

Security Partition Capabilities

The following Capabilities are supported with the Security System Controller Partition:

ui_version Integer. Defaults to 2. A value of 2 means that the new user interface is used. If the interface changes in the future, this number may increase again.

arm_states Comma Delimited String. A comma delimited string containing the possible arm states this system supports.

has_fire Boolean. Defaults to false. True if this partition supports the “Fire” emergency button. If True, Navigator will show a fire emergency icon.

has_medical Boolean. Defaults to false. True if this partition supports the “Medical” emergency button. If True, Navigator will show a medical emergency icon.

has_police Boolean. Defaults to false. True if this partition supports the “Police” emergency button. If True, Navigator will show a police emergency icon.

has_panic Boolean. Defaults to false. True if this partition supports the “Panic” emergency button. If True, Navigator will show a fire emergency icon.

functions Comma Delimited String. Default to "" A comma delimited string containing the functions supported by the protocol driver. Navigator will show these under its 'Functions' button on the main screen. When one of the functions are selected a command will be sent to the driver with the function name. It is up to the driver writer to implement that function.

star_label string Default to * The text that will be shown on the * button on the keypad.

pound_label string Default to “#” The text that will be shown on the # button on the keypad.  

button_A xml string <visible\>true\</visible\> Designates whether button “A” will be visible on the UI keypad. <label>This is Button A</label> The text that will appear on button “A” on the UI keypad (if visible) Defaults to “A”  

button_B xml string <visible\>true\</visible> Designates whether button “B” will be visible on the UI keypad. <label>This is Button B</label> The text that will appear on button “B” on the UI keypad (if visible) Defaults to “B”  

button_C xml string <visible>true</visible> Designates whether button “C” will be visible on the UI keypad. <label>This is Button C</label> The text that will appear on button “C” on the UI keypad (if visible) Defaults to “C”  

button_D xml string <visible>true</visible> Designates whether button “D” will be visible on the UI keypad. <label>This is Button D</label> The text that will appear on button “D” on the UI keypad (if visible) Defaults to “D”

supports_virtual_keypad Boolean Defaults to true. True if the panel supports raw key presses being passed by the software directly to the hardware; usually used for panel programming or setup. Navigator will provide the user a page that has the keypad on it.

Security Partition Conditionals

The following Conditionals are supported with the Security System Controller Partition. System programming conditionals are handled by the proxy and return a true or false:

CURRENT_ARM_STATUS

Parameter Description
== equal
!= not equal
ARM STATE One of the possible arm states listed in the arm_states configuration entry. These values are defined in the partition driver’s capabilities XML. See arm_states for more information.

IS_ALARM Returns true if the current state is ALARM.

IS_ARMED Returns true if the current state is ARMED, ENTRY DELAY, EXIT DELAY or ALARM

IS_AWAY Returns true if the partition is armed for away. Note this has been deprecated and is present for backwards compatibility purposes.

IS_DISARMED Returns true if the partition is currently disarmed (states DISARMED READY or DISARMED NOT READY).

IS_HOME Returns true if the partition is armed for home (states HOME or Stay). Note this has been deprecated and is present for backwards compatibility purposes.

IS_IN_ENTRY_DELAY Returns true if the current state is ENTRY DELAY

IS_IN_EXIT_DELAY Returns true if the current state is EXIT DELAY

PREVIOUS_ARM_STATUS Same as CURRENT_ARM_STATUS but used to compares with the arm status before the last state change.

Parameter Description
== equal
!= not equal
ARM STATE One of the possible arm states listed in the arm_states configuration entry. These values are defined in the partition driver’s capabilities XML. See arm_states for more information._

Security Partition Events

The following Events are supported with the Security System Controller Partition.

ALARM Fired when the partition enters an alarm state.

ALARM_CLEAR Fired when the partition leaves an alarm state.

ARM_FAILED Fired when an attempt to arm the partition failed

ARMED Fired when the partition is armed.

AWAY Fired when the partition is armed for Away. Will be deprecated.

DISARMED Fired when the partition is disarmed.

DISARM_FAILED Fired when an attempt to disarm the partition failed

EMERGENCY_TRIGGERED Fired when an emergency is triggered that doesn't change the alarm state.

HOME Fired when the partition is armed for Home. Will be deprecated.

PARTITION_STATE_CHANGE Fired when the partition state changes

Security Partition Notifications

Overview

Sending Protocol Notifications requires the use of the SendToProxy API.

The first parameter for C4:SendToProxy is a binding id. The API doesn't not recognize Partion Ids. The assumption is made that the panel binding defined in driver.xml is on binding id 5001. Then partition 1 is on binding id 5002, partition 2 on 5003, etc.

The second parameter is the text of the particular notification being sent. The Proxy knows the information being sent based off of this text. For example, when the parameter "PARTITION_ENABLED" is sent through SendtoProxy, the Camera proxy knows parameter type information that "PARTITION_ENABLED" should contain.

The third parameter is a table of the parameters for the particular notification. In this case, the PARTITION_ENABLED notification takes one parameter named "ENABLED". Its value is either "true" or "false". Note that the third parameter could also be sent as a string rather than a table. In this case the are no parameter names. The whole string is just interpreted as data for the notification. This usage is mostly deprecated, but some notifications (such as DISPLAY_TEXT) started out doing this and have never been changed so they don't break backward compatibility.

The fourth parameter is just the word "NOTIFY". This is just some extra information for BindingManager so it won't try to make assumptions about the type of message based on binding ids. It is recommended that it is included in C4:SendToProxy.

To the right is an example of a fully formed Partition_Enabled Notifications being sent using the SendToProxy API.


-- Partition_Enabled Example

function SetPartitionEnabled(PartitionID, Enabled)
    local TargetBindingID = PartitionID + 5001
    C4:SendToProxy(TargetBindingID, "PARTITION_ENABLED", { ENABLED = tostring(Enabled) }, "NOTIFY")
end

ARM FAILED

An attempt to arm the partition failed. The two most common reasons are because a user code is required to arm this partition or because one or more unbypassed zones are open.

Parameter Description
str ACTION: Supported values include: “keypad”: Will cause Navigator to ask for a user code and then retry.
“bypass”: Will cause Navigator to show a list of zones that are in fault and ask the user if they wish to continue. If continue chosen, the arm command will be resent. However, it will try to bypass each faulted zone before it tries to arm again.
“NA”: Failed for some other reason. Navigator will take no further action on the arming.

Example

C4:SendToProxy(TargetBindingID, "ARM_FAILED", { ACTION = "bypass" }, "NOTIFY")

CLEAR_ZONE_LIST

Removes all the zones from a partition's list. Usually precedes new messages that will build that list back up.

Parameters

None

Example

C4:SendToProxy(TargetBindingID, "CLEAR_ZONE_LIST", {}, "NOTIFY")

CODE_REQUIRED_

Sets a flag that Navigator will use when an arm command is attempted. If the flag is true, Navigator will ask for a user code before it sends the arm command.

Parameter Description
bool CODE_REQUIRED_TO_ARM: “true" if the user code should be sent with the arm command.

Example

C4:SendToProxy(TargetBindingID, "CODE_REQUIRED", { CODE_REQUIRED_TO_ARM = true }, "NOTIFY")

DISARM FAILED

Notification sent when an attempt to disarm the panel failed. This is typically due to an invalid user code.

Parameter Description
str NTERFACE_ID: Commands receiveD from Director will have an interface_id string sent as one of the parameters. This is a unique string that identifies where the command originated. When a response such as a failure is sent, it should only display on the UI that originated the command. To support this, the INTERFACE_ID string is sent back with the notification. Only the original UI will show the results of this notification.

Example

C4:SendToProxy(TargetBindingID, "DISARM_FAILED", { INTERFACE_ID = ID }, "NOTIFY")

EMERGENCY TRIGGERED

An emergency was triggered, either from a sensor or by the user hitting one of the emergency buttons.

Parameter Description
str TYPE: Specifies the type of emergency just triggered. It can be anything, but standard types that Navigator has icons for are: Fire, Medical, Police, and Panic.

Example

C4:SendToProxy(TargetBindingID, "EMERRGENCY_TRIGGERED", { TYPE = "Fire" }, "NOTIFY")

HAS_ZONE_

Tells the proxy that a particular zone is part of this partition.

Parameter Description
num ZONE_ID: The zone ID of the zone to be included in this partition's zone list.

Example

C4:SendToProxy(TargetBindingID, "HAS_ZONE", { ZONE_ID = 2 }, "NOTIFY")

PARTITION ENABLED

It's possible to have partitions defined on a panel that aren't enabled. They still must have a proxy defined for them, but it is possible to specify whether they are currently in use or not.

Parameter Description
bool ENABLED: "true" if this partition is enabled.

Example

C4:SendToProxy(TargetBindingID, "PARTITION_ENABLED", { ENABLED = tostring(Enabled) }, "NOTIFY")

PARTITION STATE

Specifies which state the partition is currently in.

Parameter Description
str STATE: Supported values include: "ARMED" "ALARM" "OFFLINE" "EXIT_DELAY" "ENTRY_DELAY" "DISARMED_READY" "DISARMED_NOT_READY" "CONFIRMATION_REQUIRED"
str TYPE: Further information on the state. For example, it could be "Stay" for a type of ARMED. It could be "Burglary" for a type of ALARM. Can be "" if not needed.
num DELAY_TIME_TOTAL: For Entry or Exit delays. The total time of the delay.
num DELAY_TIME_REMAINING: For Entry or Exit delays, the time remaining in the delay.
bool CODE_REQUIRED_TO_CLEAR: "true" if a user code is now required from Navigator to change from the current state.

Example

C4:SendToProxy(TargetBindingID, "PARTITION_STATE", { STATE = "ALARM", TYPE = "BURGLARY", DELAY_TIME_TOTAL = 5, DELAY_TIME_TOTAL = 2, CODE_REQUIRED_TO_CLEAR = true }, "NOTIFY")

PARTITION STATE INIT

Specifies which state the partition is currently in but will not cause any of the programming to be fired.

Parameter Description
str STATE: Supported values include: "ARMED" "ALARM" "OFFLINE" "EXIT_DELAY" "ENTRY_DELAY" "DISARMED_READY" "DISARMED_NOT_READY" "CONFIRMATION_REQUIRED"
str TYPE: Further information on the state. For example, it could be "Stay" for a type of ARMED. It could be "Burglary" for a type of ALARM. Can be "" if not needed.
num DELAY_TIME_TOTAL: For Entry or Exit delays. The total time of the delay.
num DELAY_TIME_REMAINING: For Entry or Exit delays, the time remaining in the delay.
bool CODE_REQUIRED_TO_CLEAR: "true" if a user code is now required from Navigator to change from the current state.

Example

C4:SendToProxy(TargetBindingID, "PARTITION_STATE_INIT", { STATE = "ALARM", TYPE = "BURGLARY", DELAY_TIME_TOTAL = 5, DELAY_TIME_TOTAL = 2, CODE_REQUIRED_TO_CLEAR = true}, "NOTIFY")

REQUEST_ADDITIONAL_INFO

This notification allowS two-way communication with the keypad. This command will cause Navigator to bring up the keypad screen with the prompt string. After the user types in something on the keypad, it will be returned to the driver through the ADDITIONAL_INFO command.

Parameter Description
str PROMPT: The prompt string that will show up above the keypad on the Navigator string.
str INFO_STRING: This is a string that will not be shown to the user, but will be returned with the ADDITIONAL_INFO command. It provides a way for information to be built up through multiple iterations of calls to REQUEST_ADDITIONAL_INFO
str FUNCTION_NAME: This will not be shown to the user but will also be returned with the ADDITIONAL_INFO command. It is the function name of the handler in the driver code that should be called when the new information arrives.
bool MASK_DATA: “true" if the information being entered on the screen (such as a user code) should not be readable. If the flag is true, then each character will show up on the Navigator screen as a dot.
str INTERFACE_ID: Commands received from Director will have an interface_id string sent as one of the parameters. This is a unique string that identifies where the command originated. When a response such as a failure is sent, it should only display on the UI that originated the command. To support this, the INTERFACE_ID string is sent back with the notification. Only the original UI will show the results of this notification.

Example

C4:SendToProxy(TargetBindingID, "REQUEST_ADDITIONAL_INFO", { PROMPT = 
promptstring, INFO_STRING = infostring, FUNCTION_NAME = functionstring, MASK_DATA = true, INTERFACE_ID = interfaceid }, "NOTIFY")

REQUEST_DEFAULT_USER_CODE_

The proxy code stores the default user code if it exists for the partition. When the proxy is first bound to the protocol driver, it will send that code to the protocol driver. However, we found that when a driver is updated, that call was not being made, so we added a mechanism for the protocol driver to initiate the communication to get that code. This is new in 3.2

Available from 3.2.0

Parameters

None

Example

C4:SendToProxy(TargetBindingID, "REQUEST_DEFAULT_USER_CODE", {}, "NOTIFY")

REMOVE_ZONE_

Tells the proxy that a particular zone is no longer a part of this partition.

Parameter Description
num ZONE_ID: The zone ID of the zone to be removed from the partition's zone list.

Example

C4:SendToProxy(TargetBindingID, "REMOVE_ZONE", { ZONE_ID = 1 }, "NOTIFY")

ZONE STATE

Reports if a specific zone is open/closed and bypassed/unbypassed.

Parameter Description
num ZONE_ID: Number
bool ZONE_OPEN: "true" if the zone is opened. "false" if it is closed.
bool ZONE_BYPASSED: "true" if the zone is bypassed. "false" if it is not bypassed.

Example

C4:SendToProxy(TargetBindingID, "ZONE_STATE", { ZONE_ID = 1, ZONE_OPEN = true, ZONE_BYPASSSED = false }, "NOTIFY")

Security Partition Commands

ADDITIONAL_INFO

This command will only be sent after having received a REQUEST_ADDITIONAL_INFO notification from the protocol driver.  The protocol driver will send the notification to the proxy driver, which will send a request_additional_info DataToUI command to the UIs.  The UIs will then prompt the user for additional info. After the information is entered, the UI will generate this command to send back to the protocol driver. See the REQUEST_ADDITIONAL_INFO notification.

Parameter Description
str Info: A copy of the info_string parameter that was passed with the request_additional_info request. The protocol driver will need this to know what actions to return to when it gets the new info.
str FunctionName: A copy of the function_name parameter that was passed with the request_additional_info request. The protocol driver may need this to know what actions to return to when it gets the new info.
str NewInfo: The new info provided by the UI in response to the equest_additional_info request.
str InterfaceID: A unique (str) to identify which interface is sending this command.

ARM_CANCEL

Cancel an uncompleted arm command.

Parameter Description
str InterfaceID: A unique string to identify which interface is sending this command.

EXECUTE_EMERGENCY

Requests the partition to execute an emergency event of the type specified by the EmergencyType parameter. Valid values are: Fire, Medical, Police, and Panic.

Parameter Description
str A unique string to identify which interface is sending this command.
str Interface ID: Unique string ID indicating from where the command originated

EXECUTE_FUNCTION

Request the partition to execute a function event of the type listed in the functions capability. The function parameter would be one of the function strings listed in the <functions> capability

Parameter Description
str Function.
str InterfaceID: A unique string to identify which interface is sending this command.

KEY_PRESS

Specifies that a key (button) was pressed on the UI interface. But different from BUTTON_PRESS, the actual key name is passed rather than its ID.

Parameter Description
str Key Name: The single key that we should emulate a press for.
str InterfaceID: A unique string to identify which interface is sending this command.

SET_DEFAULT_USER_CODE

The default user code that this driver should use when it receives arm and disarm commands that originated from programming.

Parameter Description
str Code

PARTITION_ARM

Specifies the user code to use with the arm command (if needed).

Parameter Description
str ArmType: Request the partition to arm.
str UserCode: Optional. Specifies the user code to use with the arm command (if needed).
bool Bypass: Optional. Specify whether currently open zones should be bypassed.
str InterfaceID: A unique string to identify which interface is sending this command.

PARTITION_DISARM

Specifies the user code to use with the DISARM command (if needed).

Parameter Description
str User Code: The user code needed for disarming.
str InterfaceID: A unique string to identify which interface is sending this command.

Security Partition States

SECURITY SYSTEM CONTROLLER PARTITION STATES

The following States are supported by the Security System Controller Partition. These states were added to the Proxy in operating system release 2.9.0.

ALARM

The partition is in an alarm state. A separate variable will indicate which type of alarm (Burglary, Fire, CO, etc.).

ARMED

The partition is armed. A separate variable would keep track of what type of armed state. HOME and AWAY would be the most common types, but the protocol driver could specify other types if desired.

CONFIRMATION REQUIRED

Some panels require an extra confirmation from the user after an alarm has been cleared before they will go back into DISARMED_READY state. When in this state, the panel is waiting for a SEND_CONFIRMATION command from one of the UIs.

DISARMED READY

The partition is disarmed, but could be armed if desired.

DISARMED NOT READY

The partition is disarmed, but not ready to be armed; usually because one of its zones is currently open.

EXIT DELAY

The user has given the arm command, but the partition is in the delay time which allows the user to exit the area before the alarm is tripped.

ENTRY DELAY

The user has opened a zone while the partition is armed. He has a certain amount of time to disarm the system before the alarm engages.

OFFLINE

The partition is in an OFFLINE state.

Security Sensor Types

The following sensor types and their respective ID values are listed below:

There are no restrictions imposed regarding sensor types when zone information is sent to the security proxy and functionality is not impacted based on the sensor type defined. The sensor type value only dictates which icons are displayed on Navigators and within ComposerPro.

Security Variables

SECURITY SYSTEM CONTROLLER PARTITION VARIABLES

The Security System Controller Partition supports the following Variables:

HOME_STATE Boolean. True when armed home. Will be deprecated.

AWAY_STATE Boolean. True when armed away. Will be deprecated.

DISARMED_STATE Boolean. True when disarmed. Will be deprecated.

ALARM_STATE Boolean. True when in an alarm state.

DISPLAY_TEXT String. Current text in the display window.

TROUBLE_TEXT String. Current text in the trouble window. When trouble text is blank, the UI will hide the trouble text window and give the space to the display text window.

IS_ACTIVE Boolean. True if this partition is active and can be used.

PARTITION_STATE String. Text representation of the current state.

DELAY_TIME_TOTAL Integer. The total length of the current Entry or Exit delay. If not in a delay, this will be 0.

DELAY_TIME_REMAINING Integer. The amount of time remaining in the current Entry or Exit delay. If not in a delay this will be 0.

OPEN_ZONE_COUNT Integer. The number of zones in this partition which are currently open. Usually this will only matter when the armed state is DISARMED_NOT_READY.

ALARM_TYPE String. If the system is currently in the ALARM state, this will be a string representation of the type of alarm (Burglary, Fire, Medical, Panic, Carbon Monoxide, etc.).

ARMED_TYPE String. If we the system is currently in the ARMED state, this will be a string representation of type of arming (HOME, AWAY, etc.).

LAST_EMERGENCY String. When an emergency is triggered, this variable will store which type of emergency it was. e.g. “Police” or “Panic.

Thermostat Capabilities

THERMOSTAT CAPABILITIES

The following Capabilities are supported with the Thermostat Proxy. Please see the Samples folder delivered in this SDK for additional Thermostat (V2) code examples.

<can_calibrate></can_calibrate> Indicates if the device is capable of calibrating itself. Enables SET_CALIBRATION command. Valid values: True/False.

<can_change_scale></can_change_scale> Boolean to enable/disable Navigator UIs and ComposerPro from being able to change the scale of the hardware. Valid values: True/False. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<can_cool></can_cool> Indicates if this thermostat supports cooling. Valid values: True/False. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.This is older functionality that indicated to UI's and Programming that the device could execute this functionality.  However, their limitation is that they do not take into account if the current HVAC mode supported them.  HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.

<can_dehumidify></can_dehumidify> Boolean to enable/disable can_dehumidity capability, if the device supports this feature, default is True. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification. This is older functionality that indicated to UI's and Programming that the device could execute this functionality.  However, their limitation is that they do not take into account if the current HVAC mode supported them.  HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.

<can_do_auto></can_do_auto> Indicates if this thermostat can automatically switch from heat to cool. If the device can deadband enforcement, it will be done on the UIs as specified with the deadband capabilities. Valid values: True/False. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification. This is older functionality that indicated to UI's and Programming that the device could execute this functionality.  However, their limitation is that they do not take into account if the current HVAC mode supported them.  HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.

<can_heat></can_heat> Indicates if this thermostat supports heating. Valid values: True/False. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification. This is older functionality that indicated to UI's and Programming that the device could execute this functionality.  However, their limitation is that they do not take into account if the current HVAC mode supported them.  HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.

<can_humidify></can_humidify> Boolean to enable/disable can_humidity capability, if the device supports this feature, default is True. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification. This is older functionality that indicated to UI's and Programming that the device could execute this functionality.  However, their limitation is that they do not take into account if the current HVAC mode supported them.  HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.

<can_inc_dec_setpoints></can_inc_dec_setpoints> Boolean indicating if the device has internal commands to increment and decrement both heat and cool setpoints independently. If false the proxy will take the current setpoint and +/i 1 (or the resolution) and send a DYNAMIC_CAPABILITIES_CHANGED  command with the new setpoint value, which could potentially send 81 three times if someone did programming of Increment Setpoint and the current setpoint was 80, rather than sending 83 as someone might expect from Composer Programming of 3 increment commands without a sleep between that provides enough time for the hardware to set each increment and return the new setpoint to director before the next Increment occurs.

<can_lock_buttons></can_lock_buttons> Indicates if the buttons on the TSTAT can be locked out to prevent changes. Valid values: True/False.

<can_preset></can_preset> Boolean indicating if the device supports the preset functionality including custom_fields. This does not including scheduling as preset_scheduling is a feature that is currently not supported. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<can_preset_schedule></can_preset_schedule> Boolean indicating if the thermostat will support the SET_EVENTS commands for running presets based on scheduling created in Navigators.

<current_temperature_max_c></current_temperature_max_c> Double indicating the maximum temperature that the thermostat will report in C. Default is 48.

<current_temperature_min_c></current_temperature_min_c> Double indicating the minimum temperature that the thermostat will report in C. Default is -40.

<current_temperature_max_f></current_temperature_max_f> Double indicating the maximum temperature that the thermostat will report in F. Default is 120.

<current_temperature_min_f></current_temperature_min_f> Double indicating the minimum temperature that the thermostat will report in F. Default is -40.

<current_temperature_resolution_c></current_temperature_resolution_c> Double indicating the increments that the temperature will follow, such as .1, .5, 1, 2, 5, etc. Default is 1. This capability can be changed through a DYNAMIC_CAPBILITIES_CHANGED notification.

<current_temperature_resolution_f></current_temperature_resolution_f> Double indicating the increments that the temperature will follow, such as .2, .5, 1, 2, 5, etc. Default is 1. Note .2 is the lowest F resolution supported. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<fan_modes></fan_modes> This is a comma delimited list of possible fan modes this thermostat supports. For example: Auto, Low, Medium, High with no spaces after the comma. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<fan_states></fan_states> This is a comma delimited list of all the possible states that the HVAC system fan supports. For example: Off, On, Low, Med, Circulate with no spaces after the commas. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<has_humidity></has_humidity> Boolean indicating if the device can report the current humidity. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<has_extras></has_extras> Boolean indicating if the device has extras commands support. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<has_connection_status></has_connection_status> Boolean indicating if the device reports online/offline status of the hardware device, this is often forgotten about but very important to implement in new protocol drivers drivers.

<has_outdoor_temperature></has_outdoor_temperature> Boolean indicating if the device can provide an outdoor temperature. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<has_remote_sensor></has_remote_sensor> Indicates if this thermostat has a remote sensor. Valid values: True/False.

<has_single_setpoint></has_single_setpoint> Boolean indicating if the device is single setpoint.  can_heat, can_cool and can_auto should be set to false if this option is used. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification. This is older functionality that indicated to UI's and Programming that the device could execute this functionality.  However, their limitation is that they do not take into account if the current HVAC mode supported them.  HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.

<has_temperature></has_temperature> Boolean indicating if the device can provide a temperature of the thermostat/room. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<has_vacation_mode></has_vacation_mode> Indicates if this thermostat supports vacation mode Valid values: True/False The capability has_vacation_mode must be set to true for the vacation commands and notifications to be executed. Preset Scheduling and Vacation Mode are mutually exclusive and drivers should really use Preset Scheduling to accomplish what Vacation Mode has done in the past.

<hold_modes></hold_modes> This is a comma delimited list of the possible hold modes this thermostat supports. Valid values include: Off, 2 Hours, Until Next, Permanent with no spaces after the commas. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<humidity_modes></humidity_modes> A comma separated list of all the modes the device supports. For example: "Off,Humidify,Dehumidify,Auto" with no spaces after the commas. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<humidity_states></humidity_states> A comma separated list of all the modes the device supports. Usually something like "Off,Humidifying,Dehumidifying", with no spaces after the commas.

<hvac_modes></hvac_modes> A comma separated list of all the modes the device supports. For example: "Off,Heat,Cool", with no spaces after the commas.

<hvac_states></hvac_states> This is a comma delimited list that represents all of the possible states that the HVAC system supports. For example: Off, Heat, Cool, Heating, Stage 1 Cool, etc with no spaces after the commas

<outdoor_temperature_resolution_c></outdoor_temperature_resolution_c> Double indicating the increments that the temperature will follow, such as .2, .5, 1, 2, 5, etc. Default is 1. Note that .2 is the lowest C resolution supported. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<outdoor_temperature_resolution_f></outdoor_temperature_resolution_f> Double indicating the increments that the temperature will follow, such as .2, .5, 1, 2, 5, etc. Default is 1. Note .2 is the lowest F resolution supported. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<preset_fields></preset_fields> XML of fields for settings that are potentially unique to the protocol driver, yet will be displayed in the UI during the creation or modification of presets for scheduling. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<scheduling></scheduling> A boolean indicating if the device supports a programmed schedule. If it is true, it should have a schedule_default entry in its c4z file. Also mutually exclusive to Preset Scheduling and use of this is discouraged.

<schedule_default></schedule_default> An XML block indicating the default schedule for the device. Mutually exclusive to Preset Scheduling and use of this is discouraged.

<schedule_entry></schedule_entry> There is one of these entries for each schedule entry during the day. In the example used here, there are six of them. Name indicates the name of the entry that will show up in composer and navigator. Time indicates what time during the day this entry will become active. The time units are minutes since midnight, so 360 means 6:00AM. Enabled indicates whether or not this entry is initially enabled or not. Valid values: True/False. See example to the right.

<schedule_day_info>
   <schedule_entry Name="Awake" Time="360" Enabled="True" />
   <schedule_entry Name="Leave" Time="480" Enabled="True" />
   <schedule_entry Name="Return" Time="1080" Enabled="True"/>
   <schedule_entry Name="Sleep" Time="1320" Enabled="True" />
   <schedule_entry Name="Custom 1" Time="1380" Enabled="False" />
   <schedule_entry Name="Custom 2" Time="1380" Enabled="False" />
</schedule_day_info>

<setpoint_cool_max></setpoint_cool_max> Integer indicating the highest temperature the cool setpoint can be configured as. Default is 89. If used,_f and _c do not need to be set but since this value is Celsius x 10, it will result in a potentially undesired Fahrenheit conversion. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_cool_max_c></setpoint_cool_max_c> Integer indicating the highest temperature the cool setpoint can be configured as. Default is 90. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_cool_max_c></setpoint_cool_max_c> Integer indicating the highest temperature the cool setpoint can be configured as. Default is 89. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_cool_min></setpoint_cool_min> Integer indicating the lowest temperature the cool setpoint can be configured as. Default is 39. If used,_f and _c do not need to be set but since this value is Celsius x 10 it will result in a potentially undesired Fahrenheit conversion. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_cool_min_c></setpoint_cool_min_c> Integer indicating the lowest temperature the cool setpoint can be configured as. Default is 42. If used, _f and _c do not need to be set but since this value is Celsius x 10 it will result in a potentially undesired Fahrenheit conversion. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_cool_min_f></setpoint_cool_min_f> Integer indicating the lowest temperature the cool setpoint can be configured as. Default is 42. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_cool_resolution_c></setpoint_cool_resolution_c> Double indicating the increments that the setpoint will follow, such as .1, .5, 1, 2, 5, etc. Default is 1. This capability can be changed through a C notification.

<setpoint_cool_resolution_f></setpoint_cool_resolution_f> Double indicating the increments that the setpoint will follow, such as .1, .5, 1, 2, 5, etc. Default is 1. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_heatcool_deadband_c></setpoint_heatcool_deadband_c> Double indicating the deadband range in Celcius that the hardware requires between heat and cool. Default is 2. Default is 2. Post operating system 2.7.0, UI's will show both heat and cool setpoints moving if in Auto and the movement will be based on this deadband value. If a user tries to move heat above cool or cool below heat, the UI's will only send the setpoint command for the primarily moving setpoint. A protocol driver will need to send two notifies back, one for heat and one for cool if in fact both setpoints were changed on the hardware.

<setpoint_heatcool_deadband_f></setpoint_heatcool_deadband_f> Double indicating the deadband range in Fahrenheit that the hardware requires between heat and cool. Default is 2. Post operating system 2.7.0, UI's will show both heat and cool setpoints moving if in Auto and the movement will be based on this deadband value. If a user tries to move heat above cool or cool below heat, the UI's will only send the setpoint command for the primarily moving setpoint. A protocol driver will need to send two notifies back, one for heat and one for cool if in fact both setpoints were changed on the hardware.

<setpoint_heat_max></setpoint_heat_max> Integer indicating the highest temperature the heat setpoint can be configured as. Default is 88. If used, _f and_c do not need to be set but since this value is Celsius x 10 it will result in a potentially undesired Fahrenheit conversion. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_heat_max_c></setpoint_heat_max_c> Integer indicating the highest temperature the heat setpoint can be configured as. Default is 31. Best to use _f and _c and not the older celsius x 10 capability. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_heat_max_f></setpoint_heat_max_f> Integer indicating the highest temperature the heat setpoint can be configured as. Default is 89. Best to use _f and _c and not the older celsius x 10 capability. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_heat_min></setpoint_heat_min> Integer indicating the lowest temperature the heat setpoint can be configured as. Default is 40. If used, _f and _c do not need to be set but since this value is Celsius x 10 it will result in a potentially undesired Fahrenheit conversion. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_heat_min_c></setpoint_heat_min_c> Integer indicating the lowest temperature the heat setpoint can be configured as. Default is 4. Best to use _f and _c and not the older Celsius x 10 capability. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_heat_min_f></setpoint_heat_min_f> Integer indicating the lowest temperature the heat setpoint can be configured as. Default is 38. Best to use _f and _c and not the older celsius x 10 capability.

<setpoint_heat_resolution_c></setpoint_heat_resolution_c> Double indicating the increments that the setpoint will follow, such as .1, .5, 1, 2, 5, etc. Default is 1. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_dehumidify_max></setpoint_dehumidify_max> Integer indicating the highest dehumidify setpoint, default 100. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_dehumidify_min></setpoint_dehumidify_min> Integer indicating the lowest dehumidify setpoint, default 0. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_humidify_min></setpoint_humidify_min> Integer indicating the lowest humidify setpoint, default 0. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_humidify_max></setpoint_humidify_max> Integer indicating the highest humidify setpoint, default 100. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_humidify_resolution></setpoint_humidify_resolution> Integer indicating the increments that the setpoint will follow, Default is 1. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_dehumidify_resolution></setpoint_dehumidify_resolution> Integer indicating the increments that the setpoint will follow, Default is 1. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_single_max_c></setpoint_single_max_c> Integer indicating the highest temperature the single setpoint can be configured as. Default is 32. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_single_max_f></setpoint_single_max_f> Integer indicating the highest temperature the single setpoint can be configured as. Default is 90. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_single_min_c></setpoint_single_min_c> Integer indicating the lowest temperature the single setpoint can be configured as. Default is 4. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_single_min_f></setpoint_single_min_f> Integer indicating the lowest temperature the single setpoint can be configured as. Default is 38. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_heat_resolution_f></setpoint_heat_resolution_f> Double indicating the increments that the setpoint will follow, such as .2, .5, 1, 2, 5, etc. Default is 1. Note .2 is the lowest F resolution supported. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

Thermostat Conditionals

THERMOSTAT CONDITIONALS

The following Conditionals are supported with the Thermostat Proxy and can be used in ComposerPro Programming. Please see the Samples folder delivered in this SDK for Thermostat (V2) code examples.

IF_TEMPERATURE - simple integer test to see if the current temperature is a supplied value. No manipulation is done on the units for the temperature. If the thermostat is configured to be celsius, the value to compare it with should be in Celsius as well.

IF_HEAT_SETPOINT - simple integer test against the current heat setpoint.

IF_COOL_SETPOINT - simple integer test against the current cool setpoint.

IF_HVAC_MODE - simple boolean test to see if the HVAC is in a given mode.

IF_FAN_MODE - simple boolean test to see if the fan is in a given mode.

IF_HOLD_MODE - simple boolean test to see if the hold mode is in a given mode.

IF_HVAC_STATE - simple boolean test to see if the HVAC is in a given state.

IF_FAN_STATE - simple boolean test to see if the fan is in a given state.

IF_VACATION_MODE - simple boolean test to see if the vacation mode is on/off.

IF_OUTDOOR_TEMPERATURE - simple integer test to see if the current temperature is a supplied value. Not manipulation is done on the units for the temperature. If the thermostat is configured to be Celsius, the value to compare it with should be in Celsius as well.

IF_HEAT_SETPOINT - simple integer test against the current heat setpoint.

IF_COOL_SETPOINT - simple integer test against the current cool setpoint.

IF_HVAC_MODE - simple boolean test to see if the HVAC is in a given mode.

IF_FAN_MODE - simple boolean test to see if the fan is in a given mode.

IF_HOLD_MODE - simple boolean test to see if the hold mode is in a given mode.

IF_HVAC_STATE - simple boolean test to see if the HVAC is in a given state.

IF_FAN_STATE - simple boolean test to see if the fan is in a given state.

IF_VACATION_MODE - simple boolean test to see if the vacation mode is on/off.

IF_OUTDOOR_TEMPERATURE - simple integer test to see if the current temperature is a supplied value.

IF_HUMIDITY_MODE - simple boolean test on a string to see if the humidity mode is in a given mode.

IF_HUMIDITY_STATE - simple boolean test on a string to see if the humidity state is in a given mode.

IF_HUMIDIFY_SETPOINT - simple integer test on an int number to see if the current humidify setpoint is a supplied value.

IF_HUMIDITY_MODE - simple boolean test on a string to see if the humidity mode is in a given mode.

IF_HUMIDITY_STATE - simple boolean test on a string to see if the humidity state is in a given mode.

IF_HUMIDIFY_SETPOINT - simple integer test on an int number to see if the current humidify setpoint is a supplied value.

IF_MESSAGE - simple boolean test to see if the HVAC is in a given mode.

IF_PRESET - simple boolean test to see if the preset is in a given name.

Thermostat Connections

THERMOSTAT CONNECTION CLASSES

The Thermostat Proxy has three output connections. These include:

  1. Temperature (Class: TEMPERATURE_VALUE) - Used to send temperature received from the proxy driver to other driver(s)
  2. Outdoor Temperature (Class: TEMPERATURE_VALUE) - Used to send temperature received from the proxy driver to other driver(s)
  3. Humidity (Class: HUMIDITY_VALUE) - Used to send humidity received from the proxy driver to other driver(s)

TEMPERATURE AND OUTDOOR VALUE CONNECTION CLASS COMMANDS

GET SENSOR VALUE

Used to require remote temperature sensor data via the control input connection binding. Note that command handling is not implemented in some drivers with a temperature control output connection. Sensor data cannot be be requested from these drivers.

Signature

GET_SENSOR_VALUE ()

| Parameter |

None

VALUE INITIALIZED

The value has been initialized. OnBindingChanged will cause this command to be sent automatically when the sending device goes Online.

Signature

VALUE_INITIALIZED ()

Parameter Description
str STATUS : Default is the status after first loading a driver and the value has never been set. active - Status if the value is active. last_known - The Last value received. The device either went offline or it has not been heard from since a reboot.
int TIMESTAMP: Timestamp of when the last value was received.

VALUE CHANGED

The value has changed.

Signature

VALUE_CHANGED ()

Parameter Description
int CELSIUS - Float - Celsius temperature value.
int FAHRENHEIT - Float - Fahrenheit temperature value.
int TIMESTAMP - Timestamp When the change occurred.

VALUE UNAVAILABLE

The value is possibly no longer accurate. OnBindingChanged, device went Offline, etc

Signature

VALUE_CHANGED ()

Parameter Description
str STATUS: offline - Device went offline or was unbound

HUMIDITY VALUE CONNECTION CLASS COMMANDS

Please see the Samples folder delivered in this SDK for Thermostat (V2) code examples.

VALUE INITIALIZED

The value has been initialized. OnBindingChanged will cause this command to be sent automatically when the sending device goes Online.

Signature

VALUE_INITIALIZED ()

Parameter Description
str STATUS: Default is the status after first loading a driver and the value has never been set. active - Status if the value is active. last_known - The Last value received. The device either went offline or it has not been heard from since a reboot.
int TIMESTAMP: Timestamp of when the change occurred.

VALUE CHANGED

The value has changed.

Signature

VALUE_CHANGED ()

Parameter Description
int VALUE
int TIMESTAMP: Timestamp of when the change occurred.

VALUE UNAVAILABLE

The value is possibly no longer accurate. OnBindingChanged, device went Offline, etc

Signature

VALUE_UNAVAILABLE ()

Parameter Description
str STATUS: offline - Device went offline or was unbound.

Thermostat Events

THERMOSTAT EVENTS

The Thermostat Proxy fires the following events. If any of the registered variables change value, an event is fired; however those events are generated by the Variable Manager, and the proxy doesn't concern itself with those. Like most old proxies, events could be eliminated by just having programming use the registered variables.

In the past some UI's listened for variables not DataToUI calls. In 2.7.0 all UI's no longer listen to variable changed events, but it's worth noting that old UI's did.

Temperature Change (Event=100)

Heat Setpoint Changed (Event=101)

Cool Setpoint Changed (Event=102)

HVAC Mode Changed (Event=103)

Fan Mode Changed (Event=104)

Hold Mode Changed (Event=105)

HVAC State Changed (Event=106)

Fan State Changed (Event=107)

Vacation Mode Changed (Event=108)

Outdoor Temperature Changed (Event=109)

Humidity Changed (Event=110)

Humidity Mode Changed (Event=111)

Humidity State Changed (Event=112)

Humidify Setpoint Changed (Event=113)

Dehumidify Setpoint Changed (Event=114)

Message Changed (Event=115)

Preset Changed (Event=116)

Single Setpoint Changed (Event=117)

Thermostat Notifications

ALLOWED FAN MODES CHANGED

Changes the value of the variable FAN_MODES_LIST.

Signature

ALLOWED_FAN_MODES_CHANGED ()

Parameter Description
Modes A comma delimited list of available modes.

Returns

None

ALLOWED HUMIDITY MODES CHANGED

Changes the value of the variable HUMIDITY_MODES_LIST

Signature

ALLOWED_HUMIDITY_MODES_CHANGED ()

Parameter Description
Modes A comma delimited list of available modes. Will do the same thing as humidity_modes capability

Returns

None

ALLOWED HVAC MODES CHANGED

Changes the value of the variable HVAC_MODES_LIST

Signature

ALLOWED_HVAC_MODES_CHANGED ()

Parameter Description
Modes A comma delimited list of available modes.
bool Option parameters: CAN_HEAT, CAN_COOL, CAN_AUTO. These modify the capabilities: can_heat, can_cool, can_do_auto.

Returns

None

BUTTONS LOCK CHANGED

Used to inform the proxy if the buttons on the device should be locked or not.

Signature

ALLOWED_HVAC_MODES_CHNAGED ()

Parameter Description
bool LOCK

Returns

None

CAN COOL

Boolean to enable/disable can_cool capability. If the device supports this feature, default is False.

Signature

CAN_COOL ()

Parameter Description
bool True/False

Returns

None

CAN HEAT

Boolean to enable/disable can_heat capability. If the device supports this feature, default is False.

Signature

CAN_HEAT ()

Parameter Description
bool True/False

Returns

None

CAN HUMIDIFY

Boolean to enable/disable can_humidify capability. If the device supports this feature, default is False.

Signature

CAN_HUMIDIFY ()

Parameter Description
bool True/False

Returns

None

CAN DEHUMIDIFY

Boolean to enable/disable can_dehumidify capability. If the device supports this feature, default is False.

Signature

CAN_DEHUMIDIFY ()

Parameter Description
bool True/False

Returns

None

CONNECTION

Boolean to enable/disable can_dehumidify capability. If the device supports this feature, default is False.

Signature

CONNECTION ()

Parameter Description
bool CONNECTED: true/false.
DataToUI name If is_connected and is a boolean value. If IS_CONNECTED is false, the UI will show "–" where the temperature would be, indicating the device is off line. Also, sending a false will prevent any of the Control Buttons from appearing on the UI.

Returns

None

COOL SETPOINT CHANGED

Notification that should be sent to the proxy when the cooling setpoint has changed.

Signature

COOL_SETPOINT_CHANGED ()

Parameter Description
num SETPOINT: New cooling setpoint temperature.
str SCALE: The values allowed are KELVIN, K, CELSIUS, C, FAHRENHEIT, or F.

Returns

`None `

COOL SETPOINT RESOLUTION C

Signature

COOL_SETPOINT_RESOLUTION_C ()

Parameter Description
int SETPOINT: What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_cool_resolution capability, default 1

Returns

None

COOL SETPOINT RESOLUTION F

Signature

COOL_SETPOINT_RESOLUTION_F ()

Parameter Description
int SETPOINT: What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_cool_resolution capability, default 1

Returns

None

CUSTOM FIELDS CHANGED

Update the template Custom Fields that UI's display for a new Preset Event.

Signature

CUSTOM FIELDS CHANGED ()

Parameter Description
XML Text string of XML matching the Preset Schedule schema. To UI comes through as preset_custom_fields.

Returns

None

Example

<preset_custom_fields>
 <field id="TemperatureSensor" type="list" label="Temperature Sensor:" default="Primary: Built-In Sensor, Secondary: None">
   <list>
    <item text="Primary: Built In Sensor Alias" value="Primary: Built-In Sensor, Secondary: None"/>                    
    <item text="Primary: Wired Remote Sensor Alias, Secondary: None" value="Primary: Wired Remote Sensor, Secondary: None"/>
    <item text="Primary: Built In Sensor Alias, Secondary: Wired Remote Sensor Alias" value="Primary: Built-In Sensor, Secondary:           Wired Remote Sensor"/<item text="Primary: Wired Remote Sensor Alias, Secondary: Built In Sensor Alias" value="Primary: Wired           Remote Sensor, Secondary: Built-In Sensor"/>
   </list>
 </field>
</preset_custom_fields>

COOL SETPOINT MAX C

Signature

COOL_SETPOINT_ MAX_C ()

Parameter Description
int Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_cool_max capability, default 100

Returns

None

COOL SETPOINT MAX F

Signature

COOL_SETPOINT_ MAX_F ()

Parameter Description
int Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_cool_max capability, default 100

Returns

None

COOL SETPOINT MIN C

Signature

COOL_SETPOINT_ MIN_C ()

Parameter Description
int Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_cool_min capability, default 100

Returns

None

COOL SETPOINT MIN F

Signature

COOL_SETPOINT_ MIN_F ()

Parameter Description
int Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_cool_min capability, default 100

Returns

None

DEHUMIDIFY SETPOINT CHANGE

The dehumidify setpoint has changed.

Signature

DEHUMIDIFY_SETPOINT_CHANGE ()

Parameter Description
int SETPOINT: (0-100). To UI comes through as dehumidify_setpoint

Returns

None

DEHUMIDIFY SETPOINT MIN

The minimum dehumidify setpoint has changed.

Signature

DEHUMIDIFY_SETPOINT_MIN ()

Parameter Description
int MINIMUM SETPOINT: (0-100). To UI comes through as setpointdehumidifymin` capability. Defaults to 0.

`

Returns

None

DEHUMIDIFY SETPOINT MAX

The maximun dehumidify setpoint has changed.

Signature

DEHUMIDIFY_SETPOINT_MAX ()

Parameter Description
int MAXIMUM SETPOINT: (0-100). To UI comes through as setpoint_dehumidify_max capability. Defaults to 100.

Returns

None

DEHUMIDIFY SETPOINT RESOLUTION

The dehumidify setpoint resolution has changed.

Signature

DEHUMIDIFY_SETPOINT_RESOLUTION ()

Parameter Description
int What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpointdehumidifyresolution` capability, default 1

Returns

None

DYNAMIC CAPABILITIES CHANGED TSTAT

Dynamic Capabilities is a way for a protocol driver to send updates about some capabilities that can be changed when settings change on the hardware.  An example would be a thermostat that has a humidifier added would need to tell the proxy it can now do humidification as well as what the min, max and resolution of changes are for the setpoint. 

Signature

DYNAMIC_CAPABILITIES_CHANGED ()

Parameter Description
bool HAS_OUTDOOR_TEMPERATURE: boolean to enable/disable hasoutdoortemperature capability, if the device supports this feature, default is false.
bool CAN_CHANGE_SCALE: boolean to enable/disable Navigators UI's and composer from being able to change the scale of the hardware.
bool HAS_HUMIDITY: boolean to enable/disable has_humidity capability, if the device supports this feature, default is false
bool HAS_SINGLE_SETPOINT: Boolean used to turn single setpoint mode to on or off. Defaults to false (off).
int HUMIDIFY_SETPOINT_MIN: Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_humidify_min capability, default 0 
int HUMIDIFY_SETPOINT_MAX: Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_humidify_max capability, default 100
int HUMIDIFY_SETPOINT_RESOLUTION: What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_humidify_resolution capability, default 1
int HUMIDITY_SETPOINT_DEADBAND: What the deadband between humidify and dehumidify is, will do the same thing as the setpoint_humidity_deadband capability, default 10
int DEHUMIDIFY_SETPOINT_MIN: Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_dehumidify_min capability, default 0
int DEHUMIDIFY_SETPOINT_MAX: Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_dehumidify_max capability, default 100
int DEHUMIDIFY_SETPOINT_RESOLUTION: What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_dehumidify_resolution capability, default 1

Returns

None

EXTRAS SETUP CHANGED

Update the Extras Setup, displayed in the UI 

Signature

EXTRAS_SETUP_CHANGED ()

Parameter Description
XML XML text string of XML matching the Preset Schedule schema. Comes through to the UI as extras_setup. Note that as of OS 3, sending only a singular XML string is supported. For example, sending an array of Extras can result in Navigator performance issues.

Returns

None

EXTRAS STATE CHANGED

Update the Extras Setup, displayed in the UI 

Signature

EXTRAS_STATE_CHANGED ()

Parameter Description
XML XML text string of XML matching the Preset Schedule schema. To UI comes through as extras_state.

Returns

None

FAN MODE CHANGED

Notification that should be sent to the proxy when Fan mode has changed. Changes the variables: FAN_MODE, V1 FANMODE, ANA_FANMODE``.

Signature

FAN_MODE_CHANGED ()

Parameter Description
str MODE: One of the supported modes for example: Auto, On.

Returns

None

FAN STATE CHANGE

Notification that should be sent to the proxy when the fan state has changed.

Signature

FAN_STATE_CHANGE ()

Parameter Description
str STATE: One of the following Off, On.

Returns

None

HAS EXTRAS

Boolean to enable/disable has_extras capability. If the device supports this feature, default is false Updates the XML that will be consumed by the Navigator UI’s.

Signature

HAS_EXTRAS ()

Parameter Description
XML Text string of XML that matches the Preset Schedule A.

Returns

None

HAS_EXTRAS - boolean to enable/disable has_extras capability, if the device supports this feature, default is false Updates the XML that will be consumed by the Navigator UI's

Parameters XML text string of XML that matches the Preset Schedule API.

HAS HEAT PUMP

Boolean to enable/disable has_heat_pump. If the device supports this feature, default is false.

Signature

HAS_HEAT_PUMP ()

Parameter Description
bool True/False

Returns

None

HAS HUMIDITY

Boolean to enable/disable has_humidity capability. If the device supports this feature, default is false

Signature

HAS_ HUMIDITY ()

Parameter Description
bool True/False

Returns

None

HAS OUTDOOR TEMPERATURE

Boolean to enable/disable has_outdoor_temperature capability, if the device supports this feature, default is false

Signature

HAS_OUTDOOR_TEMPERATURE ()

Parameter Description
bool True/False

Returns

None

HEATSETPOINT

Fires event: Heat_Setpoint_Changed.

Signature

HEAT_SETPOINT ()

Parameters

None

Returns

None

HEATSETPOINT

Notification that should be sent to the proxy when the heating setpoint has changed.

Signature

HEAT_SETPOINT_CHANGED ()

Parameter Description
num SETPOINT: New heating setpoint temperature.
str SCALE: The scale being used for the setpoint. The values allowed are KELVIN, K, CELSIUS, C, FAHRENHEIT, or F.

Returns

None

HEATCOOL_SETPOINTS_DEADBAND_C

Minimum Setpoint difference between heat and will do the same thing as setpoint_heatcool_deadband.

Signature

HEATCOOL_SETPOINTS_DEADBAND_C

Parameter Description
num Default 2

Returns

None

HEATCOOL_SETPOINTS_DEADBAND_F

Minimum Setpoint difference between heat and will do the same thing as setpoint_heatcool_deadband.

Signature

HEATCOOL_SETPOINTS_DEADBAND_F

Parameter Description
num Default 2

Returns

None

HEAT SETPOINT RESOLUTION C

What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_heat_resolution capability.

Signature

HEAT_SETPOINT_RESOLUTION_C ()

Parameter Description
num Default 1

Returns

None

HEAT SETPOINT RESOLUTION F

What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_heat_resolution capability.

Signature

HEAT_SETPOINT_RESOLUTION_F ()

Parameter Description
num Default 1

Returns

None

HEAT SETPOINT MAX C

Maximum Setpoint, int 0-100 that will do the same thing as the setpoint_heat_max capability.

Signature

HEAT_SETPOINT_MAX_C ()

Parameter Description
int Default 100

Returns

None

HEAT SETPOINT MAX F

Maximum Setpoint, int 0-100 that will do the same thing as the setpoint_heat_max capability.

Signature

HEAT_SETPOINT_MAX_F ()

Parameter Description
int Default 100

Returns

None

HEAT SETPOINT MIN C

Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_heat_min capability.

Signature

HEAT_SETPOINT_MIN_C ()

Parameter Description
int Default 100

Returns

None

HEAT SETPOINT MIN F

Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_heat_min capability.

Signature

HEAT_SETPOINT_MIN_F ()

Parameter Description
int Default 100

Returns

None

HOLD MODE CHANGED

Notification that should be sent to the proxy when hold mode has changed. Changes the variables HOLD_MODE, ANA_HOLDMODE. Fires event HOLD_MODE_CHANGED.

Signature

HOLD_MODE_CHANGED ()

Parameter Description
str MODE: One of the supported hold modes for example: Off, 2 Hours, Permanent. Required parameter options if Hold Mode is "Hold Until" : YEAR - integer 2000+, MONTH - integer 0-11, DAY - integer 0-31, HOUR - integer 0-23, MINUTE - integer 0-60.

Returns

None

HUMIDITY CHANGED

The actual humidity percent (integer 0-100) value detected by the thermostat has changed. To UI comes through as humidity.

Signature

HUMIDITY_CHANGED ()

Parameter Description
int HUMIDITY: (0-100)

Returns

None

HUMIDITY MODE CHANGED

MODE, typically: humidify, humidifyAuto (aggressiveness), dehumidify or auto). To UI comes through as humidity_mode

Signature

HUMIDITY_MODE_CHANGED ()

Parameter Description
str MODE, typically: humidify, humidifyAuto (aggressiveness), dehumidify or auto).

Returns

None

HUMIDIFY SETPOINT CHANGED

The humidity setpoint has changed. To UI comes through as humidify_setpoint

Signature

HUMIDIFY_SETPOINT_CHANGED ()

Parameter Description
num SETPOINT (0-100)

Returns

None

HUMIDITY SETPOINT DEADBAND

What the deadband between humidify and dehumidify is, will do the same thing as the setpoint_humidity_deadband capability.

Signature

HUMIDITY_SETPOINT_DEADBAND ()

Parameter Description
num Default 10

Returns

None

HUMIDITY SETPOINT MAX

Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_humidify_max capability,

Signature

HUMIDITY_SETPOINT_MAX ()

Parameter Description
num Default 100

Returns

None

HUMIDITY SETPOINT MIN

Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_humidify_min capability,

Signature

HUMIDITY_SETPOINT_MIN ()

Parameter Description
num Default 0

Returns

None

HUMIDITY SETPOINT RESOLUTION

What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_humidify_resolution capability.

Signature

HUMIDITY_SETPOINT_RESOLUTION ()

Parameter Description
num Default 1

Returns

None

HUMIDITY STATE CHANGED

State has changed on the thermostat. To UI comes through as humidity_state.

Signature

HUMIDITY_STATE_CHANGED ()

Parameter Description
str STATE - typically: humidify, humidifyAuto (aggressiveness), dehumidify or auto

Returns

None

HVAC MODE CHANGED

Notification sent when the mode of the HVAC system has changed. Changes the variable HVAC_MODE.

Signature

HVAC_MODE_CHANGED ()

Parameter Description
str MODE: One of the supported modes for example: Off, Heat,Cool, Auto, Emergency

Returns

None

HVAC STATE CHANGED

Notification that should be sent to the proxy when the HVAC state has changed. Changes the variable HVAC_STATE.

Signature

HVAC_STATE_CHANGED ()

Parameter Description
str STATE: One of the supported HVAC states for example: Off, Heat, Cool

Returns

None

MESSAGE CHANGED

Update the text message displayed in the UI.  Multiple lines can be specified by using \n to separate lines, although UI's will display each line in its own way. Could be a paragraph, ticker scrolling, cycling, etc. To UI comes through as message.

Signature

MESSAGE_CHANGED ()

Parameter Description
str MESSAGE text string, max length of the string is not set, though driver developers need to keep in mind that this information shows up in Navigators in a ticker or similar scrolling text display and should not be cluttered but kept to key things like HVAC system errors, and CRITICAL information.

Returns

None

Usage Note

This string may or may not have multiple message segments. If it does, the message segments are delimited by a \n (newlines). Some protocol drivers such as the c4-therm support up to 4 lines of messages. Most UI's scroll these \n delimited messages right to left in a marquee style.

PRESET CHANGED

Updates the current Preset State displayed in the UI. Sent to the UI as preset.

Signature

PRESET_CHANGED ()

Parameter Description
str Name of Preset.

Returns

None

PRESET FIELDS CHANGED

Updates the Preset FIELDS TEMPLATE that UIs display for a Preset Event. To UI comes through as preset_fields. If this is modified, it is possible that existing presets will have data that is not in compliance. However, a protocol driver can modify this to have new preset_fields which are compatible. Do not delete this as Events are erased when presets are deleted.

Signature

PRESET_FIELDS_CHANGED ()

Parameter Description
XML XML text string of XML matching the Preset Schedule schema

Returns

None

SCALE CHANGED

Changes the scale the proxy tracks for the temperature.  This is primarily important for Composer Pro when programming as it will use this scale for setting temperatures.  Navigators also use this scale.

Signature

SCALE_CHANGED ()

Parameter Description
str SCALE: CELSIUS, FAHRENHEIT, C, c, F, f

Returns

None

SCHEDULE ENTRY CHANGED

Notification that should be sent to the proxy when a change is made to the HVAC schedules. Every entry that is changed will send one protocol notification.

Signature

SCHEDULE_ENTRY_CHANGED ()

Parameter Description
num DayIndex: Number representing day of week: 0= Sunday, 1=Monday
num EntryIndex : 0 to the number of entries the day can support. 0 = the first entry, 1 = the second entry.
num TimeMinutes: Number of minutes past midnight for the entry change. For example 360= 6:00AM.
bool EnabledFlag: Enables or disables a schedule. By default, the first four schedules are enabled.
num HeatSetpoint: Temperature designated to start the heating system.
num CoolSetpoint: Temperature designated to start the cooling system.
str Units  (string): F or C – Fahrenheit or Celsius.

Returns

None

SINGLE SETPOINT CHANGED

Used to inform the proxy that the single setpoint has changed. This notification changes variables SINGLE_SETPOINT_F and SINGLE_SETPOINT_C. It fires the event Single Setpoint Changed.

Signature

SINGLE_SETPOINT_CHANGED ()

Parameter Description
int SETPOINT: he new temperature setpoint value.
str SCALE: The scale being used for the setpoint. The values allowed are CELSIUS, C, FAHRENHEIT, or F

Returns

None

SINGLE SETPOINT MAX C

Maximum Setpoint. Will do the same thing as the setpoint_single_max capability.

Signature

SINGLE_SETPOINT_MAX_C ()

Parameter Description
int SETPOINT: 0-100 default 100

Returns

None

SINGLE SETPOINT MAX F

Maximum Setpoint. Will do the same thing as the setpoint_single_max capability.

Signature

SINGLE_SETPOINT_MAX_F ()

Parameter Description
int SETPOINT: 0-100 default 100

Returns

None

SINGLE SETPOINT MIN C

Minimum Setpoint. Will do the same thing as the setpoint_single_min capability.

Signature

SINGLE_SETPOINT_MIN_C ()

Parameter Description
int SETPOINT: 0-100 default 0

Returns

None

SINGLE SETPOINT MIN C

Minimum Setpoint. Will do the same thing as the setpoint_single_min capability.

Signature

SINGLE_SETPOINT_MIN_F ()

Parameter Description
int SETPOINT: 0-100 default 0

Returns

None

SINGLE SETPOINT RESOLUTION C

What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_single_resolution capability.

Signature

SINGLE_SETPOINT_RESOLUTION_C ()

Parameter Description
num Default 1

Returns

None

SINGLE SETPOINT RESOLUTION F

Indicates the increments that the setpoint will follow, such as .2, .5, 1, 2, 5, etc. Note that .2 is the lowest F resolution supported.

Signature

SINGLE_SETPOINT_RESOLUTION_F ()

Parameter Description
num Default 1

Returns

None

TEMPERATURE CHANGED

Notification that should be sent to the proxy when the temperature has changed.

Signature

TEMPERATURE_CHANGED ()

Parameter Description
num TEMPERATURE: New temperature value.
str SCALE: The scale being used for the temperature. The values allowed are KELVIN, K, CELSIUS, C, FAHRENHEIT, or F.

Returns

None

TEMPERATURE RESOLUTION

What increment to use (ie .1,.5,1,3,5,10,etc), will do the same thing as the temperature_resolution capability, default 1

Signature

TEMPERATURE_RESOLUTION ()

Parameter Description
int Default 1.

Returns

None

VACATION MODE

Notification that should be sent to the proxy when vacation mode is turned on or off.

Signature

VACATION_MODE ()

Parameter Description
str ON VACATION: True or False

Returns

None

Usage Note

The capability has_vacation_mode must be set to true for the vacation commands and notifications to be executed. Not to be used with Preset Scheduling.

VACATION SETPOINTS

Notification that should be sent to the proxy when setpoints have been changed for vacation mode. This Notification is not to be used with Preset Scheduling. The capability has_vacation_mode must be set to true for the vacation commands and notifications to be executed.

Signature

VACATION_ SETPOINTS ()

Parameter Description
num VAC HEAT SETPOINT: New temperature for the heating setpoint while in vacation mode.
num VAC COOL SETPOINT: New temperature for the cooling setpoint while in vacation mode.
str UNITS: F or C – Fahrenheit or Celsius.

Returns

None

OUTDOOR TEMPERATURE CHANGED

Used to inform the proxy that the outdoor temperature has changed.

Signature

OUTDOOR_TEMPERATURE_CHANGED ()

Parameter Description
int Default 1.

Returns

None

OUTDOORTEMPERATURERESOLUTION

What increment to use (ie .1, .5, 1, 3, 5, 10, etc), will do the same thing as the outdoor_temperature_resolution capability.

Signature

OUTDOOR_TEMPERATURE_RESOLUTION ()

Parameter Description
int Default 1.

Returns

None

Thermostat Proxy Commands

DEC SETPOINT COOL

Used to decrease the cool set point by 1. This command is handled by the proxy, and ends up creating a SET_SETPOINT_COOL command to send to the protocol driver, unless the capability can_inc_dec_setpoints is set to true.

Signature

DEC_SETPOINT_COOL ()

Parameter

None

Returns

None

SET PRESET

Runs a Preset regardless if there is an event scheduled for it.

Signature

SET_PRESET ()

Parameter Description
str NAME

Returns

None

DEC SETPOINT HEAT

Used to decrease the heat set point by 1. This command is handled by the proxy, and ends up creating a SET_SETPOINT_HEAT command to send to the protocol driver, unless the capability can_inc_dec_setpoints is set to true

Signature

DEC_SETPOINT_HEAT ()

Parameter

None

Returns

None

INC SETPOINT COOL

Used to increase the cool set point by 1. This command is handled by the proxy, and ends up creating a SET_SETPOINT_COOL command to send to the protocol driver, unless the capability can_inc_dec_setpoints is set to true.

Signature

INC_SETPOINT_COOL ()

Parameter

None

Returns

None

INC SETPOINT HEAT

Used to increase the heat set point by 1. This command is handled by the proxy, and ends up creating a SET_SETPOINT_HEAT command to send to the protocol driver, unless the capability can_inc_dec_setpoints is set to true.

Signature

INC_SETPOINT_HEAT ()

Parameter

None

Returns

None

PRESET ADD

Adds a new Preset Schedule Preset (If protocol driver has the can_preset_schedule capability)

Signature

PRESET_ADD ()

Parameter Description
str NAME: Required.
xml PRESET FIELDS: If a UI or Driver sends a bound call with a string that has invalid XML syntax, this field will be set to <preset_field/> and an error message will be logged to director.log when this occurs. Note that only a driver OR UI should specify the _f or c.  For example: heat_setpoint_f, cool_setpoint_f, heat_setpoint_c, cool_setpoint_c but not both. The proxy will auto insert the missing _f or _c based on the scales resolution if it detects one side is not supplied. This makes it so UI's and drivers do not need to calculate the correct value for the scale.  However, if a driver or UI does want to calculate it, the proxy will leave the value alone. In the same manner the proxy will not correct or anything if the _f and _c do not resolve to the equivalent temperature.

Returns

None

Example

<preset_fields>
  <field id="heat_setpoint_f" value="65">
  <field id="cool_setpoint_f" value="75">
  <field id="humidify_setpoint" value="50">
  <field id="fan_mode" value="On">
</preset_fields>

PRESET DELETE

Adds a new Preset Schedule Preset (If protocol driver has the can_preset_schedule capability)

Signature

PRESET_DELETE ()

Parameter Description
str NAME: Required.
xml PRESET FIELDS: If a UI or Driver sends a bound call with a string that has invalid XML syntax, this field will be set to <preset_field/> and an error message will be logged to director.log when this occurs. Note that only a driver OR UI should specify the _f or c.  For example: heat_setpoint_f, cool_setpoint_f, heat_setpoint_c, cool_setpoint_c but not both. The proxy will auto insert the missing _f or _c based on the scales resolution if it detects one side is not supplied. This makes it so UI's and drivers do not need to calculate the correct value for the scale.  However, if a driver or UI does want to calculate it, the proxy will leave the value alone. In the same manner the proxy will not correct or anything if the _f and _c do not resolve to the equivalent temperature.

Returns

None

PRESET EVENT ADD

Adds a Preset Schedule Preset Event to be run at the specified day/time (If protocol driver has the can_preset_schedule capability.

Signature

PRESET_EVENT_ADD ()

Parameter Description
str NAME
int WEEKDAY: 0-6 with Sunday being 0
int HOUR: 0-23
int MINUTE: 0-60

Returns

None

Usage Note

Adding an event at the same time as a different preset event will result in the different preset event being deleted and the new one being put in at that time.

PRESET EVENT DELETE

Deletes a Preset Schedule Preset if the protocol driver has the can_preset_schedule capability.

Signature

PRESET_EVENT_DELETE ()

Parameter Description
str NAME: Using "" (an empty string) will match all presets to make deleting all events of a given preset name easier.
int WEEKDAY: 0-6 with Sunday being 0. Using -1 will match any weekday.
int HOUR: 0-23 Using -1 Will match any Hour.
int MINUTE: 0-60 Using -1 will match any Minute.

Returns

None

Usage Note

Usage Note:

Using "" for the Preset or -1 for the weekday, hour or minute might be useful for UI's, Agents or Protocol Drivers as when a matching parameter is used you can delete multiple events at once AND only one Notify of the changes that were made are sent rather than causing a notify for each and every modification if they were done one at a time.

PRESET EVENT MODIFY

Modifies an existing Preset Schedule Event (If protocol driver has the can_preset_schedule capability)

Signature

PRESET_EVENT_MODIFY ()

Parameter Description
str NAME
int WEEKDAY: 0-6 with Sunday being 0.
int HOUR: 0-23
int MINUTE: 0-60
int NEW WEEKDAY: 0-6 with Sunday being 0
int NEW HOUR: 0-23
int NEW MINUTE: 0-60

Returns

None

Usage Note

Modifying an event to the same time as a different preset event will result in the different preset event being deleted and the new one being put in at that time.

PRESET MODIFY

Modifies an existing Preset Schedule Event (If protocol driver has the can_preset_schedule capability)

Signature

PRESET_MODIFY ()

Parameter Description
str NAME
XML PRESET FIELDS: XML DATA.
str NEW NAME

Returns

None

Example

<preset_fields>
  <field id="heat_setpoint_f" value="65">
  <field id="cool_setpoint_f" value="75">
  <field id="humidify_setpoint" value="50">
  <field id="fan_mode" value="On">
</preset_fields>

QUERY SCHEDULE

Used for the old .ccz and a few older thermostats for scheduling purposes.

Signature

QUERY_SCHEDULE ()

QUERY SCHEDULE EVENTS

Used for the old .ccz and a few older thermostats for scheduling purposes.

Signature

QUERY_SCHEDULE_EVENTS ()

SET BUTTONS LOCK

Used to indicate if the buttons on the thermostat should be locked out from controlling the temperature.

Signature

SET_BUTTONS_LOCK ()

Parameter Description
bool LOCK: 1 or 0 indicating if the buttons should be locked out or not.

Thermostat Unhandled Commands

Unhandled Commands

This section includes Commands supported by many protocol drivers but are not directly handled by the Thermostat proxy:

DEC_SETPOINT_HUMIDIFY Used to Decrement the Setpoint by one step.

DEC_SETPOINT_DEHUMIDIFY Used to Decrement the Setpoint by one step.

INC_SETPOINT_DEHUMIDIFY Used to increment the Setpoint by one step.

INC_SETPOINT_HUMIDIFY Used to increment the Setpoint by one step.

SET_CALIBRATION Used to set the calibration value.

SET_EVENT Occurs when the scheduler determines it's time for a new event to be run for Preset Scheduling

SET_EVENTS XML that is provided from the proxy in the case that a protocol driver wants to push the Preset Schedule to hardware

SET_REMOTE_SENSOR Used to indicate if the remote sensor on the thermostat is in use.

SET_SCALE Used to set the temperature scale the thermostat should use.

SET_MODE_FAN Used to set the current fan mode of the thermostat.

SET_MODE_HOLD Used to set the current hold mode of the thermostat.

SET_MODE_HUMIDITY Used to set the humidification mode in a protocol driver.

SET_MODE_HVAC Used to set the HVAC mode in a protocol driver.

SET_OUTDOOR_TEMPERATURE Set the outdoor temperature which is used by some thermostats for the purpose of humidity balancing, fresh air venting, air quality venting, and other HVAC functionality.

SET_PRESET Occurs when someone selects to run a preset OUTSIDE of its regular schedule. 

SET_PRESETS XML that the Proxy sends down to a protocol driver that contains information about presets. If preset scheduling is a capability of the protocol driver.

SET_SETPOINT_DEHUMIDIFY Used to set the dehumidify setpoint.

SET_SETPOINT_COOL Used to set the cool setpoint. 

SET_SETPOINT_HEAT Used to set the heat setpoint. 

SET_SETPOINT_HUMIDIFY Used to set the humidify setpoint.

SET_SETPOINT_SINGLE Used to set the single setpoint value.

SET_VAC_SETPOINT_COOL Used to set the cool setpoint when it vacation mode

SET_VAC_SETPOINT_HEAT Used to set the heat setpoint when it vacation mode

SET_VACATION_MODE Used to indicate if the thermostat is in vacation mode or not

Thermostat Proxy Variables

THERMOSTAT PROXY VARIABLES

Thermostats that use this proxy have the following registered variables that can be manipulated: Note: Temperature Units are stored and processed in the proxy as Current Units, Kelvin * 10, or Celsius * 10 depending on V1, V2 and programming.

CALIBRATION (ID=1129) - int - Set to the value given with the Notify CALIBRATION_CHANGED

CoolSetPoint_C (ID=1135) - Read only - Double representing the cool setpoint. Replaces CoolSetpoint

CoolSetPoint_F (ID=1134) - Read only - Double representing the cool setpoint. Replaces CoolSetpoint

PRESET (ID=1144) - Read Only - Name of the currently Active Preset in Preset Scheduling.

DEHUMIDIFY_SETPOINT (ID=1143) - Read Only - Percent 0-100. (Note: The range and resolutions are set via capabilities)

FAN_MODE (ID=1105) - string - Current Fan Mode

HEATCOOL_SETPOINTS_DEADBAND_C (ID=1147) - Read Only - string - Setpoint different between heat and cool

HEATCOOL_SETPOINTS_DEADBAND_F (ID=1146) - Read Only - string - Setpoint different between heat and cool

HeatSetPoint_F (ID=1132) - Read only - Double representing the heat setpoint. Replaces HeatSetpoint

HeatSetPoint_C (ID=1133) - Read only - Double representing the heat setpoint. Replaces HeatSetpoint

HEATPUMP (ID=1124) - bool - Whether or not a heat pump exists.

HOLD_MODE (ID=1106) - string - Current Hold Mode

HOLD_MODES_LIST (ID=1122) - string - comma separated list of hold modes that can be selected for the thermostat.

HEATCOOL_SETPOINTS_DEADBAND_C (ID=1147) - Read Only - string - Setpoint different between heat and cool

HUMIDITY_STATE (ID=1141) - Read Only - Currently state. Typically Humidify, Humidify Auto or Dehumidify.

HVAC_MODES_LIST (ID=1120) - string - comma separated list of hvac modes that can be selected for the thermostat.

HVAC STATE (ID=1107) - string - Current HVAC State (Could be Heat, Heating, Cool, Cooling, 1st Stage Heat, or any other phrase passed in by the protocol driver for the HVAC_STATE notify.

HVAC_MODE (ID=1104) - string - Current HVAC Mode

IS_CONNECTED (ID=1112) - bool - Indicator if the hardware is online/available.  This will be set to 'true' on startup UNLESS a protocol driver has the has_connection_status capability set to true.  If this value is false, UI's will display "–" for temperature when the device is offline.

MESSAGE (ID=1145) - Read Only - Status message that a protocol driver can send to the UI

REVERSING_VALVE (ID=1128) - string - Name of reversing valve.

SINGLE_SETPOINT_F (ID=1149) - Read only - Double representing the single setpoint.

SINGLE_SETPOINT_F (ID=1149) - Read only - Double representing the single setpoint.

OUTDOOR_TEMPERATURE_C (ID=1137) - Can be read and written. Read is for providing info to UI/Navigator or other thermostats and write is for allowing programming and other devices to set this value, which can be read by some devices (Including the C4 AAT Thermostat) so they do not have to be hard wired to outside to perform some calculations.

OUTDOOR_TEMPERATURE_F (ID=1136) - Can be read and written. Read is for providing info to UI/Navigator or other thermostats and write is for allowing programming and other devices to set this value, which can be read by some devices (Including the C4 AAT Thermostat) so they do not have to be hard wired to outside to perform some calculations.

SCALE (ID=1100) - String - the current scale that was passed in on the SCALE_CHANGED notify.

SCHEDULE (ID=1113) - string - XML of the entire schedule

TEMPERATURE_C (ID=1131) - Read only - Double representing the temperature. Replaces TEMPERATURE

TEMPERATURE_F (ID=1130) - Read only - Double representing the temperature. Replaces TEMPERATURE

VACATION_MODE (ID=1109) - bool - Will be set to the value passed in for the VACATION_MODE's ON_VACATION parameter. This variable will be deprecated when the traditional scheduling model is deprecated. No date has been set at this time for this deprecation.

UI Button Proxy Overview

The UI Button Proxy was delivered in OS 2.9.0. The proxy supports the display of a configurable button within Navigator. The button and can be placed onto any experience menu such as Listen, Watch, Security, Comfort. Navigator menu configuration for shortcuts supported by the button is done through ComposerPro's standard room menu controls.The button's icon can also change to reflect the state of the device that the button controls.

The XML name of the proxy is "UI Button". For example:

<proxies>   <proxy proxybindingid="5001" name="UI Button">uibutton</proxy> </proxies>

To the right is an example of the connection information required to use the UI Button Proxy:

 <connections>
    <connection>
        <id>5001</id>
        <facing>6</facing>
        <connectionname>UIBUTTON</connectionname>
        <type>2</type>
        <consumer>False</consumer>
        <audiosource>False</audiosource>
        <videosource>False</videosource>
        <linelevel>False</linelevel>
        <classes>
            <class>
               <classname>UIBUTTON</classname>
         </class>
       </classes>
    </connection>
</connections>

Note that OS Release 2.10.0 enhanced this Proxy with the capability to allow for URL manipulation of Navigator's web module feature through the use of the HTML Web View.

HTML WebView Overview

Adding the HTML WebView functionality to an Experience (UIbutton) driver enables the driver developer to specify a web URL that can provide an HTML interface for the end user. The web UI is launched within an embedded browser on the Control4 T3 touch screen.

HTML WebView Usage Best Practice Recommendations

The Driver Developer should implement the proxy interfaces that Control4 provides as a standard part of the user experience to the full extent that these apply to the device. The web interface should be considered supplementary to the proxy interface.

The Driver Developer should keep the Web UI as simple as reasonably possible.

HTML WebView Usage Guidelines (rules):

The developer must self-certify their website on our current browsers (on the T3, T4s and Mobile devices). If they find any incompatibility between their HTML UI / website, and our embedded browser, they must code around it.

They must provide all support for their web UI.

The Experience driver can do no more than reference the external website, all log ins must occur at the web site, not within the driver.

There is no Control4 certification for an Experience driver that uses the HTML WebView capability.

Because these drivers are not certified, we reserve the right to post them or not to post them within the Control4 online database based on discretion.

If a call comes to our support, we MAY instruct the dealer to remove the driver, otherwise any support will be referred to the developer of the driver.

JavaScript API

The Proxy has also been enhanced to provide a JavaScript API that allows Driver hosted web views to send commands, subscribe to DATA_TO_UIs and variables using the existing mobile communication channels.

In addition to the APIs, a new capability has been added: mobile_webview_enabled

This functionality is available for all customers running mobile app version 321.46 (or later) and running OS 3.1.3 (or later).

A sample Driver: JavascriptAPIDemo.c4z is also available. To use the demo driver:

  1. Download the Javascript API driver from the JS demo Driver folder from the DiverWorks Github repository and add it to your project.
  2. Under the Project’s System Design, select the room where the driver was added.
  3. Under the Room’s Properties select Navigator.
  4. Note the that the demo driver (UI Button) is listed under the Device column in the following Experience Menus: Comfort, Listen, Security and Watch.
  5. Ensure that UI Button has a Visibility status of Visible in each of the Experience menus. The status can be changed by clicking on the Modify … button on the Properties screen.
  6. Refresh Navigators.

Demo Driver Usage 

The driver utilizes a lightbulb and color variables to demonstrate the use of the web_view_url capability and new APIs. Selecting the UI Button driver from System Design will display the Advanced properties for the driver. The driver supports the selection of several states for the bulb.

Select a state, Red for example, and click the set Button. Verify the color state is red on Touchscreens in the room where the UI Button resides and mobile devices running this project. The color state can also be verified by double clicking the UI Button driver from System design.

The driver’s Lua output will from the Red State setting is displayed to the right.

OnPropertyChange(): States  Red
OnPropertyChange(): States
Icon changed to:    Red
Red
fireEvent():    Red

Next, from a mobile device, change the color of the bulb state to Blue. Verify the state change on Touchsrceens and double clicking the UI Button driver from System design.

The driver’s Lua output from changing from red State to Blue is displayed to the right.

OnPropertyChange(): States  Red
OnPropertyChange(): States
Icon changed to:    Red
Red
fireEvent():    Red
OnPropertyChange(): States  Blue
Icon changed to:    Blue
OnPropertyChange(): States
Blue
fireEvent():    Blue

WebView Mobile Usage Best Practice Recommendations

Webview Mobile App Usage Guidelines (rules):

When accessing a controller remotely through the App, a fully qualified URL should be used to ensure all UI resources will render correctly on the App. The mobile App cannot access local-style resources specified by the CSS. However, if the CSS is structured to include the fully qualified path including the controller syntax, the resource will be available both locally and remotely.

For example, here is a path that would successfully render a background image locally:

{ background-image: url(../images/wp_carbon_blue.jpg); padding: 16px; } 

However, this path will fail to render the image on the mobile App. An example of a fully qualified URL to the background image would be:

{ background-image: url(controller://driver/JavascriptAPIDemo/contents/images/wp_carbon_blue.jpg); padding: 16px; }

Implementation

See the web_view_url capability

Supported HTML/CSS Components

The following HTML/CSS components and versions are shipped with the T3 and T4 touchscreens:

T4: (OS 3.2.1 or above)

T3: (OS 3.1.3 or above)

T3: (OS 3.1.2 or below)

UI Button Capabilities

<navigator_display_options></navigator_display_options>

This capability adds the ability to display device state icons for the button. As of this release, icon resolution for non-Media Server Proxy based drivers is:

Example

<capabilities>
    <navigator_display_option proxybindingid="5001">
        <display_icons>
            <!-- Default Icon -->
            <Icon width="300" height="300">controller://driver/shortcutTest/icons/msp_ico_settings/msp_ico_settings_300.png</Icon>
            <!-- On State -->
            <state id="Settings-on">
            <Icon width="300" height="300">controller://driver/shortcutTest/icons/msp_ico_settings_a/msp_ico_settings_a_300.png</Icon>
            </state>
              <!-- Off State -->
              <state id="Settings-off">
              <Icon width="300" height="300">controller://driver/shortcutTest/icons/msp_ico_settings/msp_ico_settings_a_300.png</Icon>
            </state>     
        </display_icons>
    </navigator_display_option>
</capabilities>

Note, the example to the right does not include all icon sizes for brevity.

<web_view_url></web_view_url> Optional Capability which, when added contains the default URL that is associated with the shortcut.

Example

<capabilities>
   <web_view_url proxybindingid="5000">http://youtube.com</web_view_url>
</capabilities>

web_view_url

<web_view_url></web_view_url>

An optional capability which points to the c4z-delivered web application. The controller://driver/driver_name construct (i.e., the Controller URL Scheme) connects at the driver's www directory as the root of the path.

Note that the driver name MUST be the same as the driver's filename.

Example

<capabilities>
   <web_view_url proxybindingid="5001">controller://driver/JavascriptAPIDemo/contents/index.html</web_view_url>
</capabilities>

mobile_web_view_enabled

<mobile_web_view_enabled></mobile_web_view_enabled>

An optional boolean capability that indicates that the driver can be shown in mobile clients when the web_view_url capability is also present. Applicable to O.S. 3.0.0 and later.

UI Button Proxy Events

The UI Button Proxy currently supports one Event:

Selected - Fired upon receiving the Select command.

UI Button Proxy Notifications

ICON CHANGED

Notification sent to the proxy to change the driver's icon.

Signature

ICON_CHANGED

Parameter Description
icon str: value which references an icon state name defined in the display icons capability or an empty string to set the default icon.
icon_description str: Value of a human readable string describing the icon state. This is used in the List Navigator in place of the icon.

Returns

None

DataToUI

Sends “icon” DataToUI: <icon>Settings-on</icon>

Also sends “icon_description” DataToUI: <icon_description>Settings are on</icon_description>

Example

C4:SendToProxy(5001, "ICON_CHANGED", {icon="Settings-on", icon_description="Settings are on"})

URL_CHANGED

Notification that supports the ability for the driver to dynamically change the web URL. This is useful in cases such as changing ports, load balancing and driver-delivered controller hosted UI content. This function is sent to the proxy when the URL changes. Note that if the parameter value is empty, then the URL is considered disabled and the web view will not be shown in navigator. Also, note, Navigator will not change the URL of an open web view.

Signature

URL_CHANGED

Parameter Description
url str: Value of the URL

Returns

None

DataToUI

Sends “url” DataToUI: <url>http://google.com</url>

Example

C4:SendToProxy(5001, "URL_CHANGED", {url="http://control4.com"})

Usage Note

See the HTML Webview Overview content for more information.

UI Button Proxy Commands

SELECT

This command comes from the UI when a user selects the shortcut for the button. It is passed to the protocol driver and also sends the Selected event.

Signature

SELECT

Parameter Description
Device ID num: The room device ID value where the shortcut was pressed in. Exposed by the LAST_ROOM_SELECTED variable.
Menu str: The name of the menu the shortcut was selected in. Possible values: "listen", "watch", "security", "comfort", "service". Exposed by the LAST_MENU_SELECTED variable.

UI Button Proxy Variables

LAST_MENU_SELECTED String value of the name of the menu where the menu was selected. Possible values are: "listen", "watch", "security", "comfort", "service".

LAST_ROOM_SELECTED Number value of the room id of the last room invoked by the Select command on the shortcut.

UI Button Proxy Webview JavaScript API

API OVERVIEW

Requires Navigator Version 321.46+

The Java Script API included with the UI Button proxy allows Driver hosted web views to send commands, subscribe to DATA_TO_UIs and variables using the existing mobile communication channels. This enables UI Button web views to work remotely. Previous versions of web views only worked on Control4 touchscreens residing on the local network.

Note that these API calls can only be made to the driver/protocol hosting the web page. UI Buttons pointing to external web pages will not be able to access the Javascript API.

C4.sendCommand

Sends a command to either the protocol or driver. All responses are sent back via the Javascript callback: onDataToUi(response: string). Driver writers will need to implement this callback in their web page. Errors are sent back via: onSendCommandError(message: string)

Signature

C4.sendCommand(commandName: string, params: string, async: boolean, sendToProtocol: boolean = false): void)

Parameter Description
string commandName - The name of the command to be executed by the driver or protocol.
string params - A JSON formatted string of parameters. Invalid JSON will trigger an exception.
boolean async - true to send the command asynchronously to ExecuteCommand(). false to send the command as a UI Request.
boolean sendToProtocol - Whether the command should be sent to the protocol or driver.
Returns Description
void All responses, even for synchronous commands, will be sent back via the Javascript callback: onDataToUi(response: string)
Callbacks Description
onDataToUi(response: string) Callback to receive DATA_TO_UIs when subscribed.
onSubscribeToDataToUiError(message: string) Callback to receive error messages when attempting to subscribe to DATA_TO_UIs.

Example

C4.sendCommand("SetState", "{'state':'" + color + "'}", false, true);

C4.subscribeToDataToUi

Subscribes to the DATA_TO_UIs for either the protocol or proxy. All responses are sent back via the Javascript callback: onDataToUi(response: string). Driver writers will need to implement this callback in their web page to receive DATA_TO_UIs. Errors are sent back via: onSubscribeToDataToUiError(message: string)

Signature

C4.subscribeToDataToUi(sendToProtocol: boolean = false):void

Parameter Description
boolean sendToProtocol - Whether the command should be sent to the protocol (true) or proxy (false).
Returns Description
void All responses will be sent back via the Javascript callback: onDataToUi(response: string)
Callbacks Description
onDataToUi(response: string) Receives DATA_TO_UIs when subscribed. DATA_TO_UIs are converted to json by Broker before being sent to the web page.
onSubscribeToDataToUiError(message: string) Receives error messages when attempting to subscribe to DATA_TO_UIs.

Example

Subscribes to the protocol's DataToUI events. Protocol driver's can send DataToUI events by calling C4:SendDataToUI(xml) or C4:SendDataToUI (strCommand, tParams)

C4.subscribeToDataToUi(true);

C4.subscribeToVariable

Subscribes to the specified variable for either the protocol or proxy. All responses are sent back via the Javascript callback: onVariable(response: string). Driver writers will need to implement this callback in their web page to receive variable change events. Errors are sent back via: onSubscribeToVariableError(message: string)

Signature

C4.subscribeToVariable("LAST_MENU_SELECTED", false);

Parameter Description
string variableName - The name of the variable to subscribe to for either the driver or protocol.
boolean protocol - Whether the variable is part of the protocol (true) or proxy (false).
Returns Description
void All responses will be sent back via the Javascript callback: onDataToUi(response: string)
Callbacks Description
onVariable(response: string) Receives DATA_TO_UIs when subscribed.
onSubscribeToVariableError(variableName: string, message: string) Receives error messages when attempting to subscribe to a variable.

Example

Subscribes to the proxy's "LAST_MENU_SELECTED" variable.

C4.subscribeToVariable("LAST_MENU_SELECTED", false);

UI Button Proxy JavaScript Logging

Managing JS Logging using console.log

A debug console is included in the webview page to assist with viewing javascript logs. It is invoked by tapping 4 times on the header. The console appears in the lower half of the view and can be positioned as needed. Any JS console logging is shown in the console view.

Contact Overview

CONTACTS OVERVIEW

This area of the Proxy and Protocol Guide contains information for a developing a Contact driver. Contacts are unique in how they are handled within Control4's architecture. Contact drivers do not rely upon a proxy as most traditional drivers do. In the most simple use case, a contact driver is added to a project to provide icons on devices running Navigator for the contacts' state (open and close) or a change to that state. An example of this type of driver can be seen in the contactsingle_contactswitch.c4i file. In a typical ComposerPro installation, this driver can be found in the following directory:

C:\Program Files\Control4\Composer###\Drivers\Virtual

Opening this driver in a text editor and reviewing several of the driver components is helpful in order to understand how a simple contact driver is used. To begin with, line 46 of this driver defines its proxy type. The value entered here is the filename of the driver without the .c4i file extension:

<proxy>contactsingle_contactswitch_c4</proxy>

The filename of the driver is used in the proxy tag because this driver does not reference a defined Control4 proxy. This is a required convention for all “Combo-drivers”. Populating the proxy tag in this manner is required for the driver to work.

The next section of code to review is the states section where icons are included. Beginning with line 49 we can see that this driver has two states: Open and Closed. These states are supported by icons that are loaded onto the controller upon installation of ComposerPro. The icons to the right represent the default icon for a contact switch:

<states>
   <state>
    <id>1</id>
    <small>devices_sm\contactsingle_contactswitch_open.gif</small>
    <large>devices_lg\contactsingle_contactswitch_open.gif</large>
   </state>
   <state>
     <id>2</id>
     <small>devices_sm\contactsingle_contactswitch_close.gif</small>
     <large>devices_lg\contactsingle_contactswitch_close.gif</large>
   </state>
</states>

Default icons vary based on the type of contact being represented by the driver. In the example to the right, if we look at the states section from the contactsingle_gate_c4i file (located in the same directory) we'll see different icons being used:

<states>
   <state>
    <id>1</id>
    <small>devices_sm\contactsingle_gate_open.gif</small>`
    <large>devices_lg\contactsingle_gate_open.gif</large>`
   </state>
   <state>
    <id>2</id>
    <small>devices_sm\contactsingle_gate_close.gif</small>`
    <large>devices_lg\contactsingle_gate_close.gif</large>`
   </state>
</states>

Next, to the right we can examine the connection section of this driver we see the following:

<connections>
   <connection>
     <id>1</id>
     <facing>6</facing>
     <connectionname>Contact Sensor</connectionname>
     <type>1</type>
     <consumer>True</consumer>
     <audiosource>False</audiosource>
     <videosource>False</videosource>
     <linelevel>False</linelevel>
     <classes>
      <class>
       <classname>CONTACT_SENSOR</classname>
      </class>
    </classes>
   </connection>
</connections>

All of the stock contact drivers use a connection type of 1. This is a control connection type and a requirement for the driver.

Finally, the last piece of driver code which needs to be considered is the control tag. If we look at the control value for the contact driver we see the following:

<control>control4_contactsingle</control>

Populating the control tag with the control4_contactsingle value in this manner is required for the driver to work.

Control4 provides stock contact drivers for the following devices:

If the device that you would like to include in a ComposerPro project falls under one of the device types listed above, it can easily be supported through one of the stock contact drivers delivered through ComposerPro. This assumes, that your driver needs consist of a simple communication protocol which will reflect contact state on UI devices using stock icons. Driver needs that fall outside of the scope of this document are currently not supported through the Contact driver architecture.

Contact Notifications

CLOSED

Contact has closed.

Signature

CLOSED ()

Parameters

None

Returns

None

OPENED

Contact has opened.

Signature

OPENED ()

Parameters

None

Returns

None

STATE CLOSED

Contact remains in the closed state.

Signature

STATE_CLOSED ()

Parameters

None

Returns

None

STATE OPENED

Contact remains in the opened state.

Signature

STATE_OPENED ()

Parameters

None

Returns

None

Relay Overview

NON-PROXY DEVICE: RELAY OVERVIEW

This area of the Proxy and Protocol Guide contains information regarding commands and notifications for a developing a Relay driver. Together, these provide an interface for controlling the Relay. Generic commands such as On, Off, etc. are supported for controlling the Relay while feedback is received through the notifications to update the Control4 User Interface.

Relay Commands

CLOSE

Close relay.

Signature

CLOSE ()

Parameters

None

Returns

None

OPEN

OPEN relay.

Signature

OPEN ()

Parameters

None

Returns

None

TOGGLE

TOGGLE relay.

Signature

TOGGLE ()

Parameters

None

Returns

None

TRIGGER

TRIGGER relay.

Signature

TRIGGER ()

Parameter Description
int TIME: Milliseconds

Returns

None

Relay Notifications

CLOSED

Relay has closed.

Signature

CLOSED ()

Parameters

None

Returns

None

OPENED

Relay has opened.

Signature

OPENED ()

Parameters

None

Returns

None

STATE CLOSED

Relay remains in the closed state. Does not indicate a change in state.

Signature

STATE_CLOSED ()

Parameters

None

Returns

None

Usage Note

Send STATE_CLOSED when the device initializes rather than CLOSED. The driver will ignore the STATE_CLOSED from the standpoint of events since it is not a state change but just a notification of the current state.

STATE OPENED

Relay remains in the open state. Does not indicate a change in state.

Signature

STATE_OPENED ()

Parameters

None

Returns

None

Usage Note

Send STATE_OPENED when the device initializes rather than OPENED. The driver will ignore the STATE_OPENED from the standpoint of events since it is not a state change but just a notification of the current state.

Best Practices

AV PATHING, UNSOLICITED NOTIFICATIONS AND CONTROL4 UI

Fundamentally, audio/video source/endpoint selection and pathing behavior in the Control4 system are expected to be under Control4’s control. Commands are expected to originate from the Control4 user interface. The user selects a source for playback in a certain room (as configured by the Control4 installer and automatically generated in the Control4 UI). When the user selects a source, the Control4 pathing algorithms dynamically select the best path from the selected source device to the audio/video endpoint(s) based on the connections configured by the Control4 installer. Drivers for the devices on the path are expected to handle the commands for on/off, source selection, input/output switching, etc. The drivers will receive commands and should send the proper notifications for each command received based on the Proxy/Protocol guide documentation.   Because of this architectural choice made by Control4, the system will ignore unsolicited notifications (or notifications for which no command was sent). If the user is controlling a specific device in the path (through physical buttons, 1st-party product remote, or product-specific app), even if the driver sends a notification to the Control4 system the changes will not be propagated back up to the Control4 UI. Control4 will not run the pathing algorithms in reverse to try to interpret what has just happened. And the Control4 UI will be out of sync with the actual device status. Therefore, we recommend that the Control4 user interface be used for source selection.

Likewise, because of the automatic pathing algorithms, Control4 discourages driver developers from trying to mimic the pathing functionality of the system by having their driver select other device(s). When it comes to devices selecting other devices, it’s best to simply not do so in the driver because the driver doesn’t have access to all of the information that the installer has configured when the system was installed.

If a driver developer decides to implement this type of functionality, for a specific use case, we recommend that they include a dealer setup method on the properties page where the dealer actually selects which source is connected to which input and use that, combined with the Room On room selector property, to choose the source in the right room.  This effectively replicates the programming the dealer would have to do on the programming page inside the driver and is a user-friendly way of doing this.  We have not done this on any driver of ours yet though, because the use case of source selection outside of Control4 is so low because of the source control aspect.

If used, this behavior should be select-able by the dealer though, and not always forced, as there are likely to be scenarios where different behavior than expected by the client/dealer will happen, even though it’s “correct”.

Please note, however, that the above restriction only applies to AV-type device drivers. This does not apply to other types of devices controlled within the Control4 environment. Drivers for security system integrations, blinds/shades, relays/sensors, thermostats, etc. will always send notifications of state changes and these will be tracked by the Control4 system regardless of whether or not the command to perform the action which resulted in the state change originated with the Control4 UI.

AUTOBINDINGS in Receiver an TV DRIVERS

Usage Note on the use of Auto-Bindings in conjunction with the Receiver and TV Proxies:

If your Receiver and TV driver intends to use Auto-Binding feature in ComposerPro, the binding ID value for those connections must use an ID value of 7000. Any other value will result in the auto-binding connection not being created.

For example:

   <connection proxybindingid="5000">
      <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>AUDIO_SELECTION</classname>
        </class>
        <class>
          <classname>AUDIO_VOLUME</classname>
        </class>
        <class>
          <classname>VIDEO_SELECTION</classname>
        </class>
      </classes>
    </connection>

USING THE UPDATE PROPERTY COMMAND

The UPDATE_PROPERTY command is a non proxy-specific function that can be called from any device to change a property of any other device. This command modifies a Property of a device that is currently in a Control4 project. The command is sent from a driver other than that of the device who's property is being modified. This supports that ability to modify device properties externally.

Consider the following scenarios where UPDATE_PROPERTY may be useful:

Parameter Description
str Name: Name of the Property that is being modified.
int Value: The new value of the Property that is being modified.

Returns

None

Example

C4:SendToDevice(deviceId, "UPDATE_PROPERTY", {Name = propName, Value = newPropValue})

OS 3 NAVIGATOR UI AND VOLUME CONTROL

In conjunction with OS 3, a new volume control slider is available on the Control4 UI. The use of this slider to set or change volume results in devices receiving volume adjustment commends every 750 milliseconds by default. This represents a sampling of the continuous volume commands that are being sent by the Navigator to the device. The Room Driver has the ability to throttle these commands being sent in order to ensure that volume behaves properly and that volume commands are not received faster than they can be processed and remain in the queue. This command throttling is managed through a new capability: <throttled_vol_ms_rate></throttled_vol_ms_rate>

This capability designates the amount of time (in milliseconds) that volume change commands are sent from the Navigator to the driver. For example: <throttled_vol_ms_rate>600</throttled_vol_ms_rate> will result in volume commands being sent very 600 milliseconds.

In the event that a volume control device cannot process commands fast enough to accommodate the default use of the new volume control slider (750 milliseconds), this capability can be added to the driver's <capabilities></capabilities> XML and an increased millisecond value be used.

Conversely, if a volume-control device driver can process volume commands fast enough to allow more commands being sent in a smaller millisecond time frame; it can use this capability to lower the time (increase the sampling) and provide a smoother volume control experience for the end user. For example, if the device is capable, a value of 250 milliseconds will provide a good volume slider experience. Values less than 200 milliseconds are not recommended.

lua