NAV
lua

License, Copyright, and Trademark

The content contained in this repository is the intellectual property of Snap One, LLC, (formerly known as Wirepath Home Systems, LLC), and use without a valid license from Snap One is strictly prohibited. The user of this repository shall keep all content contained herein confidential and shall protect this content in whole or in part from disclosure to any and all third parties except as specifically authorized in writing by Snap One.

License and Intellectual Property Disclaimer

The content in this repository is provided in connection with Snap One products. No license, express or implied, by estoppal or otherwise, to any intellectual property rights is granted by this document or in this repository. Except as provided in Snap Oneʼs terms and conditions for the license of such products, Snap One and its affiliates assume no liability whatsoever and disclaim any express or implied warranty, relating to the sale and/or use of Snap One products including liability or warranties relating to fitness for a particular purpose, merchantability, or infringement of any patent, copyright or other intellectual property right. Snap One products are not intended for use in medical, lifesaving, or life sustaining applications.

Information regarding third-party products is provided solely for educational purposes. Snap One is not responsible for the performance or support of third-party products and does not make any representations or warranties whatsoever regarding the quality, reliability, functionality or compatibility of these products. The reader is advised that third parties can have intellectual property rights that can be relevant to this repository and the technologies discussed herein, and is advised to seek the advice of competent legal counsel regarding the intellectual property rights of third parties, without obligation of Snap One.

Snap One retains the right make changes to this repository or related product specifications and descriptions in this repository, at any time, without notice. Snap One makes no warranty for the use of this repository and assumes no responsibility for any errors that can appear in the repository nor does it make a commitment to update the content contained herein.

Copyright

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

This documentation includes content that details the functions that make up the Projector Control Proxy which is supported in the DriverWorks Software Development Kit.

Proxies (Commands)

A proxy driver is an interface to the Control4 system for a set of devices that share common functionality. For instance, most Projectors have common controls such as SET INPUT, MUTE ON and MUTE OFF. The projector proxy allows for a common user interface to control all projectors.  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

There were no modifications to the Projector Proxy in conjunction with O.S. Release 3.4.2.

What’s New in 3.4.1

There were no modifications to the Projector Proxy in conjunction with O.S. Release 3.4.2.

What’s New in 3.4.0

There were no modifications to the Projector Proxy in conjunction with O.S. Release 3.4.0.

What’s New in 3.3.2

There were no modifications to the Projector Proxy in conjunction with O.S. Release 3.3.2.

What’s New in 3.3.1

There were no modifications to the Projector Proxy in conjunction with O.S. Release 3.3.1.

What’s New in 3.3.0

There were no modifications to the Projector Proxy in conjunction with O.S. Release 3.3.0.

What’s New in 3.2.3

There were no modifications to the Projector Proxy in conjunction with O.S. Release 3.2.3.

What’s New in 3.2.2

There were no modifications to the Projector Proxy in conjunction with O.S. Release 3.2.2.

What’s New in 3.2.1

There were no modifications to the Projector Proxy in conjunction with O.S. Release 3.2.1.

What’s New in 3.2.0

There were no modifications to the Projector Proxy in conjunction with O.S. Release 3.2.0.

What was New in 3.1.2

There were no modifications to the Projector Proxy in conjunction with O.S. Release 3.1.2.

What was New in 3.1.0

There were no modifications to the Projector Proxy in conjunction with O.S. Release 3.1.0.

What was New in O.S.3

There were no modifications to the Projector Proxy in conjunction with O.S. Release 3.0.0.

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

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

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

lua