NAV
lua

WARNING - CONTENT NOW DEPRECATED

The content from this repository has been broken down into multiple smaller repositories, each focussed on one proxy. For the complete list, please see the main landing page for Driverworks

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

WARNING - CONTENT NOW DEPRECATED

The content from this repository has been broken down into multiple smaller repositories, each focussed on one proxy. For the complete list, please see the main landing page for Driverworks

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.4.2

AV Proxies

The following Proxy Commands have been enhanced in this release to include a new command parameters:

The new command parameters is:

Non-AV Proxies

Fan Proxy

The Fan Proxy has been enhanced in this release to include a new capability: proxy_fan_speed_connections. This capability is applicable to newer fan drivers to create BUTTON_LINK connections dynamically in association with fan speeds.

Keypad Proxy

The Keypad Proxy has been enhanced in this release to include a new capability: clear_led_current_color_support. Enabling this capability allows the Keypad Proxy to clear a keypad’s button(s) color. Previously, this had to be done at the protocol level. In order to use this capability, two new Keypad Proxy commands have been delivered as well: KEYPAD_BUTTON_COLOR_CLEAR & KEYPAD_ALL_BUTTON_COLOR_CLEAR.

Light V2 Proxy

This Light V2 Proxy has been enhanced in this release with several new capabilities and a modification. These include:

The cold_start capability has been modified in this release to now be a Dynamic Capability. This enhancement has no impact on existing drivers currently using the cold_start capability. Beginning with O.S release 3.4.2, a driver can now dynamically change this capability if needed.

A new capability named disable_flash has been included to indicates whether the driver supports Flash behavior. This capability is useful with regard to Flash functionality being offered in the Advanced Lighting Scenes Composer Pro UI.

A new capability named multi_click has been included to disable multi-click events/actions for a light driver. This is useful when it is desirable to disable the ability to use press, release, single, double or triple click programming in Composer Pro.

Two new capabilities have been included to help support nesting of drivers in Composer Pro’s System Design tree. While this functionality is defined within the Light V2 Proxy, it is applicable to any Proxy and drivers that will benefit from a nested view in Composer Pro’s System Design.

The nesting_driver_is_parent capability indicates whether or not a driver is dependent on other, supporting drivers. These supporting drivers will appear nested under the parent driver. This capability must be used in conjunction with the new variable: VAR_C4_NESTING_PARENTS_CHILD_DEVICES. This variable includes a comma delimited list of ID values for the secondary (child) drivers(s) required by the parent driver. This list represents the drivers that will be nested under the parent driver in Composer Pro.

The nested_driver_is_child capability indicates whether or not this driver is a dependent driver required by primary driver for use. When used correctly, it will setup the dependent driver(s) to be nested under the primary driver in Composer Pro. This capability must be used in conjunction with the new variable: VAR_C4_NESTED_CHILDS_PARENT_DEVICE. This variable includes the ID of primary (parent) driver requiring its use. This is the associated driver with the nesting_driver_is_parent capability set to true.

What’s New in 3.4.1

There were no modifications to the Proxy and Protocol Guide in conjunction with O.S. Release 3.4.1.

What’s New in 3.4.0

Blind Proxy

A new capability has been added to the proxy called always_send_level. If value is true, then the SetTargetLevel commands are always sent regardless of current level values. This is useful if the blind device does not support two-way communication and is controlled outside of the Control4 operating system.

Camera Proxy

Beginning with O.S. 3.4.0, camera drivers have the ability to distribute audio to devices running Navigator. If a camera supports the proper CODEC and the camera microphone has been enabled in the appropriate interface a new audio button will appear at the bottom of the single-camera view. This will allow the user to hear live audio with the live video.

Generic Media Player Proxy

A new capability has been added to the proxy called allow_audio_pathing. This capability is applicable in the scenario where the AV Switch proxy is included as a secondary proxy to the Generic Media Player Proxy. It is useful when modeling streaming media devices that require minidrivers.

Light (v2) Proxy

The following color conversion functions have been modified in 3.4.0. The gamut parameter now receives a new valid string of: "custom”. See the links below for more information.

RGB functions: - ColorRGBtoXY - ColorXYtoRGB

HSV functions: - ColorHSVtoXY - ColorXYtoHSV

What’s New in 3.3.2

Camera Proxy

Support for Dynamic Camera Streams

Camera drivers can now implement a new dynamic streams API to provide a list of streams that the Navigators can pick from.

Light V2 Proxy

Capabilities that have been Added

A new feature has been delivered in O.S. 3.3.2 which allows dealers and customers to specify how a light's brightness behaves when the light is turned on. The functionality includes:

Driver developers must opt-in to this new feature and which parts it wants to support via the following new capabilities:

brightness_on_mode_preset has been included to enable the brightness presets for "On Mode" behavior for a light.

brightness_on_mode_previous has been included to enable the Previous On "On Mode" brightness behavior for a light.

A new feature was created to allow dealers and customers to specify how a light's color behaves when a light is turned on. The functionality includes:

Driver developers must opt-in to this new feature and which parts it wants to support via the following new capabilities:

color_on_mode_fade has been included to enable the Fade On "On Mode" behavior, such as Dim to Warm, for a light.

color_on_mode_preset has been included to enable presets for use with "On Mode" behavior for a light.

color_on_mode_previous has been included to enable the Previous On "On Mode" behavior for a light.

Additionally, the following new capabilities have been included in 3.3.2:

A new capability: brightness_rate_max has been included in support of drivers without buttons. This capability allows these driver to no longer need to define click and hold maximum rates.

A new capability: brightness_rate_min has been included in support of drivers without buttons. This capability allows these driver to no longer need to define click and hold minimum rates.

A new capability: supports_brightness_stop has been included if a light brightness transition can be stopped during a ramp.

Capabilities that have been Deprecated

fixed_ramp_rate - Use click_rate_min and click_rate_max instead.

has_fixed_ramp_rate - Use click_rate_min and click_rate_max instead.

num_buttons

ramp_level

min_max

on_off

buttons_are_virtual

Commands that have been Added

Note: Enforcement of valid minimum and maximum values for many Light v2 commands are being enforced in conjunction with 3.3.2.

A new command: ADD_DRIVER_COLOR_PRESET has been included to add a new driver specific color preset.

A new command: DELETE_DRIVER_COLOR_PRESET has been added to remove a driver configured color preset.

A new command: DYNAMIC_OFF has been added to support UIs with an off command to pair with the DYNAMIC_ON command.

A new command: DYNAMIC_ON has been added to allows UI's and programming to "turn on" a light involving both brightness and color in a single command

A new command MODIFY_DRIVER_COLOR_PRESET has been included to change an existing driver color preset.

A new command SET_BRIGHTNESS_STOP has been added to stop a ramp if in progress.

A new command SET_COLOR_STOP has been added to stops a ramp of color if in progress.

A new command SET_BRIGHTNESS_ON_MODE has been added to maintain the On preset value.

A new command SET_BRIGHTNESS_RATE_DEFAULT has been added. This command is used in conjunction with generic On/Off commands to retrieve the UPDATE_BRIGHTNESS_RATE_DEFAULT value.

A new command SET_COLOR_ON_MODE has beed added define color on mode.

A new command SET_COLOR_RATE_DEFAULT has been added. This command is used in conjunction with generic On/Off commands to retrieve the UPDATE_COLOR_RATE_DEFAULT value.

A new command UPDATE_BRIGHTNESS_ON_MODE has been added to obtain how a light should turn on with regards to brightness.

A new command UPDATE_BRIGHTNESS_RATE_DEFAULT has been added to provide a default value when a rate change is not provided.

A new command UPDATE_BRIGHTNESS_PRESET has beeb added to send a command when a press is changed.

A new command UPDATE_COLOR_ON_MODE has been added to obtain how a light should turn on with regards to color.

A new command UPDATE_COLOR_PRESET has been added to manage On and Dim values across various brands and models of lights.

A new command UPDATE_COLOR_RATE_DEFAULT has been added. This command is used in conjunction with generic On/Off commands to update the color rate default value.

Commands that have been Modified

The SET_COLOR_TARGET command has been enhanced with new parameters to support hue, saturation and presets. Additionally, this command previously included a parameter of RATE. This parameter name has changed to LIGHT_COLOR_TARGET_RATE.

Commands that have been Deprecated

GET_LIGHT_LEVEL

GET_CONNECTED_STATE

GET_PROPERTIES

Conditionals that have been Added

IS_BRIGHTNESS

IS_BRIGHTNESS_TARGET

IS_COLOR_TARGET

Notifications that have been Modified

The LIGHT_BRIGHTNESS_CHANGING notify has been modified to include two new optional parameters: LIGHT_BRIGHTNESS_CURRENT_PRESET_ID and LIGHT_BRIGHTNESS_TARGET_PRESET_ID.

The LIGHT_COLOR_CHANGING notify has been modified to include parameters for Preset IDs. Additionally, this notify previously included a parameter of RATE. This parameter name has changed to LIGHT_COLOR_TARGET_RATE.

The LIGHT_COLOR_CHANGED notify has been modified to include a parameter for a Preset ID.

Variables that have been Added

Brightness Target Ramp Rate in Milliseconds

Brightness Target Rate Remaining in Milliseconds

Variables that have been Deprecated

PRESET_LEVEL has been deprecated as the brightness_on_mode_preset capability contains this value.

Known Issue(s)

Color Lighting Control may not Work on Some Drivers

Currently, there is a known problem with color control not working on drivers that are looking for a RATE parameter in the SET_COLOR_TARGET command. The RATE parameter was not correctly implemented due to the limits of support for color rate ramping in previous versions. We are finalizing the changes to make this fully work in 3.3.2. As a result, the “RATE” parameter name has been changed to “LIGHT_COLOR_TARGET_RATE”.

Button Link Binding for Brightness Stop Functionality not Working

A defect in 3.3.2 prevents keypad buttons bound to the Proxy’s BUTTON_LINK binding for Brightness Stop from working. This will be resolved in 3.3.3.

What’s New in 3.3.1

Light V2 Proxy

The capability: color_trace_tolerance has been modified to accept a Delta value of > .01. When provided, the CIELa*b* tolerance formula is used to determining if a color is the as another color in the system.

The following Conversion Commands have been enhanced to include an optional parameter: gamut. This parameter allows for the specification of a gamut type for use in the conversions.

Camera Proxy

The Camera Proxy documentation has been has enhanced to include new information regarding:

A new command: GET_STREAM_URLS has been added. It is used to obtain URLs for a camera that does not have a constant URL like a Cloud based camera or for cameras that have a wider range of features and configurable options that can produce better customer experiences using various client

A new notification: STREAM_URLS_READY has been added. This notify is used as a follow up to a GET_STREAM_URLS Synchronous call. This Notify will let a UI know that the URL information they requested is ready.

New capabilities added to the Camera proxy include:

Dynamic Presets are now supported within the Camera Proxy. The following preset functionality has been include:

Dynamic Presets require the following new Capability:

Dynamic Presets require the following new Notifications:

Dynamic Presets require the following new Commands:

The following existing Camera Proxy capabilities are now Dynamic Capabilities:

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

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

Name

AUDIO_PARAMETER_CHANGED ()

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

BALANCE_LEVEL_CHANGED

Selected balance level has changed.

Name

BALANCE_LEVEL_CHANGED ()

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

BASS_LEVEL_CHANGED

Selected bass level has changed

Name

BASS_LEVEL_CHANGED ()

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

INPUT_OUTPUT_CHANGED

Selected inputs & outputs have changed.

Name

INPUT_OUTPUT_CHANGED ()

Parameter Type Description
INPUT INT Input Binding ID
OUTPUT INT Output Binding ID

Returns

None

LOUDNESS_CHANGED

Loudness state (On/Off) has changed.

Name

LOUDNESS_CHANGED ()

Parameter Type Description
BOOL True/False
Output INT Indicates a change in loudness for the specified output binding ID.

Returns

None

MUTE_CHANGED

MUTE state (On/Off) has changed.

Name

MUTE_CHANGED ()

Parameter Type Description
BOOL True/False
Output INT Indicates a change in mute state for the specified output binding ID.

Returns

None

OFF

Device has turned off.

Name

OFF ()

Parameter

None

Returns

None

ON

Device has turned on.

Name

ON ()

Parameter

None

Returns

None

TREBLE_LEVEL_CHANGED

Selected treble level has changed.

Name

TREBLE_LEVEL_CHANGED ()

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

VOLUME_LEVEL_CHANGED

Selected volume level has changed.

Name

VOLUME_LEVEL_CHANGED ()

Parameter Type Description
LEVEL INT Level
OUTPUT 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.

Navigator EQ Proxy Commands

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 Type Description
Output Binding ID int Output Binding ID

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 Type Description
Output Binding ID int Output Binding ID

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 Type Description
Output Binding ID int Output Binding ID

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 Type Description
Output Binding ID int Output Binding ID

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 Type Description
Output Binding ID int Output Binding ID

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 Description
OUTPUT int Output Binding ID
INDEX int 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.
NAME str Name for the new custom index. Base64 encoded.

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 Type Description
Output INT Output Binding ID
LEVEL INT Bass Level

Returns

None

SET_EQPRESET

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

Signature

SET_EQPRESET

Parameter Type Description
INDEX int Index for the selected preset.
OUTPUT int Output Binding ID

Returns

None

SET_EQ_GAIN_VALUES

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

Signature

SET_EQ_GAIN_VALUES

Parameter Type Description
VALUES str 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
OUTPUT Output Binding ID Output Binding ID
LEVEL Treble level Range is -12 to 12.

Returns

None

Navigator EQ Protocol Notifications

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 Type Description
OUTPUT int OutputBindingID
AUDIOMODE int 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 Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

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 Type Description
LEVEL int Level
OUTPUT int Output Binding ID

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 Type Description
OUTPUT int Output Binding ID
table int 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 Type Description
OUTPUT int Output Binding ID
TABLE Ttble 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 Type Description
OUTPUT int Output Binding ID
VALUES num 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 Type Description
OUTPUT int Output Binding ID
VALUES num 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_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 Type Description
OUTPUT int Output Binding ID
EQPRESET int 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 Type Description
OUTPUT: int Output Binding ID
ENABLED bool 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 Type Description
OUTPUT int Output Binding ID
LOUDNESS bool Enabled 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 Type Description
OUTPUT int Output Binding ID
LEVEL int 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")

Navigator EQ Capabilities

<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

Name

BACK ()

Parameters

None

Returns

None

BINDING_CHANGE_ACTION

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

Name

BINDING_CHANGE_ACTION ()

Parameter Type Description
BINDING ID STR BindingID of the changed binding.

Returns

None

CANCEL

Pulse Cancel button

Name

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Name

DASH ()

Parameter

None

Returns

None

DISCONNECT_ OUTPUT

Disconnect (turn off) selected output on device

Name

DISCONNECT_OUTPUT ()

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

EMIT_CODE

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

Name

EMIT_CODE ()

Parameter Type Description
ID INT ID Of IR Code

Returns

None

EMIT_MACRO

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

Name

EMIT_MACRO ()

Parameter Type Description
ID STR Macro Code Name

Returns

None

GET_AUDIO_INPUTS

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

Name

GET_AUDIO_INPUTS ()

Parameters

None

Returns

None

HYPHEN

Pulse ‘-’ button

Name

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Name

INFO ()

Parameters

None

Returns

None

LOUDNESS_OFF

Turn loudness off.

Name

LOUDNESS_OFF ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

LOUDNESS_ON

Turn loudness on.

Name

LOUDNESS_ON ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

LOUDNESS_TOGGLE

Toggle loudness on/off.

Name

LOUDNESS_TOGGLE ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

MUTE_OFF

Turning muting off.

Name

MUTE_OFF ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

MUTE_ON

Turn muting on.

Name

MUTE_ON ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

MUTE_TOGGLE

Toggle muting on/off.

Name

MUTE_TOGGLE ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

NUMBER_0

Pulse ‘0’ button

Name

Number_0 ()

Parameters

None

Returns

None

NUMBER_1

Pulse ‘1’ button

Name

Number_1 ()

Parameters

None

Returns

None

NUMBER_2

Pulse ‘2’ button

Name

Number_2 ()

Parameters

None

Returns

None

NUMBER_3

Pulse ‘3’ button

Name

Number_3 ()

Parameters

None

Returns

None

NUMBER_4

Pulse ‘4’ button

Name

Number_4 ()

Parameters

None

Returns

None

NUMBER_5

Pulse ‘5’ button

Name

Number_5 ()

Parameters

None

Returns

None

NUMBER_6

Pulse ‘6’ button

Name

Number_6 ()

Parameters

None

Returns

None

NUMBER_7

Pulse ‘7’ button

Name

Number_7 ()

Parameters

None

Returns

None

NUMBER_8

Pulse ‘8’ button

Name

Number_8 ()

Parameters

None

Returns

None

NUMBER_9

Pulse ‘9’ button

Name

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Name

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.

Name

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

Name

POUND ()

Parameters

None

Returns

None

PULSE_BALANCE_DOWN

Pulse balance down (Left)

Name

PULSE_BALNCE_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

PULSE_BALANCE_UP

Pulse balance up (Right)

Name

PULSE_BALNCE_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

PULSE_BASS_DOWN

Pulse bass down (Left)

Name

PULSE_BASS_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

PULSE_BASS_UP

Pulse bass up (Right)

Name

PULSE_BASS_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

PULSE_INPUT

Toggle (cycle through) input selection on device.

Name

PULSE_INPUT

Parameters

None

Returns

None

PULSE_SUR_UP

Toggle (cycle through) surround mode presets on device.

Name

PULSE_SUR_UP

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

PULSE_VOL_DOWN

Pulse volume level down.

Name

PULSE_VOL_DOWN

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

PULSE_VOL_ UP

Pulse volume level up.

Name

PULSE_VOL_UP

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

PULSE_TREBLE_ DOWN

Pulse treble down.

Name

PULSE_TREBLE_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

PULSE_TREBLE_UP

Pulse treble up.

Name

PULSE_TREBLE_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

RECALL

Pulse Recall button

Name

RECALL ()

Parameters

None

Returns

None

STAR

Pulse * button

Name

STAR ()

Parameters

None

Returns

None

START_BALANCE_DOWN

Start ramping balance down (left).

Name

START_BALANCE_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

START_BASS_DOWN

Start ramping bass down.

Name

START_BASS_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

START_BASS_UP

Start ramping bass up.

Name

START_BASS_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

START_TREBLE_DOWN

Start ramping treble down.

Name

START_TREBLE_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

START_TREBLE_UP

Start ramping treble up.

Name

START_TREBLE_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

START_VOL_DOWN

Start ramping volume down.

Name

START_VOL_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

START_VOL_UP

Start ramping volume up.

Name

START_VOL_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

SET_ALL_EQ_SETTINGS

Set balance to a specified position.

Name

SET_ALL_EQ_SETTINGS ()

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

SET_BALANCE

Set balance to a specified position.

Name

SET_BALANCE ()

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

SET_BALANCE_UP

Set balance to a specified position.

Name

SET_BALANCE_UP ()

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

SET_BASS_LEVEL

Set bass to a specified level.

Name

SET_BASS_LEVEL

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

SET_DIGI_OFF

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

Name

SET_DIGI_OFF ()

Parameters

None

Returns

None

SET_DIGI_ON

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

Name

SET_DIGI_ON ()

Parameters

None

Returns

None

SET_INPUT

Specify input selection of device.

Name

SET_INPUT ()

Parameter Type Description
Input Binding ID int Binding ID in the BindingID range below.
PATH DEV LIST str Value of the devices directly upstream in the AV path.
Output Binding ID int Optional. Output Binding ID - should be in the BindingID range in the usage note below.

Returns

None

Usage Note

SET_LOUDNESS

Turn loudness on.

Name

SET_LOUDNESS ()

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

SET_MAX_VOLUME

Set maximum allowable volume level

Name

SET_MAX_VOLUME ()

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

SET_OUTPUT_INPUT

Specify input and output selection of device.

Name

SET_OUTPUT_INPUT ()

Parameter Type Description
INPUT INT Input Binding ID
OUTPUT INT Output Binding ID

Returns

None

SET_SURROUND_MODE

Select specified surround mode preset on device.

Name

SET_SURROUND_MODE ()

Parameter Type Description
SURROUND\_MODE INT Surround Mode Value
OUTPUT INT Output Binding ID

Returns

None

SET_TREBLE_LEVEL

Set treble to a specified level.

Name

SET_TREBLE_LEVEL ()

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

SET_ UP_DOWN_SWAP

Swap page UP/DOWN buttons (used by AVGen)

Name

SET_UP_DOWN_SWAP ()

Parameter Type Description
SWAPFLAG BOOL Swap page UP/DOWN buttons (used by AVGen). TRUE to enable swap, FALSE to disable.

Returns

None

STOP_VOL_DOWN

Stop ramping volume down.

Name

SET_VOL_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

SET_VOLUME_LEVEL

Set volume to a specified level.

Name

SET_VOLUME_LEVEL () 

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

STOP_BALANCE_DOWN

Start ramping balance.

Name

STOP_BALANCE_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

STOP_BASS_DOWN

Stop ramping bass

Name

STOP_BALANCE_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

STOP_BASS_DOWN

Stop ramping bass down.

Name

STOP_BASS_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

STOP_BASS_UP

Stop ramping bass up

Name

STOP_BASS_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

STOP_TREBLE_DOWN

Stop ramping the treble down

Name

STOP_TREBLE_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

STOP_TREBLE_UP

Stop ramping the treble up.

Name

STOP_TREBLE_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

STOP_VOL_DOWN

Stop ramping the volume down.

Name

STOP_VOL_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

STOP_VOL_UP

Stop ramping the volume up.

Name

STOP_VOL_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

Audio Switch Proxy Commands

BACK

Pulse Back button

Name

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Name

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Name

DASH ()

Parameter

None

Returns

None

DISCONNECT_OUTPUT

Disconnect (turn off) selected output on device

Name

DISCONNECT_OUTPUT ()

Parameter Type Description
Output Binding ID int Optional. Output Binding ID - should be in the BindingID range in the usage note below.
PATH DEV LIST str Value of the devices directly upstream in the AV path.

Returns

None

SET_LOUDNESS

Turn loudness on.

Name

SET_LOUDNESS ()

Parameter Type Description
LEVEL INT Level
OUTPUT 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

Name

AUDIO_PARAMETER_CHANGED ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

BALANCE_LEVEL_CHANGED

Selected balance level has changed.

Name

BALANCE_LEVEL_CHANGED ()

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

BASS_LEVEL_CHANGED

Selected bass level has changed

Name

BASS_LEVEL_CHANGED ()

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

INPUT_OUTPUT_CHANGED

Selected inputs & outputs have changed.

Name

INPUT_OUTPUT_CHANGED ()

Parameter Type Description
INPUT INT Input Binding ID
OUTPUT INT Output Binding ID

Returns

None

LOUDNESS_CHANGED

Loudness state (On/Off) has changed.

Name

LOUDNESS_CHANGED ()

Parameter Type Description
LOUDNESS BOOL True/False
OUTPUT INT Indicates a change in loudness for the specified output binding ID.

Returns

None

MUTE_CHANGED

MUTE state (On/Off) has changed.

Name

MUTE_CHANGED ()

Parameter Type Description
MUTE BOOL True/False
OUTPUT INT Indicates a change in mute state for the specified output binding ID.

Returns

None

OFF

Device has turned off.

Name

OFF ()

Parameter

None

Returns

None

ON

Device has turned on.

Name

ON ()

Parameter

None

Returns

None

TREBLE_LEVEL_CHANGED

Selected treble level has changed.

Name

TREBLE_LEVEL_CHANGED ()

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

VOLUME_LEVEL_CHANGED

Selected volume level has changed.

Name

VOLUME_LEVEL_CHANGED ()

Parameter Type Description
LEVEL INT Level
OUTPUT 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.

Navigator EQ Proxy Commands

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.

Name

LOUDNESS_OFF

Parameter Description Description
OutputBindingID INT Output Binding ID

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.

Name

LOUDNESS_ON

Parameter Description Description
OutputBindingID INT Output Binding ID

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.

Name

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.

Name

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.

Name

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.

Name

SAVE_EQ_TO_CUSTOM_PRESET

Parameter Type Description
INDEX INT 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.
NAME STR Name for the new custom index. Base64 encoded.
OutputBindingID INT 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.

Name

SET_BASS_LEVEL

Parameter Type Description
OutputBindingID INT Output Binding ID
Level 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.

Name

SET_EQPRESET

Parameter Description Description
INDEX INT Index for the selected preset.
Output Binding ID INT Output Binding ID

Returns

None

SET_EQ_GAIN_VALUES

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

Name

SET_EQ_GAIN_VALUES

Parameter Type Description
VALUES STR 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.

Name

SET_TREBLE_LEVEL

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

Returns

None

Navigator EQ Protocol Notifications

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.

Name

AUDIOMODE_CHANGED

Parameter Type Description
OUTPUT INT Output Binding ID
AUDIOMODE INT 1 = TONE\_CONTROL: This is 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.

Name

BALANCE_LEVEL_CHANGED

Parameter Type Description
OutputBindingID INT Output Binding ID
Level INT 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.

Name

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.

Name

EQ_DISPLAY_ORDER_CHANGED

Parameter Type Description
OUTPUT INT OutputBindingID
INDEX Table of indexes 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.

Name

EQ_NAMES_CHANGED

Parameter Type Description
OUTPUT INT OutputBindingID
INDEX Table of names 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.

Name

EQFREQS_CHANGED

Parameter Type Description
OUTPUT INT OutputBindingID
VALUES INT Table of comma delimited 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.

Name

EQGAINS_CHANGED

Parameter Type Description
OUTPUT INT Output Binding ID. Notifies that the EQ band gain values have been updated for the specified output.
VALUES STR 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.

Name

EQPRESET_CHANGED

Parameter Type Description
Output INT Output Binding ID. Selects a specific EQ preset for the associated output.
EQPRESET INT QPRESET: 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.

Name

HIDEEQFROMNAVS_CHANGED

Parameter Type Description
Output INT OutputBinding ID
ENABLED 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.

Name

LOUDNESS_CHANGED

Parameter Type Description
OutputBindingID 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.

Name

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")

Navigator EQ Capabilities

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

Name

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Name

CANCEL ()

Parameters

None

Returns

None

CONNECT_OUTPUT

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

Name

CONNECT OUTPUT ()

Parameter Type Description
Output Binding ID int Optional. Output Binding ID - should be in the BindingID range in the usage note below.
PATH DEV LIST str Value of the devices directly upstream in the AV path.

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.

Name

DASH ()

Parameter

None

Returns

None

DISCONNECT_OUTPUT

Disconnect (turn off) selected output on device.

Name

DISCONNECT_OUTPUT ()

Parameter Type Description
Output Binding ID int Optional. Output Binding ID - should be in the BindingID range in the usage note below.
PREV DEV LIST str Value of the device directly upstream in the AV path.

Returns

None

EMIT_CODE

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

Name

EMIT_CODE ()

Parameter Type Description
ID STR ID OF IR Code

Returns

None

EMIT_MACRO

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

Name

EMIT_MACRO ()

Parameter Type Description
NAME STR MacroCodeName

Returns

None

GET_AUDIO_INPUTS

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

Name

GET_AUDIO_INPUTS ()

Parameters

None

Returns

None

HYPHEN

Pulse ‘-’ button

Name

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Name

INFO ()

Parameters

None

Returns

None

LOUDNESS_OFF

Turn loudness off.

Name

LOUDNESS_OFF ()

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

LOUDNESS_ON

Turn loudness on.

Name

LOUDNESS_ON ()

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

LOUDNESS_TOGGLE

Toggle loudness on/off.

Name

LOUDNESS_TOGGLE ()

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

MUTE_OFF

Turn muting off.

Name

MUTE_OFF ()

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

MUTE_ON

Turn muting on.

Name

MUTE_ON ()

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

MUTE_TOGGLE

Toggle muting on/off.

Name

MUTE_TOGGLE ()

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

NUMBER_0

Pulse ‘0’ button

Name

Number_0 ()

Parameters

None

Returns

None

NUMBER_1

Pulse ‘1’ button

Name

Number_1 ()

Parameters

None

Returns

None

NUMBER_2

Pulse ‘2’ button

Name

Number_2 ()

Parameters

None

Returns

None

NUMBER_3

Pulse ‘3’ button

Name

Number_3 ()

Parameters

None

Returns

None

NUMBER_4

Pulse ‘4’ button

NameSignature

Number_4 ()

Parameters

None

Returns

None

NUMBER_5

Pulse ‘5’ button

Name

Number_5 ()

Parameters

None

Returns

None

NUMBER_6

Pulse ‘6’ button

Name

Number_6 ()

Parameters

None

Returns

None

NUMBER_7

Pulse ‘7’ button

Name

Number_7 ()

Parameters

None

Returns

None

NUMBER_8

Pulse ‘8’ button

Name

Number_8 ()

Parameters

None

Returns

None

NUMBER_9

Pulse ‘9’ button

Name

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Name

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.

Name

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

Name

POUND ()

Parameters

None

Returns

None

PULSE_BALANCE_DOWN

Pulse balance down (Left)

Name

PULSE_BALNCE_DOWN ()

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

PULSE_BALANCE_UP

Pulse balance up (Right)

Name

PULSE_BALNCE_UP ()

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

PULSE_BASS_DOWN

Pulse bass down (Left)

Name

PULSE_BASS_DOWN ()

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

PULSE_BASS_UP

Pulse bass up (Right)

Name

PULSE_BASS_UP ()

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

PULSE_INPUT

Toggle (cycle through) input selection on device.

Name

PULSE_INPUT

Parameters

None

Returns

None

PULSE_SUR_UP

Toggle (cycle through) surround mode presets on device.

Name

PULSE_SUR_UP

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

PULSE_VOL_DOWN

Pulse volume level down.

Name

PULSE_VOL_DOWN

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

PULSE_VOL_UP

Pulse volume level up.

Name

PULSE_VOL_UP

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

PULSE_TREBLE_DOWN

Pulse treble down.

Name

PULSE_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

PULSE_TREBLE_UP

Pulse treble up.

Name

PULSE_TREBLE_UP ()

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

RECALL

Pulse Recall button

Name

RECALL ()

Parameters

None

Returns

None

SET_BALANCE

Set balance to a specified position.

Name

SET_BALANCE ()

Parameter Type Description
LEVEL INT Balance Level
OUTPUT INT Output BindingID

Returns

None

SET_BALANCE_UP

Set balance to a specified position.

Name

SET_BALANCE_UP ()

Parameter Type Description
LEVEL INT Balance Level
OUTPUT INT Output BindingID

Returns

None

SET_BASS_LEVEL

Set bass to a specified level.

Name

SET_BASS_LEVEL

Parameter Type Description
OUTPUT INT Output BindingID

Returns

None

SET_DIGI_OFF

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

Name

SET_DIGI_OFF ()

Parameters

None

Returns

None

SET_DIGI_ON

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

Name

SET_DIGI_ON ()

Parameters

None

Returns

None

SET_INPUT

Specify input selection of device.

Name

SET_INPUT ()

Parameter Type Description
Input Binding ID int Binding ID in the BindingID range below.
PREV DEV LIST str Value of the device directly upstream in the AV path.
Output Binding ID int Optional. Output Binding ID - should be in the BindingID range in the usage note below.

Returns

None

Usage Note

SET_LOUDNESS

Turn loudness on.

Name

SET_LOUDNESS ()

Parameter Type Description
INPUT INT Input Binding ID - should be in the BindingID range below.
OUTPUT INT Output Binding ID

Returns

None

SET_OUTPUT_INPUT

Specify input and output selection of device.

Name

SET_OUTPUT_INPUT ()

Parameter Type Description
INPUT INT Input Binding ID - should be in the BindingID range below.
OUTPUT INT Output Binding ID

Returns

None

SET_SURROUND_MODE

Select specified surround mode preset on device.

Name

SET_SURROUND_MODE ()

Parameter Type Description
SURROUND\_MODE INT Surround Mode preset value.
OUTPUT INT Output Binding ID

Returns

None

SET_TREBLE_LEVEL

Set treble to a specified level.

Name

SET_TREBLE_LEVEL ()

Parameter Type Description
LEVEL INT Treble Level
OUTPUT INT Output Binding ID

Returns

None

SET_UP_DOWN_SWAP

Swap page UP/DOWN buttons (used by AVGen)

Name

SET_UP_DOWN_SWAP ()

Parameter Type Description
SWAPFLAG BOOL Swap page UP/DOWN buttons (used by AVGen). TRUE to enable swap, FALSE to disable.

Returns

None

STOP_VOL_DOWN

Stop ramping volume down.

Name

SET_VOL_DOWN ()

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

SET_VOLUME_LEVEL

Set volume to a specified level.

Name

SET_VOLUME_LEVEL () 

Parameter Description
int Level
int Output Binding ID

Returns

None

STAR

Pulse button

Name

STAR ()

Parameters

None

Returns

None

START_BALANCE_DOWN

Start ramping balance down (left).

Name

START_BALANCE_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

START_BASS_DOWN

Start ramping bass down.

Name

START_BASS_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

START_BASS_UP

Start ramping bass up.

Name

START_BASS_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

START_TREBLE_DOWN

Start ramping treble down.

Name

START_TREBLE_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

START_TREBLE_UP

Start ramping treble up.

Name

START_TREBLE_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

START_VOL_DOWN

Start ramping volume down.

Name

START_TREBLE_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

START_VOL_UP

Start ramping volume up.

Name

START_VOL_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

STOP_BALANCE_DOWN

Start ramping balance.

Name

STOP_BALANCE_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

STOP_BASS_DOWN

Stop ramping bass

Name

STOP_BALANCE_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

STOP_BASS_DOWN

Stop ramping bass

Name

STOP_BASS_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

STOP_BASS_UP

Stop ramping bass

Name

STOP_BASS_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

STOP_TREBLE_DOWN

Stop ramping the treble down

Name

STOP_TREBLE_DOWN ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

STOP_TREBLE_UP

Stop ramping the treble up.

Name

STOP_TREBLE_UP ()

Parameter Type Description
OUTPUT INT Output Binding ID

Returns

None

STOP_VOL_DOWN

Stop ramping the volume down

Name

STOP_VOL_DOWN ()

Parameter Type Description
OUTPUT 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.

Name

DISC_CHANGED ()

Parameter Type Description
DISC_NUMBER INT Number of Disc

Returns

None

OFF

Device has turned Off.

Name

OFF ()

Parameter

None

Returns

None

ON

Device has turned On.

Name

ON ()

Parameter

None

Returns

None

PAUSE

Device is paused.

Name

PAUSE ()

Parameter

None

Returns

None

PLAY

Device has entered a playback state.

Name

PLAY ()

Parameter

None

Returns

None

STOP

Device has entered a stopped state.

Name

STOP ()

Parameter

None

Returns

None

TRACK_CHANGED

Selected track has changed.

Name

TRACK_CHANGED ()

Parameter Type Description
TRACK_NUMBER INT Number of Track

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

Name

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Name

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Name

DASH ()

Parameters

None

Returns

None

DOWN

Pulse down navigation.

Name

DOWN ()

Parameters

None

Returns

None

EJECT

Eject disc.

Name

EJECT ()

Parameters

None

Returns

None

EMIT_CODE

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

Name

EMIT_CODE ()

Parameter Type Description
NAME STR Emit IR/Serial code macro specified by the macro name.

Returns

None

EMIT_MACRO

Emit IR/Serial code macro specified by the macro name.

Name

EMIT_MACRO ()

Parameter Type Description
NAME STR Macro Code Name

Returns

None

ENTER

Navigate Enter key

Name

Enter ()

Parameters

None

Returns

None

GO_TO_DISC

Select specified disc.

Name

GO_TO_DISC ()

Parameter Type Description
DISC_NUMBER INT Number of Disc

Returns

None

GO_TO_DISC_TRACK

Select specified disc and track.

Name

GO_TO_DISC_TRACK ()

Parameter Type Description
DISC_NUMBER INT Number of Disc
DISC_TRACK INT Number of Track

Returns

None

GO_TO_TRACK

Select specified track.

Name

GO_TO_TRACK ()

Parameter Type Description
DISC_TRACK INT Number of Track

Returns

None

HYPHEN

Pulse ‘-’ button

Name

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Name

INFO ()

Parameters

None

Returns

None

LEFT

Pulse left navigation.

Name

LEFT ()

Parameters

None

Returns

None

MENU

Navigate menu.

Name

MENU ()

Parameters

None

Returns

None

NUMBER_0

Pulse ‘0’ button

Name

Number_0 ()

Parameters

None

Returns

None

NUMBER_1

Pulse ‘1’ button

Name

Number_1 ()

Parameters

None

Returns

None

NUMBER_2

Pulse ‘2’ button

Name

Number_2 ()

Parameters

None

Returns

None

NUMBER_3

Pulse ‘3’ button

Name

Number_3 ()

Parameters

None

Returns

None

NUMBER_4

Pulse ‘4’ button

Name

Number_4 ()

Parameters

None

Returns

None

NUMBER_5

Pulse ‘5’ button

Name

Number_5 ()

Parameters

None

Returns

None

NUMBER_6

Pulse ‘6’ button

Name

Number_6 ()

Parameters

None

Returns

None

NUMBER_7

Pulse ‘7’ button

Name

Number_7 ()

Parameters

None

Returns

None

NUMBER_8

Pulse ‘8’ button

Name

Number_8 ()

Parameters

None

Returns

None

NUMBER_9

Pulse ‘9’ button

Name

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Name

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.

Name

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.

Name

OPEN_CLOSE ()

Parameters

None

Returns

None

PAGE_DOWN

Pulse menu Page down.

Name

PAGE_DOWN ()

Parameters

None

Returns

None

PAGE _UP

Pulse menu Page up.

Name

PAGE_UP ()

Parameters

None

Returns

None

PLAY

Place device in a playback state.

Name

PLAY ()

Parameters

None

Returns

None

PAUSE

Place device in stop state.

Name

PAUSE ()

Parameters

None

Returns

None

POUND

Pulse # button.

Name

POUND ()

Parameters

None

Returns

None

RECALL

Pulse the recall button.

Name

RECALL ()

Parameters

None

Returns

None

RIGHT

Pulse right navigation button.

Name

RIGHT ()

Parameters

None

Returns

None

SCAN_FWD

Pulse/scan forward within track/chapter.

Name

SCAN_FWD ()

Parameters

None

Returns

None

SCAN_REV

Pulse scan reverse within track/chapter.

Name

SCAN_REV ()

Parameters

None

Returns

None

SET_UP_DOWN_SWAP

Swap page UP/DOWN buttons (used by AVGen). TRUE to enable swap, FALSE to disable.

Name

POUND ()

Parameter Type Description
SWAPFLAG BOOL True/False

Returns

None

SKIP_FWD

Advance to next track/chapter.

Name

SKIP_FWD ()

Parameters

None

Returns

None

SKIP_REV

Seek to previous track/chapter.

Name

SKIP_REV ()

Parameters

None

Returns

None

STAR

Pulse * button.

Name

STAR ()

Parameters

None

Returns

None

START_DOWN

Initiate down arrow navigation.

Name

START_DOWN ()

Parameters

None

Returns

None

START_LEFT

Pulse left navigation.

Name

START_LEFT ()

Parameters

None

Returns

None

START_PAGE_DOWN

Start menu Page down.

Name

START_PAGE_DOWN ()

Parameters

None

Returns

None

START_PAGE_UP

Start menu Page up.

Name

START_PAGE_UP ()

Parameters

None

Returns

None

START_PAGE_RIGHT

Initiate right-arrow navigation.

Name

START_RIGHT ()

Parameters

None

Returns

None

START_SCAN_FWD

Initiate scan forward within track/chapter.

Name

START_SCAN_FWD ()

Parameters

None

Returns

None

START_SCAN_REV

Initiate scan forward within track/chapter.

Name

START_SCAN_REV ()

Parameters

None

Returns

None

START_UP

Initiate up-arrow navigation.

Name

START_UP ()

Parameters

None

Returns

None

STOP

Place device in stop state.

Name

STOP ()

Parameters

None

Returns

None

STOP_SCAN_FWD

Terminate scan forward within track/chapter.

Name

STOP_SCAN_FWD ()

Parameters

None

Returns

None

STOP_SCAN_REV

Terminate reverse scan within track/chapter.

Name

STOP_SCAN_REV ()

Parameters

None

Returns

None

STOP_PAGE_DOWN

Stop menu page down.

Name

STOP_PAGE_DOWN ()

Parameters

None

Returns

None

STOP_DOWN

Terminate down-arrow navigation.

Name

STOP_DOWN ()

Parameters

None

Returns

None

STOP_UP

Stop menu Page down.

Name

STOP_UP ()

Parameters

None

Returns

None

STOP_LEFT

Terminate left navigation.

Name

STOP_LEFT ()

Parameters

None

Returns

None

STOP_PAGE UP

Stop menu page up.

Name

STOP_PAGE_UP ()

Parameters

None

Returns

None

STOP_RIGHT

Terminate RIGHT navigation.

Name

STOP_RIGHT ()

Parameters

None

Returns

None

TV_VIDEO

Toggle TV/video input.

Name

TV_VIDEO ()

Parameters

None

Returns

None

UP

Pulse up navigation.

Name

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.

Name

DISC_CHANGED ()

Parameter Type Description
DiscNumber INT Disc Number

Returns

None

OFF

Device has turned Off.

Name

OFF ()

Parameter

None

Returns

None

ON

Device has turned On.

Name

ON ()

Parameter

None

Returns

None

PAUSE

Device is paused.

Name

PAUSE ()

Parameter

None

Returns

None

PLAY

Device has entered a playback state.

Name

PLAY ()

Parameter

None

Returns

None

STOP

Device has entered a stopped state.

Name

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.

Name

TOC ()

Parameter

Parameter Type Description
INDEX INT Index of the disc being scanned
DISCTYPE STR ‘cd’ for CD or ‘dvd’ for DVD
DATA XML table of contents

Returns

None

TRACK_CHANGED

Selected track has changed.

Name

TRACK_CHANGED ()

Parameter Type Description
DiscNumber 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

Name

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Name

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Name

DASH ()

Parameter

None

Returns

None

DOWN

Pulse down navigation.

Name

DOWN ()

Parameters

None

Returns

None

EJECT

Eject disc/tape.

Name

EJECT ()

Parameters

None

Returns

None

EMIT_CODE

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

Name

EMIT_CODE ()

Parameter Type Description
IRCodeID INT ID OF IR Code

Returns

None

EMIT_MACRO

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

Name

EMIT_MACRO ()

Parameter Type Description
MacroCodeNam STR Macro Code Name

Returns

None

ENTER

Navigate Enter key

Name

Enter ()

Parameters

None

Returns

None

GO_TO_DISC_TRACK

Select specified disc and track.

Name

GO_TO_DISC_TRACK ()

Parameter Type Description
DiscNumber INT Disc Number
TrackNUMBER INT Track Number

Returns

None

GO_TO_TRACK

Select specified track.

Name

GO_TO_TRACK ()

Parameter Type Description
TrackNUMBER INT Track Number

Returns

None

HYPHEN

Pulse ‘-’ button

Name

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Name

INFO ()

Parameters

None

Returns

None

LEFT

Pulse left navigation.

Name

LEFT ()

Parameters

None

Returns

None

MENU

Navigate menu.

Name

MENU ()

Parameters

None

Returns

None

NUMBER_0

Pulse ‘0’ button

Name

Number_0 ()

Parameters

None

Returns

None

NUMBER_1

Pulse ‘1’ button

S Name

Number_1 ()

Parameters

None

Returns

None

NUMBER_2

Pulse ‘2’ button

Name

Number_2 ()

Parameters

None

Returns

None

NUMBER_3

Pulse ‘3’ button

Name

Number_3 ()

Parameters

None

Returns

None

NUMBER_4

Pulse ‘4’ button

Name

Number_4 ()

Parameters

None

Returns

None

NUMBER_5

Pulse ‘5’ button

Name

Number_5 ()

Parameters

None

Returns

None

NUMBER_6

Pulse ‘6’ button

Name

Number_6 ()

Parameters

None

Returns

None

NUMBER_7

Pulse ‘7’ button

Name

Number_7 ()

Parameters

None

Returns

None

NUMBER_8

Pulse ‘8’ button

Name

Number_8 ()

Parameters

None

Returns

None

NUMBER_9

Pulse ‘9’ button

Name

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Name

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.

Name

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.

Name

OPEN_CLOSE ()

Parameters

None

Returns

None

PAUSE

Place device in stop state.

Name

PAUSE ()

Parameters

None

Returns

None

PAGE_DOWN

Pulse menu Page down.

Name

PAGE_DOWN ()

Parameters

None

Returns

None

PAGE_UP

Pulse menu Page up.

Name

PAGE_UP ()

Parameters

None

Returns

None

PLAY

Place device in a playback state.

Name

PLAY ()

Parameters

None

Returns

None

POUND

Pulse # button.

Name

POUND ()

Parameters

None

Returns

None

Pulse_Aspect_Ratio

Toggle (cycle though) aspect ratio.

Name

PULSE_ASPECT_RATIO ()

Parameters

None

Returns

None

RECALL

Pulse Recall button.

Name

RECALL ()

Parameters

None

Returns

None

RIGHT

Pulse Right Navigation button.

Name

RIGHT ()

Parameters

None

Returns

None

SCAN_FWD

Pulse/scan forward within track/chapter.

Name

SCAN_FWD ()

Parameters

None

Returns

None

SCAN_REV

Pulse scan reverse within track/chapter.

Name

SCAN_REV ()

Parameters

None

Returns

None

SKIP_FWD

Advance to next track/chapter.

Name

CSKIP_FWD ()

Parameters

None

Returns

None

SKIP_REV

Seek to previous track/chapter.

Name

SKIP_REV ()

Parameters

None

Returns

None

SET_UP_DOWN_SWAP

Swap page UP/DOWN buttons.

Name

SET_UP_DOWN_SWAP ()

Parameter Type Description
SWAPFLAG BOOL Ability to swap page buttons.

Returns

None

STAR

Pulse * button.

Name

STAR ()

Parameters

None

Returns

None

START_DOWN

Initiate down arrow navigation.

Name

START_DOWN ()

Parameters

None

Returns

None

START_LEFT

Pulse left navigation.

Name

START_LEFT ()

Parameters

None

Returns

None

START_PAGE_DOWN

Start menu Page down.

Name

START_PAGE_DOWN ()

Parameters

None

Returns

None

START_PAGE_UP

Start menu Page up.

Name

START_PAGE_UP ()

Parameters

None

Returns

None

START_PAGE_RIGHT

Initiate right-arrow navigation.

Name

START_RIGHT ()

Parameters

None

Returns

None`

STAR _SCAN_FWD

Initiate scan forward within track/chapter.

Name

START_SCAN_FWD ()

Parameters

None

Returns

None

START_SCAN_REV

Initiate scan backwards within track/chapter.

Name

START_SCAN_REV ()

Parameters

None

Returns

None

START_UP

Initiate up-arrow navigation.

Name

START_UP ()

Parameters

None

Returns

None

STOP

Place device in stop state.

Name

STOP ()

Parameters

None

Returns

None

STOP_LEFT

Terminate left navigation.

Name

STOP_LEFT ()

Parameters

None

Returns

None

STOP_PAGE_DOWN

Stop menu page down.

Name

STOP_PAGE_DOWN ()

Parameters

None

Returns

None

STOP_DOWN

Terminate down-arrow navigation.

Name

STOP_DOWN ()

Parameters

None

Returns

None

STOP _PAGE _DOWN

Stop menu page up.

Name

STOP_PAGE_UP ()

Parameters

None

Returns

None

STOP _RIGHT

Terminate RIGHT navigation.

Name

STOP_RIGHT ()

Parameters

None

Returns

None

STOP _SCAN _FWD

Terminate scan forward within track/chapter.

Name

STOP_SCAN_FWD ()

Parameters

None

Returns

None

STOP _SCAN _REV

Terminate reverse scan within track/chapter.

Name

STOP_SCAN_REV ()

Parameters

None

Returns

None

STOP _UP

Stop menu Page down.

Name

STOP_UP ()

Parameters

None

Returns

None

TV _VIDEO

Toggle TV/video input.

Name

TV_VIDEO ()

Parameters

None

Returns

None

UP

Pulse up navigation.

Name

CUP ()

Parameters

None

Returns

None

UPDATE _PROGRESS _SCAN _MEDIA

Notification of the progress of the current media scan

Signature

UPDATE_PROGRESS_SCAN_MEDIA ()

Parameter Type Description
TOTAL COUNT NUM Total number of discs to be scanned.
CURRENT INDEX Num How many currently have been scanned.

Returns

None

GO_TO_DISC

Select specified disc.

Name

GO_TO_DISC ()

Parameter Type Description
DiscNumber INT Disc Number

Returns

None

DVD Player Protocol Notifications

DISC_CHANGED

Selected disc has changed.

Name

DISC_CHANGED ()

Parameter Type Description
DiscNumber INT Disc Number

Returns

None

OFF

Device has turned Off.

Name

OFF ()

Parameter

None

Returns

None

ON

Device has turned On.

Name

ON ()

Parameter

None

Returns

None

PAUSE

Device is paused.

Name

PAUSE ()

Parameter

None

Returns

None

PLAY

Device has entered a playback state.

Name

PLAY ()

Parameter

None

Returns

None

STOP

Device has entered a stopped state.

Name

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.

Name

TOC ()

Parameter

Parameter Type Description
INDEX INT Index of the disc being scanned
DISCTYPE STR ‘cd’ for CD or ‘dvd’ for DVD
DATA XML table of contents

Returns

None

TRACK_CHANGED

Selected track has changed.

Name

TRACK_CHANGED ()

Parameter Type Description
DiscNumber 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

Name

LIST_TYPE_CHANGED ()

Parameter Type Description
listtype STR Watch or Listen

MEDIA_INFO_CHANGED

Notification indicating that the media information has changed in the GenericMediaPlayer.

Name

MEDIA_INFO_CHNAGED ()

Parameter Type Description
media info 1 STR Media Information
media info 2 STR Media Information
media info 3 STR Media Information

MEDIA\ LABELS_CHANGED

Notification indicating that the online status of the GenericMediaPlayer has changed.

Name

MEDIA_LABELS_CHNAGED ()

Parameter Type Description
media labels STR Media label Info

ONLINE_STATUS_CHANGED

Notification indicating that the online status of the GenericMediaPlayer has changed.

Name

ONLINE_STATUS_CHNAGED ()

Parameter Type Description
online status STR Online Status Information

PLAY_STATUS_CHANGED

Notification indicating that the playback status of the GenericMediaPlayer has changed.

Name

PLAY_STATUS_CHNAGED ()

Parameter Type Description
play status STR Play status information.

QUEUE_PROGRESS_CHANGED

Notification indicating that the queue progress of the GenericMediaPlayer has changed.

Name

QUEUE_PROGRESSS_CHNAGED ()

Parameter Type Description
current STR Status Information
total STR Total in queue.

REPEAT_CHANGED

Notification indicating that the repeat mode of the GenericMediaPlayer has changed.

Name

REPEAT_CHNAGED ()

Parameter Type Description
repeat mode STR New repeat mode.

REPEAT_MODES_CHANGED

Notification indicating that the available repeat modes of the GenericMediaPlayer have changed.

Name

REPEAT_MODES_CHNAGED ()

Parameter Type Description
repeat modes STR New repeat modes.

SET_REPEAT_MODES

Notification indicating that the available repeat modes of the GenericMediaPlayer have changed.

Name

SET_REPEAT_MODES ()

Parameter Type Description
repeat modes STR Changed Modes

SHUFFLE_CHANGED

Notification indicating that the shuffle mode of the GenericMediaPlayer has changed.

Name

SHUFFLE_CHANGED ()

Parameter Type Description
shuffle mode STR Shuffle Mode

SHUFFLE_MODES_CHANGED

Notification indicating that the available shuffle modes of the GenericMediaPlayer have changed.

Name

SHUFFLE_MODES_CHANGED ()

Parameter Type Description
shuffle modes STR 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.

Name

GET_ALPHA_LOOKUP ()

Parameter Type Description
LETTER STR Letter used for Index
ROOMID INT Room ID value

SendToProxy

<alpha_lookup>

GET_LIST

Command to obtain the current list.

Name

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.

Name

GET_NEXT ()

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

SendToProxy

<list>

GET_MENU

Command to obtain the list of items in the menu.

Name

GET_MENU ()

Parameters

None

SendToProxy

<menu_list>

GET_REPEAT_MODES

Command to set the available repeat modes in the GenericMediaPlayer.

Name

GET_REPEAT_MODES ()

Parameter Type Description
repeat modes STR Repeat modes.

SendToProxy

<rtepeat_modes>

GET_SHUFFLE_MODES

Command to obtain supported repeat modes.

Name

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.

Name

LIST_SELECT ()

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

SendToProxy

<list>

MENU_SELECT

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

Name

MENU_SELECT ()

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

SendToProxy

None

PAUSE

Command to pause media playback on the GenericMediaPlayer.

Name

PAUSE ()

Parameters

None

SendToProxy

None

PLAY

Command to start media playback.

Name

PLAY ()

Parameters

None

SendToProxy

None

PLAYPAUSE

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

Name

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.

Name

RESET ()

Parameter Type Description
TYPE STR The new media type tp be shown

SendToProxy

None

SCAN_FWD

Command to scan forward through current media.

Name

SCAN_FWD ()

Parameters

None

SendToProxy

None

SCAN_REV

Command to scan backwards through current media.

Name

SCAN_REV ()

Parameters

None

SendToProxy

None

Command to filter items based on the search string.

Name

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.

Name

SELECT_PLAY ()

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

SendToProxy

None

SET_REPEAT

Command to set the repeat mode on the GenericMediaPlayer.

Name

SELECT_REPEAT ()

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

SendToProxy

None

SET_SHUFFLE_MODES

Command to set the available shuffle modes in the GenericMediaPlayer.

Name

SELECT_SHUFFLE_MODES ()

Parameter Type Description
shuffle modes STR One of the modes returned with the <shuffle_modes> tag

SendToProxy

None

SKIP_FWD

Command that starts playback of the next media item.

Name

SKIP_FWD ()

Parameters

None

SendToProxy

None

SKIP_REV

Command that starts playback of the previous media item.

Name

SKIP_REV ()

Parameters

None

SendToProxy

None

START_SCAN_FWD

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

Name

START_SCAN_FWD ()

Parameters

None

SendToProxy

None

START_SCAN_REV

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

Name

START_SCAN_REV ()

Parameters

None

SendToProxy

None

STOP

Command to stop media playback.

Name

STOP ()

Parameters

None

SendToProxy

None

STOP_SCAN_FWD

Command to stop scanning forward through the current media.

Name

STOP_SCAN_FWD ()

Parameters

None

SendToProxy

None

STOP_SCAN_REV

Command to stop scanning backward through the current media.

Name

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

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>

allow_audio_pathing

This capability is applicable in the scenario where the AV Switch proxy is included as a secondary proxy to the Generic Media Player Proxy. This is useful when modeling streaming media devices that require minidrivers. Prior to O.S. 3.4.0, the Generic Media Proxy could not successfully pass audio paths when bound to the AV Switch Proxy. Setting this capability to True allow for audio pathing through the Generic Media Player to the AV Switch Proxy.

Signature

<allow_audio_pathing></allow_audio_pathing>

Parameter Description
bool true/false

Returns

None

Example

<capabilities>
   <allow_audio_pathing>true</allow_audio_pathing>
</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

Name

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Name

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Name

DASH ()

Parameter

None

Returns

None

DOWN

Pulse down navigation.

Name

DOWN ()

Parameters

None

Returns

None

EJECT

Eject disc/tape.

Name

EJECT ()

Parameters

None

Returns

None

EMIT_CODE

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

Name

EMIT_CODE ()

Parameter Type Description
IRCodeID INT ID OF IR Code

Returns

None

EMIT_MACRO

Emit IR/Serial code macro.

Name

EMIT_MACRO ()

Parameter Type Description
MacroCodeName STR Macro Code Name

Returns

None

ENTER

Navigate Enter key

Name

Enter ()

Parameters

None

Returns

None

GO_TO_DISC

Select specified disc.

Name

GO_TO_DISC ()

Parameter Type Description
DiscNUMBER INT Disc Number

Returns

None

GO_TO_DISC_TRACK

Select specified disc and track.

Name

GO_TO_DISC_TRACK ()

Parameter Type Description
DiscNUMBER INT Disc Number
TrackNUMBER INT Track Number

Returns

None

GO_TO_TRACK

Select specified track.

Name

GO_TO_TRACK ()

Parameter Type Description
TrackNUMBER INT Track Number

Returns

None

GUIDE

Navigate Guide key.

Name

GUIDE ()

Parameters

None

Returns

None

HYPHEN

Pulse ‘-’ button

Name

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Name

INFO ()

Parameters

None

Returns

None

LEFT

Pulse left navigation.

Name

LEFT ()

Parameters

None

Returns

None

MENU

Navigate menu.

Name

MENU ()

Parameters

None

Returns

None

NUMBER_0

Pulse ‘0’ button

Name

Number_0 ()

Parameters

None

Returns

None

NUMBER_1

Pulse ‘1’ button

Name

Number_1 ()

Parameters

None

Returns

None

NUMBER_2

Pulse ‘2’ button

Name

Number_2 ()

Parameters

None

Returns

None

NUMBER_3

Pulse ‘3’ button

Name

Number_3 ()

Parameters

None

Returns

None

NUMBER _4

Pulse ‘4’ button

Name

Number_4 ()

Parameters

None

Returns

None

NUMBER_5

Pulse ‘5’ button

Name

Number_5 ()

Parameters

None

Returns

None

NUMBER6

Pulse ‘6’ button

Name

Number_6 ()

Parameters

None

Returns

None

NUMBER_7

Pulse ‘7’ button

Name

Number_7 ()

Parameters

None

Returns

None

NUMBER_8

Pulse ‘8’ button

Name

Number_8 ()

Parameters

None

Returns

None

NUMBER_9

Pulse ‘9’ button

Name

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Name

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.

Name

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.

Name

OPEN_CLOSE ()

Parameters

None

Returns

None

PAGE_DOWN

Pulse menu Page down.

Name

PAGE_DOWN ()

Parameters

None

Returns

None

PAGE_UP

Pulse menu Page up.

Name

PAGE_UP ()

Parameters

None

Returns

None

PAUSE

Place device in stop state.

Name

PAUSE ()

Parameters

None

Returns

None

PLAY

Place device in a playback state.

Name

PLAY ()

Parameters

None

Returns

None

POUND

Pulse # button.

Name

POUND ()

Parameters

None

Returns

None

PULSE_ASPECT_RATIO

Toggle (cycle though) aspect ratio.

Name

PULSE_ASPECT_RATIO ()

Parameters

None

Returns

None

PVR

Pulse PVR button.

Name

PVR ()

Parameters

None

Returns

None

RECALL

Pulse Recall button.

Name

RECALL ()

Parameters

None

Returns

None

RIGHT

Pulse right navigation button.

Name

RIGHT ()

Parameters

None

Returns

None

SCAN_FWD

Pulse/scan forward within track/chapter.

Name

SCAN_FWD ()

Parameters

None

Returns

None

SCAN_REV

Pulse scan reverse within track/chapter.

Name

SCAN_REV ()

Parameters

None

Returns

None

SET_UP_DOWN_SWAP

Swap page UP/DOWN buttons (used by AVGen)

Name

SET_UP_DOWN_SWAP ()

Parameter Type Description
SWAPFLAG BOOL Ability to swap UP/DOWN buttons.

Returns

None

SKIP_FWD

Advance to next track/chapter.

Name

SKIP_FWD ()

Parameters

None

Returns

None

SKIP_REV

Seek to previous track/chapter.

Name

SKIP_REV ()

Parameters

None

Returns

None

STAR

Pulse * button.

Name

STAR ()

Parameters

None

Returns

None

START_DOWN

Initiate down arrow navigation.

Name

START_DOWN ()

Parameters

None

Returns

None

START_LEFT

Pulse left navigation.

Name e

START_LEFT ()

Parameters

None

Returns

None

START_PAGE_DOWN

Start menu Page down.

Name

START_PAGE_DOWN ()

Parameters

None

Returns

None

START_PAGE_UP

Start menu Page up.

Name

START_PAGE_UP ()

Parameters

None

Returns

None

START_PAGE_RIGHT

Initiate right-arrow navigation.

Name

START_RIGHT ()

Parameters

None

Returns

None

START_SCAN_FWD

Initiate scan forward within track/chapter.

Name

START_SCAN_FWD ()

Parameters

None

Returns

None

START_SCAN_REV

Initiate scan forward within track/chapter.

Name

START_SCAN_REV ()

Parameters

None

Returns

None

START_UP

Initiate up-arrow navigation.

Name

START_UP ()

Parameters

None

Returns

None

STOP

Place device in stop state.

Name

STOP ()

Parameters

None

Returns

None

STOP_DOWN

Terminate down-arrow navigation.

Name

STOP_DOWN ()

Parameters

None

Returns

None

STOP_LEFT

Terminate left navigation.

Name

STOP_LEFT ()

Parameters

None

Returns

None

STOP_PAGE_DOWN

Stop menu page down.

Name

STOP_PAGE_DOWN ()

Parameters

None

Returns

None

STOP_PAGE_UP

Stop menu page up.

Name

STOP_PAGE_UP ()

Parameters

None

Returns

None

STOP_RIGHT

Terminate RIGHT navigation.

Name

STOP_RIGHT ()

Parameters

None

Returns

None

STOP_SCAN_FWD

Terminate scan forward within track/chapter.

Name

STOP_SCAN_FWD ()

Parameters

None

Returns

None

STOP_SCAN_REV

Terminate reverse scan within track/chapter.

Name

STOP_SCAN_REV ()

Parameters

None

Returns

None

STOP_UP

Stop menu Page up.

Name

STOP_UP ()

Parameters

None

Returns

None

TV_VIDEO

Toggle TV/video input.

Signature

TV_VIDEO ()

Parameters

None

Returns

None

UP

Pulse up navigation.

Name

UP ()

Parameters

None

Returns

None

Projector Protocol Notifications

AUDIO_PARAMETER_CHANGED

Audio parameter has changed

Name

AUDIO_PARAMETER_CHANGED ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

BALANCE_LEVEL_CHANGED

Selected balance level has changed.

Name

BALANCE_LEVEL_CHANGED ()

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

Returns

None

BASS_LEVEL_CHANGED

Selected bass level has changed

Name

BASS_LEVEL_CHANGED ()

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

Returns

None

CHANNEL_CHANGED

Selected channel has changed

Name

CHANNEL_CHANGED ()

Parameter Type Description
ChannelNumnber INT Channel value
OutputBindingID 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 source has changed.

Name

INPUT_CHANGED ()

Parameter Type Description
INPUT INT INPUT

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.

Name

LOUDNESS_CHANGED ()

Parameter Type Description
LOUDNESS BOOL True/False

Returns

None

MUTE_CHANGED

MUTE state (On/Off) has changed.

Name

MUTE_CHANGED ()

Parameter Type Description
MUTE BOOL True/False

Returns

None

OFF

Device has turned off.

Name

OFF ()

Parameter

None

Returns

None

ON

Device has turned on.

Name

ON ()

Parameter

None

Returns

None

TREBLE_LEVE _CHANGED

Selected treble level has changed.

Name

TREBLE_LEVEL_CHANGED ()

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

Returns

None

VOLUME_LEVEL_CHANGED

Selected volume level has changed.

Name

VOLUME_LEVEL_CHANGED ()

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

Returns

None

Projector Proxy Commands

BACK

Pulse Back button

Name

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Name

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Name

DASH ()

Parameter

None

Returns

None

DISCONNECT_OUTPUT

Disconnect (turn off) selected output on device.

Name

DISCONNECT_OUTPUT ()

Parameter Type Description
Output Binding ID int Optional. Output Binding ID - should be in the BindingID range in the usage note below.
PATH DEV LIST str Value of the devices directly upstream in the AV path.

Returns

None

EMIT_CODE

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

Name

EMIT_CODE ()

Parameter type Description
IRCodeID INT ID OF IR Code

Returns

None

EMIT_MACRO

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

Name

EMIT_MACRO ()

Parameter Type Description
MacroCodeName STR Macro Code Name

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.

Name

GET_DEFAULT_INPUT ()

Parameters

None

Returns

None

HYPHEN

Pulse ‘-’ button

Name

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Name

INFO ()

Parameters

None

Returns

None

LOUDNESS_OFF

Turn loudness off.

Name

LOUDNESS_OFF ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

LOUDNESS_ON

Turn loudness on.

Name

LOUDNESS_ON ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

LOUDNESS_TOGGLE

Toggle loudness on/off.

Name

LOUDNESS_TOGGLE ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

MUTE_OFF

Turn muting off.

Name

MUTE_OFF ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

MUTE_ON

Turn muting on.

Name

MUTE_ON ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

MUTE_TOGGLE

Toggle muting on/off.

Name

MUTE_TOGGLE ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

NUMBER_0

Pulse ‘0’ button

Name

Number_0 ()

Parameters

None

Returns

None

NUMBER_1

Pulse ‘1’ button

Name

Number_1 ()

Parameters

None

Returns

None

NUMBER_2

Pulse ‘2’ button

Name

Number_2 ()

Parameters

None

Returns

None

NUMBER_3

Pulse ‘3’ button

Name

Number_3 ()

Parameters

None

Returns

None

NUMBER_4

Pulse ‘4’ button

Name

Number_4 ()

Parameters

None

Returns

None

NUMBER_5

Pulse ‘5’ button

Name

Number_5 ()

Parameters

None

Returns

None

NUMBER_6

Pulse ‘6’ button

Name

Number_6 ()

Parameters

None

Returns

None

NUMBER_7

Pulse ‘7’ button

Name

Number_7 ()

Parameters

None

Returns

None

NUMBER_8

Pulse ‘8’ button

Name

Number_8 ()

Parameters

None

Returns

None

NUMBER_9

Pulse ‘9’ button

Name

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Name

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.

Name

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.

Name

PAGE_DOWN ()

Parameters

None

Returns

None

PAGE_UP

Pulse menu Page up.

Name

PAGE_UP ()

Parameters

None

Returns

None

PIP

Pulse menu PIP button..

Name

PIP ()

Parameter Type Description
MacroCodeName STR Macro Code Name

Returns

None

POUND

Pulse # button.

Name

POUND ()

Parameters

None

Returns

None

PRESET_DOWN

Toggle (cycle down) tuning preset.

Name

PRESET_DOWN ()

Parameters

None

Returns

None

PRESET_UP

Toggle (cycle UP) tuning preset.

Name

PRESET_UP ()

Parameters

None

Returns

None

PULSE_ASPECT_RATIO

Toggle (cycle though) aspect ratio.

Name

PULSE_ASPECT_RATIO ()

Parameters

None

Returns

None

PULSE_BALANCE_DOWN

Pulse balance down (Left)

Name

PULSE_BALNCE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_BALANCE_UP

Pulse balance up.

Name

PULSE_BALNCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

PULSE_BASS_DOWN

Pulse bass down (Left)

Name

PULSE_BASS_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_BASS_UP

Pulse bass up (Right)

Name

PULSE_BASS_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_CHANNEL_DOWN

Pulse channel value down.

Name

PULSE_CHANNEL_DOWN ()

Parameters

None

Returns

None

PULSE_CHANNEL_UP

Pulse channel value up.

Name

PULSE_CHANNEL_UP ()

Parameters

None

Returns

None

PULSE_INPUT

Toggle (cycle through) input selection on device.

Name

PULSE_INPUT

Parameters

None

Returns

None

PULSE_TREBLE_DOWN

Pulse treble down.

Name

PULSE_TREBLE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_TREBLE_UP

Pulse treble up.

Name

PULSE_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

PULSE_VOL_DOWN

Pulse volume level down.

Name

PULSE_VOL_DOWN

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_VOL_UP

Pulse volume level up.

Name

PULSE_VOL_UP

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PVR

Pulse PVR button.

Name

PVR ()

Parameters

None

Returns

None

RECALL

Pulse Recall button.

Name

RECALL ()

Parameters

None

Returns

None

SEARCH_DOWN

Pulse tuning search down

Name

SEARCH_DOWN ()

Parameters

None

Returns

None

SEARCH_UP

Pulse tuning search UP

Name

SEARCH_UP ()

Parameters

None

Returns

None

SET_BALANCE

Set balance to a specified position.

Name

SET_BALANCE ()

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

Returns

None

SET_BALANCE_UP

Set balance to a specified position.

Name

SET_BALANCE_UP ()

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

Returns

None

SET_BASS_LEVEL

Set bass to a specified level.

Name

SET_BASS_LEVEL

Parameter Type Description
Output INT Output Binding ID
LEVEL INT Bass Level

Returns

None

SET_DEFAULT_INPUT

Specify the default input selection of device.

Name

SET_DEAFULT_INPUT ()

Parameter Type Description
InputBindingID INT Input Binding ID - should be in the BindingID range below.
outputBindingID INT Optional. Output Binding ID - should be in the BindingID range below.

Returns

None

Usage Note

SET_INPUT

Specify the input selection of device.

Name

SET_INPUT ()

Parameter Type Description
Input Binding ID int Binding ID in the BindingID range below.
PREV DEV LIST str Value of the device directly upstream in the AV path.
Output Binding ID int Optional. Output Binding ID - should be in the BindingID range in the usage note below.

Returns

None

Usage Note

SET_LOUDNESS

Turn loudness on.

Name

SET_LOUDNESS ()

Parameter Typen Description
Level INT Level Value
OutputBindingID INT Output Binding ID

Returns

None

SET_PRESET

Select specified tuning preset.

Name

SET_PRESET ()

Parameter Type Description
PresetNum INT Preset Number

Returns

None

SET_TREBLE_LEVEL

Set treble to a specified level.

Name

SET_TREBLE_LEVEL ()

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

Returns

None

SET_UP_DOWN_SWAP

Swap page UP/DOWN buttons (used by AVGen). TRUE to enable swap, FALSE to disable.

Name

POUND ()

Parameter Type Description
SWAPFLAG BOOL Ability to swap UP/DOWN buttons.

Returns

None

SET_VOLUME_LEVEL

Set volume to a specified level.

Name

SET_VOLUME_LEVEL () 

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

Returns

None

SET_VOL_UP

Begin ramping volume up.

Name

SET_VOL_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STAR

Pulse * button.

Name

STAR ()

Parameters

None

Returns

None

START_BALANCE_DOWN

Start ramping balance down (left).

Name

START_BALANCE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

START_BALANCE_UP

Start ramping balance UP (right).

Name

START_BALANCE_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

START_BASS_UP

Start ramping bass up.

Name

START_BASS_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

START_CH_DOWN

Start ramping channel down.

Name

START_CH_DOWN ()

Parameters

None

Returns

None

START_PAGE_DOWN

Start menu Page down.

Name

START_PAGE_DOWN ()

Parameters

None

Returns

None

START_PAGE_UP

Start menu Page up.

Name

START_PAGE_UP ()

Parameters

None

Returns

None

START_SEARCH_DOWN

Begin tuning search down.

Name

START_SEARCH_DOWN ()

Parameters

None

Returns

None

START_SEARCH_UP

Begin tuning search UP.

Name

START_SEARCH_UP ()

Parameters

None

Returns

None

START_VOL_DOWN

Start ramping volume down.

Name

START_VOL_DOWN ()

Parameter Type Description
OutputBindingID 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.

Name

START_SCAN_FWD ()

Parameters

None

Returns

None

START_SCAN_REV

Initiate scan backwards within track/chapter.

Name

START_SCAN_REV ()

Parameters

None

Returns

None

START_UP

Initiate up-arrow navigation.

Name

START_UP ()

Parameters

None

Returns

None

STOP_BALANCE_DOWN

Start ramping balance.

Name

STOP_BALANCE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_BALANCE_UP

Stop ramping balance up.

Name

STOP_BALANCE_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_BASS_DOWN

Stop ramping bass

Name

STOP_BASS_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_PAGE_DOWN

Stop menu page down.

Name

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

Name

AUDIO_PARAMETER_CHANGED ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

BALANCE_LEVEL_CHANGED

Selected balance level has changed.

Name

BALANCE_LEVEL_CHANGED ()

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

Returns

None

BASS_ LEVEL_CHANGED

Selected bass level has changed

Name

BASS_LEVEL_CHANGED ()

Parameter Type Description
LEVEL int Level
OUTPUT int Output Binding ID

Returns

None

INPUT_OUTPUT_CHANGED

Selected inputs & outputs have changed.

Name

INPUT_OUTPUT_CHANGED ()

Parameter Type Description
InputBindingID INT Input Binding ID
OutputBindingID INT Output Binding ID

Returns

None

LOUDNESS_CHANGED

Loudness state (On/Off) has changed.

Name

LOUDNESS_CHANGED ()

Parameter Type Description
LOUDNESS BOOL True/False

Returns

None

MUTE_CHANGED

MUTE state (On/Off) has changed.

Name

MUTE_CHANGED ()

Parameter Type Description
MUTE BOOL True/False

Returns

None

OFF

Device has turned off.

Name

OFF ()

Parameter

None

Returns

None

ON

Device has turned on.

Name

ON ()

Parameter

None

Returns

None

TREBLE_LEVEL_CHANGED

Selected treble level has changed.

Name

TREBLE_LEVEL_CHANGED ()

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

Returns

None

VOLUME_ LEVEL_ CHANGED

Selected volume level has changed.

Name

VOLUME_LEVEL_CHANGED ()

Parameter Type Description
LEVEL INT Level
OUTPUT INT Output Binding ID

Returns

None

SURROUND_MODE_ CHANGED

Surround mode setting has changed.

Name

SURROUND_MODE_CHANGED ()

Parameter Type Description
Output INT Output Binding ID value
SURROUND MODE 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 as well as information on favoriting and blocking connection classes, please see the Connections section of the DriverWorks Fundamentals Guide.

Receiver Proxy Commands

BACK

Pulse Back button

Name

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Name

CANCEL ()

Parameters

None

Returns

None

CONNECT_OUTPUT

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

Name

CONNECT OUTPUT ()

Parameter Type Description
Output Binding ID int Optional. Output Binding ID - should be in the BindingID range in the usage note below.
PATH DEV LIST str Value of the device directly upstream in the AV path.

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.

Name

DASH ()

Parameter

None

Returns

None

DISCONNECT_OUTPUT

Disconnect (turn off) selected output on device.

Name

DISCONNECT_OUTPUT ()

Parameter Type Description
Output Binding ID int Optional. Output Binding ID - should be in the BindingID range in the usage note below.
PREV DEV LIST str Value of the device directly upstream in the AV path.

Returns

None

HYPHEN

Pulse ‘-’ button

Name

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Name

INFO ()

Parameters

None

Returns

None

LOUDNESS_OFF

Turn loudness off.

Name

LOUDNESS_OFF ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

LOUDNESS_ON

Turn loudness on.

Name

LOUDNESS_ON ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

LOUDNESS_ON

Toggle loudness on/off.

Name

LOUDNESS_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

MUTE_OFF

Toggle loudness on/off.

Name

MUTE_OFF ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

MUTE_ON

Turn muting on.

Name

MUTE_ON ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

MUTE_TOGGLE

Toggle muting on/off.

Name

MUTE_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

NUMBER_0

Pulse ‘0’ button

Name

Number_0 ()

Parameters

None

Returns

None

NUMBER_1

Pulse ‘1’ button

Name

Number_1 ()

Parameters

None

Returns

None

NUMBER_2

Pulse ‘2’ button

Name

Number_2 ()

Parameters

None

Returns

None

NUMBER_3

Pulse ‘3’ button

Name

Number_3 ()

Parameters

None

Returns

None

NUMBER_4

Pulse ‘4’ button

Name

Number_4 ()

Parameters

None

Returns

None

NUMBER_5

Pulse ‘5’ button

Name

Number_5 ()

Parameters

None

Returns

None

NUMBER_6

Pulse ‘6’ button

Name

Number_6 ()

Parameters

None

Returns

None

NUMBER_7

Pulse ‘7’ button

Name

Number_7 ()

Parameters

None

Returns

None

NUMBER_8

Pulse ‘8’ button

Name

Number_8 ()

Parameters

None

Returns

None

NUMBER_9

Pulse ‘9’ button

Name

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Name

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.

Name

ON ()

Parameter Type Description
CONNECT INT Turns the device on.

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.

Name

PAGE_DOWN ()

Parameters

None

Returns

None

PAGE_UP

Pulse menu Page up.

Signature

PAGE_UP ()

Parameters

None

Returns

None

POUND

Pulse ‘#’ button

Name

POUND ()

Parameters

None

Returns

None

PULSE_BALANCE_DOWN

Pulse balance down.

Name

PULSE_BALNCE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_BALANCE_UP

Pulse balance up

Name

PULSE_BALNCE_RIGHT ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_BASS_DOWN

Pulse bass down.

Name

PULSE_BASS_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_BASS_UP

Pulse bass up.

Name

PULSE_BASS_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_INPUT

Toggle (cycle through) input selection on device.

Name

PULSE_INPUT

Parameters

None

Returns

None

PULSE_SUR_UP

Toggle (cycle through) surround mode presets on device.

Name

PULSE_SUR_UP

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_VOL_DOWN

Pulse volume level down.

Name

PULSE_VOL_DOWN

Parameter Description
int Output Binding ID

Returns

None

PULSE_VOL_UP

Pulse volume level up.

Name

PULSE_VOL_UP

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_TREBLE_DOWN

Pulse treble down.

Name

PULSE_TREBLE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_TREBLE_UP

Pulse treble up.

Name

PULSE_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

RECALL

Pulse Recall button

Name

RECALL ()

Parameters

None

Returns

None

RIGHT

Pulse RIGHT Navigation.

Name

RIGHT ()

Parameters

None

Returns

None

SET_BALANCE

Set balance to a specified position.

Name

SET_BALANCE ()

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

Returns

None

SET_BASS_LEVEL

Set bass to a specified level.

Name

SET_BASS_LEVEL

Parameter Description
int Output Binding ID

Returns

None

SET_INPUT

Specify input selection of device.

Name

SET_INPUT ()

Parameter Type Description
Input Binding ID int Binding ID in the BindingID range below.
PREV DEV LIST str Value of the device directly upstream in the AV path.
Output Binding ID int Optional. Output Binding ID - should be in the BindingID range in the usage note below.

Returns

None

Usage Note

SET_OUTPUT_INPUT

Specify input and output selection of device.

Name

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.

Name

SET_SURROUND_MODE ()

Parameter Type Description
SurroundMode INT Surround Mode value
OutputBindingID INT Output Binding ID

Returns

None

SET_TREBLE_LEVEL

Set treble to a specified level.

Name

SET_TREBLE_LEVEL ()

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

Returns

None

STOP_VOL_DOWN

Start ramping volume up.

Name

SET_VOL_UP ()

Parameter Description
int Output Binding ID

Returns

None

SET_VOLUME_LEVEL

Set volume to a specified level.

Name

SET_VOLUME_LEVEL () 

Parameter Description
int Level
int Output Binding ID

Returns

None

STAR

Pulse button

Name

STAR ()

Parameters

None

Returns

None

START_BALANCE_DOWN

Start ramping balance down (left).

Name

START_BALANCE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START_BALANCE_UP

Start ramping balance up (right).

Name

START_BALANCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

START_BASS_DOWN

Start ramping bass down.

Name

START_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START_ BASS_UP

Start ramping bass up.

Name

START_BASS_UP ()

Parameter Description
int Output Binding ID

Returns

None

START_CH_DOWN

Start ramping channel down.

Name

START_CH_DOWN ()

Parameter

None

Returns

None

START_CH_UP

Start ramping channel up.

Name

START_CH_UP ()

Parameter

None

Returns

None

START_LEFT

Pulse left navigation.

Name

START_LEFT ()

Parameters

None

Returns

None

START_PAGE_DOWN

Start menu Page down.

Name

START_PAGE_DOWN ()

Parameters

None

Returns

None

START_PAGE_UP

Start menu Page up.

Name

START_PAGE_UP ()

Parameters

None

Returns

None

START_RIGHT

Initiate right arrow navigation.

Name

START_RIGHT ()

Parameters

None

Returns

None

START_TREBLE_DOWN

Start ramping treble down.

Name

START_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START_TREBLE_UP

Start ramping treble up.

Name

START_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

START_VOL_DOWN

Start ramping volume down.

Name

START_VOL_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

START_VOL_UP

Start ramping volume up.

Name

START_VOL_UP ()

Parameter Description
int Volume Level
int Output Binding ID

Returns

None

STOP_BALANCE_DOWN

Start ramping balance.

Name

STOP_BALANCE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP_BASS_DOWN

Stop ramping bass

Name

STOP_BALANCE_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP_BASS_DOWN

Stop ramping bass

Name

STOP_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP_BASS_UP

Stop ramping bass

Name

STOP_BASS_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP_CH_UP

StOP ramping channel up.

Name

STOP_CH_UP ()

Parameter

None

Returns

None

STOP_CH_DOWN

Stop ramping channel down.

Name

STOP_CH_DOWN ()

Parameter

None

Returns

None

STOP_LEFT

Stop left navigation.

Name

STOP_LEFT ()

Parameters

None

Returns

None

STOP_RIGHT

Stop right arrow navigation.

Name

STOP_RIGHT ()

Parameters

None

Returns

None

STOP_PAGE_DOWN

Stop menu page down.

Name

STOP_PAGE_DOWN ()

Parameters

None

Returns

None

STOP_PAGE_DOWN

Stop menu page up.

Name

STOP_PAGE_UP ()

Parameters

None

Returns

None

STOP_TREBLE_DOWN

Stop ramping the treble down

Name

STOP_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP_TREBLE_UP

Stop ramping the treble up.

Name

STOP_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

STOP_VOL_DOWN

Stop ramping the volume down

Name

STOP_VOL_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

STOP_VOL_UP

Stop ramping the volume up.

Name

STOP_VOL_UP ()

Parameter Description
int Output Binding ID

Returns

None

@ _6-DOWN

DOWN

PULSE DOWN NAVIGATION

Name

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

Name

AUDIO_PARAMETER_CHANGED ()

Parameter Type Description
OutputBindingID INT Output Binding ID value

Returns

None

BALANCE_LEVEL_CHANGED

Selected balance level has changed.

Name

BALANCE_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

BASS_LEVEL_CHANGED

Selected bass level has changed

Name

BASS_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

INPUT_OUTPUT_CHANGED

Notification indicating that the input or output binding has changed.

Name

INPUT_OUTPUT_CHANGED ()

Parameter Type Description
OUTPUT INT OutputBindingID
INPUT INT Input Binding ID

Returns

None

LOUDNESS_CHANGED

Loudness state (On/Off) has changed.

Name

LOUDNESS_CHANGED ()

Parameter Type Description
LOUDNESS BOOL True/False
Output indingID INT Output Binding ID value

Returns

None

MUTE_CHANGED

MUTE state (On/Off) has changed.

Name

MUTE_CHANGED ()

Parameter Type Description
output INT Output Binding ID
MUTE BOOL True/False

Returns

None

OFF

Device has turned off.

Name

OFF ()

Parameter

None

Returns

None

ON

Device has turned on.

Name

ON ()

Parameter

None

Returns

None

TREBLE_LEVEL_CHANGED

Selected treble level has changed.

Name

TREBLE_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

VOLUME_LEVEL_CHANGED

Selected volume level has changed.

Name

VOLUME_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SURROUND_MODE_CHANGED

Surround mode setting has changed.

Name

SURROUND_MODE_CHANGED ()

Parameter Type Description
output INT Output Binding ID
SURROUND MODE INT Surround Mode ID value

Returns

None

Satellite Receiver Proxy Commands

BACK

Pulse Back button

Name

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Name

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Name

DASH ()

Parameter

None

Returns

None

DISCONNECT_OUTPUT

Disconnect (turn off) selected output on device.

Name

DISCONNECT_OUTPUT ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

DOWN

PULSE DOWN NAVIGATION

Name

DOWN ()

Parameter

None

Returns

None

EMIT_CODE

Emit IR/Serial code.

Name

EMIT_CODE ()

Parameter Type Description
IRCodeID INT IR Code value

Returns

None

EMIT_MACRO

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

Name

EMIT_MACRO ()

Parameter Type Description
s MacroCodeName STR Macro Code Name

Returns

None

ENTER

Navigate Enter key

Name

Enter ()

Parameters

None

Returns

None

GUIDE

Pulse info button.

Name

GUIDE ()

Parameters

None

Returns

None

HYPHEN

Pulse ‘-’ button

Name

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Name

INFO ()

Parameters

None

Returns

None

LEFT

Pulse left navigation button.

Name

LEFT ()

Parameters

None

Returns

None

LOUDNESS_OFF

Turn loudness off.

Name

LOUDNESS_OFF ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

LOUDNESS_ON

Turn loudness on.

Name

LOUDNESS_ON ()

Parameter Description
int Output Binding ID

Returns

None

LOUDNESS_TOGGLE

Toggle loudness on/off.

Name

LOUDNESS_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

MUTE_OFF

Turn muting off.

Name

MUTE_OFF ()

Parameter Description
int Output Binding ID

Returns

None

MUTE_ON

Turn muting on.

Name

MUTE_ON ()

Parameter Description
int Output Binding ID

Returns

None

MUTE_TOGGLE

Toggle muting on/off.

Name

MUTE_TOGGLE ()

Parameter Description
int Output Binding ID

Returns

None

NUMBER_0

Pulse ‘0’ button

Name

Number_0 ()

Parameters

None

Returns

None

NUMBER_1

Pulse ‘1’ button

Name

Number_1 ()

Parameters

None

Returns

None

NUMBER_2

Pulse ‘2’ button

Name

Number_2 ()

Parameters

None

Returns

None

NUMBER_3

Pulse ‘3’ button

Name

Number_3 ()

Parameters

None

Returns

None

NUMBER_4

Pulse ‘4’ button

Name

Number_4 ()

Parameters

None

Returns

None

NUMBER_5

Pulse ‘5’ button

Name

Number_5 ()

Parameters

None

Returns

None

NUMBER_6

Pulse ‘6’ button

Name

Number_6 ()

Parameters

None

Returns

None

NUMBER_7

Pulse ‘7’ button

Name

Number_7 ()

Parameters

None

Returns

None

NUMBER_8

Pulse ‘8’ button

Name

Number_8 ()

Parameters

None

Returns

None

NUMBER_9

Pulse ‘9’ button

Name

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Name

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.

Name

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.

Name

OPEN_CLOSE ()

Parameters

None

PAGE_DOWN

Pulse menu Page down.

Name

PAGE_DOWN ()

Parameters

None

Returns

None

PAGE_UP

Pulse menu Page up.

Name

PAGE_UP ()

Parameters

None

Returns

None

Pause

Place device in pause state.

Name

PAUSE ()

Parameters

None

Returns

None

PIP

Pulse menu PIP button.

Name

PIP ()

Parameter Type Description
MacroCodeName STR Name of Macro Code

Returns

None

PLAY

Place device in a playback state.

Name

PLAY ()

Parameters

None

Returns

None

POUND

Pulse ‘#’ button

Name

POUND ()

Parameters

None

Returns

None

PRESET_DOWN

Toggle (cycle down) tuning preset

Name

PRESET_DOWN ()

Parameters

None

Returns

None

PRESET_UP

Toggle (cycle up) tuning preset

Name

PRESET_UP ()

Parameters

None

Returns

None

PULSE_ASPECT_RATIO

Toggle (cycle though) aspect ratio.

Name

PULSE_ASPECT_RATIO ()

Parameters

None

Returns

None

PULSE_BALANCE_DOWN

Pulse balance down (Left)

Name

PULSE_BALNCE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_BALANCE_UP

Pulse balance up (Right)

Name

PULSE_BALNCE_RIGHT ()

Parameter Description
int Output Binding ID

Returns

None

PULSE_BASS_DOWN

Pulse bass down (Left)

Name

PULSE_BASS_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

PULSE_ BASS_UP

Pulse bass up (Right)

Name

PULSE_BASS_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_CHANNEL_DOWN

Pulse channel value down.

Name

PULSE_CHANNEL_DOWN ()

Parameters

None

Returns

None

PULSE_CHANNEL_UP

Pulse channel value up.

Name

PULSE_CHANNEL_UP ()

Parameters

None

Returns

None

PULSE_INPUT

Toggle (cycle through) input selection on device.

Name

PULSE_INPUT

Parameters

None

Returns

None

PULSE_TREBLE_DOWN

Pulse treble down.

Name

PULSE_TREBLE_DOWN ()

Parameter Description
int Output Binding ID

Returns

None

PULSE_TREBLE_UP

Pulse treble up.

Name

PULSE_TREBLE_UP ()

Parameter Description
int Output Binding ID

Returns

None

PULSE_VOL_DOWN

Pulse volume level down.

Name

PULSE_VOL_DOWN

Parameter Description
int Output Binding ID

Returns

None

PVR

Pulse PVR button.

Name

PVR ()

Parameters

None

Returns

None

PULSE_VOL_UP

Pulse volume level up.

Name

PULSE_VOL_UP

Parameter Description
int Output Binding ID

Returns

None

RECALL

Pulse Recall button

Name

RECALL ()

Parameters

None

Returns

None

RIGHT

Pulse RIGHT NAVIGATION

Name

RIGHT ()

Parameters

None

Returns

None

SCAN_FWD

Pulse/scan forward within track/chapter.

Name

SCAN_FWD ()

Parameters

None

Returns

None

SCAN_REV

Pulse scan reverse within track/chapter.

Name

SCAN_REV ()

Parameters

None

Returns

None

SEARCH_DOWN

Pulse tuning search down

Name

SEARCH_DOWN ()

Parameters

None

Returns

None

SEARCH_UP

Pulse tuning search UP

Name

SEARCH_UP ()

Parameters

None

Returns

None

SET_BALANCE

Set balance to a specified position.

Name

SET_BALANCE ()

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

Returns

None

SET_BALANCE_UP

Set balance to a specified position.

Name

SET_BALANCE ()

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

Returns

None

SET_BASS_LEVEL

Set bass to a specified level.

Name

SET_BASS_LEVEL

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

SET_CHANNEL

Tune device to the specified channel.

Name

SET_CHANNEL ()

Parameter Type Description
CHANNEL 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.

Name

SET_LOUDNESS ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET_OUTPUT_INPUT

Specify input and output selection of device.

Name

SET_OUTPUT_INPUT ()

Parameter Type Description
InputBindingID INT Input Binding ID
OutputBindingID INT Output Binding ID

Returns

None

SET_UP_DOWN_SWAP

Swap page UP/DOWN buttons (used by AVGen). TRUE to enable swap, FALSE to disable.

Name

POUND ()

Parameter Type Description
SWAPFLAG BOOL True/False

Returns

None

SET_VOLUME_LEVEL

Set volume to a specified level.

Name

SET_VOLUME_LEVEL () 

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID value

Returns

None

SET_PRESET

Set specified tuning preset

Name

SET_PRESET () 

Parameter Type Description
PresetNum INT Preset Number

Returns

None

SET_TREBLE_LEVEL

Set treble to a specified level.

Name

SET_TREBLE_LEVEL ()

Parameter Type Description
Level INT Level
Output Binding ID INT Output Binding ID

Returns

None

SKIP_FWD

Advance to next track/chapter.

Name

SKIP_FWD ()

Parameters

None

Returns

None

STAR

Pulse button

Name

STAR ()

Parameters

None

Returns

None

START_BALANCE_DOWN

Start ramping balance down (left).

Name

START_BALANCE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID value

Returns

None

START_BALANCE_UP

Start ramping balance up (right).

Name

START_BALANCE_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

START_BASS_DOWN

Start ramping bass down.

Name

START_BASS_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID value

Returns

None

START_BASS_UP

Start ramping bass up.

Name

START_BASS_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

START_CHANNEL_UP

Start ramping channel up.

Name

START_CHANNEL_UP ()

Parameter

None

Returns

None

START_DOWN

Start down NAVIGATION.

Name

START_DOWN ()

Parameters

None

Returns

None

START_LEFT

Pulse left navigation.

Name

START_LEFT ()

Parameters

None

Returns

None

START_PAGE_DOWN

Start menu Page down.

Name

START_PAGE_DOWN ()

Parameters

None

Returns

None

START_PAGE_UP

Start menu Page up.

Name

START_PAGE_UP ()

Parameters

None

Returns

None

START_RIGHT

Initiate right arrow navigation.

Name

START_RIGHT ()

Parameters

None

Returns

None

START_SCAN_FWD

Initiate scan forward within track/chapter.

Name

START_SCAN_FWD ()

Parameters

None

Returns

None

START_SCAN_REV

Initiate scan backward within track/chapter.

Name

START_SCAN_REV ()

Parameters

None

Returns

None

START_SEARCH_DOWN

Initiate tuning search down

Name

START_SEARCH_DOWN ()

Parameters

None

Returns

None

START_SEARCH_UP

Initiate tuning search up.

Name

START_SEARCH_UP ()

Parameters

None

Returns

None

START_TREBLE_DOWN

Start ramping treble down.

Name

START_TREBLE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

START_TREBLE_UP

Start ramping treble up.

Name

START_TREBLE_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

START_VOL_DOWN

Start ramping volume down.

Name

START_TREBLE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_SCAN_REV

Stop scan forward within track/chapter.

Name

STOP_SCAN_REV ()

Parameters

None

Returns

None

START_UP

Initiate up arrow navigation.

Name

START_UP ()

Parameters

None

Returns

None

STOP_BALANCE_DOWN

Start ramping balance down.

Name

STOP_BALANCE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_BASS_DOWN

Stop ramping bass down

Name

STOP_BASS_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_BALANCE_UP

Stop ramping balance up.

Name

STOP_BALANCE_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_BASS_UP

Stop ramping bass up.

Name

STOP_BASS_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_CHANNEL_UP

Stop ramping channel up.

Name

STOP_CHANNEL_UP ()

Parameter

None

Returns

None

STOP_LEFT

Stop left navigation.

Name

STOP_LEFT ()

Parameters

None

Returns

None

STOP_RIGHT

Stop right arrow navigation.

Name

STOP_RIGHT ()

Parameters

None

Returns

None

STOP_SCAN_FWD

Stop scan forward within track/chapter.

Name

STOP_SCAN_FWD ()

Parameters

None

Returns

None

STOP_SEARCH_DOWN

Stop tuning search down

Name

STOP_SEARCH_DOWN ()

Parameters

None

Returns

None

STOP_SEARCH_UP

Stop tuning search UP

Name

STOP_SEARCH_UP ()

Parameters

None

Returns

None

STOP_PAGE_DOWN

Stop menu page down.

Name

STOP_PAGE_DOWN ()

Parameters

None

Returns

None

STOP_PAGE_DOWN

Stop menu page up.

Name

STOP_PAGE_UP ()

Parameters

None

Returns

None

STOP_TREBLE_DOWN

Stop ramping the treble down

Name

STOP_TREBLE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_TREBLE_UP

Stop ramping the treble up.

Name

STOP_TREBLE_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_UP

Stop up arrow navigation.

Name

STOP_UP ()

Parameters

None

Returns

None

STOP_VOL_DOWN

Stop ramping the volume down

Name

STOP_VOL_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_VOL_UP

Stop ramping the volume up.

Name

STOP_VOL_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

TV_VIDEO

Toggle TV/video input.

Name

TV_VIDEO ()

Parameters

None

Returns

None

TUNE_DOWN

Toggle (cycle down) frequency or channel

Name

TUNE_DOWN ()

Parameters

None

Returns

None

TUNE_UP

Toggle (cycle UP) frequency or channel

Name

TUNE_UP ()

Parameters

None

Returns

None

STAR

Pulse up button.

Name

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.

Name

CHANNEL_CHANGED ()

Parameter Type Description
ChannelNumber 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.

Name

INPUT_CHANGED ()

Parameter Type 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.

Name

OFF ()

Parameter

None

Returns

None

ON

Device has turned On.

Name

ON ()

Parameter

None

Returns

None

RADIO_TEXT_CHANGED

Text from RDS has changed.

Name

RADIO_TEXT_CHANGED ()

Parameter Type Description
RADIO TEXT STR Two free-form text strings. Radio information/text from RDS and currently playing title.

Usage Note

MaxImum 64 characters in two free form text strings.

Returns

None

PSN_CHANGED

Text from PSN has changed.

Name

PSN_CHANGED ()

Parameter Type Description
PSN STR Two free-form text strings. Radio information and text from the station ID. Periodically updated from the station.

Usage Note

MaxImum 64 characters in 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

Name

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Name

CANCEL ()

Parameters

None

Returns

None

DASH

Pulses the ‘-’ button.

Name

DASH ()

Parameter

None

Returns

None

HYPHEN

Pulse ‘-’ button

Name

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Name

INFO ()

Parameters

None

Returns

None

NUMBER_0

Pulse ‘0’ button

Name

Number_0 ()

Parameters

None

Returns

None

NUMBER_1

Pulse ‘1’ button

Name

Number_1 ()

Parameters

None

Returns

None

NUMBER_2

Pulse ‘2’ button

Name

Number_2 ()

Parameters

None

Returns

None

NUMBER_3

Pulse ‘3’ button

Name

Number_3 ()

Parameters

None

Returns

None

NUMBER_4

Pulse ‘4’ button

Name

Number_4 ()

Parameters

None

Returns

None

NUMBER_5

Pulse ‘5’ button

Name

Number_5 ()

Parameters

None

Returns

None

NUMBER_6

Pulse ‘6’ button

Name

Number_6 ()

Parameters

None

Returns

None

NUMBER_7

Pulse ‘7’ button

Name

Number_7 ()

Parameters

None

Returns

None

NUMBER_8

Pulse ‘8’ button

Name

Number_8 ()

Parameters

None

Returns

None

NUMBER_9

Pulse ‘9’ button

Name

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Name

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.

Name

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.

Name

PAGE_DOWN ()

Parameters

None

Returns

None

PAGE_UP

Pulse menu Page up.

Name

PAGE_UP ()

Parameters

None

Returns

None

POUND

Pulse # button.

Name

POUND ()

Parameters

None

Returns

None

PRESET_DOWN

Toggle (cycle down) tuning preset.

Name

PRESET_DOWN ()

Parameters

None

Returns

None

PRESET_UP

Toggle (cycle UP) tuning preset.

Name

PRESET_UP ()

Parameters

None

Returns

None

PULSE_CHANNEL_DOWN

Pulse channel value down.

Name

PULSE_CHANNEL_DOWN ()

Parameters

None

Returns

None

PULSE_CHANNEL_UP

Pulse channel value up.

Name

PULSE_CHANNEL_UP ()

Parameters

None

Returns

None

RECALL

Pulse Recall button.

Name

RECALL ()

Parameters

None

Returns

None

SEARCH_DOWN

Pulse tuning search down

Name

SEARCH_DOWN ()

Parameters

None

Returns

None

SEARCH_UP

Pulse tuning search UP

Name

SEARCH_UP ()

Parameters

None

Returns

None

SET_CHANNEL

Tune device tot he specifies channel.

Name

SET_CHANNEL ()

Parameter Type Description
STR Channel value in string format
STR Band Type

Returns

None

Example

The example 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
end

SET_PRESET

Select specified tuning preset.

Name

SET_PRESET ()

Parameter Type Description
PresetNum INT Preset Number

Returns

None

STAR

Pulse * button.

Name

STAR ()

Parameters

None

Returns

None

START_CH_DOWN

Start ramping channel down.

Name

START_CH_DOWN ()

Parameters

None

Returns

None

START_CH_UP

Start ramping channel UP.

Name

START_CH_UP ()

Parameters

None

Returns

None

STOP_CH_UP

StOP ramping channel UP.

Name

STOP_CH_UP ()

Parameters

None

Returns

None

START_PAGE_DOWN

Start menu Page down.

Name

START_PAGE_DOWN ()

Parameters

None

Returns

None

START_PAGE_UP

Start menu Page up.

Name

START_PAGE_UP ()

Parameters

None

Returns

None

START_SEARCH_DOWN

Begin tuning search down.

Name

START_SEARCH_DOWN ()

Parameters

None

Returns

None

START_SEARCH_UP

Begin tuning search UP.

Name

START_SEARCH_UP ()

Parameters

None

Returns

None

STOP_CH_DOWN

Stop ramping channel down.

Name

STOP_CH_DOWN ()

Parameters

None

Returns

None

STOP_PAGE_DOWN

Stop menu page down.

Name

STOP_PAGE_DOWN ()

Parameters

None

Returns

None

STOP_PAGE_UP

Stop menu page up.

Name

STOP_PAGE_UP ()

Parameters

None

Returns

None

STOP_SEARCH_UP

Stop tuning search up.

Name

STOP_SEARCH_UP ()

Parameters

None

Returns

None

STOP_SEARCH_DOWN

Stop tuning search down.

Name

STOP_SEARCH_DOWN ()

Parameters

None

Returns

None

TUNE_DOWN

Toggle (cycle down) frequency or channel

Name

TUNE_DOWN ()

Parameters

None

Returns

None

TUNE_UP

Toggle (cycle up) frequency or channel

Name

TUNE_UP ()

Parameters

None

Returns

None

TV Proxy Commands

BACK

Pulse Back button

Name

BACK ()

Parameters

None

Returns

None

CANCEL

Pulse Cancel button

Name

CANCEL ()

Parameters

None

Returns

None

CLOSED_CAPTION

This command toggles closed caption services on the TV.

Name

CLOSED_CAPTION ()

Parameters

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

DASH

Pulses the ‘-’ button.

Name

DASH ()

Parameter

None

Returns

None

DISCONNECT_OUTPUT

Disconnect (turn off) selected output on device.

Name

DISCONNECT_OUTPUT ()

Parameter Type Description
Output Binding ID int Optional. Output Binding ID - should be in the BindingID range in the usage note below.
PATH DEV LIST str Value of the device directly upstream in the AV path.

Returns

None

EMIT CODE

Emit IR/Serial code.

Name

EMIT_CODE ()

Parameter Type Description
IRCodeID INT ID of the IR Code

Returns

None

EMIT MACRO

Emit IR/Serial code macro.

Name

EMIT_MACRO ()

Parameter Type Description
MacroCodeName INT Macro Code Name

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.

Name

GET_DEFAULT_INPUT ()

Parameters

None

Returns

None

HYPHEN

Pulse ‘-’ button

Name

HYPHEN ()

Parameters

None

Returns

None

INFO

Pulse Info button

Name

INFO ()

Parameters

None

Returns

None

LOUDNESS_OFF

Turn loudness off.

Name

LOUDNESS_OFF ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

LOUDNESS_ON

Turn loudness on.

Name

LOUDNESS_ON ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

LOUDNESS_TOGGLE

Toggle loudness on/off.

Name

LOUDNESS_TOGGLE ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

MUTE_OFF

Turn muting off.

Name

MUTE_OFF ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

MUTE_ON

Turn muting on.

Name

MUTE_ON ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

MUTE_TOGGLE

Toggle muting on/off.

Name

MUTE_TOGGLE ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

NUMBER_0

Pulse ‘0’ button

Name

Number_0 ()

Parameters

None

Returns

None

NUMBER_1

Pulse ‘1’ button

Name

Number_1 ()

Parameters

None

Returns

None

NUMBER_2

Pulse ‘2’ button

Name

Number_2 ()

Parameters

None

Returns

None

NUMBER_3

Pulse ‘3’ button

Name

Number_3 ()

Parameters

None

Returns

None

NUMBER_4

Pulse ‘4’ button

Name

Number_4 ()

Parameters

None

Returns

None

NUMBER_5

Pulse ‘5’ button

Name

Number_5 ()

Parameters

None

Returns

None

NUMBER_6

Pulse ‘6’ button

Name

Number_6 ()

Parameters

None

Returns

None

NUMBER_7

Pulse ‘7’ button

Name

Number_7 ()

Parameters

None

Returns

None

NUMBER_8

Pulse ‘8’ button

Name

Number_8 ()

Parameters

None

Returns

None

NUMBER_9

Pulse ‘9’ button

Name

Number_9 ()

Parameters

None

Returns

None

OFF

Turn device Off.

Name

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.

Name

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.

Name

PAGE_DOWN ()

Parameters

None

Returns

None

PAGE_UP

Pulse menu Page up.

Name

PAGE_UP ()

Parameters

None

Returns

None

PIP

Pulse menu PIP button..

Name

PIP ()

Parameter Type Description
MacroCodeName STR MacroCodeName

Returns

None

POUND

Pulse # button.

Name

POUND ()

Parameters

None

Returns

None

PRESET_DOWN

Toggle (cycle down) tuning preset.

Name

PRESET_DOWN ()

Parameters

None

Returns

None

PRESET_UP

Toggle (cycle UP) tuning preset.

Name

PRESET_UP ()

Parameters

None

Returns

None

PULSE_ASPECT_RATIO

Toggle (cycle though) aspect ratio.

Name

PULSE_ASPECT_RATIO ()

Parameters

None

Returns

None

PULSE_BALANCE_DOWN

Pulse balance down (Left)

Name

PULSE_BALNCE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_BALANCE_UP

Pulse balance up (Right)

Name

PULSE_BALNCE_RIGHT ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_BASS_DOWN

Pulse bass down (Left)

Name

PULSE_BASS_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_BASS_UP

Pulse bass up (Right)

Name

PULSE_BASS_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_CHANNEL_DOWN

Pulse channel value down.

Name

PULSE_CHANNEL_DOWN ()

Parameters

None

Returns

None

PULSE_CHANNEL_UP

Pulse channel value up.

Name

PULSE_CHANNEL_UP ()

Parameters

None

Returns

None

PULSE_INPUT

Toggle (cycle through) input selection on device.

Name

PULSE_INPUT

Parameters

None

Returns

None

PULSE_TREBLE_DOWN

Pulse treble down.

Name

PULSE_TREBLE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_TREBLE_UP

Pulse treble up.

Name

PULSE_TREBLE_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_VOL_DOWN

Pulse volume level down.

Name

PULSE_VOL_DOWN

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PULSE_VOL_UP

Pulse volume level up.

Name

PULSE_VOL_UP

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

PVR

Pulse PVR button.

Name

PVR ()

Parameters

None

Returns

None

RECALL

Pulse Recall button.

Name

RECALL ()

Parameters

None

Returns

None

SEARCH_DOWN

Pulse tuning search down

Name

SEARCH_DOWN ()

Parameters

None

Returns

None

SEARCH_UP

Pulse tuning search UP

Name

SEARCH_UP ()

Parameters

None

Returns

None

SET_BALANCE

Set balance to a specified position.

Name

SET_BALANCE ()

Parameter Type Description
Level INT Level value
OutputBindingID INT Output Binding ID

Returns

None

SET_BALANCE_UP

Set balance to a specified position.

Name

SET_BALANCE_UP ()

Parameter Description
int Level
int Output Binding ID

Returns

None

SET_BASS_LEVEL

Set bass to a specified level.

Name

SET_BASS_LEVEL

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

SET_CHANNEL

Tune device to the specified channel.

Name

SET_CHANNEL ()

Parameter Type Description
CHANNEL STR Channel value in string format.
BANDTYPE STR Band Type

Returns

None

Example

The example 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
end

SET_DEFAULT_INPUT

Specify the default input selection of device.

Name

SET_DEAFULT_INPUT ()

Parameter Type Description
InputBindingID INT Input Binding ID - should be in the BindingID range.
OutputBindingID INT IOptional. Output Binding ID - should be in the BindingID range.

Returns

None

Usage Note

SET_INPUT

Specify the input selection of device.

Name

SET_INPUT ()

Parameter Type Description
Input Binding ID int Binding ID in the BindingID range below.
PREV DEV LIST str Value of the device directly upstream in the AV path.
Output Binding ID int Optional. Output Binding ID - should be in the BindingID range in the usage note below.

Returns

None

Usage Note

SET_LOUDNESS

Turn loudness on.

Name

SET_LOUDNESS ()

Parameter Type Description
Level INT Level
OutputBindingID INT Output Binding ID

Returns

None

SET_PRESET

Select specified tuning preset.

Name e

SET_PRESET ()

Parameter Type Description
PresetNum INT Preset Number

Returns

None

SET_TREBLE_LEVEL

Set treble to a specified level.

Name

SET_TREBLE_LEVEL ()

Parameter Type Description
Level INT Level
OutputBindingID INT Output Binding ID

Returns

None

SET_UP_DOWN_SWAP

Swap page UP/DOWN buttons (used by AVGen). TRUE to enable swap, FALSE to disable.

Name

SET_UP_DOWN_SWAP ()

Parameter Type Description
SWAPFLAG BOOL True/False

Returns

None

SET_VOLUME_LEVEL

Set volume to a specified level.

Name

SET_VOLUME_LEVEL () 

Parameter Description
int Level
int Output Binding ID

Returns

None

SET_VOL_UP

Begin ramping volume up.

Name

SET_VOL_UP ()

Parameter Type Description
Output indingID INT Output Binding ID

Returns

None

STAR

Pulse * button.

Name

STAR ()

Parameters

None

Returns

None

START_BALANCE_DOWN

Start ramping balance down (left).

Name

START_BALANCE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

START_BALANCE_UP

Start ramping balance UP (right).

Name

START_BALANCE_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

START_BASS_DOWN

Start ramping bass down.

Name

START_BASS_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

START_ BASS_ UP

Start ramping bass up.

Name

START_BASS_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

START_CH_DOWN

Start ramping channel down.

Name

START_CH_DOWN ()

Parameters

None

Returns

None

START_CH_UP

Start ramping channel up.

Name

START_CH_UP ()

Parameters

None

Returns

None

START_DOWN

Initiate down-arrow navigation.

Name

START_DOWN ()

Parameters

None

Returns

None

START_LEFT

Initiate left-arrow navigation.

Name

START_LEFT ()

Parameters

None

Returns

None

START_PAGE_DOWN

Start menu Page down.

Name

START_PAGE_DOWN ()

Parameters

None

Returns

None

START_PAGE_UP

Start menu Page up.

Name

START_PAGE_UP ()

Parameters

None

Returns

None

START_PAGE_RIGHT

Initiate right-arrow navigation.

Name

START_RIGHT ()

Parameters

None

Returns

None

START_SEARCH_DOWN

Begin tuning search down.

Name

START_SEARCH_DOWN ()

Parameters

None

Returns

None

START_SEARCH_UP

Begin tuning search UP.

Name

START_SEARCH_UP ()

Parameters

None

Returns

None

START_TREBLE_UP

Start ramping treble up.

Name

START_TREBLE_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

START_TREBLE_DOWN

Start ramping treble down.

Name

START_TREBLE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

START_UP

Initiate up-arrow navigation.

Name

START_UP ()

Parameters

None

Returns

None

START_VOL_DOWN

Start ramping volume down.

Name

START_VOL_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

START_VOL_UP

Start ramping volume up.

Name

START_VOL_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_BALANCE_DOWN

Start ramping balance.

Name

STOP_BALANCE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_BALANCE_UP

Stop ramping bass

Name

STOP_BALANCE_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_BASS_DOWN

Stop ramping bass down.

Name

STOP_BASS_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_BASS_UP

Stop ramping bass up.

Name

STOP_BASS_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_CH_DOWN

Stop ramping channel down.

Name

STOP_CH_DOWN ()

Parameters

None

Returns

None

STOP_CH_UP

Stop ramping channel up.

Name

STOP_CH_UP ()

Parameters

None

Returns

None

STOP_DOWN

Stop down-arrow navigation.

Name

STOP_DOWN ()

Parameters

None

Returns

None

START_LEFT

Stop left-arrow navigation.

Name

STOP_LEFT ()

Parameters

None

Returns

None

STOP_PAGE_DOWN

Stop menu page down.

Name

STOP_PAGE_DOWN ()

Parameters

None

Returns

None

STOP_PAGE_DOWN

Stop menu page up.

Name

STOP_PAGE_UP ()

Parameters

None

Returns

None

STOP_PAGE_RIGHT

Stop right-arrow navigation.

Name

STOP_RIGHT ()

Parameters

None

Returns

None

STOP_SEARCH_DOWN

Stop tuning search down.

Name

STOP_SEARCH_DOWN ()

Parameters

None

Returns

None

STOP_SEARCH_UP

Stop tuning search UP.

Name

STOP_SEARCH_UP ()

Parameters

None

Returns

None

STOP_TREBLE_DOWN

Stop ramping treble down.

Name

STOP_TREBLE_DOWN ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_TREBLE_UP

Stop ramping treble up.

Name

STOP_TREBLE_UP ()

Parameter Type Description
OutputBindingID INT Output Binding ID

Returns

None

STOP_UP

Initiate up-arrow navigation.

Name

STOP_UP ()

Parameters

None

Returns

None

TUNE_DOWN

Toggle (cycle down) frequency or channel.

Name

TUNE_DOWN ()

Parameters

None

Returns

None

TUNE_UP

Toggle (cycle down) frequency or channel.

Name

TUNE_UP ()

Parameters

None

Returns

None

TV_VIDEO

Toggle TV/video input.

Name

TV_VIDEO ()

Parameters

None

Returns

None

TV Protocol Notifications

AUDIO_PARAMETER_CHANGED

Audio parameter has changed

Name

AUDIO_PARAMETER_CHANGED ()

Parameter Type Description
OutputBindingID INT Output Binding ID value

Returns

None

BALANCE_LEVEL_CHANGED

Selected balance level has changed.

Name

BALANCE_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

BASS_LEVEL_CHANGED

Selected bass level has changed

Name

BASS_LEVEL_CHANGED ()

Parameter Description
int Level
int Output Binding ID

Returns

None

CHANNEL_CHANGED

Selected channel has changed

Name

CHANNEL_CHANGED ()

Parameter Type Description
ChannelNumber INT Channel Number

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. See the example to the right.

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

Note that in the example, 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

Notification indicating that the TV's input source has changed.

Name

INPUT_CHANGED ()

Parameter Type Description
INPUT INT Changed Input

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. See the example to the right.

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

Note that in the example, 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:

LOUDNESS_CHANGED

Loudness state (On/Off) has changed.

Name

LOUDNESS_CHANGED ()

Parameter Type Description
LOUDNESS BOOL True/False

Returns

None

MUTE_CHANGED

MUTE state (On/Off) has changed.

Name

MUTE_CHANGED ()

Parameter Description Description
output INT Output Binding ID
MUTE BOOL True/False

Returns

None

OFF

Device has turned off.

Name

OFF ()

Parameter

None

Returns

None

ON

Device has turned on.

Name

ON ()

Parameter

None

Returns

None

TREBLE_LEVEL_CHANGED

Selected treble level has changed.

Name

TREBLE_LEVEL_CHANGED ()

Parameter Type Description
Level INT Level
OutputBindingID INT Output Binding ID

Returns

None

VOLUME_LEVEL_CHANGED

Selected volume level has changed.

Name

VOLUME_LEVEL_CHANGED ()

Parameter Type Description
Level INT Level
Output Binding ID OINT OutputBindingID

Returns

None

XM Tuner Protocol Notifications

AVAILABLE_CHANNEL_MAP

Displays current artist.

Name

AVAILBLE_CHANNEL_MAP ()

Parameter Type Description
MAP_HALF INT MAP HALF: 1 is used for channels 0-127. 0 is used for channels 128 - 255.
MAP_STRING 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

Notification indicating the signal strength has changed.

Name

SIGNAL_STRENGTH ()

Parameter Type Description
STRENGTH INT 0 = “None”, 1 = “Weak”, 2 = “Fair”, 3 = “Good”

Returns

None

SONG_INFO_CHANGED

Displays current song information.

Name

SONG_INFO_CHANGED ()

Parameter Type Description
ARTIST STR ARTIST information
TITLE STR TITLE information
CATEGORY STR CATEGORY information
CHANNEL STR CHANNEL information
NAME STR NAME information

Returns

None

XMARDS_ID

Satellite Digital Audio Radio Service

Name

XMARDS_ID ()

Parameter Type Description
ID_TEXT STR Value representing the XM SDARS value of the satellite device.

Returns

None

XM_CATEGORY_NAME_CHANGE

Notification indicating that the name of the current station's category has changed.

Name

XM_CATEGORY_NAME_CHANGE ()

Parameter Type Description
NUMBER INT Channel
NAME STR Channel name

Returns

None

XM_GET_AVAILABLE_CHANNELS

Displays available XM channels.

Name

XM_GET_AVAILABLE_CHANNELS ()

Parameter Type Description
MAP_HALF INT 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.

Name

XM_GET_CHANNEL_DETAILS_CHANGED ()

Parameter Type Description
CHANNEL INT Channel
CATEGORY STR Channel category
NAME 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.

Name

SET_LEVEL_TARGET ()

Parameter Type Description
LEVEL_TARGET INT 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).
Level_Target_Nam STR String of the level value, such as Open, Closed, Secondary Closed

Returns

None

SET_MOVEMENT

Name

SET_MOVEMENT ()

Parameter Type Description
SET_MOVEMENT NUM Enumeration of the blind movement.

Returns

None

SET_TYPE

Sets the blind type for the proxy.

Name

SET_TYPE ()

Parameter Type Description
SET_Type NUM 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.

Name

SET_CAN_STOP ()

Parameter Type Description
SET_CAN_STOP 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.

Name

SET_HAS_LEVEL ()

Parameter Type Description
HAS LEVEL bool Boolean indicating if level support is available
LEVEL OPEN int Open value. Blinds without feedback, regardless of stop support, should use 0.
LEVEL CLOSED int 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.
HAS LEVEL CLOSED SECONDARY bool Boolean indicating if the blind is using a secondary closed level
LEVEL CLOSED SECONDARY int Secondary closed value for blinds that can go both directions from an Open state.
LEVEL DISCRETE CONTROL bool 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.

Name

SET_MOVEMENT ()

Parameter Type Description
SET MOVEMENT 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.

Name

SET_TYPE ()

Parameter Type Description
SET TYPE 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.

Name

STOPPED ()

Parameter Type Description
LEVEL INT 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.

Name

MOVING ()

Parameter Type Description
LEVEL TARGET INT Integer of the target level that the blinds are currently expected to stop at.
RAMP RATE NUM Number of milliseconds it is expected to take to get to the level_target.
LEVEL INT 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

always_send_level

If value is true, then the SetTargetLevel commands are always sent regardless of current level values. This is useful if the blind device does not support two-way communication and is controlled outside of the Control4 operating system. Setting this capability to True ensures that the SetTargetLevel values are always available so accurate blind performance can occur.

Signature

<always_send_level></always_send_level>

Parameter Description
bool True/False. Defaults to False

Example

<capabilities>
   <always_send_level>true</always_send_level>
</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_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>

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>

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.

Name

CAMERA_OFF ()

Parameters

None

Returns

None

CAMERA_ON

Command to turn camera image capturing on.

Name

CAMERA_ON ()

Parameters

None

Returns

None

CHANGE_PRESET_NAME

Change theme of a Preset.

Name

CHANGE_PRESET_NAME ()

Parameter Description
INT Preset ID, required.
STR Base64 encoded preset name, required.

Returns

None

CHANGE_PRESET_ORDER

Change the order of the Presets

Name

CHANGE_PRESET_ORDER ()

Parameter Description
STR Presets: Comma separated list of preset IDs in the new order. For example: "4,5,2,1"

Returns

None

CHECK_ADDRESS_PORT

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

Name

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.

Name

CHECK_URL ()

Parameter Type Description
Mode STR SNAPSHOT, MJPEG OR H264
Address STR Address. The address to verify.
Port ID INT Port ID to verify.
Query STR. Query. The path/query of the URL.

Returns

None

CREATE_PRESET

Creates a new preset.

Name

CREATE_PRESET ()

Parameter Description
STR Base64 encoded preset name, required.

Returns

None

DELETE_PRESET

Deletes a Preset.

Name

DELETE_PRESET ()

Parameter Type Description
PRESET ID INT Preset ID, required.

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.

Name

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.

Name

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.

Name

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.

Name

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>

GET_STREAM_URLS

This command is used to obtain URLs for a camera that does not have a constant URL like a Cloud based camera or for cameras that have a wider range of features and configurable options that can produce better customer experiences using various clients.

A Client will make this request to a driver and provide information about how the client will be using the stream. The driver optionally can adjust the URL(s) returned based on this information. Driver developers are encouraged to test their driver on various devices to ensure good customer experiences when viewing collages, high resolution or high frame rate streams.

Parameter Description
CODEC Optional. Comma separated list of codecs that the client can support with the most preferred first. A driver is not required to handle this but some drivers may want to if they support multiple codecs. (mjpeg, h264, h265)
RESOLUTION Optional. Resolution that the client will be using to display the stream. A driver is not required to support this but this can be helpful for clients that may need a lower resolution stream for collages of multiple cameras and a 4MP or higher stream would tax the client hardware.
FPS Optional. Frames Per Second that the client would prefer. A driver is not required to support this but if it does it may result in better customer experience when dealing with collages on Navigators.

Examples

An example of the simplest XML returned by a driver is shown to the right:

<streams>
   <stream url="http://192.168.1.150/view_camera.cgi">
</streams>

or

<streams>
   <stream url="https://192.168.1.150:443/view_camera.cgi" codec="h264">
   <stream url="http://192.168.1.150:80/view_camera_h265.cgi" codec="h265">
</streams>

This is followed by an example from a camera with more features and can provide more options to allow clients to pick a better stream:

<streams>
<stream url="rtsps://server.company.com:554/rtsp.cgi" codec="h265" resolution="1920x1080" fps="60">
<stream url="rtsps://server.company.com:554/cloudapi.cgi?fh2f5hw2" codec="h265" resolution="640x480" fps="5">
<stream url="rtsp://server.company.com:554/cloudapi.cgi?fh2f4hw1" codec="h264" resolution="1920x1080" fps="60">
<stream url="rtsp://server.company.com:554/cloudapi.cgi?fh2f4hw2" codec="h264" resolution="640x480" fps="5">
<stream url="https://server.company.com:443/cloudapi.cgi?fh2fhsw3" codec="mjpeg" resolution="1920x1080" fps="20">
<stream url="https://server.company.com:443/cloudapi.cgi?fh2fhsw5" codec="mjpeg">
<stream url="http://server.company.com:80/cloudapi.cgi?fh2fhw3" codec="mjpeg" resolution="1920x1080" fps="20">
<stream url="http://server.company.com:80/cloudapi.cgi?fh2fhw5" codec="mjpeg">
</streams>

HOME

Move the camera to its home position.

Name

HOME ()

Parameters

None

Returns

None

MODIFY_PRESET

Modify an existing Preset.

Name

MODIFY_PRESET ()

Parameter Type Description
PRESET ID INT Preset ID, required.

Returns

None

MOVE_TO

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

Name

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.

Name

NIGHT_MODE ()

Parameter Type Description
bool BOOL Enable/disable night mode.

Returns

None

PAN_LEFT

Pan to the left.

Name

PAN_LEFT ()

Parameters

None

Returns

None

PAN_RIGHT

Pan to the right.

Name

PAN_RIGHT ()

Parameters

None

Returns

None

PAN_SCAN

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

Name

PAN_SCAN ()

Parameters

None

Returns

None

PRESET

Set the camera to preset location.

Name

NIGHT_MODE ()

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

Returns

None

SELECT_PRESET

Select the Preset.

Name

SELECT_PRESET ()

Parameter Type Description
PRESET ID INT Camera Preset ID. Required.

Returns

None

SET_ADDRESS

Set the camera address.

Name

SET_ADDRESS ()

Parameter Type Description
STR Camera Address

Returns

None

SET_AUTHENTICATION_REQUIRED

Composer Pro command to set whether or not authentication is required

Name

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

Name

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.

Name

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

Name

SET_HTTP_PORT ()

Parameter Type Description
PORT ID INT Port ID

Returns

None

SET_RSTP_PORT

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

Name

SET_RSTP_PORT ()

Parameter Type Description
PORT ID INT Port ID

Returns

None

SET_PASSWORD

ComposerPro command to set the Authentication password.

Name

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.

Name

SET_PUBLICLY_ACCESSIBLE ()

Parameter Description
bool True/False

Returns

None

SET_SNAPSHOT_REFRESH_RATE

Sets image refresh rate in seconds.

Name

SET_SNAPSHOT_REFRESH_RATE ()

Parameter Type Description
RATE UNIT NUM Rate Unit in seconds.

Returns

None

TILT_DOWN

Tilt camera down.

Name

TILT_DOWN ()

Parameters

None

Returns

None

TILT_SCAN

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

Name

TILT_SCAN ()

Parameters

None

Returns

None

TILT_UP

Tilt camera down.

Name

TILT_UP ()

Parameters

None

Returns

None

USE_DEFAULTS

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

Name

USE_DEFAULTS ()

Parameters

None

Returns

None

ZOOM_IN

Zoom canera in.

Name

ZOOM_IN ()

Parameters

None

Returns

None

ZOOM_OUT

Zoom camera out.

Name

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.

Name

ADDRESS_CHANGED ()

Parameter Description
str New address value.

Returns

None

DYNAMIC_URLS_CHANGED

Notify used when the configured camera URLS have been changed. The Camera proxy will then force Navigators to refresh any cached URLs.

Name

DYNAMIC_URLS_CHANGED ()

Parameters

None

Returns

None

Example

C4:SendToProxy(PROXY_BINDING, 'DYNAMIC_URLS_CHANGED', { }, 'NOTIFY')

HTTP_PORT_CHANGED

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

Name

HTTP_PORT_CHANGED ()

Parameters

None

Returns

None

HTTPS_PORT_CHANGED

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

Name

HTTPS_PORT_CHANGED ()

Parameter Type Description
PORT 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.

Name

DYNAMIC_CAPABILITY_CHANGED ()

Parameter Description
capabilities Table of capabilities 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

Example

NOTIFY.DYNAMIC_CAPABILITIES_CHANGED({supports_color=true}, 5001)

PRESETS_CHANGED

The camera driver should send this notification to the Proxy on startup with the current presets list. The driver should also notify again whenever presets are changed: created, renamed, updated, deleted, or re-ordered.

Name

PRESETS_CHANGED ()

Parameters

None

Returns

None

Example

`C4:SendToProxy(PROXY_BINDING, 'PRESETS_CHANGED', { XML = "<dynamic_presets><max_presets>100</max_presets><preset...</dynamic_presets>" }, 'NOTIFY') `

 Note that formed XML for dynamic_presets should resemble the following:

<dynamic_presets>
    <max_presets> Int of max allowed presets </max_presets>
    <presets>
        <preset>
            <id> preset id </id>
            <name> Base64 encoded name </name>
        </preset>
    
    </presets>
</dynamic_presets>

PROPERTY_DEFAULTS

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

Name

PROPERTY_DEFAULTS ()

Parameter Type Description
HTTP Port. NUM HTTP Port. Default port is 80.
RTSP Port NUM RTSP Port. Default port is 554.
AUTHENTICATION_REQUIRED BOOL AUTHENTICATION_REQUIRED True/False.
AUTHENTICATION_TYPE STR AUTHENTICATION_TYPE “BASIC” or “DIGEST”.
deafult_username STR Username - deafult_username
deafult_password STR Password - deafult_password

Returns

None

STREAM_URLS_READY

Notify used for following up to a GET_STREAM_URLS Synchronous call. This Notify will let a UI know that the URL information they requested is ready. The driver must use the same key parameter value that was returned to the UI as the key parameter in this notify.

Parameter Description
KEY Key of the originating call for the snapshot to be created.
URLS String of XML object as described in the description of this call.

Examples

An example of the simplest XML used by a driver is shown to the right:

<streams key="1234">
   <stream url="http://192.168.1.150/view_camera.cgi">
</streams>

or

<streams key="1234" camera_address="192.168.1.150">
   <stream url="https://192.168.1.150:443/view_camera.cgi" codec="h264">
   <stream url="http://192.168.1.150:80/view_camera_h265.cgi" codec="h265">
</streams>

This is followed by an example from a camera with more features and can provide more options to allow clients to pick a better stream:

<streams key="1234" camera_address="server.company.com">
<stream url="rtsps://192.168.1.150:554/rtsp.cgi" codec="h265" resolution"1920x1080" fps="60">
<stream url="rtsps://192.168.1.150:554/cloudapi.cgi?fh2f5hw2" codec="h265" resolution"640x480" fps="5">
<stream url="rtsp://192.168.1.150:554/cloudapi.cgi?fh2f4hw1" codec="h264" resolution"1920x1080" fps="60">
<stream url="rtsp://192.168.1.150:554/cloudapi.cgi?fh2f4hw2" codec="h264" resolution"640x480" fps="5">
<stream url="https://192.168.1.150:443/cloudapi.cgi?fh2fhsw3" codec="mjpeg" resolution"1920x1080" fps="20">
<stream url="https://192.168.1.150:443/cloudapi.cgi?fh2fhsw5" codec="mjpeg">
<stream url="http://192.168.1.150:80/cloudapi.cgi?fh2fhw3" codec="mjpeg" resolution"1920x1080" fps="20">
<stream url="http://192.168.1.150:80/cloudapi.cgi?fh2fhw5" codec="mjpeg">
</streams>

USE_HTTPS_CHANGED

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

Name

USE_HTTPS_CHANGED ()

Parameter Type Description
USE HTTPS BOOL 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.

AUDIO

Established whether or not audio distribution is supported from the camera. If present, this property is 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_ratio 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.

AUTHENTICATION REQUIRED

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

AUTHENTICATION TYPE

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.

PUBLICLY ACCESSIBLE

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.

Camera Proxy Extras Interface Library

Extras are configured from the Setting option from the main menu in ComposerPro. The settings option only shows if the has_extras capability is set to true.

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()

ExtrasButton

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 extra parameters

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

ExtrasCheckbox

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 extra parameters

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

ExtrasIcon

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 extra parameters

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

ExtrasList

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 extra parameters

Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.

Function Signature:

ExtrasList:makeSetupXml()

Returns:

Name Type
xml string

ExtrasNumber

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 extra parameters

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

ExtrasObject

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 extra parameters

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

ExtrasSlider

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

ExtrasSwitch

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

ExtrasText

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

ExtrasTextField

Overview

This class represents abstraction 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.

Dynamic Camera Streams

The Camera Proxy has been enhanced with regard to what types of streams it provides. This is a result of the release of Control4’s next generation T4 touchscreens, new controllers and support for H.265 streaming. Camera drivers now have the ability to provide more stream options and can support a larger set of mixed hardware environments.

Also, Navigators now support streaming tiles which results in the need to stream many cameras in parallel. To provide this functionality over a remote connection, it is desirable to offer the option to pick a lower bandwidth stream.

For the best experience, cameras should be minimally configured with the following streams by default:

Next Gen C4 OSD T4 Touch Screens Mobile
High Resolution H.265 1080p H.265 High Resolution H.265
Legacy C4 OSD T3 Touch Screens
720p H.264 720p H.264
Small Streaming Tiles
Low Resolution H.265

Driver Support for Dynamic Streams

See the Related APIs section below for detailed information regarding the functions discussed in this section.

New camera drivers should implement the dynamic streams API to provide a list of streams that the Navigators can pick from. In order to support dynamic streams the driver should:

  1. Set the requires_dynamic_stream_urls dynamic capability to “true”.

  2. Implement the GET_STREAM_URLS UI request command. This can be either implemented synchronously, by returning the list of cameras directly or it can also be implemented asynchronously. For example, if the driver needs to query a web service to get the current streams.

If implemented asynchronously, when the stream list is available it will be necessary to send the Proxy the STREAM_URLS_READY Notify with the results.

Drivers that do not have static URLs for streams will need to respond to the GET_STREAM_URLS call with an XML object that indicates the URL(s) is/are being generated and include a key with the response. Once the driver has been able to obtain a URL for the stream, the driver should send a STREAM_URLS_READY Notify with the same key that is provided with this Synchronous call response. An example of the response is:

<streams generating_key="1234"/>

The key should be a unique 32 bit integer value. We recommend starting at 1 and incrementing by 1 for each request that comes in.

Also, if the driver does have a valid temporary URL that is still valid when it gets the call, no further Notify is needed and the driver should respond to this call with the XML of streams information.

To indicate to a client that the driver supports this API call, a driver needs to set the requires_dynamic_stream_urls capability to true in the driver c4i or via DYNAMIC_CAPABILITIES_CHANGED Notify.

If no Port is provided with a URL, the following ports are used by all clients as the default for the transport:

Support for Caching URLs

The ability to cache the stream URL list is also supported. This removes the need to have to execute the GET_STREAM_URLS request every time a camera stream is loaded. This is supported with the capability: dynamic_urls_use_type. 

The driver also needs to send a DYNAMIC_URLS_CHANGED notification to the proxy when the configured URLs have been changed. The proxy would then send a "DYNAMIC_URLS_CHANGED" DataToUI in response to this that the Navigators would key off of to refresh any cached URLs. This is useful for driver's with MULTIPLE use type URLs.

Capability determining whether the camera should be asked for stream URLs through the more advanced API call.

<requires_dynamic_stream_urls></requires_dynamic_stream_urls>

Boolean: Defaults to false.

Yes

<capabilities>
    <requires_dynamic_stream_urls>true</requires_dynamic_stream_urls>
</capabilities>

Capability determining whether the camera should be asked for snapshot URLs through the more advanced API call.

<requires_dynamic_snapshot_urls></requires_dynamic_snapshot_urls>

Boolean: Defaults to false.

Yes

<capabilities>
    <requires_dynamic_snapshot_urls>true</requires_dynamic_snapshot_urls>
</capabilities>

This command is used to obtain URLs for a camera that does not have a constant URL like a Cloud based camera or for cameras that have a wider range of features and configurable options that can produce better customer experiences using various clients.

A Client will make this request to a driver and provide information about how the client will be using the stream. The driver optionally can adjust the URL(s) returned based on this information. Driver developers are encouraged to test their driver on various devices to ensure good customer experiences when viewing collages, high resolution or high frame rate streams.

Parameter Description
CODEC Optional. Comma separated list of codecs that the client can support with the most preferred first. A driver is not required to handle this but some drivers may want to if they support multiple codecs. (mjpeg, h264, h264i, h265)
RESOLUTION Optional. Resolution that the client will be using to display the stream. A driver is not required to support this but this can be helpful for clients that may need a lower resolution stream for collages of multiple cameras and a 4MP or higher stream would tax the client hardware.
FPS Optional. Frames Per Second that the client would prefer. A driver is not required to support this but if it does it may result in better customer experience when dealing with collages on Navigators.

An example of the simplest XML returned by a driver is shown to the right:

--- simple

<streams>
   <stream url="http://192.168.1.150/view_camera.cgi">
</streams>

or

<streams>
   <stream url="https://192.168.1.150:443/view_camera.cgi" codec="h264">
   <stream url="http://192.168.1.150:80/view_camera_h265.cgi" codec="h265">
</streams>

This is followed by a more complex example from a camera with more features and can provide more options to allow clients to pick a better stream:

--- complex

<streams>
  <stream url="rtsps://server.company.com:554/rtsp.cgi" codec="h265" resolution="1920x1080" fps="60">
  <stream url="rtsps://server.company.com:554/cloudapi.cgi?fh2f5hw2" codec="h265" resolution="640x480" fps="5">
  <stream url="rtsp://server.company.com:554/cloudapi.cgi?fh2f4hw1" codec="h264" resolution="1920x1080" fps="60">
  <stream url="rtsp://server.company.com:554/cloudapi.cgi?fh2f4hw2" codec="h264" resolution="640x480" fps="5">
  <stream url="https://server.company.com:443/cloudapi.cgi?fh2fhsw3" codec="mjpeg" resolution="1920x1080" fps="20">
  <stream url="https://server.company.com:443/cloudapi.cgi?fh2fhsw5" codec="mjpeg">
  <stream url="http://server.company.com:80/cloudapi.cgi?fh2fhw3" codec="mjpeg" resolution="1920x1080" fps="20">
  <stream url="http://server.company.com:80/cloudapi.cgi?fh2fhw5" codec="mjpeg">
</streams>

This command is used to obtain URLs for a camera that does not have a constant URL like a Cloud based camera or for cameras that have a wider range of features and configurable options that can produce better customer experiences using various clients.

A Client will make this request to a driver and provide information about how the client will be using the snapshot. The driver optionally can adjust the URL(s) returned based on this information.

An example of the simplest XML returned by a driver is shown to the right:

<snapshots>
 <snapshot url="http://192.168.1.150/view_camera.cgi">
</snapshots>

or

<snapshots>
 <snapshot url="http://192.168.1.150:80/custom_resolution_as_requested_by_client.cgi" resolution="644x481">
 <snapshot url="https://192.168.1.150:443/view_snapshot.cgi" resolution="3840x2160">
 <snapshot url="https://192.168.1.150:443/view_snapshot.cgi" resolution="1920x1080">
 <snapshot url="https://192.168.1.150:80/view_snapshot.cgi" resolution="640x480">
</snapshots>

Cloud Based Cameras 

Drivers that do not have static URLs for snapshots will need to respond to this call with an XML object that indicates the URL(s) is/are being generated and include a key with the response. Once the driver has been able to obtain a URL for the stream, the driver should send a SNAPSHOT_URLS_READY Notify with the same key that is provided with this Synchronous call response. An example of the response is:

<streams generating_key="1234"/>

The driver would then follow up with the SNAPSHOT_URLS_READY Notify and specify KEY=1234 in that notify along with the URL. The key should be a unique 32 bit integer value. We recommend starting at 1 and incrementing by 1 for each request that comes in.

Also, if the driver does have a valid temporary that is still valid when it gets the call, no further Notify is needed and the driver should respond to this call with the XML of snapshots information.

To indicate to a client that the driver supports this API call, a driver needs to set the requires_dynamic_stream_urls capability to true in the driver or via the DYNAMIC_CAPABILITIES_CHANGED Notify.

If no Port is provided with a URL, the following ports are used by all clients as the default for the transport:

http - 80 https - 443

Protocol Notification used for following up to a GET_STREAM_URLS Synchronous call. This Notify will let a UI know that the URL information they requested is ready. The driver must use the same key parameter value that was returned to the UI as the key parameter in this notify.

Parameter Description
KEY Key of the originating call for the snapshot to be created.
URLS String of XML object as described in the description of this call.

An example of the simplest XML used by a driver is shown to the right:

<streams key="1234">
   <stream url="http://192.168.1.150/view_camera.cgi">
</streams>

or

<streams key="1234" camera_address="192.168.1.150">
   <stream url="https://192.168.1.150:443/view_camera.cgi" codec="h264">
   <stream url="http://192.168.1.150:80/view_camera_h265.cgi" codec="h265">
</streams>

This is followed by an example from a camera with more features and can provide more options to allow clients to pick a better stream:

<streams key="1234" camera_address="server.company.com">
<stream url="rtsps://192.168.1.150:554/rtsp.cgi" codec="h265" resolution"1920x1080" fps="60">
<stream url="rtsps://192.168.1.150:554/cloudapi.cgi?fh2f5hw2" codec="h265" resolution"640x480" fps="5">
<stream url="rtsp://192.168.1.150:554/cloudapi.cgi?fh2f4hw1" codec="h264" resolution"1920x1080" fps="60">
<stream url="rtsp://192.168.1.150:554/cloudapi.cgi?fh2f4hw2" codec="h264" resolution"640x480" fps="5">
<stream url="https://192.168.1.150:443/cloudapi.cgi?fh2fhsw3" codec="mjpeg" resolution"1920x1080" fps="20">
<stream url="https://192.168.1.150:443/cloudapi.cgi?fh2fhsw5" codec="mjpeg">
<stream url="http://192.168.1.150:80/cloudapi.cgi?fh2fhw3" codec="mjpeg" resolution"1920x1080" fps="20">
<stream url="http://192.168.1.150:80/cloudapi.cgi?fh2fhw5" codec="mjpeg">
</streams>

Notify used for following up to a GET_SNAPSHOT_URLS Synchronous call. This Notify will let a UI know that the URL information they requested is ready. The driver must use the same key parameter value that was returned to the UI as the key parameter in this notify.

Parameter Description
KEY Key of the originating call for the snapshot to be created.
URLS String of XML object as described in the description of this call.
<snapshots key="1234">
 <snapshot url="http://192.168.1.150/view_camera.cgi">
</snapshots>

or

<snapshots key="1234">
 <snapshot url="http://192.168.1.150:80/custom_resolution_as_requested_by_client.cgi" resolution="644x481">
 <snapshot url="https://192.168.1.150:443/view_snapshot.cgi" resolution="3840x2160">
 <snapshot url="https://192.168.1.150:443/view_snapshot.cgi" resolution="1920x1080">
 <snapshot url="https://192.168.1.150:80/view_snapshot.cgi" resolution="640x480">
</snapshots>

Supports the following use types:

MULTIPLE - Default if the capability is not specified. URLs can be used repeatedly. If URLs change, the driver should send DYNAMIC_URLS_CHANGED notification to the proxy.

SINGLE - URLs can only be used once. Driver must be asked each time for a new set of URLs.

EXPIRING (Do not include in 3.3.1) - URLs can be used more than once, but expire after some time period.

<dynamic_urls_use_type></dynamic_urls_use_type>

Yes

<capabilities>
    <dynamic_urls_use_type>SINGLE</dynamic_urls_use_type>
</capabilities>

Camera Audio Distribution

Beginning with O.S. 3.4.0, camera drivers have the ability to distribute audio to devices running Navigator.

If a camera supports the proper CODEC and the camera microphone has been enabled in the appropriate interface a new audio button will appear at the bottom of the single-camera view. This will allow the user to hear live audio with the live video.

Note that if the camera does not support the proper codec, or the camera microphone has been disabled in the camera interface, no button will appear in the single-camera view.

Requirements

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_ratio.

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>password</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>

dynamic_urls_use_type

Support the following use types:

MULTIPLE - Default if the capability is not specified. URLs can be used repeatedly. If URLs change, the driver should send DYNAMIC_URLS_CHANGED notification to the proxy.

SINGLE - URLs can only be used once. Driver must be asked each time for a new set of URLs.

Signature

<dynamic_urls_use_type></dynamic_urls_use_type>

Dynamic Capability

Yes

Example

<capabilities>
    <dynamic_urls_use_type>SINGLE</dynamic_urls_use_type>
</capabilities>

has_dynamic_presets

Returns true if the cameras support for dynamic presets. Defaults to false.

Signature

<has_dynamic_presets></has_dynamic_presets>

Example

C4:SendToProxy(PROXY_BINDING, 'DYNAMIC_CAPABILITIES_CHANGED', { has_dynamic_presets = true }, 'NOTIFY')

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>

Dynamic Capability

Yes

Example

<capabilities>
    <has_extras>TRUE</has_extras>
</capabilities>

has_ pan

True/False. Default is False. This is a Dynamic Capability.

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. This is a Dynamic Capability.

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. This is a Dynamic Capability.

Signature

<has_zoom></has_zoom>

Example

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

has_home

True/False. Default is False. This is a Dynamic Capability.

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
str H265 - HEVC

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>

requires_dynamic_stream_urls

Whether the camera should be asked for stream URLs through the more advanced API call.

Signature

<requires_dynamic_stream_urls></requires_dynamic_stream_urls>

Type

Boolean: Defaults to false.

Dynamic Capability

Yes

Example

<capabilities>
    <requires_dynamic_stream_urls>true</requires_dynamic_stream_urls>
</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.

Name

ON ()

Parameters

None

Returns

None

OFF

Turn the fan OFF.

Name

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.

Name

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.

Name

DESIGNATE_PRESET ()

Parameter Type Description
PRESET NUM PRESET value. 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.

Name

SET_SPEED ()

Parameter Type Description
SPEED 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.

Name

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.

Name

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.

Name

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.

Name

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.

Name

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.

Name

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.

Name

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.

Name

CURRENT_SPEED ()

Parameter type Description
SPEED INT SPEED valid values: 0 - N

Returns

None

DIRECTION

Received from the protocol driver when the fan direction changes.

Name

DIRECTION ()

Parameter Description
str FORWARD/REVERSE

Returns

None

PRESET_SPEED

Received from the proxy when the preset speed changes.

Name

PRESET_SPEED ()

Parameter Type Description
SPEED 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>

proxy_fan_speed_connections

This capability is applicable to newer fan drivers which create BUTTON_LINK connections dynamically in association with fan speeds in the fan proxy. Setting this capability to true simply enables this ability. It relies on two other capabilities to successfully implement the dynamic connection functionality. They include: discreet_levels and speed_name.

Available from 3.4.2.

Signature

<proxy_fan_speed_connections></proxy_fan_speed_connections>

Parameter Description
bool True = Creates BUTTON LINK connections dynamically.

Example

<capabilities>
   <proxy_fan_speed_connections>true</proxy_fan_speed_connections>
</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.

Intercom Proxy Terminology

The following terms are specific to the Control4 Intercom Proxy and their use in developing a door station or door station like driver. Note that this content does not include the scope of developing a touch panel to support intercom use.

Intercom Call Commands – Includes a set of commands that are sent from the Intercom Proxy to the door station device that is supported by your driver. An example of an Intercom Proxy Command is START_CALL. When your driver receives the START_CALL command, it must handle the command in a manner that enables your device to begin a call.

Intercom Call Notifications - Includes a set of notifications that are sent from the device you are supporting, via your driver, to the Intercom Proxy. For example, when your driver receives a START_CALL command, it will send a CALL_ACCEPTED notification to the Intercom Proxy.

Intercom Call Requests - These functions represent requests that are sent from your device driver to the Intercom Proxy to obtain various sets of call data. For example, when needed your driver may send the Intercom Call Request of GET_DEVICE_LIST. The GET_DEVICE_LIST request is a function for gathering information about other devices on the network that might communicate with your device. Information returned includes data such as whether another device has a camera, does it include a display, etc.

Intercom State Commands - These functions consist of commands that impact the state of the device you are writing a driver for. For example, your driver may receive a State Command of SET_RINGER_VOLUME from the Intercom Proxy. SET_RINGER_VOLUME will be sent with a numerical value indicating the new ringer volume level. Your driver will need to receive this state command and adjust the ringer volume on your device accordingly.

Intercom State Notifications - These functions consist of notifications that are sent from the device you are supporting, via your driver, to the Intercom Proxy. For example, when your driver receives the State Command of SET_RINGER_VOLUME, it needs to send a State Notification of RINGER_VOLUME_CHANGED that includes the new ringer volume value.

Intercom State Requests - These functions represent requests that are sent from your device driver to the Intercom Proxy for various sets of device state data. For example, when needed your driver may send the Intercom Call Request of GET_STATE_LIST. This request returns the device states for all of the intercom endpoints in the project.

Intercom Call Group Requests - Currently, this consists of one function: GET_GROUP_LIST which can be used by your driver to obtain the group list of all of intercom call groups in the project.

Intercom Capabilities - These functions  consist of Boolean XML elements that need to be defined in your driver. They represent functionality supported by your device such as do not disturb support, camera inclusion or its ability to play a door chime.

Intercom Events - Events are useful to define in your driver as they provide an opportunity for ComposerPro programming to occur based on them being fired. For example, if the speaker_volume_changed Event is defined in your driver and that Event fires when the speaker volume of your device changes, it would be possible (through programming in ComposerPro) to modify the speaker volume of other intercom devices in the project.

Intercom Conditionals - Conditionals are useful to define in your driver as they also provide an opportunity for ComposerPro programming to occur based on their state. For example, if the In a Call conditional is set to true, the device that reported this conditional could be displayed as busy on Navigators.

Intercom Variables – The Intercom Proxy supports three Variables which can also be used in ComposerPro programming when defined in your driver. For example, the CALL_DURATION Variable can be assigned a time limit for a call, If that limit is exceeded, the call can be terminated.

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

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.

Intercom Proxy 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 the sessionId as an input parameter. The value for this parameter is provided by the SIP Client on the device in response to issuing a START_CALL command or a physical button press event.

This sessionId value is included in the resulting OUTGOING_CALL or 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 sends 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. Note that Auto Answer is ignored in the case of group 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 by some Control4 devices to control the microphone gain level of an intercom endpoint. Control4 intercom endpoints do not support microphone gain adjustments; this setting is provided for 3rd party use.

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

The ACCEPT_CALL command is sent from the Intercom Proxy to the device driver. When the driver receives the ACCEPT_CALL command, it must handle the command in a manner that enables the device to accept the incoming call. When implemented successfully, receipt of the ACCEPT_CALL command is followed the CALL_ACCEPTED notification being sent from the device driver to the Proxy.

Signature

ACCEPT_CALL ()

Call Flow:

  1. A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
  2. The device goes into a state of “incoming call”.
  3. This needs to trigger an Incoming_Call notification which is sent from the device, via the device driver, to the Proxy.
  4. Upon call acceptance, this is followed by the device driver sending a CALL_ACCEPTED notification to the Proxy.
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. Session ID is established when a call is initiated and serves as a unique identifier of the call.
num AUDIO - The requested audio capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only (RECV_ONLY),
num VIDEO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only (RECV_ONLY). 3 = Inactive (NO_SEND_ RECV)

Returns

None

Usage Notes:

This call command can be initiated by pressing a button on a UI displayed on devices running Navigator, Control-Control in ComposerPro and Composer Programming.

END_CALL

This command only applies to an established call session. If a call has not been established – it cannot be ended. The END_CALL command is sent from the Intercom Proxy to the device driver when an established call is to be terminated. After the call is terminated, the device driver must send the CALL_ENDED notification to both the initiator and the receiver of the call.

Signature

END_CALL ()

Call Flow:

  1. A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
  2. The device goes into a state of “incoming call”.
  3. This needs to trigger an Incoming_Call notification which is sent from the device, via the device driver, to the Proxy.
  4. Upon call acceptance, this is followed by the device driver sending a CALL_ACCEPTED notification to the Proxy.
  5. When the call is to be terminated, The END_CALL command is sent from the intercom proxy to the device driver.
  6. When the device driver terminates the call (SIP BYE), the CALL_ENDED notification is sent from the driver to the Intercom proxy.
Parameter Description
num DEVICE_ID - The proxy ID of the caller.
num REMOTE_DEVICE - The proxy ID of the callee.
str SESSION_ID - The session ID of the call. Session ID is established when a call is initiated and serves as a unique identifier of the call.

Returns

None

MUTE_CALL

This command only applies to an established call session. If a call has not been established – it cannot be muted. Likewise, a call cannot be muted when it is in a ringing state or a SIP BYE or ENDING states. The MUTE_CALL command is sent from the Intercom Proxy to the device driver. When the driver receives the MUTE_CALL command, it must handle the command in a manner that enables the device to place the existing call in a muted or un-muted state. Placing the device in a true muted state or setting the device volume to zero is supported for muting purposes. There is no associated notification for the MUTE_CALL command. The device driver must maintain the state of the call in order to un-mute or mute the call correctly

Signature

MUTE_CALL 

Call Flow:

  1. A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
  2. The device goes into a state of “incoming call”.
  3. This needs to trigger an Incoming_Call notification which is sent from the device, via the device driver, to the Proxy.
  4. Upon call acceptance, this is followed by the device driver sending a CALL_ACCEPTED notification to the Proxy.
  5. When the call is to be muted or un-muted, the MUTE_CALL command is sent from the intercom proxy to the device driver.
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

NOTE: The PAUSE_CALL command is currently deprecated and not available for use._  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. Session ID is established when a call is initiated and serves as a unique identifier of the call.

Returns

None

PLAY_DOOR_ CHIME

NOTE: The PLAY_DOOR_CHIME command is currently deprecated and not available for use._ 

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

The REJECT_CALL command is sent from the Intercom Proxy to the device driver. When the driver receives the Reject Call command, it must handle the command in a manner that enables the device to reject the incoming call. When implemented successfully, receipt of the REJECT_CALL command should be followed by sending a CALL_REJECTED notification from the device driver to the Proxy.

Signature

REJECT_CALL ()

Call Flow:

  1. A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
  2. The device goes into a state of “incoming call”.
  3. This needs to trigger an Incoming_Call notification which is sent from the device, via the device driver, to the Proxy.
  4. Upon call acceptance, this is followed by the device driver sending a CALL_REJECTED notification to the Proxy.
Parameter Description
num DEVICE_ID - The proxy ID of the caller.
num REMOTE_DEVICE - The proxy ID of the callee.
str SESSION_ID - The session ID of the call. Session ID is established when a call is initiated and serves as a unique identifier of the call.

Returns

None

Usage Notes:

This command can be initiated by pressing a button on a UI displayed on devices running Navigator, Control-Control in ComposerPro and Composer Programming.

The Reject Call command has no effect when sent during an active call session. End Call should be used in this instance.

If auto-answer is enabled, it overrides the option to reject the call and the Proxy will automatically accept it.

RESUME_CALL

NOTE: The RESUME_CALL command is currently deprecated and not available for use._  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. Session ID is established when a call is initiated and serves as a unique identifier of the call.

Returns

None

START_CALL

The START_CALL command is initiated through Programming or Control/Control in ComposerPro. It is sent to the Intercom Proxy, which then sends a START_CALL to the device driver. When the driver receives the START_CALL command, it must handle the command in a manner that enables the device to begin a call. When implemented successfully, receipt of the START_CALL command is followed by the CALL_ACCEPTED notification being sent from the device driver to the Proxy.

Signature

START_CALL ()

Call Flow:

  1. Upon receiving a START_CALL command from the Proxy, a SIP invite is generated.
  2. The SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
  3. The device goes into a state of “outgoing call”.
  4. This needs to trigger an Outgoing_Call notification which is sent from the device, via the device driver, to the Proxy.
  5. Upon call acceptance, this is followed by the device driver that receives the call, sending a CALL_ACCEPTED notification to the Proxy.
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 video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY), 3 = Inactive (NO_SEND_RECV)
num VIDEO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY). The Audio channel cannot be Inactive.
num RING - The ring parameter for the call 0 = plays default Navigator beep, 1 = plays doorbell chime

Returns

None

START_MONITOR_CALL

The START_MONITOR_CALL command is sent from the Intercom Proxy to the device driver. When the driver receives the START_MONITOR_CALL command, it must be in monitor mode to successfully handle it. A device can be set to monitor mode via Composer Pro or Navigator. When implemented successfully, the command will result in an INCOMING_CALL notification being sent to the proxy. Note that in addition to a device being in monitor mode, it should also mute itself or turn volume level to zero when receiving the START_MONITOR_CALL. This ensures that no sounds come from the receiving device. This is useful in the case where a device is being used as a baby monitor.

Signature

START_MONITOR_CALL ()

Call Flow:

  1. START_MONITOR_CALL command is sent from the intercom proxy to the device driver.
  2. A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
  3. The device goes into a state of “incoming call”.
  4. This needs to trigger an Incoming_Call notification which is sent from the device, via the device driver, to the Proxy.
  5. Because the device receiving the call is in monitor mode, the call is automatically accepted.
  6. Upon call acceptance, this is followed by the device driver sending a CALL_ACCEPTED notification to the Proxy.
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 video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY), 3 = Inactive (NO_SEND_RECV)
num VIDEO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY). The Audio channel cannot be Inactive.
num RING - The ring parameter for the call 0 = default Navigator beep, 1 = doorbell chime. Note that the RING param must be passed for the function to work correctly. The driver must place the receiving on mute or turn volume level to zero

Returns

None

Intercom Call Requests

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_TIMEOUT

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

The CALL_ACCEPTED notification is generated by the device driver and sent to the intercom proxy when a call is accepted.

Signature

CALL_ACCEPTED ()

Call Flow:

  1. A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
  2. The device goes into a state of “incoming call”.
  3. Upon entering this state, the device driver needs to trigger an INCOMING_CALL notification which is sent from the device to the intercom proxy.
  4. Upon answering the call, the CALL_ACCEPTED notification is sent to the intercom proxy.
Parameter Description
num The Device ID of the Proxy.
str The Session ID of the SIP session. Session ID is established when a call is initiated and serves as a unique identifier of the call.
num AUDIO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY), 3 = Inactive (NO_SEND_RECV)
num VIDEO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY). The Audio channel cannot be Inactive.

Returns

None

CALL_ENDED

The CALL_ENDED notification is generated by the device driver and sent to the intercom proxy when a call session is ended. After a SIP call is ended, any device participating in the call should send CALL_ENDED notification.

Signature

CALL_ENDED ()

Parameter Description
num The Device ID of the Proxy.
str The Session ID of the SIP session. Session ID is established when a call is initiated and serves as a unique identifier of the call.
num Hang up type: 0 = LOCAL, 1 = REMOTE, 2 = BCASTEMPTY, 3 = NOTFOUND, 4 = DEVBUSY, 5 = NOANSWER, 6 = HUNKOWN

Usage Notes:

The CALL_ENDED notification is only applicable to devices that are active in an answered, call session. For example, in the case of a group call, the CALL_ENDED notify is sent only by the device that was participating in the call. Other devices in the call list should sent a CALL_REJECTED to the proxy.

CAMERA_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

NOTE: The CALL_PAUSED notify is currently deprecated and not available for use.\

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. Session ID is established when a call is initiated and serves as a unique identifier of the call.

CALL_REJECTED

The CALL_REJECTED notification is generated by the device driver and sent to the intercom proxy when a call is rejected.

Signature

CALL_REJECTED ()

Call Flow:

  1. A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
  2. The device goes into a state of “incoming call”.
  3. Upon entering this state, the device driver needs to trigger an INCOMING_CALL notification which is sent from the device to the intercom proxy.
  4. Upon answering the call, the CALL_REJECTED notification is sent to the intercom proxy indicating that the device did not answer the call.
Parameter Description
num The Device ID of the Proxy.
str The Session ID of the SIP session. Session ID is established when a call is initiated and serves as a unique identifier of the call.
num Hang up type: 0 = LOCAL, 1 = REMOTE, 2 = BCASTEMPTY, 3 = NOTFOUND, 4 = DEVBUSY, 5 = NOANSWER, 6 = HUNKOWN

Returns

None

Usage Notes:

The CALL_REJECTED notification is only applicable to devices that are NOT active in a call session. For example, in the case of a group call, the CALL_REJECTED notify is sent only by the device or devices that did not participate in the call. Other devices in the call list that answered the call, should sent a CALL_ENDED to the proxy.

CALL_RESUMED

NOTE: The CALL_RESUMED notify is currently deprecated and not available for use._

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. Session ID is established when a call is initiated and serves as a unique identifier of the call.

INCOMING_CALL

The INCOMING_CALL notification is generated by the device driver upon receiving the invitation to a call from SIP. This notification is sent to the Intercom Proxy.

Signature

INCOMING_CALL ()

Call Flow:

  1. A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
  2. The device goes into a state of “Incoming call”.
  3. Upon entering this state, the device driver needs to trigger an Incoming_Call notification which is sent from the device, via the device driver, to the Proxy.
Parameter Description
num The Device ID of the Proxy.
str The Session ID of the SIP session. Session ID is established when a call is initiated and serves as a unique identifier of the call.
num Call type. 0 = REGULAR , 2 = MONITOR , 3 = FORKING, 5 = EXTERNAL
num Remote_DEVICE_ID. The Proxy ID of the remote endpoint of the call
num AUDIO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY), 3 = Inactive (NO_SEND_RECV)
num VIDEO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY). The Audio channel cannot be Inactive.

Returns

None

OUTGOING_CALL

The OUTGOING_CALL notification is generated by the device driver and sent to the intercom proxy when a call invite is SENT. This notification is sent to the Intercom Proxy.

Signature

OUTGOING_CALL ()

Call Flow:

  1. A SIP invite to a call is sent by the device.
  2. The device goes into a state of “outgoing call”.
  3. Upon entering this state, the device driver needs to trigger an Outgoing_Call notification which is sent from the device driver to the Proxy.
Parameter Description
num The Device ID of the Proxy.
str The Session ID of the SIP session. Session ID is established when a call is initiated and serves as a unique identifier of the call.
num Call type. 0 = REGULAR, 2 = MONITOR, 3 = FORKING, 5 = EXTERNAL
num remote_device_id = the proxy ID of the remote endpoint
num AUDIO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY), 3 = Inactive (NO_SEND_RECV)
num VIDEO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY). The Audio channel cannot be Inactive.

Returns

None

Intercom State Commands

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_ENABLE>
    <cameraEnable>[true]</cameraEnable>
</SET_CAMERA_ENABLE>

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 ()

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_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. Upon receiving the request, the driver should issue a CURRENT_STATE_CHANGED notify.

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

CURRENT_STATE_CHANGED

This notification is issued by the protocol 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 protocol 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 protocol 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 protocol 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 protocol 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 protocol 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 protocol 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 protocol when the endpoint’s ringer volume 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 protocol 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 protocol 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 protocol 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 protocol 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 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_GROUP_LIST ()

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 Capabilities

has_play_door_chime

Device supports the ability to play a secondary door chime inanition to the default door chime. This is primarily intended for playing a secondary door chime on Control4 touch panels.

Signature

<has_play_door_chime></has_play_door_chime> 

Parameter Description
bool True/False

Example

<capabilities>
   <has_play_door_chime>false</has_play_door_chime>
</capabilities>

has_camera

The device includes a camera and supporting camera functionality. This controls enabling/disabling the use of the Send Video UI in ComposerPro.

Signature

<has_camera></has_camera>

Parameter Description
bool True/False

Example

<capabilities>
   <has_camera>True</has_camera>
</capabilities>

has_display

Device includes a physical display. Typically a door station has a display where a touch panel may not. Setting this to True enables the device to receive incoming video.

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>

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>

driver_arch_type

This capability is included in the SDK for Control4 internal use. It is used to determine if the driver file is a Control4 driver or a third party driver. Third party driver developers must pass a value of 5 in this capability.

Signature

<driver_arch_type></driver_arch_type>

Parameter Description
num 0-5. Device Type Number

Example

<capabilities>
   <driver_arch_type>5</driver_arch_type>
</capabilities>

has_auto_answer

A setting of True indicates that the device supports the ability to automatically answer an incoming call. Setting this capability to True will also enable the use of the has auto answer checkbox in ComposerPro.

Signature

<has_auto_answer></has_auto_answer> 

Parameter Description
bool True/False

Example

<capabilities>
   <has_auto_answer>false</has_auto_answer>
</capabilities>

has_do_ not_disturb

Device supports do not disturb functionality. Setting this to true will enable the use of the Do Not Disturb checkbox in ComposerPro.

Signature

<has_do_not_disturb></has_do_not_disturb> 

Parameter Description
bool True/False

Example

<capabilities>
   <has_do_not_disturb>true</has_do_not_disturb>
</capabilities>

has_early_media

Device supports delivery of SIP Early Media. Early media is the preview video and or audio distributed prior to a call being answered. Currently, this is only supported in door stations.

Signature

<has_early_media></has_early_media> 

Parameter Description
bool True/False

Example

<capabilities>
   <has_early_media>true</has_early_media>
</capabilities>

has_monitor_mode

Device supports the use of display monitor functionality. Setting this to true will also enable the use of the Monitor Mode checkbox in ComposerPro.

Signature

<has_monitor_mode></has_monitor_mode> 

Parameter Description
bool True/False

Example

<capabilities>
   <has_monitor_mode>true</has_monitor_mode>
</capabilities>

use_microphone

The driver has the ability to physically control the microphone level on the device.

Signature

<use_microphone></use_microphone> 

Parameter Description
bool True/False

Example

<capabilities>
   <use_microphone>true</use_microphone>
</capabilities>

use_speaker

The driver has the ability to physically control the speaker level on the device.

Signature

<use_speaker></use_speaker> 

Parameter Description
bool True/False

Example

<capabilities>
   <use_speaker>true</use_speaker>
</capabilities>

use_ringer

The driver has the ability to physically control the ringer level on the device.

Signature

<use_ringer></use_ringer> 

Parameter Description
bool True/False

Example

<capabilities>
   <use_ringer>true</use_ringer>
</capabilities>

has_high_definition

Capability applicable to touch panels. The driver has the ability to turn camera video quality to 720p, as opposed to 640x480.

Signature

<has_high_definiton></as_high_definiton> 

Parameter Description
bool True/False

Example

<capabilities>
   <has_high_definiton>true</has_high_definiton>
</capabilities>

has_echo_calibration

This capability is included in the SDK for Control4 internal use.

Signature

<has_echo_calibration></has_echo_calibration> 

Parameter Description
bool True/False

Example

<capabilities>
   <has_echo_calibration>false</has_echo_calibration>
</capabilities>

audio_codecs_supported

This Capability has been deprecated and is no longer applicable to driver development efforts. 

has_intercom

This Capability has been deprecated and is no longer applicable to driver development efforts. 

has_video_intercom

This Capability has been deprecated and is no longer applicable to driver development efforts. 

has_mcast_emedia

This Capability has been replaced and is no longer applicable to driver development efforts. 

For more information see the has_early_media capability.

can_change_multicast_ip

This Capability has been deprecated and is no longer applicable to driver development efforts. 

can_change_transport

This Capability has been deprecated and is no longer applicable to driver development efforts. 

video_codecs_supported

This Capability has been deprecated and is no longer applicable to driver development efforts. 

can_set_aec

This Capability has been deprecated and is no longer applicable to driver development efforts. 

number_ring_buttons

This capability is included in the SDK for Control4 internal use.

can_detect_button_press

This capability is included in the SDK for Control4 internal use.

can_detect_button_release

This capability is included in the SDK for Control4 internal use.

Intercom Events

Intercom Events are tied to programming in ComposerPro. Events are also recored in history and can be used to trigger notifications using the History Agent.

For example, it’ possible to trigger a notification on a mobile phone based on an incoming call (Incoming Call Event) that occurs on a door station or any other device in the project that uses the Intercom Proxy.

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 Variables

Intercom Variables

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

CALL_DURATION - This variable supports ComposerPro programming based on a set call duration time.

MICROPHONE_GAIN - This variable supports ComposerPro programming based on a change to the microphone’s gain level.

RINGER_VOLUME - This variable supports ComposerPro programming based on a change to the device’s ringer volume level.

SPEAKER_VOLUME - This variable supports ComposerPro programming based on a change to the device’s speaker volume level.

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

Name

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.

Name

KEYPAD_ALL_BUTTON_COLOR ()

Parameter Type Description
OFF_COLOR INT ID value of the button to be deleted
ON_COLOR INT The new on/push color for the keypad
CURRENT_COLOR INT The color the keypad should immediately go to

Returns

None

KEYPAD_ALL_BUTTON_COLOR_CLEAR

Used to clear the color for all buttons on a keypad.

Signature

KEYPAD_ALL_BUTTON_COLOR_CLEAR ()

Parameter Description
OFF_COLOR ID value of the buttons 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_COLOR_CLEAR

Used to clear the color for a button on a keypad.

Signature

KEYPAD_BUTTON_COLOR_CLEAR ()

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.

Name

KEYPAD_BUTTON_ACTION ()

Parameter Type Description
ACTION NUM The action performed on the keypad: 0 = Release, 1 = Push, 2 = Click
BUTTON ID INT 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.

Name

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.

Name

KEYPAD_BUTTON_INFO ()

Parameter Type Description
BUTTON ID INT The ID of the button being changed
NAME STR The name of the button (optional)
ON COLOR STR The on/press color for the button (optional)
OFF COLOR STR The off/release color for the button (optional)
ENGRAVING STR 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 BOOL 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.

Name

NEW_KEYPAD_BUTTON ()

Parameter Type Description
BUTTON ID INT The ID of the button being changed
NAME STR The name of the button (optional)
ON COLOR STR The on/press color for the button (optional)
OFF COLOR STR 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 NUM 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)

Name

SET_TRACK_PREV_BUTTON N ()

Parameter Type Description
MODE BOOL Support button tracking

Returns

None

Keypad Capabilities

clear_led_current_color_support

Enabling this capability allows the Keypad Proxy to clear keypad button(s) color. Previously, this had to be done at the protocol level. Specifically, this is applicable to button colors that have been set programmatically in Composer Pro. Enabling this capability in your driver will expose two new Keypad Proxy Programming Action in Composer Pro: Clear LED Current and Clear All LED Current.

Available from 3.4.2.

Signature

<clear_led_current_color_support></clear_led_current_color_support>

Type

Boolean. Defaults to false

Dynamic Capability

No

Usage Note

In conjunction with this capabilities’ use, Drivers need to implement the following Proxy Commands:

KEYPAD_BUTTON_COLOR_CLEAR - A Notify must be sent when this command is received containing the new button color for the indicated button using the KEYPAD_BUTTON_COLOR notification.

KEYPAD_ALL_BUTTON_COLOR_CLEAR - A Notify must be sent when this command is received containing the new button colors for each button using the KEYPAD_BUTTON_COLOR notification.

Example

<capabilities>
    <clear_led_current_color_support>true</clear_led_current_color_support>
</capabilities>

Keypad Protocol Notifications

BEHAVIOR_NAME

Used to inform (or update) the proxy of a button behavior name

Name

BEHAVIOR_NAME ()

Parameter Description Description
BUTTON ID NUM The ID of the behavior to send when selected by the user.
NAME STR 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).

Name

CLICK_COUNT ()

Parameter Type Description
BUTTON ID NUM The ID of the button clicked by the user.
COUNT NUM The number of times the button was clicked

Returns

None

DELETE_KEYPAD_BUTTON

Used to inform the proxy that a button is being deleted

Name

DELETE_KEYPAD_BUTTON ()

Parameter Type Description
BUTTON ID NUM 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.

Name

KEYPAD_BUTTON_ACTION ()

Parameter TypeDescription Description
BUTTON ID NUM The ID of the button to be deleted.
ACTION NUM 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.

Name

KEYPAD_ALL_BUTTON_COLOR ()

Parameter Type Description
ON COLOR STR The new on color for the button in RGB hex string.
OFF COLOR OFF COLOR OFF COLOR
CURRENT COLOR STR The new current color for the button in RGB hex string.
COLOR STR 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 it has been instructed to change the color of a button.

Name

KEYPAD_BUTTON_COLOR ()

Parameter Type Description
BUTTON ID NUM The ID of the button whose color is changing.
ON COLOR STR The new on color for the button in RGB hex string.
OFF COLOR STR The new off color for the button in RGB hex string.
CURRENT COLOR STR The new current color for the button in RGB hex string.
COLOR STR 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.

Name

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

Name

LED_BEHAVIOR_NAME ()

Parameter Type Description
BUTTON ID NUM The ID of the LED behavior to send when selected by the user.
NAME STER 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.

Name

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

Name

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 the reduced_als_support capability. 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

brightness_rate_max

Minimum color rate, in milliseconds, supported for transitioning from one brightness to another. Should always be set for any color light driver, even if the transition rate is unchangeable. Allows dealers to configure the maximum rate that can be configured by dealers. The brightness_rate value is used by voice control, navigators, customer created advanced lighting scenes, and various other areas of the system that previously didn't allow customization of the transition rate.

Dealers can set the values for this in ComposerPro Properties.

Signature

<brightness_rate_max></brightness_rate_max>

Type

Integer. Defaults to UNIT16_MAX. Valid values fall between 0 and 4294967295.

Dynamic Capability

Yes

Example

<capabilities>
    <brightness_rate_max>4294967295</brightness_rate_max>
</capabilities>

brightness_rate_min

Minimum color rate, in milliseconds, supported for transitioning from one brightness to another. Should always be set for any color light driver, even if the transition rate is unchangeable. Allows dealers to configure the minimum rate that can be configured by dealers. The brightness_rate value is used by voice control, navigators, customer created advanced lighting scenes, and various other areas of the system that previously didn't allow customization of the transition rate.

Dealers can set the values for this in ComposerPro Properties.

Signature

<brightness_rate_min></brightness_rate_min>

Type

Integer. Defaults to 0.

Dynamic Capability

Yes

Example

<capabilities>
    <brightness_rate_min>0</brightness_rate_min>
</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>

brightness_on mode_preset

Used to enable generic brightness presets to be used with the "On Mode" behavior. If a driver supports this capability, it is up to the driver to support additional parameter handling and reporting.

See SET_BRIGHTNESS_TARGET, BRIGHTNESS_CHANGING and BRIGHTNESS_CHANGED commands and notifies and look for optional parameters such as LIGHT_BRIGHTNESS_TARGET_PRESET_ID and LIGHT_COLOR_CURRENT_PRESET_ID.

Additionally, drivers need to implement UPDATE_BRIGHTNESS_ON_MODE and UPDATE_BRIGHTNESS_PRESET commands so they can track values for situations where the proxy is not the initiator of light behavior, such as On Mode Fade, scenes, composer programming, etc.

Signature

<brightness_on_mode_preset></brightness_on_mode_preset>

Type

Boolean. Defaults to false.

Dynamic Capability

No

Example

<capabilities>
    <brightness_on_mode_preset>true</brightness_on_mode_preset>
</capabilities>

brightness_on_mode_previous

Used to enable the Previous On "On Mode" behavior for a light. The 3.3.2 and newer proxies track the last brightness non-zero level reported by a driver before a BRIGHTNESS_CHANGED notification occurs with a level of 0. When the proxy gets a generic On (aka Dynamic On) then the proxy will send a SET_BRIGHTNESS_TARGET command with that last reported non-zero brightness level. The proxy will also update the PREVIOUS brightness preset value with the last non 0 brightness level anytime the proxy gets a BRIGHTNESS_CHANGED notify of a value of 0.

Additionally if drivers get a command to turn on that did not come from the proxy, the driver can check the brightness PREVIOUS preset value to know what level it should turn on to.

Signature

<brightness_on_mode_previous></brightness_on_mode_ previous>

Type

Boolean. Defaults to false

Dynamic Capability

No

Example

<capabilities>
    <brightness_on_mode_previous>true</brightness_on_mode_previous>
</capabilities>

color_on_mode_fade

Used to enable the Fade On "On Mode" behavior, such as Dim to Warm, so that the lights color is based on the current brightness of a light.

Dealers are allowed to pick two colors when in this mode. The Dim color a dealer picks is the color of the light at a 1% brightness and a second On color a dealer picks is the color of the light at 100% brightness. If a customer picks 50% brightness, the color the light shows should be an equal mix of the Dim color and On color. This "color mix" can easily be calculated by the following equation:

colorFinal.x = colorDim.x + (colorOn.x - colorDim.x)  brightness.01

colorFinal.y = colorDim.y + (colorOn.y - colorDim.y)  brightness.01

As a driver receives a new SET_BRIGHTNESS_TARGET command then the driver should use this formula and always set a new color on their light even if it does not receive a SET_COLOR_TARGET command.

Driver developers will notice that when a light is normally turned on from UI's, they will not get a SET_COLOR_TARGET when in this mode. If a driver does get a SET_COLOR_TARGET command, such as from a scene, composer programming, or other scenario then the driver should go to that color even while in Fade mode. If the driver gets any future SET_BRIGHTNESS_TARGET then the driver should again apply the color formula.

Signature

<color_on_mode_fade></color_on_mode_fade>

Type

Boolean. Defaults to false.

Dynamic Capability

No

Example

<capabilities>
    <color_on_mode_fade>true</color_on_mode_fade>
</capabilities>

color_on_mode_preset

Used to enable generic color presets to be used with the "On Mode" behavior. If a driver supports this capability, it is up to the driver to support additional parameter handling and reporting.

See SET_COLOR_TARGET, COLOR_CHANGING and COLOR_CHANGED commands and notifies and look for optional parameters such as:

Additionally, drivers need to implement UPDATE_COLOR_ON_MODE and UPDATE_COLOR_PRESET commands so they can track values for situations where the proxy is not the initiator of light behavior, such as On Mode Fade, scenes, composer programming, etc.

Signature

<color_on_mode_preset></color_on_mode_preset>

Type

Boolean. Defaults to false.

Dynamic Capability

No

Example

<capabilities>
    <color_on_mode_preset>true</color_on_mode_preset>
</capabilities>

color_on_mode_previous

Used to enable the Previous Color On "On Mode" behavior for a light. The 3.3.2 and newer proxies track the last color reported by a driver before a BRIGHTNESS_CHANGED notification occurs with a level of 0. When the proxy gets a generic On (aka Dynamic On) then the proxy will send a SET_COLOR_TARGET command with that last reported color before the brightness went to 0. The proxy will also update the PREVIOUS color preset value with the last color prior to the proxy receiving a BRIGHTNESS_CHANGED notify of a value of 0.

Additionally if drivers get a command to turn on that did not come from the proxy, the driver can check the PREVIOUS color preset value to know what color it should turn on to.

Signature

<color_on_mode_previous></color_on_mode_previous>

Type

Boolean. Defaults to false.

Dynamic Capability

No

Example

<capabilities>
    <color_on_mode_previous>true</color_on_mode_previous>
</capabilities>

cold_start

Ramping API indicating if the lighting hardware supports cold start. Defaults to false. In conjunction with O.S. release 3.4.2, this capability was modified to be a Dynamic Capability. This change has no impact on existing drivers using the cold_start capability. Going forward a driver can now change this capability if needed.

Available from 3.4.2.

Signature

<cold_start></<cold_start>

Type

Boolean

Dynamic Capability

Yes

Example

<capabilities>
    <cold_start>true</cold_start>
</capabilities>
-- The following command can be sued to dynamically change the cold_start capability: 

C4:SendToProxy(PROXY_ID, 'DYNAMIC_CAPABILITIES_CHANGED', { cold_start = gColdStartEnabled }, "NOTIFY", true)

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

Maximum color rate, in milliseconds, supported for transitioning from one color to another. Should always be set for any color light driver, even if the transition rate is unchangeable. Allows dealers to configure the maximum rate that can be configured. The color_rate value is used by voice control, navigators, customer created advanced lighting scenes, and various other areas of the system that previously didn't allow customization of the transition rate.

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

Minimum color rate, in milliseconds, supported for transitioning from one color to another. Should always be set for any color light driver, even if the transition rate is unchangeable. Allows dealers to configure the maximum rate that can be configured. The color_rate value is used by voice control, navigators, customer created advanced lighting scenes, and various other areas of the system that previously didn't allow customization of the transition rate.

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>

disable_flash

This capability Indicates whether the driver supports Flash behavior. This capability is useful with regard to Flash functionality being offered in the Advanced Lighting Scenes Composer Pro UI. By default, this capability is set to false. Setting this to true will allow Flash functionality to be configured in Composer Pro.

Available from 3.4.2.

Signature

<disbale_flash></disbale_flash>

Type

bool

Dynamic Capability

No

Example

<capabilities>
    <disbale_flash>true</disbale_flash>
</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

Some color lighting hardware or communication protocols lack enough bits or precision to set all possible colors, especially if using 8 bit Mired, RGB, or HSV values. This capability adjusts the CIELa*b* Delta comparison value to allow drivers to increase or reduce the color comparison area to work around rounding issues in devices and/or communication. Most people can visually detect a color difference with a Delta of 3.0 or higher. Control4 has chosen a default Delta of 1.0 as this should be sufficient for most hardware and protocols.

This Delta value is used by the system to determine if two colors are close enough to be considered "the same". This tolerance check is used by Advanced Lighting Scenes, Composer Programming, and other areas.

In 3.3.1 and later releases, if the Delta value provided is > .01, then the superior CIELa*b* tolerance formula is used to determining if a color is the as another color in the system. If the value provided is < .01, or any value in 3.3.0, then the difference is based on the xy chromaticity euclid distance between two colors.

Signature

<color_trace_tolerance></color_trace_tolerance>

Type

Float

Dynamic Capability

Yes

Example

<capabilities>
    <color_trace_tolerance>.06</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>

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>

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>

multi_click

This capability implements ability to disable multi-click events/actions for a light driver. This is useful when it is desirable to disable the use of press, release, single, double or triple click programming in Composer Pro. This capability defaults to true.

Available from 3.4.2.

Signature

<multi_click></multi_click>

Type

Boolean: Defaults to true.

Dynamic Capability

No

Example

<capabilities>
  <multi_click>true</multi_click>
</capabilities>

supports_brightness_stop

Used to indicate if a light brightness transition can be stopped during a ramp. Drivers that support Daylight Agent benefit from implementing this as the Daylight scenario can be stopped without having to force a light to go to a different brightness or color to end tracking. Reduced ALS support drivers should implement this capability so that ramping scenes works correctly.

*Note, a bug in 3.3.2 prevents keypad buttons bound to the proxies BUTTON_LINK for Brightness Stop from working. This will be resolved in 3.3.3.

Signature

<supports_brightness_stop></supports _brightness_stop>

Type

Boolean: Defaults to false.

Dynamic Capability

Yes

Example

<capabilities>
    <supports_color>false</supports_color>
</capabilities>

Usage Note

If changing the supports_color or supports_color_correlated_temperature capabilities via the Dynamic Capabilities Notify, these should both be done in a single notification. If only one is disabled/enabled at a time, device color presets such as the On or Dim colors may have their color mode changed between Full Color and CCT automatically.

For example, if the presets mode were CCT and a driver on director startup dynamically enabled just supports_color the proxy would detect that CCT is not supported and change any existing presets to color mode Full Color.

supports_color

Whether the device can show a broad range of colors. Set to False and use "supports_color_predefined" if the driver can only reproduce a limited number of colors, such as devices that only use enums to communicate or hardware with a limited table of factory configured colors.

Signature

<supports_color></supports_color>

Type

Boolean: Defaults to false.

Dynamic Capability

Yes

Example

<capabilities>
    <supports_color>false</supports_color>
</capabilities>

Usage Note

If changing the supports_color or supports_color_correlated_temperature capabilities via the Dynamic Capabilities Notify, these should both be done in a single notification. If only one is disabled/enabled at a time, device color presets such as the On or Dim colors may have their color mode changed between Full Color and CCT automatically.

For example, if the presets mode were CCT and a driver on director startup dynamically enabled just supports_color the proxy would detect that CCT is not supported and change any existing presets to color mode Full Color.

supports_color_correlated_temperature

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

Usage Note

Note: If changing the supports_color or supports_color_correlated_temperature capabilities via the Dynamic Capabilities Notify, these should both be done in a single notification. If only one is disabled/enabled at a time, device color presets such as the On or Dim colors)may have their color mode changed between Full Color and CCT automatically.

For example, if the presets mode were Full Color and a driver on director startup dynamically enabled just supports_color_correlated_temperature then the proxy would detect that Full Color is not supported and change any existing presets to color mode CCT.

supports_default_on

Note: Deprecating - Drivers should not use this capability but instead use the brightness on mode preset capability Drivers that enable both will experience oddities in Composer dealer configuration.

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>

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>

nesting_driver_is_parent

This capability is applicable to drivers where supporting drivers are required for the one device. This capability makes it easier to understand what drivers are associated with each other. This specific capability indicates whether or not this driver is dependent on other drivers. When used correctly, it will setup the dependent driver(s) to be nested under the primary (parent) driver in Composer Pro.

Available from 3.4.2.

Signature

<nesting_driver_is_parent></nesting_driver_is_parent>

Type

Boolean: Defaults to false.

Dynamic Capability

No

Usage Note

The following variable must be added and configured to use this capability:

VAR_C4_NESTING_PARENTS_CHILD_DEVICES - Set this variable to a comma delimited list of ID values for the secondary device(s) required by the parent driver. This list represents the drivers that will be nested under the parent driver in Composer Pro. This is the associated driver(s) with the nested_driver_is_child capability set to true.

Example

<capabilities>
  <nesting_driver_is_parent>false</nesting_driver_is_parent>
</capabilities>

nested_driver_is_child

This capability is applicable to light drivers where multiple light drivers are added for one light device. These capabilities make it easier to understand what drivers are associated with each other. This specific capability indicates whether or not this driver is a dependent driver required by primary light driver for use. When used correctly, it will setup the dependent driver(s) to be nested under the primary driver in Composer Pro.

Available from 3.4.2.

Signature

<nested_driver_is_child></nested_driver_is_child>

Type

Boolean: Defaults to false.

Dynamic Capability

No

Usage Note

The following variable must be added and configured to use this capability:

VAR_C4_NESTED_CHILDS_PARENT_DEVICE - Set the variable to the ID of primary driver requiring its use. This is the associated driver with the nesting_driver_is_parent capability set to true.

Example

<capabilities>
  <nested_driver_is_child>false</nested_driver_is_child>
</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. Note, there's no need for a driver developer to specify whitepoint and primaries if usinh srgb or rec2020 for the gamut parameter as described below.

This function was released in conjunction with O.S. 3.3.0.

Signature

C4:ColorHSVtoXY (h, s, v, gamut)

Parameters

Parameter Description
num Number representing hue component of HSV.
num Number representing saturation component of HSV.
num Number representing value component of HSV.
str (Optional) Gamut used for conversion. Valid options are: "srgb" where the srgb primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. "rec2020" where where the rec2020 primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. “custom” where primaries and whitepoint values can be specified.

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.

Examples

—Using three rgb params:—
C4:ColorHSVtoXY(0, 100, 100)
—Since no scale param is supported, the default of "255" is used for the scale value param.—

— Using srgb primaries and whitepoint: —
C4:ColorHSVtoXY(0, 100, 100, \"srgb\")
—Since no scale param is supported, the default of "255" is used for the scale value param.—

— Using rec2020 primaries and whitepoint: —
C4:ColorHSVtoXY(0, 100, 100, \"rec2020\")
—Since no scale param is supported, the default of "255" is used for the scale value param.—

— Using custom gamut where custom primaries and the 'default' d65 whitepoint is used: —
C4:ColorHSVtoXY(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")

—Using custom gamut with both custom primaries and custom whitepoint is specified:—
C4:ColorHSVtoXY(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\")

—Using Rob params but specifying a custom rgb scale. Scale is 0.0 to 1.0 where 1.0 is full brightness: —
C4:ColorHSVtoXY(0, 100, 100, 1)

— Scale is 0.0 to 100 where 100 is full brightness: —
C4:ColorHSVtoXY(0, 100, 100, 100)

— Scale is 0.0 to 255 where 255 is full brightness: —
C4:ColorHSVtoXY(0, 100, 100, 255)

— Using srgb primaries & whitepoint: —
C4:ColorHSVtoXY(0, 100, 100, 255, \"srgb\")

— Using rec2020 primaries/whitepoint: —
C4:ColorHSVtoXY(0, 100, 100, 255, \"rec2020\")

— Custom gamut where custom primaries and the 'default' d65 whitepoint is used: —
C4:ColorHSVtoXY(0, 100, 100, 255, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")

— Custom gamut with both custom primaries and custom whitepoint is specified: —
C4:ColorHSVtoXY(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\"

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. Note, there's no need for a driver developer to specify whitepoint and primaries if usinh srgb or rec2020 for the gamut parameter as described below.

This function was released in conjunction with O.S. 3.3.0.

Signature

C4:ColorRGBtoXY (r, g, b, rgbScale, gamut)

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.
str (Optional) Gamut used for conversion. Valid options are: "srgb" where the srgb primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. "rec2020" where where the rec2020 primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. “custom” where primaries and whitepoint values can be specified.

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.

Examples

—Using three rgb params:—
C4:ColorRGBtoXY(0, 100, 100)
—Since no scale param is specified the default of "255" is used for the scale value param.—

— Using srgb primaries and whitepoint: —
C4:ColorRGBtoXY(0, 100, 100, \"srgb\")
—Since no scale param is specified the default of "255" is used for the scale value param.—

— Using rec2020 primaries and whitepoint: —
C4:ColorRGBtoXY(0, 100, 100, \"rec2020\")
—Since no scale param is specified the default of "255" is used for the scale value param.—

— Using custom gamut where custom primaries and the 'default' d65 whitepoint is used: —
C4:ColorRGBtoXY(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")

—Using custom gamut with both custom primaries and custom whitepoint is specified:—
C4:ColorRGBtoXY(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\")

—Using Rob params but specifying a custom rgb scale. Scale is 0.0 to 1.0 where 1.0 is full brightness: —
C4:ColorRGBtoXY(0, 100, 100, 1)

— Scale is 0.0 to 100 where 100 is full brightness: —
C4:ColorRGBtoXY(0, 100, 100, 100)

— Scale is 0.0 to 255 where 255 is full brightness: —
C4:ColorRGBtoXY(0, 100, 100, 255)

— Using srgb primaries & whitepoint: —
C4:ColorRGBtoXY(0, 100, 100, 255, \"srgb\")

— Using rec2020 primaries/whitepoint: —
C4:ColorRGBtoXY(0, 100, 100, 255, \"rec2020\")

— Custom gamut where custom primaries and the 'default' d65 whitepoint is used: —
C4:ColorRGBtoXY(0, 100, 100, 255, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")

— Custom gamut with both custom primaries and custom whitepoint is specified: —
C4:ColorRGBtoXY(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\"

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. Note, there's no need for a driver developer to specify whitepoint and primaries if usinh srgb or rec2020 for the gamut parameter as described below.

This function was released in conjunction with O.S. 3.3.0.

Signature

C4:ColorXYtoHSV (x, y, gamut)

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.
str (Optional) Gamut used for conversion. Valid options are: "srgb" where the srgb primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. "rec2020" where where the rec2020 primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. “custom” where primaries and whitepoint values can be specified.

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.

Examples

—Using three rgb params:—
C4:ColorXYtoHSV(0, 100, 100)
—Since no scale param is supported, the default of "255" is used for the scale value param.—

— Using srgb primaries and whitepoint: —
C4:ColorXYtoHSV(0, 100, 100, \"srgb\")
—Since no scale param is supported, the default of "255" is used for the scale value param.—

— Using rec2020 primaries and whitepoint: —
C4:ColorXYtoHSV(0, 100, 100, \"rec2020\")
—Since no scale param is supported, the default of "255" is used for the scale value param.—

— Using custom gamut where custom primaries and the 'default' d65 whitepoint is used: —
C4:ColorXYtoHSV(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")

—Using custom gamut with both custom primaries and custom whitepoint is specified:—
C4:ColorXYtoHSV(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\")

—Using Rob params but specifying a custom rgb scale. Scale is 0.0 to 1.0 where 1.0 is full brightness: —
C4:ColorXYtoHSV(0, 100, 100, 1)

— Scale is 0.0 to 100 where 100 is full brightness: —
C4:ColorXYtoHSV(0, 100, 100, 100)

— Scale is 0.0 to 255 where 255 is full brightness: —
C4:ColorXYtoHSV(0, 100, 100, 255)

— Using srgb primaries & whitepoint: —
C4:ColorXYtoHSV(0, 100, 100, 255, \"srgb\")

— Using rec2020 primaries/whitepoint: —
C4:ColorXYtoHSV(0, 100, 100, 255, \"rec2020\")

— Custom gamut where custom primaries and the 'default' d65 whitepoint is used: —
C4:ColorXYtoHSV(0, 100, 100, 255, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")

— Custom gamut with both custom primaries and custom whitepoint is specified: —
C4:ColorXYtoHSV(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\"

ColorXYtoRGB

This function converts a CIE-1931 xy chromaticity to the RGB color space. Note, there's no need for a driver developer to specify whitepoint and primaries if usinh srgb or rec2020 for the gamut parameter as described below.

This function was released in conjunction with O.S. 3.3.0.

Signature

C4:ColorXYtoRGB (x, y, rgbScale, gamut)

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.
str (Optional) Gamut used for conversion. Valid options are: "srgb" where the srgb primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. "rec2020" where where the rec2020 primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. “custom” where primaries and whitepoint values can be specified.

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.

Examples

—Using three rgb params:—
C4:ColorXYtoRGB(0, 100, 100)
—Since no scale param is specified the default of "255" is used for the scale value param.—

— Using srgb primaries and whitepoint: — C4:ColorXYtoRGB(0, 100, 100, \"srgb\") —Since no scale param is specified the default of "255" is used for the scale value param.—

— Using rec2020 primaries and whitepoint: — C4:ColorXYtoRGB(0, 100, 100, \"rec2020\") —Since no scale param is specified the default of "255" is used for the scale value param.—

— Using custom gamut where custom primaries and the 'default' d65 whitepoint is used: — C4:ColorXYtoRGB(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")

—Using custom gamut with both custom primaries and custom whitepoint is specified:— C4:ColorXYtoRGB(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\")

—Using Rob params but specifying a custom rgb scale. Scale is 0.0 to 1.0 where 1.0 is full brightness: — C4:ColorXYtoRGB(0, 100, 100, 1)

— Scale is 0.0 to 100 where 100 is full brightness: — C4:ColorXYtoHSV(0, 100, 100, 100)

— Scale is 0.0 to 255 where 255 is full brightness: — C4:ColorXYtoRGB(0, 100, 100, 255)

— Using srgb primaries & whitepoint: — C4:ColorXYtoRGB(0, 100, 100, 255, \"srgb\")

— Using rec2020 primaries/whitepoint: — C4:ColorXYtoRGB(0, 100, 100, 255, \"rec2020\")

— Custom gamut where custom primaries and the 'default' d65 whitepoint is used: — C4:ColorXYtoRGB(0, 100, 100, 255, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")

— Custom gamut with both custom primaries and custom whitepoint is specified: — C4:ColorXYtoRGB(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\"

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_BRIGHTNESS

Double. Percent check of the current brightness.

IS_BRIGHTNESS_TARGET

Double. Percent check of the target brightness.

IS_COLOR

Boolean. If the color of the light matches the color.

IS_COLOR_TARGET

Boolean. If the color of the light does not match 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.

Name

BUTTON_ACTION ()

Parameter Type Description
BUTTON ID NUM ID for the button:
0 - Top
1 - Bottom
2 - Toggle
ACTION NUM ACTION :
0 - RELEASE (HOLD)
1 - PRESS
2 - RELEASE (CLICK)

Returns

None

DYNAMIC_OFF

Support UIs with an off command to match up with the DYNAMIC_ON Beginning with O.S. 3.3.2, Navigators now execute DYNAMIC ON when a light is turned on/off. If a driver does not support Dynamic On, the On brightness preset will be executed, as in O.S 3.3.1 and prior releases.

Name

DYNAMIC_OFF () 

Parameters

None

Returns

None

DYNAMIC_ON

This command allows UI's and programming to "turn on" a light involving both brightness and color in a single command. Beginning with O.S. 3.3.2, Navigators now execute DYNAMIC ON when a light is turned on/off. If a driver does not support Dynamic On, the On brightness preset will be executed, as in O.S 3.3.1 and prior releases.

Name

DYNAMIC_ON () 

Parameters

None

Returns

None

DELETE_DRIVER_ COLOR_ PRESET

Used to remove a driver configured color preset. The PRESET_ID must be a valid preset, or the request will fail and return an error.

Name

DELETE_DRIVER_COLOR_PRESET () 

Parameter Type Description
PRESET ID NUM Set to the ID of the preset to be removed.

Returns

On return, "deleteResult" will contain an XML string that indicates a success or failure state. If the XML indicates failure, a failure message will be included.

Sample success message:

<return_data><success>true</success></return_data>

Sample failure message:

<return_data><success>false</success><reason>Not found</reason></return_data>

Example

The example code to the right will remove a Preset with an ID of 3.

local deleteResult = C4:SendUIRequest(proxyDeviceId, "DELETE_DRIVER_COLOR_PRESET", { PRESET_ID = 3 } )

SET_BRIGHTNESS_TARGET

Used to set the target brightness of where the light is being requested to go. Parameters are determined by the enabling/disabling of the supports_target capability. See below for more information.

Name

SET_BRIGHTNESS_TARGET ()

If the supports_target capability is enabled or color is used:

Parameter Type Description
LIGHT BRIGHTNESS TARGET FLOAT Value as defined from drivers Min and Max brightness capabilities as set by the driver. If the brightness resolution capability is set to 10, .5, .01, and so on, the proxy will ensure the value sent to the driver meets the resolution/step capability. If no resolution is set, the value of 1 is used for stepping.
RATE UINT Milliseconds for the ramp duration. This is guaranteed to be between the Min and Max rate if the driver sets these.

Note: If a driver supports On Modes, it should track the following parameters: LIGHT_BRIGHTNESS_TARGET_PRESET_ID - The ID of the preset to trigger.

If the supports_target capability is disabled in instances such as pre- O.S. 3.3.0 for backward compatibility of older drivers:

Parameter Type Description
LEVEL INT LEVEL : from 0-100.
LEVEL INT TIME: Milliseconds for the ramp.

Returns

None

SET_COLD_START_LEVEL

Used to set the cold start level for the device for drivers that support hardware based Cold Start behavior.

Name

SET_COLD_START_LEVEL ()

Parameter Type Description
LEVEL INT 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.

Name

SET_COLD_START_TIME ()

Parameter Type Description
TIME INT TIME in milliseconds

Returns

None

SET_MAX_ON_LEVEL

Used to set the maximum on level for the device

Name

SET_MIN_ON_LEVEL ()

Parameter Type Description
LEVEL INT LEVEL: 0 - 100

Returns

None

SET_MIN_ON_LEVEL

Used to set the minimum on level for the device

Name

SET_MIN_ON_LEVEL ()

Parameter Description Description
LEVEL INT 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.

Name

SET_PRESET_LEVEL ()

Parameter Type Description
LEVEL LINT 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.

Name

TOGGLE ()

Parameter

None

Returns

None

SET_CLICK_RATE_DOWN

Used to set the click rate down for the device.

Name

SET_CLICK_RATE_DOWN ()

Parameter Type Description
RATE INT RATE in milliseconds

Returns

None

SET_CLICK_RATE_UP

Used to set the click rate up for the device.

Name

SET_CLICK_RATE_UP ()

Parameter Type Description
RATE INT RATE in milliseconds

Returns

None

SET_COLOR_ON_MODE

Sets the on mode color.

Name

SET_COLOR_ON_MODE ()

Parameter Type Description
PRESET ID INT PRESET ID that a light should turn on to.

Returns

None

SET_COLOR_STOP

Stops a ramp of color if in progress. Requires the capability supports_color_stop.

Name

SET_COLOR_STOP ()

Parameters

None

Returns

None

SET_COLOR_RATE_DEFAULT

This is used by old(deprecated) generic On/Off commands, Navigators, and user created lighting scenes.

When this value is changed, drivers will receive a protocol driver command of UPDATE_COLOR_RATE_DEFAULT with a parameter RATE of the value.

Name

SET_COLOR_RATE_DEFAULT ()

Parameter Type Description
LIGHT COLOR RATE DEFAULT. INT Default rate that will be used if no rate is specified.

Returns

None

SET_COLOR_STOP

Used to tell a driver to stop changing its color.

Name

SET_COLOR_STOP ()

Parameters

None

Returns

None

SET_COLOR_TARGET

Sent to drivers to change the light color. Once drivers begin to change color, they should send a LIGHT_COLOR_CHANGING Notify. Once the color has finished changing it should send a LIGHT_COLOR_CHANGED Notify. Parameters are determined by the implementation On Mode functionality. See below for more information.

Name

SET_COLOR_TARGET()

If a driver implements On Mode functionality:

Parameter Type Description
LIGHT COLOR TARGET PRESET ID INT The ID of the preset to trigger. This must be sent with the LIGHT COLOR TARGET PRESET ORIGIN parameter.
LIGHT\COLOR TARGET RESET ORIGIN NUM The origin of the preset to trigger. 1 = Device specific preset. 2 = Color Agent preset.

Returns

None

SET_HOLD_RATE_UP

Used to set the hold rate up for the device.

Name

SET_HOLD_RATE_UP ()

Parameter Type Description
RATE INT RATE in milliseconds

Returns

None

SET_HOLD_RATE_DOWN

Used to set the hold rate down for the device.

Name

SET_HOLD_RATE_DOWN ()

Parameter Type Description
RATE INT RATE in milliseconds

Returns

None

SET_BUTTON_COLOR

Used to set the color for a particular button for when the light is on/off

Name

SET_BUTTON_COLOR ()

Parameter Type Description
Number NUM BUTTON ID
ON COLOR hex STR Optional. 6 character hex string, representing an RGB value.
OFF COLOR hex STR 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).

Name

SET_ALL_LED ()

Parameter Type Description
COLOR hex STR COLOR: 6 character hex string, representing an RGB value.

Returns

None

JOIN_GROUP

Received when the driver is added to a Load Group.

Name

JOIN_GROUP ()

Parameter Type Description
GROUP ID STR Device ID of the Load Group driver
KEEP SYNC STR 1 for True and 0 for False

Returns

None

LEAVE_GROUP

Received when Load Group driver pop the light driver from the group.

Name

LEAVE_GROUP

Parameter Type Description
GROUP ID STR GROUP ID Driver ID of the Load Group

Returns

None

MODIFY_DRIVER_COLOR_PRESET

Used to modify an existing driver specific color preset. The PRESET_ID is required, and other parameters may be required depending on what you are using the call for. The guidelines for which parameters are required are defined below in the parameter section.

Name

MODIFY_DRIVER_COLOR_PRESET () 

Parameter Guidelines

If the preset name is being changed, the PRESET_NAME parameter is required, otherwise it is optional. When the preset name is the only thing being changed, no color information is required.

If the color is being set using hue and saturation, the PRESET_COLOR_HUE, PRESET_COLOR_SATURATION, and PRESET_COLOR_MODE are all required.

If the color is being set using XY, the PRESET_COLOR_X, PRESET_COLOR_Y, and PRESET_COLOR_MODE are all required.

If the color temperature is being set, only the PRESET_COLOR_CORRELATED_TEMPERATURE is required.

Parameter Description
PRESET ID The ID of the existing preset that will be modified.
PRESET NAME Optional. The name to give to the preset that is being modified.
PRESET COLOR CORRELATED TEMPERATURE Optional. The color temperature, in Kelvin, that the preset should be set to. If this parameter is used, the PRESET COLOR MODE will be set to 1 (CCT), and the PRESET COLOR MODE parameter does not need to be set.
Color Set 1 Requires 2+ parameters. PRESET COLOR X - The color x coordinate to be used in this preset. PRESET COLOR Y - The color y coordinate to be used in this preset. PRESET COLOR MODE - Optional. The color mode used by this preset. 0 = Full Color, 1 = CCT. Previous color mode is preserved if this parameter is not specified.
Color Set 2 Requires 2 parameters. This method is highly discouraged as it is confined to the sRGB gamut and thus can't achieve many colors that typical color lights support. PRESET COLOR HUE - The hue to use for this preset. Range of 0 through 359 degrees. PRESET COLOR SATURATION - The saturation to use for this preset. Range of 0 to 100. Either hue and saturation or XY must be used.

Returns

On return, the "modifyResult" value will contain an XML string that indicates if the modification was successful, or not. If the XML indicates failure, a failure message will be included.

Sample success message: <return_data><success>true</success></return_data>

Sample failure message: <return_data><success>false</success><reason>Not found</reason></return_data>

Example

The example code to the right will modify a Color Preset with an ID of 3.

local tParams = {PRESET_ID=3, PRESET_NAME="Modified Driver Color Preset", PRESET_COLOR_X=0.1550, PRESET_COLOR_Y=0.0822, PRESET_COLOR_MODE=0}

local modifyResult = C4:SendUIRequest(proxyDeviceId, "MODIFY_DRIVER_COLOR_PRESET", tParams)

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.

Name

Parameter Type Description
GROUP ID STR Driver ID of the Load Group driver
KEEP SYNC STR 0 for False and 1 for True

Received

None

GET_SETUP

Command used to get the configuration of the device. It immediately returns a block of XML information to the caller. GET_SETUP is usually called just once by a UI entity to know how to setup the UI. This would report all capabilities that are in a driver as well as other proxy information including how many settings the device has and what the name of those settings are.

Name

GET_SETUP ()

Parameters

None

Returns

See example

Example

Example of current XML with color support enabled:

<?xml version="1.0" encoding="UTF-8"?>
<setup>
   <ONLINE_CHANGED>True</ONLINE_CHANGED>
   <MIN_ON_LEVEL>1</MIN_ON_LEVEL>
   <MAX_ON_LEVEL>100</MAX_ON_LEVEL>
   <COLD_START_LEVEL>1</COLD_START_LEVEL>
   <COLD_START_TIME>0</COLD_START_TIME>
   <CLICK_RATE_MIN>250</CLICK_RATE_MIN>
   <CLICK_RATE_MAX>86400000</CLICK_RATE_MAX>
   <HOLD_RATE_MIN>1000</HOLD_RATE_MIN>
   <HOLD_RATE_MAX>86400000</HOLD_RATE_MAX>
   <NUMBER_BUTTONS>3</NUMBER_BUTTONS>
   <BUTTON_LIST_INFO>
      <BUTTON_INFO>
         <NAME>Top</NAME>
         <BUTTON_ID>0</BUTTON_ID>
         <ON_COLOR>0000ff</ON_COLOR>
         <OFF_COLOR>000000</OFF_COLOR>
      </BUTTON_INFO>
      <BUTTON_INFO>
         <NAME>Bottom</NAME>
         <BUTTON_ID>1</BUTTON_ID>
         <ON_COLOR>000000</ON_COLOR>
         <OFF_COLOR>0000ff</OFF_COLOR>
      </BUTTON_INFO>
      <BUTTON_INFO>
         <NAME>Toggle</NAME>
         <BUTTON_ID>2</BUTTON_ID>
         <ON_COLOR>0000ff</ON_COLOR>
         <OFF_COLOR>000000</OFF_COLOR>
      </BUTTON_INFO>
   </BUTTON_LIST_INFO>
   <supports_target>True</supports_target>
   <has_extras>True</has_extras>
   <brightnesses minimum="0" maximum="100" resolution="1" unknown="-1">
      <level name="Off" level_setable="true" rate_setable="true" level="0" levelType="2" buttonLinkBindingId="0" activeColor="0000ff" inactiveColor="000000" activeText="Off Active" inactiveText="Off Not Active"/>
      <level name="On" level_setable="true" rate_setable="true" level="100" levelType="2" buttonLinkBindingId="0" activeColor="0000ff" inactiveColor="000000" activeText="On Active" inactiveText="On Not Active"/>
     </brightnesses>
   <supports_color>True</supports_color>
   <supports_color_correlated_temperature>False</supports_color_correlated_temperature>
   <colors color_correlated_temperature_min="500" color_correlated_temperature_max="20000">
      <color name="Energize" category="2" editable="0,1" color_x="0" color_y="0" color_mode="1" color_correlated_temperature="0" />
      <color name="Relax" category="2" editable="0,1" color_x="0" color_y="0" color_mode="1" color_correlated_temperature="0" />
      <color name="Read" category="2" editable="" color_x="0" color_y="0" color_mode="1" color_correlated_temperature="0" />
      <color name="Sunset" category="2" editable="" color_x="0" color_y="0" color_mode="1" color_correlated_temperature="0" />
      <color name="Nightlight" category="2" editable="" color_x="0" color_y="0" color_mode="1" color_correlated_temperature="0" />
      <color name="Red" category="2" editable="" color_x="0.640074" color_y="0.329971" color_mode="0" color_correlated_temperature="0" />
      <color name="Green" category="2" editable="" color_x="0.3" color_y="0.6" color_mode="0" color_correlated_temperature="0" />
      <color name="Blue" category="2" editable="" color_x="0.150017" color_y="0.0600066" color_mode="0" color_correlated_temperature="0" />
      <color name="Yellow" category="2" editable="" color_x="0.419321" color_y="0.505255" color_mode="0" color_correlated_temperature="0" />
      <color name="Orange" category="2" editable="" color_x="0.543608" color_y="0.406568" color_mode="0" color_correlated_temperature="0" />
      <color name="Off" category="1" editable="" color_x="0.313525" color_y="0.323627" color_mode="1" color_correlated_temperature="6500" buttonLinkBindingId="0" activeColor="0000ff" inactiveColor="000000" activeText="Off" inactiveText="Not Off"/>
      <color name="On" category="1" editable="" color_x="0.313525" color_y="0.323627" color_mode="1" color_correlated_temperature="6500" buttonLinkBindingId="0" activeColor="0000ff" inactiveColor="000000" activeText="On" inactiveText="Not On"/>
   </colors>
</setup>

GROUP_RAMP_TO_LEVEL

Received when group is ramping to level.

Name

GROUP_RAMP_TO_LEVEL ()

Parameter Type Description
GROUP ID STR Driver ID of the Load Group
LEVEL STR Level to ramp
TIME STR Time rate for ramping

Returns

None

SET_GROUP_LEVEL

Received when group is setting light level.

Name

GROUP_SET_LEVEL ()

Parameter Type Description
GROUP ID STR Driver ID of the Load Group
LEVEL STR Light level to be set on the Light driver

None

GROUP_START_RAMP

Received when group start hold ramp operation.

Name

GROUP_START_RAMP ()

Parameter Type Description
GROUP ID STR GROUP ID Driver ID of the Load Group
RAMP UP STR RAMP UP Value 1
RATE STR Rate time in ms

Returns

None

GROUP_STOP_RAMP

Received when group stop hold ramp.

Name

GROUP_STOP_RAMP ()

Parameter Type Description
GROUP ID STR Driver ID of the Load Group

Returns

None

UPDATE_BRIGHTNESS_ON_MODE

Drivers that set either brightness_on_mode_preset or brightness_on_mode_previous capabilities to true need to handle this command to know how the light should turn on. The proxy will handle Brightness related commands that go through it, but On behaviors that include BUTTON_LINK and other driver commands handled only in the driver should honor the On Mode.

Name

UPDATE_BRIGHTNESS_ON_MODE ()

Parameter Type Description
BRIGHTNESS PRESET ID INT Integer. Brightness preset ID that is to be used when the light turns on.
BRIGHTNESS PRESET LEVEL DOUBLE Double. Brightness Preset Level, this is provided as a convenience only as this value is provided for the preset in other proper calls.

Returns

None

UPDATE_BRIGHTNESS_RATE_DEFAULT

This is used by old(deprecated) generic On/Off commands, Navigators, and user created lighting scenes.

Name

UPDATE_BRIGHTNESS_RATE_DEFAULT ()

Parameter Type Description
RATE INT Milliseconds for the default rate that is used when a rate of change is not provided.

Returns

None

UPDATE_BRIGHTNESS_PRESET

The proxy will send a command to the driver when a Preset is changed. Drivers can ignore this command, or could react based on the data provided.

Some options for reacting to the command would be to update keypad load control firmware to turn a light On to the level that the light was turned off from.

Another reaction could be to adjust what light level the light will turn on to, such as interacting with the Daylight Agent.

Name

UPDATE_BRIGHTNESS_PRESET ()

Parameter Type Description
COMMAND STR String. This will be one of the following strings:
ADDED, MODIFIED, REMOVED.
ID NUM Preset ID
NAME STR Name of the preset.
LEVEL DOUBLE Level for the preset.

Returns

None

UPDATE_COLOR_ON_MODE

Drivers that set either color_on_mode_preset, color_on_mode_previous, or color_on_mode_fade capabilities to true need to handle this command to know how the light should turn on. The proxy will handle Color related commands that go through it, but On behaviors that include BUTTON_LINK and other driver commands handled only in the driver should honor the On Mode.

For drivers that support Color Fade on mode, Dynamic On and some other commands will NOT send a SET_COLOR_TARGET. Drivers that are currently in the Color Fade on mode must adjust the color based on the brightness level when only brightness is sent. For more information see the Color Fade On Mode capability documentation.

Name

UPDATE_COLOR_ON_MODE ()

Parameter Type Description
COLOR PRESET ID INT Color preset ID that is to be used when the light turns on.
COLOR PRESET ORIGIN INT Color preset Origin that is to be used when the light turns on. 1 = Device Specific, 2 = Color Agent, 0 = Color fade not enabled.
COLOR\PRESET COLOR X DOUBLE This value is provided as a convenience and is redundant to other ways of getting the color information of the Color Preset.
COLOR PRESET COLOR Y DOUBLE This value is provided as a convenience and is redundant to other ways of getting the color information of the Color Preset.
COLOR PRESET COLOR MODE This value is provided as a convenience and is redundant to other ways of getting the color information of the Color Preset.
COLOR FADE PRESET ID INT Color preset ID that is to be used when the light turns on.
COLOR FADE PRESET ORIGIN INT Color preset Origin that is to be used when the light turns on. 0 = Device Specific, 1 = Color Agent.
COLOR FADE PRESET COLOR X DOUBLE This value is provided as a convenience only and is secondary to other ways of getting the color information of the Fade Color Preset.
COLOR FADE PRESET COLOR Y DOUBLE DThis value is provided as a convenience only and is secondary to other ways of getting the color information of the Fade Color Preset.
COLOR FADE PRESET COLOR MODE This value is provided as a convenience only and is secondary to other ways of getting the color information of the Fade Color Preset.

Returns

None

UPDATE_COLOR_RATE_DEFAULT

This is used by old(deprecated) generic On/Off commands, Navigators, and user created lighting scenes.

Name

UPDATE_COLOR_RATE_DEFAULT ()

Parameter Type Description
RATE INT Milliseconds for the default rate that is used when a rate of change is not provided.

Returns

None

UPDATE_BRIGHTNESS_PRESET

The proxy will send a command to the driver when a Preset is changed. Drivers can ignore this command, or could react based on the data provided.

Some options for reacting to the command would be to update keypad load control firmware to turn a light On to the level that the light was turned off from. Another reaction could be to adjust what light level the light will turn on to, such as interacting with the Daylight Agent

Name

UPDATE_BRIGHTNESS_PRESET ()

Parameter Type Description
COMMAND STR COMMAND: This will be one of the following strings: ADDED MODIFIED REMOVED.
PRESET ID NUM Preset ID
NAME STR NAME: Name of the preset
LEVEL DOUBLE LEVEL: Level for the preset

Returns

None

UPDATE_COLOR_PRESET

Having a mandatory On color preset for all colored lights, this provides dealers a way of configuring various brands and models of lights in a manner that a customer can have a consistent 'default on' color behavior for the lights in their homes. 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 for the lights in their homes.

The 'On' color preset is the color that a light should generate at it's 'Default On Brightness' level.

The 'Dim' color preset is the color that a light should generate at 1% brightness.

For example, lets assume 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.

Beginning with 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.

The intention of this checkbox was to help reduce dealer confusion, but it added potential driver developer confusion. Upon 'disabling' the Dim color, Composer is just 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. If Drivers want to know if this checkbox is 'checked' there isn't a 100% safe way to know. However, drivers could consider it potentially checked if the Dim and On preset colors are not the same color

Name

UPDATE_COLOR_PRESET ()

Parameter Type Description
COMMAND STR This will be one of the following strings:
ADDED, MODIFIED, REMOVED.
ID NUM Preset ID.
NAME STR 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_BRIGHTNESS_ON_MODE

Older drivers that used "Default On" a.k.a: “PRESET_LEVEL" will notice that the "On" preset holds this value.

Name

SET_BRIGHTNESS_ON_MODE ()

Parameter Type Description
PRESET ID INT Preset ID that a light should turn on to.

Returns

None

SET_BRIGHTNESS_RATE_DEFAULT

This is used by old(deprecated) generic On/Off commands, Navigators, and user created lighting scenes.

When this value is changed, drivers will receive a protocol driver command of UPDATE_BRIGHTNESS_RATE_DEFAULT with a parameter RATE of the value.

Note: If a driver has its color rate behavior set to be linked to the brightness rate, then this call will also update the color rate.

Name

SET_BRIGHTNESS_RATE_DEFAULT ()

Parameter Type Description
LIGHT BRIGHTNESS RATE DEFAULT INT Default rate that will be used if no rate is specified.

Returns

None

SET_BRIGHTNESS_STOP

Stops a ramp if in progress.

Name

SET_BRIGHTNESS_STOP ()

Parameters

None

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.

Name

SET_CLICK_RATE_UP()

Parameter Type Description
RATE INT 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.

Name

SET_CLICK_RATE_DOWN()

Parameter Type Description
RATE INT In milliseconds

Returns

None

ADD_DRIVER_COLOR_PRESET

Used to add a new driver specific color preset. The PRESET_NAME is always required. The remainder of the parameters are required or optional depending on how the color is specified:

If the color is being set using hue and saturation, the PRESET_COLOR_HUE, PRESET_COLOR_SATURATION, and PRESET_COLOR_MODE are all required.

If the color is being set using xy, the PRESET_COLOR_X, PRESET_COLOR_Y, and PRESET_COLOR_MODE are all required.

If the color temperature is being set, only the PRESET_COLOR_CORRELATED_TEMPERATURE is required.

If the appropriate values are not set, an error will be returned.

Name

ADD_DRIVER_COLOR_PRESET ()

Parameter Description
PRESET\\\_NAME The name to give to the preset that is being added.
One of the following three Color Sets are also required
Color Set 1 PRESET COLOR CORRELATED TEMPERATURE - The color correlated temperature that the preset should be set to.
Color Set 2 PRESET COLOR X - The color chromaticity x coordinate to be used in this preset. PRESET COLOR Y - The color chromaticity y coordinate to be used in this preset. Optional: PRESET COLOR MODE - The color mode used by this preset. 0 = Full Color, 1 = CCT. If this parameter is not provided, Full Color is assumed, unless the light only supports CCT, then CCT is assumed.
Color Set 3 This method is highly discouraged as it is confined to the rRGB gamut and thus can't achieve many colors that typical color lights support.
PRESET\\\_COLOR\\\_HUE The hue to use for this preset. Range of 0 through 359 degrees. PRESET COLOR SATURATION - The saturation to use for this preset. Range of 0 to 100.

Returns

On return, the "addResult" variable will contain an XML string that indicates success or failure. If the string indicates success, the ID for the newly created preset will also be included. If the string indicates failure, a reason may be provided for the failure.

Sample success message:

<success>true</success><presetId>3</presetId></return_data>

Sample failure message:

<return_data><success>false</success><reason>Invalid parameters</reason></return_data>

Example

The example code to the right adds a preset named "Driver Color Preset"

local tParams = {PRESET_NAME="Driver Color Preset", PRESET_COLOR_X=0.1500, PRESET_COLOR_Y=0.0722, PRESET_COLOR_MODE=1}

local addResult = C4:SendUIRequest(proxyDeviceId, "ADD_DRIVER_COLOR_PRESET", tParams)

C4 TYPE MANAGER

Used to add, remove, or modity the Presets for a c4Type. Each C4Type must have a unique Name. c4Types handle saving and restorng all information associated to them, including restoring bindings and preset information

C4Types are expanding and currently offer:

Name

C4TYPE_COMMAND ()

Parameter Description
string C4TYPE NAME. Unique "Name" for the C4Type that will be operated on.
string ACTION. Command to run on the C4Type. This includes:
C4TYPE REGISTER - Registers a new C4Type.
TYPE - The Type of C4Type.
C4TYPE UNREGISTER - Removes an existing C4Type.
PRESET ADD. See usage note below.
PRESET REMOVE. See usage note below.
PRESET MODIFY. See usage note below.
PRESET BINDING MODIFY. See usage note below.

Returns

None

Usage Note

Additional parameters are required if the ACTION value used is PRESET.

Parameter Type Description
PRESET ID STR String - ID of the Preset.
PRESET ORIGIN STR String - Origin of the Preset.
PRESET FUNCTION The Preset operation to run PRESET ADD, PRESET MODIFY and PRESET REMOVE. The Preset operation to run PRESET ADD, PRESET MODIFY and PRESET REMOVE.
PRESET ADD Add the Preset Add the Preset

Additionally, each c4Types above has different parameters that need to be specified.

PRESET_ADD

Parameter Description
PRESET LEVEL The value of the preset.
PRESET TYPE Optional.How the Preset is adjusted.
PERCENT Allows user to select 0-100. If not specified then the PRESET LEVEL is assumed to be a raw level value.

PRESET_MODIFY

Parameter Description
Level PRESET LEVEL - The value of the preset

PRESET_REMOVE - No parameters

PRESET_BINDING_MODIFY

Parameter Description
PRESET BINDING ID Integer ID of the binding for the driver you want to Add/Modify/Remove. Use 0 to remove the binding.
PRESET ACTIVE COLOR Color when the Preset is Active.
PRESET INACTIVE COLOR Color when the Preset is Inactive.

Examples

In addition to "Brightness" for a NAME, "Color" can be used for lights that support color in the LightV2 proxy and "Blind Level" can be used for the Blind Proxy for blind Level presets. See the examples to the right.

-- Adding a Preset:
C4SendToProxy(5001,"C4TYPE_COMMAND", tParams, "COMMAND")
tParams = {
C4TYPE_NAME="Brightness",
ACTION=PRESET_ADD,
PRESET_NAME="New Preset Name",
PRESET_ID="New Preset ID",
PRESET_TYPE="PERCENT",  (Optional, raw value assumed otherwise)
PRESET_LEVEL="50"}


-- Modify Preset:
C4SendToProxy(5001,"C4TYPE_COMMAND", tParams, "COMMAND")
tParams = {
C4TYPE_NAME="Brightness",
ACTION=PRESET_MODIFY,
PRESET_NAME="On",
PRESET_ID="New Preset ID",
PRESET_TYPE="PERCENT", (Optional, raw value assumed otherwise)
PRESET_LEVEL="50"}


--Delete Preset:
C4SendToProxy(5001,"C4TYPE_COMMAND", tParams, "COMMAND")
tParams = {
C4TYPE_NAME="Brightness",
ACTION=PRESET_REMOVE,
PRESET_NAME="On"
PRESET_ID="New Preset ID",
}

--Add/Remove a binding for a Preset:
C4SendToProxy(5001, "C4TYPE_COMMAND", tParams, "COMMAND")
tParams = {
C4TYPE_NAME="Brightness", 
ACTION="PRESET_BINDING_MODIFY",
PRESET_BINDING_ID="100" (BindingID of a driver or proxy, or use -1 to remove the binding for this preset)
PRESET_BUTTON_ACTION="PUSH",
PRESET_ACTIVE_COLOR="0000ff",
PRESET_INACTIVE_COLOR="000000"}

--Activate a Preset:
C4SendToProxy(5001, "C4TYPE_COMMAND", tParams, "COMMAND")
tParams = {
C4TYPE_NAME="Brightness"
ACTION="PRESET_ACTIVATE",
PRESET_NAME="On"
PRESET_ID="New Preset ID",
}

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.

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.

Name

BUTTON_ACTION ()

Parameter Type Description
BUTTON ID INT BUTTON ID: Index of the button being controlled.
ACTIO INT 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.

Name

BUTTON_INFO ()

Parameter Type Description
BUTTON ID INT Index of the button being controlled.
NAME STR Optional. Update the name of the button.
ON COLOR STR Optional. Hex string for the On color.
OFF COLOR STR Optional. Hex string for the Off color.
CURRENT COLOR STR Optional. Hex string for the Current color.

Returns

None

CLICK_COUNT

Used to tell the proxy that a button has been clicked multiple times.

Name

CLICK_COUNT ()

Parameter Type Description
BUTTON\ID INT Index of the button being controlled.
COUNT INT Number of clicks.

Returns

None

CLICK_RATE_DOWN

Used to inform the proxy that the hardware click rate for the "Off" Brightness preset changed.

Name

CLICK_RATE_DOWN ()

Parameter Type Description
RATE INT 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.

Name

CLICK_RATE_UP ()

Parameter Type Description
RATE: INT 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

Note that this notification will be deprecated from the proxy in the near future. Control4 recommends using device specific properties for this value.

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.

Name

COLD_START_LEVEL ()

Parameter Type Description
BRIGHTNESS INT Percent from 0-99 for the Min On brightness to be remapped to.

Returns

None

COLD_START_TIME

Note that this notification will be deprecated from the proxy in the near future. Control4 recommends using device specific properties for this value.

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.

Name

COLD_START_TIME ()

Parameter Type Description
BRIGHTNESS INT 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 or 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.

Example for parameters are Notify("supports_broadcast_scenes=true","dimmer=true"

Name

DYANAMIC_CAPABILITIES_CHANGED ()

Parameters

DYNAMIC_CAPABILITIES_CHANGED requires different parameters base on capability:

Supports Zigbee Broadcast Scenes

Parameter Type Description
supports broadcast scenes BOOL Supports Zigbee Broadcast Scenes

Level Target Support 

If the driver supports the new level target API: LIGHT_BRIGHTNESS_CHANGING and LIGHT_BRIGHTNESS_CHANGED. This provides better light level tracking for UI's, ALS Scenes, and Composer Programming interaction by allowing drivers to specify the current level, their target level and the number of milliseconds it will take for the light to reach the target level.

Parameter Type Description
supports target BOOL Supports the new level target API

Dimmer

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. Can also provide a dealer the ability to make a dimmer act as a switch for UI's and system functionality.

Parameter Type Description
dimmer BOOL If a light is a dimmer or switch at any time.

Note: If true, updates the following feature capabilities:

Drivers using dynamic capabilities for ramp_level, click, and hold rate settings should re-send dynamic capability notifies for each of these after setting dimmer to true.

If false - Sets the following: - dimmer = false - ramp_level = false - click/rates = 0

Supports Brightness Stop

Parameter Type Description
dimmer BOOL
supports brightness stop true/false

Ramp Level 

Parameter Type Description
ramp level BOOL Support ramp level

Default Brightness Rate Min

Parameter Type Description
brightness rate min INT 0-INT16 MAX

Default Brightness Rate Max

Parameter Type Description
brightness rate max INT 0-INT16 MAX

Supports Color

Parameter Type Description
supports color BOOL Supports color

Supports Color Correlated Temperature 

Parameter Type Description
supports color correlated temperature true/false Supports color correlated temperature

Color Temperature Correlated Min

What is the lowest supported CCT value. Must be increment of 10. Set both min/max to the same value if the CCT value can not be changed.

Parameter Type Description
color correlated temperature min 500-20000 Lowest supported CCT value

Color Temperature Correlated Max

What is the highest supported CCT value. Must be increment of 10. Set both min/max to the same value if the CCT value can not be changed.

Parameter Type Description
color correlated temperature max 500-20000 Highest supported CCT value

Supports Color Stop

Parameter Type Description
supports color stop BOOL Supports color stop

Color Rate Behavior

Parameter Type Description
color rate behavior Value. Values 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. Color Rate Behavior

Default Color Rate Min

Parameter Type Description
color rate min INT 0-INT16 MAX

Default Color Rate Max

Parameter Type Description
color rate max 0INT 0-INT16 MAX

Color Trace Tolerance

Parameter Type Description
color trace tolerance NUM 0-20 * See capability documentation for more information.

Has Extras

Parameter Type Description
has extras BOOL

Returns

None

HOLD_RATE_DOWN

Used to inform the proxy that the hardware click rate for the "Slow Off" Brightness preset changed.

Name

HOLD_RATE_DOWN ()

Parameter Type Description
RATE INT RNumber 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.

Name

HOLD_RATE_UP ()

Parameter Type Description
RATE INT 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

Part of the new Level Target API, 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.

Name

LIGHT_BRIGHTNESS_CHANGED ()

Parameter Type Description
LIGHT BRIGHTNESS CURRENT DOUBE Double. Raw value of where the light brightness stopped.
LIGHT BRIGHTNESS CURRENT PRESET ID INT Integer. Optional. This should only be included if presets levels are defined and the level is equal to the preset. Providing this will allow the proxy to track and update the drivers level if the preset level is modified. This is needed for drivers making use of the Daylight Agent or similar features.

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

Part of the new Level Target API, used to notify the proxy that a lights brightness is changing. The benefit of using this Notify is that drivers can provide 'how the light brightness is changing'. Using this Notify greatly improves interaction with the system in numerous ways for components such as ALS Agent, Navigators, Composer Programming and so. A driver should enabled the supports_target capability if using this notify. The LIGHT_LEVEL Notify should be avoided if a driver uses the new API.

This behaves the same was as a Blind or other C4TypeLevel feature where the proxy generates Percentage scaling and for UI's and other system components, but since a single percent may not be enough resolution, we allow programming and other system components to set raw values for a device.

In the case where the 'end of the ramp' is unknown, specifying the end point of where the device will change to if no further interaction is done is the best practice. An 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.

Name

LIGHT_BRIGHTNESS_CHANGING ()

Parameter Type Description
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.
LIGHT BRIGHTNESS TARGET DOUBLE Double. Raw value of where the light is going to.
RATE INT INumber of milliseconds it will take to ramp to the target level.
LIGHT BRIGHTNESS CURRENT PRESET ID INT Preset ID that was last activated. Providing this will allow the proxy to track and update the drivers level if the preset level is modified - This is needed for drivers making use of the Daylight Agent or similar features.
LIGHT BRIGHTNESS TARGET PRESET ID INTR Preset ID that the light is going to. Providing this will allow the proxy to track and update the drivers level if the preset level is modified. This is needed for drivers making use of the Daylight Agent or similar features.

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. 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 color of the hardware.

Name

LIGHT_COLOR_CHANGED ()

Parameter Type Description
LIGHT COLOR CURRENT X NUM The CIE 1931 X coordinate for where the color change stopped.
LIGHT COLOR CURRENT Y NUM The CIE 1931 Y coordinate for where the color change stopped.
LIGHT COLOR CURRENT COLOR MODE NUYM Optional. 0 for Full Color, 1 if the XY coordinate is a CCT
LIGHT COLOR CURRENT PRESET ID INT Preset ID that was last activated. Providing this will allow the proxy to track and update the drivers level if the preset level is modified. This is required for drivers making use of the Daylight Agent or similar features.

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.

Name

LIGHT_COLOR_CHANGING ()

Parameter Type Description
LIGHT COLOR TARGET X CIE 1931 NUM X coordinate for where the color is going to.
LIGHT COLOR TARGET Y NUM CIE 1931 Y coordinate for where the color is going to.
LIGHT COLOR TARGET COLOR MODE NUM Optional. 0 for Full Color, 1 if the XY coordinate is a CCT
LIGHT COLOR TARGET COLOR RATE INT Optional. 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 NUM Optional. CIE 1931 X coordinate for where the color is changing from.
LIGHT COLOR CURRENT Y NUM Optional. CIE 1931 Y coordinate for where the color is changing from.
LIGHT COLOR CURRENT COLOR MODE NUM Optional. 0 for Full Color, 1 if the XY coordinate is a CCT
LIGHT COLOR CURRENT PRESE ID INT Preset ID that was last activated. Providing this will allow the proxy to track and update the drivers level if the preset level is modified. This is required for drivers making use of the Daylight Agent or similar features.
LIGHT COLOR TARGE PRESET ID INT Preset ID that the light is going to. Providing this will allow the proxy to track and update the drivers level if the preset level is modified. This is required for drivers making use of the Daylight Agent or similar features.

Returns

None

LIGHT_LEVEL

Used to inform the proxy that the light level has changed.

Name

LIGHT_LEVEL ()

Parameter Type Description
LEVEL INT 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%.

Name

MAX_ON ()

Parameter Type Description
BRIGHTNESS NUM 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.

Name

MIN_ON ()

Parameter Type Description
int NUM 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.

Name

ONLINE_CHANGED ()

Parameter Type Description
STATE BOOL. True/False. 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.

Name

PRESET_LEVEL ()

Parameter Type Description
BRIGHTNESS INT 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()

ExtrasButton

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

ExtrasCheckbox

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

ExtrasIcon

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

ExtrasList

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

ExtrasNumber

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

ExtrasObject

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

ExtrasSlider

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

ExtrasSwitch

Overview

This class represents an abstraction 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

ExtrasText

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

ExtrasTextField

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.

Brightness Percent: ID = 1001. An integer indicating the current brightness for a dimmer. The value should be between 0-100.

Brightness Target Ramp Rate in Milliseconds: ID = 1120. Primarily for UI's who request brightness information during a ramp, as this will allow them to know how far through the ramp the light is. This is updated every 1000ms. This works for only drivers that have enabled the supports_brightness_target capability.

Brightness Target Rate Remaining in Milliseconds: ID = 1121. Primarily for UI's who request brightness information during a ramp, as this will allow them to know how far through the ramp the light is. This is updated every 1000ms. This works for only drivers that have enabled the supports_brightness_target capability.

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.

See example to the right.

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

 See example to the right.

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

VAR_C4_NESTING_PARENTS_CHILD_DEVICES Set this variable to a comma delimited list of ID values for the secondary device(s) required by the parent driver. This list represents the drivers that will be nested under the parent driver in Composer Pro. This is the associated driver(s) with the nested_driver_is_child capability set to true.

VAR_C4_NESTED_CHILDS_PARENT_DEVICE Set the variable to the ID of primary driver requiring its use. This is the associated driver with the nesting_driver_is_parent capability set to true.

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.

Name

CLOSE ()

Parameters

None

Returns

None

DELETE_USER

Deletes a user.

Name

DELETE_USER ()

Parameters

None

Returns

None

EDIT_USER

Edits the user's schedule and status.

Name

ADD_USER ()

Parameter Description
int USER ID
str USER NAME
str PASSCODE
bool IS ACTIVE: Optional, true false. A user can be enabled or disabled without affecting schedule. Defaults to true.
bool SCHEDULED DAYS: Comma delimited BOOLEAN. Optional. Sunday – Saturday, true false. Defaults all 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 date range. A daily schedule will specify SCHEDULED_DAYS. A date_range will specify a start date and an end date. Both schedule types may be restricted to a START_TIME and END_TIME. Defaults to 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.

Name

LOCK ()

Parameters

None

Returns

None

OPEN

Unlock if status is unlocked. Called by bound relay.

Name

OPEN ()

Parameters

None

Returns

None

REQUEST_CAPABILITIES

This command results in the Protocol Notification CAPABILITY_CHANGEDbeing sent from the Protocol to the Proxy.

Name

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.

Name

REQUEST_CUSTOM_SETTINGS ()

Parameters

None

Returns

None

REQUEST_CUSTOM_SETTINGS

This command results in the Protocol Notification HISTORY being sent from the Protocol to the Proxy.

Name

REQUEST_HISTORY ()

Parameters

None

Returns

None

REQUEST_SETTINGS

This command results in the Protocol Notification SETTINGS being sent from the Protocol to the Proxy.

Name

REQUEST_SETTINGS ()

Parameters

None

Returns

None

REQUEST_USERS

This command results in the Protocol Notification USERS being sent from the Protocol to the Proxy.

Name

REQUEST_USERS ()

Parameters

None

Returns

None

SET_ADMN_CODE

Set the lock's administrator code.

Name

PSET_ADMIN_CODE ()

Parameter Description Description
PASSCODE STR Admin code

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.

Name

SET_AUTO_LOCK_SECONDS ()

Parameter Type Description
SECONDS NUM Number of seconds

Returns

None

SET_CUSTOM_SETTINGS

This command results in the Protocol Notification CUSTOM_SETTINGS being sent from the Protocol to the Proxy.

Name

SET_CUSTOM_SETTINGS ()

Parameter Type Description
NAME STR Required.
VALUE STR Required. Value type must be converted based on custom setting type.

Returns

None

SET_LANGUAGE

Set the lock's language. Values determined by capabilities.

Name

SET_ LANGUAGE ()

Parameter Type Description
LANGUAGE STR Lock language.

Returns

None

SET_LOCK_MODE

Set the lock’s mode. The supported modes are determined by capabilities.

Name

SET_ LOCK_MODE ()

Parameter Type Description
MODE STR MODE: Required: normal, vacation

Returns

None

SET_LOG_FAILED_ATTEMPTS

For lock’s that have internal log storage, sets whether or not to log failed attempts.

Name

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.

Name

SET_NUMBER_LOG_ITEMS ()

Parameter Type Description
unit NUM Log count

Returns

None

SET_ONE_TOUCH_LOCKING

Set whether or not keypad activation will extend bolt if unlocked.

Name

SET_ONE_TOUCH_LOCKING ()

Parameter Description
bool true/false

Returns

None

SET_SCHEDULED_LOCKOUT_ENABLED

Disable or enable all user passcode access.

Name

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.

Name

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.

Name

SET_WRONG_CODE_ATTEMPTS ()

Parameter Description
unit COUNT

Returns

None

SET_VOLUME

Sets the lock’s volume.

Name

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

Name

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.

Name

BATTERY_STATUS_CHANGED ()

Parameter Type Description
BATTERY STATUS STR 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

Name

CAPABILITY_CHANGED ()

Parameter Type Description
NAME STR Required parameter: The name of the setting is its XML tag as defined in <lock_setup>.
VALUE STR Required parameter: The capabilities new value.

HISTORY

Sent in response to the command REQUEST_HISTORY.

Name

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.

Name

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

Name

CUSTOM_SETTINGS_CHANGED ()

Parameter

None

Returns

None

LOCK_STATUS_CHANGED

Sent in when a lock status changes for any reason.

Name

LOCK_STAUS_CHANGED ()

Parameter Type Description
LOCK STATUS STR Required parameter: unknown, locked, unlocked, or fault.
LAST ACTION DESCRIPTION STR Optional parameter.
SOURCE STR Optional parameter: the source that affected the status change.
MANUAL BOOL Optional parameter: true, false, assumed false if not specified.

Returns

None

SETTINGS

Sent in response to the command REQUEST_SETTINGS.

Name

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.

Name

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.

Name

USERS ()

Parameter

None

Returns

None

USER_ADDED

Sent when a user is added.

Name

USER_ADDED ()

Parameter Description
int USER ID
str USER NAME
str PASSCODE
bool IS ACTIVE: Optional, true false. A user can be enabled or disabled without affecting schedule. Defaults to true.
bool SCHEDULED DAYS: Comma delimited BOOLEAN. Optional. Sunday – Saturday, true false. Defaults all 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 date range. A daily schedule will specify SCHEDULED_DAYS. A date_range will specify a start date and an end date. Both schedule types may be restricted to a START_TIME and END_TIME. Defaults to 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.

Name

USER_CHANGED ()

Parameter Description
int USER ID
str USER NAME
str PASSCODE
bool IS ACTIVE: Optional, true false. A user can be enabled or disabled without affecting schedule. Defaults to true.
bool SCHEDULED DAYS: Comma delimited BOOLEAN. Optional. Sunday – Saturday, true false. Defaults all 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 date range. A daily schedule will specify SCHEDULED_DAYS. A date_range will specify a start date and an end date. Both schedule types may be restricted to a START_TIME and END_TIME. Defaults to 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.

Name

USER_DELETED ()

Parameter Type Description
USER ID INT User ID
USER NAME 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.

Name

SET_AUX_MODE ()

Parameter Type Description
ID NUM ID value of the auxiliary to set.
MODE STR ON/OFF

Returns

None

SET_POOL_HEAT_MODE

Received from the proxy when pool het mode has been changed.

Name

SET_POOL_HEATMODE ()

Parameter Description Description
MODE STR ON/OFF
ID INT Heat mode ID value

Returns

None

SET_POOL_PUMP_MODE

Received from the proxy when pool pump mode has been changed.

Name

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.

Name

SET_POOL_SETPOINT ()

Parameter Description Description
SETPOINT INT Temperature Value

Returns

None

SET_SPA_HEAT_MODE

Received from the proxy when spa heat mode been changed.

Name

SET_SPA_HEATMODE ()

Parameter Type Description
MODE STR ON/OFF
ID INT Heat mode ID

Returns

None

SET_SPA_PUMP_MODE

Received from the proxy when spa pump mode has been changed.

Name

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.

Name

SET_SPA_SETPOINT ()

Parameter Type 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.

Name

AUX_ITEM_UPDATED ()

Parameter Type 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.

Name

AUX_ITEM_ADDED ()

Parameter Type 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.

Name

AUX_ITEM_ADDED ()

Parameter Description 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

Name

AIR_TEMP_CHANGED ()

Parameter Type Description
TEMPERATURE NUM Temperature value.

Returns

None

Example

C4:SendToProxy(5001, "AIR_TEMP_CHANGED", {TEMPERATURE = 99})

AUX_NAMES_CHANGED

This notification provides a way to override capabilities.

Name

AUX_NAMES_CHANGED ()

Parameter Type Description
AUXNAMES BOOL 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>

AUXMODE_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.

Name

AUXMODE_CHANGED ()

Parameter Type Description
ID INT ID of auxiliary
MODE STR ON/OFF
SELECTED LIST For type LIST from <aux_types> <items> item selected if is provided by the device.

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.

Name

HAS_AIR_CHANGED ()

Parameter Description Description
HASAIR BOOL (“True/False”) Is an outdoor air temperature available.

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.

Name

HAS_POOL_CHANGED ()

Parameter Description Description
HASPOOL BOOL (“True/False”) Is a Pool available on this controller

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.

Name

HAS_SPA_CHANGED ()

Parameter Type Description
HASSPA BOOL (“True/False”) Is a Spa available on this controller.

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

Name

NUM_AUXS_CHANGED ()

Parameter Type Description
AUXS NUM 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

Name

POOL_PUMPMODES_LIST_CHANGED ()

Parameter Type Description
POOL_PUMPMODES  LIST Comma delimited list of Aux buttons.

Returns

None

POOL_SETPOINT_CHANGED

Sent to the proxy to indicate that the setpoint on the pool controller has changed.

Name

POOL_SETPOINT_CHANGED ()

Parameter DType Description
SETPOINT NUM 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.

Name

POOL_TEMP_CHANGED ()

Parameter Type Description
TEMPERATURE NUM 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.

Name

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.

Name

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.

Name

PUMP_MODE_CHANGED ()

Parameter Description Description
PUMPMODE BOOL 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.

Name

SCALE_CHANGED ()

Parameter Type Description
SCALE STR “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.

Name

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.

Name

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.

Name

SPA_MODE_CHANGED ()

Parameter Type Description
SPAMODE BOOL 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

Name

SPA_PUMPMODES_LIST_CHANGED ()

Parameter Description Description
SPA_PUMPMODES  LIST Comma delimited list of available spa pump modes.

Returns

None

SPA_SETPOINT_CHANGED

Sent to the proxy to indicate that the temperature setpoint on the spa controller has changed.

Name

SPA_SETPOINT_CHANGED ()

Parameter Type Description
SETPOINT NUM 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.

Name

SPA_TEMP_CHANGED ()

Parameter Type Description
TEMPERATURE NUM 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

<pool_properties>
    <hasair>True</hasair>
    <hasspa>True</hasspa>
    <haspool>True</haspool>
    <aux_list>
        <items>
            <item>
                <id>1</id>
                <item_text>Auxiliary Control 1</item_text>
                <type>Toggle</type>
            </item>
            <item>
                <id>2</id>
                <item_text>Auxiliary Control 2</item_text>
                <type>Toggle</type>
            </item>
            <item>
                <id>3</id>
                <item_text>Auxiliary Control 3</item_text>
                <type>Toggle</type>
            </item>
            <item>
                <id>4</id>
                <item_text>Auxiliary Control 4</item_text>
                <type>Toggle</type>
            </item>
            <item>
                <id>5</id>
                <item_text>Jandy Color Aux 5</item_text>
                <type>Light Dimmer Jandy Colors</type>
            </item>
            <item>
                <id>6</id>
                <item_text>Dimmer Aux 6</item_text>
                <type>Dimmer</type>
            </item>
            <item>
                <id>7</id>
                <item_text>Auxiliary Control 7</item_text>
                <type>Toggle</type>
            </item>
            <item>
                <id>8</id>
                <item_text>Auxiliary Control 8</item_text>
                <type>Toggle</type>
            </item>
        </items>
    </aux_list>
</pool_properties>

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 Type Description
Info STR 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.
FunctionName STR 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.
NewInfo STR The new info provided by the UI in response to the Request_additional_info request.
InterfaceID STR 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 Description
PGM ID 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 Type Description
Partition ID INT Partition ID
BOOL True, False: True if this partition is Open.
Binding ID INT Binding ID
State 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 Type Description
ZONE ID INT Zone ID
ZONE NAME STR Zone Name
ZONE TYPE INT Zone Type ID
TABLE Partitions the Zone is included in.
BOOL True, False: True if Zone can be bypassed.
TBOOL True, False: True if Zone is currently Open.
State STR State

GET_PANEL_SETUP

Calls [GET_ALL_PARTITION_INFO\]1

PGM_CLOSE

Sends an ‘close’ command to the targeted PGM.

Parameter Description Description
PGM ID PINT The id of the targeted PGM.

PGM_OPEN

Sends an ‘open’ command to the targeted PGM.

Parameter Type Description
PGM ID INT The id of the targeted PGM.

PGM_TOGGLE

Sends an ‘toggle’ command to the targeted PGM.

Parameter Type Description
PGM ID INT The id of the targeted PGM.

PGM_TRIGGER

Sends an ‘trigger’ command to the targeted PGM.

Parameter Description Description
PGM ID INT 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 Type Description
YEAR INT The current year (4 digits)
MONTH INT The current month (2 digits 01-12)
DAY INT The current day of the month (2 digits 01-31)
HOUR: INT The current hour in 24-hour time (2 digits 00-23)
MINUTE INT The current minute in the hour (2 digits 00-59)
SECOND INT The current second in the minute (2 digits 00-59)
INTERFACE ID: STR 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 Type Description
PARTITION ID STR PARTITION ID: The id number of the targeted partition.
ENABLED 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 Type Description
PGM ID INT The id of the targeted PGM.
ENABLED BOOL ‘True’ if this partition should now be enabled, False if not.
COMMAND STR 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 Partition 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 Description
PGM ID NUM 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 Type Description
PARTITION ID NUM ID of the target partition.
STATE STR A string listing its state. Supported values include: "ARMED" "ALARM" "OFFLINE" "EXIT_DELAY" "ENTRY_DELAY" "DISARMED_READY" "DISARMED_NOT_READY" "CONFIRMATION_REQUIRED"
TYPE STR 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 Type Description
PGM ID NUM ID of the target PGM
PGM OPEN BOOL "true" if the PGM is opened. "false" if it is closed.
INITIALIZING BOOL "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 Type Description
PGM ID NUM 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 Description
ID NUM 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
GLASSBREAK= 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 Type Description
ZONE ID NUM ID of the target zone
ZONE OPEN BOOL "true" if the zone is opened. "false" if it is closed.
INITIALIZING BOOL "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 Type Description
IDENTIFIER NUM 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 Type Description
TROUBLE TEXT STR Text listing the type of trouble. “For example: “Battery", "Communication", etc.)
DENTIFIER NUM 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 un-bypassed zones are open.

Parameter Type Description
ACTION STR 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.
INTERFACE ID STR 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, "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 Type Description
CODE REQUIRED TO ARM: BOOL “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 Description
INTERFACE ID STR 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 Type Description
TYPE STR 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 Type Description
ZONE ID: NUM 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 Type Description
ENABLED BOOL "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 Description
STATE STR Supported values include: "ARMED" "ALARM" "OFFLINE" "EXIT_DELAY" "ENTRY_DELAY" "DISARMED_READY" "DISARMED_NOT\\\_READY" "CONFIRMATION_REQUIRED"
TYPE STR 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.
DELAY TIME TOTAL: NUM For Entry or Exit delays. The total time of the delay.
DELAY TIME REMAINING NUM For Entry or Exit delays, the time remaining in the delay.
CODE REQUIRED TO CLEAR BOOL "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_REMAINING = 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 Type Description
STATE STR Supported values include: "ARMED" "ALARM" "OFFLINE" "EXIT_DELAY" "ENTRY_DELAY" "DISARMED_READY" "DISARMED_NOT_READY" "CONFIRMATION_REQUIRED"
TYPE STR 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.
DELAY TIME TOTAL: NUM For Entry or Exit delays. The total time of the delay.
DELAY TIME REMAINING NUM For Entry or Exit delays, the time remaining in the delay.
CODE REQUIRED TO CLEAR BOOL "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_REMAINING = 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 Type Description
INFO STRING STR 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
FUNCTION NAME STR 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.
MASK\_DATA: STR “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.
INTERFACE ID BOOL 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.
INTERFACE ID STR 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 Type Description
ZONE ID NUM 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/un-bypassed.

Parameter Description Description
ZONE ID NUM Number
ZONE OPEN BOOL "true" if the zone is opened. "false" if it is closed.
ZONE BYPASSED BOOL "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 Description
Info STR 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.
FunctionName STR 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.
NewInfo STR The new info provided by the UI in response to the equest_additional_info request.
InterfaceID STR A unique (str) to identify which interface is sending this command.

ARM_CANCEL

Cancel an uncompleted arm command.

Parameter Type Description
InterfaceID STR 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 Type Description
STR A unique string to identify which interface is sending this command.
Interface ID STR I 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 Description
Function STR Function string
InterfaceID STR 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 Description
Key Name STR The single key that we should emulate a press for.
InterfaceID STR 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 Type Description
ArmType STR Request the partition to arm.
UserCode STR Optional. Specifies the user code to use with the arm command (if needed).
Bypass BOOL Optional. Specify whether currently open zones should be bypassed.
InterfaceID STR 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 Type Description
User Code: STR The user code needed for disarming.
InterfaceID STR 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.

Name

ALLOWED_FAN_MODES_CHANGED ()

Parameter Type Description
Modes LIST. A comma delimited list of available modes.

Returns

None

ALLOWED_HUMIDITY_MODES_CHANGED

Changes the value of the variable HUMIDITY_MODES_LIST

Name

ALLOWED_HUMIDITY_MODES_CHANGED ()

Parameter Type Description
Modes LIST 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

Name

ALLOWED_HVAC_MODES_CHANGED ()

Parameter Type Description
Modes LIST 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.

Name

ALLOWED_HVAC_MODES_CHNAGED ()

Parameter Type Description
LOCK BOOL If the buttons on the device should be locked or not.

Returns

None

CAN_COOL

Boolean to enable/disable can_cool capability. If the device supports this feature, default is False.

Name

CAN_COOL ()

Parameter Type Description
BOOL True/False. Supports cooling.

Returns

None

CAN_HEAT

Boolean to enable/disable can_heat capability. If the device supports this feature, default is False.

Name

CAN_HEAT ()

Parameter Type Description
BOOL True/False. enable/disable can_heat capability.

Returns

None

CAN_HUMIDIFY

Boolean to enable/disable can_humidify capability. If the device supports this feature, default is False.

Name

CAN_HUMIDIFY ()

Parameter Type Description
BOOL True/False. Enable/disable can_humidify capability

Returns

None

CAN_DEHUMIDIFY

Boolean to enable/disable can_dehumidify capability. If the device supports this feature, default is False.

Name

CAN_DEHUMIDIFY ()

Parameter Type Description
BOOL True/False. Enable/disable can_dehumidify capability.

Returns

None

CONNECTION

Boolean to enable/disable can_dehumidify capability. If the device supports this feature, default is False.

Name

CONNECTION ()

Parameter Description Description
CONNECTED BOOL 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.

Name

COOL_SETPOINT_CHANGED ()

Parameter Type Description
SETPOINT NUM New cooling setpoint temperature.
SCALE STR The values allowed are KELVIN, K, CELSIUS, C, FAHRENHEIT, or F.

Returns

None

COOL_SETPOINT_RESOLUTION C

Name

COOL_SETPOINT_RESOLUTION_C ()

Parameter Type Description
SETPOINT INT 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

Name

COOL_SETPOINT_RESOLUTION_F ()

Parameter Type Description
SETPOINT INT 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.

Name

CUSTOM FIELDS CHANGED ()

Parameter Type 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

Name

COOL_SETPOINT_ MAX_C ()

Parameter Type Description
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

Name

COOL_SETPOINT_ MAX_F ()

Parameter Type Description
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

Name

COOL_SETPOINT_ MIN_C ()

Parameter Type Description
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

Name

COOL_SETPOINT_ MIN_F ()

Parameter Type Description
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.

Name

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.

Name

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.

Name

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.

Name

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. 

Name

DYNAMIC_CAPABILITIES_CHANGED ()

Parameter Type Description
HAS_OUTDOOR_TEMPERATURE BOOL boolean to enable/disable hasoutdoortemperature capability, if the device supports this feature, default is false.
CAN_CHANGE_SCALE BOOL boolean to enable/disable Navigators UI's and composer from being able to change the scale of the hardware.
HAS_HUMIDITY BOOL boolean to enable/disable has_humidity capability, if the device supports this feature, default is false
HAS_SINGLE_SETPOINT BOOL Boolean used to turn single setpoint mode to on or off. Defaults to false (off).
HUMIDIFY_SETPOINT_MIN INT Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_humidify_min capability, default 0
HUMIDIFY_SETPOINT_MAX INT Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_humidify_max capability, default 100
HUMIDIFY_SETPOINT_RESOLUTION INT What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_humidify_resolution capability, default 1
HUMIDITY_SETPOINT_DEADBAND INT What the deadband between humidify and dehumidify is, will do the same thing as the setpoint_humidity_deadband capability, default 10
DEHUMIDIFY_SETPOINT_MIN: INT Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_dehumidify_min capability, default 0
DEHUMIDIFY_SETPOINT_MAX INT Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_dehumidify_max capability, default 100
DEHUMIDIFY_SETPOINT_RESOLUTION INT 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 

Name

EXTRAS_SETUP_CHANGED ()

Parameter Description Description
XML 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 

Name

EXTRAS_STATE_CHANGED ()

Parameter Type Description
XML 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, .

Name

FAN_MODE_CHANGED ()

Parameter Type Description
MODE STR 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.

Name

FAN_STATE_CHANGE ()

Parameter Type Description
STATE STR 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.

Name

HAS_EXTRAS ()

Parameter Type Description
XML STR 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.

Name

HAS_HEAT_PUMP ()

Parameter Description Description
BOOL True/False. enable/disable has_heat_pump

Returns

None

HAS_HUMIDITY

Boolean to enable/disable has_humidity capability. If the device supports this feature, default is false

Name

HAS_ HUMIDITY ()

Parameter Type Description
BOOL True/False. enable/disable has_humidity capability.

Returns

None

HAS_OUTDOOR_TEMPERATURE

Boolean to enable/disable has_outdoor_temperature capability, if the device supports this feature, default is false

Name

HAS_OUTDOOR_TEMPERATURE ()

Parameter Type Description
BOOL True/False. enable/disable has_outdoor_temperature capability.

Returns

None

HEAT_SETPOINT

Fires event: Heat_Setpoint_Changed.

Name

HEAT_SETPOINT ()

Parameters

None

Returns

None

HEAT_SETPOINT_CHANGED

Notification that should be sent to the proxy when the heating setpoint has changed.

Name

HEAT_SETPOINT_CHANGED ()

Parameter Type Description
SETPOINT NUM New heating setpoint temperature.
SCALE STR 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.

Name

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.

Name

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.

Name

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.

Name

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.

Name

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.

Name

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.

Name

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.

Name

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.

Name

HOLD_MODE_CHANGED ()

Parameter Type Description
MODE STR 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.

Name

HUMIDITY_CHANGED ()

Parameter Description Description
HUMIDITY INT HUMIDITY: (0-100)

Returns

None

HUMIDITY_MODE_CHANGED

MODE, typically: humidify, humidifyAuto (aggressiveness), dehumidify or auto). To UI comes through as humidity_mode

Name

HUMIDITY_MODE_CHANGED ()

Parameter Type Description
MODE STR Typically: humidify, humidifyAuto (aggressiveness), dehumidify or auto).

Returns

None

HUMIDIFY_SETPOINT_CHANGED

The humidity setpoint has changed. To UI comes through as humidify_setpoint

Name

HUMIDIFY_SETPOINT_CHANGED ()

Parameter Type Description
SETPOINT NUM (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.

Name

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,

Name

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,

Name

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.

Name

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.

Name

HUMIDITY_STATE_CHANGED ()

Parameter Type Description
STATE STR 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.

Name

HVAC_MODE_CHANGED ()

Parameter Type Description
MODE STR 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.

Name

HVAC_STATE_CHANGED ()

Parameter Type Description
STATE: STR 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.

Name

MESSAGE_CHANGED ()

Parameter Type Description
MESSAGE STR 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.

Name

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.

Name

PRESET_FIELDS_CHANGED ()

Parameter Type Description
XML 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.

Name

SCALE_CHANGED ()

Parameter Type Description
SCALE STR 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.

Name

SCHEDULE_ENTRY_CHANGED ()

Parameter Type Description
DayIndex NUM Number representing day of week: 0= Sunday, 1=Monday
EntryIndex NUM 0 to the number of entries the day can support. 0 = the first entry, 1 = the second entry.
TimeMinutes NUM Number of minutes past midnight for the entry change. For example 360= 6:00AM.
EnabledFlag BOOL Enables or disables a schedule. By default, the first four schedules are enabled.
HeatSetpoint NUM Temperature designated to start the heating system.
CoolSetpoint: NUM Temperature designated to start the cooling system.
Units STR 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.

Name

SINGLE_SETPOINT_CHANGED ()

Parameter Type Description
SETPOINT INT The new temperature setpoint value.
SCALE STR 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.

Name

SINGLE_SETPOINT_MAX_C ()

Parameter Type Description
SETPOINT INT 0-100 default 100

Returns

None

SINGLE_SETPOINT_MAX_ F

Maximum Setpoint. Will do the same thing as the setpoint_single_max capability.

Name

SINGLE_SETPOINT_MAX_F ()

Parameter Type Description
SETPOINT INT 0-100 default 100

Returns

None

SINGLE_SETPOINT_MIN_ C

Minimum Setpoint. Will do the same thing as the setpoint_single_min capability.

Name

SINGLE_SETPOINT_MIN_C ()

Parameter Type Description
SETPOINT: INT 0-100 default 0

Returns

None

SINGLE_SETPOINT_MIN_C

Minimum Setpoint. Will do the same thing as the setpoint_single_min capability.

Name

SINGLE_SETPOINT_MIN_F ()

Parameter Type Description
SETPOINT: INT 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.

Name

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.

Name

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.

Name

TEMPERATURE_CHANGED ()

Parameter Type Description
TEMPERATURE NUM New temperature value.
SCALE: STR 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

Name

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.

Name

VACATION_MODE ()

Parameter Type Description
ON VACATION STR 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.

Name

VACATION_ SETPOINTS ()

Parameter Type Description
VAC HEAT SETPOINT NUM New temperature for the heating setpoint while in vacation mode.
VAC COOL SETPOINT: NUM New temperature for the cooling setpoint while in vacation mode.
UNITS STR F or C – Fahrenheit or Celsius.

Returns

None

OUTDOOR_TEMPERATURE_CHANGED

Used to inform the proxy that the outdoor temperature has changed.

Name

OUTDOOR_TEMPERATURE_CHANGED ()

Parameter Description
int Default 1.

Returns

None

OUTDOOR_TEMPERATURE_RESOLUTION

What increment to use (ie .1, .5, 1, 3, 5, 10, etc), will do the same thing as the outdoor_temperature_resolution capability.

Name

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.

Name

DEC_SETPOINT_COOL ()

Parameter

None

Returns

None

SET_PRESET

Runs a Preset regardless if there is an event scheduled for it.

Name

SET_PRESET ()

Parameter Type Description
NAME STR Preset 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

Name

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.

Name

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.

Name

INC_SETPOINT_HEAT ()

Parameter

None

Returns

None

PRESET_ADD

Adds a new Preset Schedule Preset (If protocol driver has the can_preset_schedule capability)

Name

PRESET_ADD ()

Parameter Type Description
NAME STR Preset Name. Required.
PRESET FIELDS XML 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)

Name

PRESET_DELETE ()

Parameter Type Description
NAME STR Preset Name. Required.
PRESET FIELDS XML 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.

Name

PRESET_EVENT_ADD ()

Parameter Description Description
NAME STR Event Name
WEEKDAY INT 0-6 with Sunday being 0
HOUR INT 0-23
MINUTE INT 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.

Name

PRESET_EVENT_DELETE ()

Parameter Type Description
NAME STR Using "" (an empty string) will match all presets to make deleting all events of a given preset name easier.
WEEKDAY INT 0-6 with Sunday being 0. Using -1 will match any weekday.
HOUR INT 0-23 Using -1 Will match any Hour.
MINUTE INT 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)

Name

PRESET_EVENT_MODIFY ()

Parameter Type Description
NAME STR Event Name
WEEKDAY: INT 0-6 with Sunday being 0.
HOUR INT 0-23
MINUTE INT 0-60
NEW WEEKDAY INT 0-6 with Sunday being 0
NEW HOUR INT 0-23
NEW MINUTE INT 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)

Name

PRESET_MODIFY ()

Parameter Type Description
NAME STR Preset Name
PRESET FIELDS XML XML DATA
NEW NAME STR New Preset 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.

Name

QUERY_SCHEDULE ()

QUERY_SCHEDULE_EVENTS

Used for the old .ccz and a few older thermostats for scheduling purposes.

Name

QUERY_SCHEDULE_EVENTS ()

SET_BUTTONS_LOCK

Used to indicate if the buttons on the thermostat should be locked out from controlling the temperature.

Name

SET_BUTTONS_LOCK ()

Parameter Type Description
LOCK BOOL 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 Type 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 Type Description
TIME INT 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