tvcontroller

The tvcontroller object provides a communication interface between televisions and BrightSign built-in products. This object is available as of BOS 9.0.168.

Multiple instances of tvcontroller can access the television from multiple domains (user node application, user HTML application, etc.), or you can use multiple instances of the JavaScript object. They all access the same television hardware and they all get notified with an event when the television sends a message.

tvcontroller IDL

@brightsign/tvcontroller [Exposed=Window] interface TvController { Promise<void> send(Array data); attribute EventHandler onreceive; }; [Exposed=Window] interface ReceiveEvent : Event { readonly attribute Array data; };

 

Object Creation

To create a tvcontroller object, load the brightsign/tvcontroller module using the require() method and then create an instance of the tvcontroller:

let tv_controller_class = require("@brightsign/tvcontroller"); let tv_controller = new tv_controller_class();

TvController

Use this interface to access a television (for example, to send messages)

send()
Promise<void> send(Array data)
Attribute
  • onreceive EventHandler:

ReceiveEvent

Use this interface to get notified with an event when the television sends a message

Attribute
  • data Array: This is a read-only attribute

Messages

Messages are defined in the Protobuf format. BrightSign firmware includes the JavaScript bindings of the protocol buffer messages in the firmware image. To load the messages, load the following module:

A single Protobuf file is used for both television to BrightSign Built-In and BrightSign Built-In to television messages, because the same messages are used both for verification and update notifications. When BrightSign updates a field (for example, to set up the volume), the television sends the same message back to BrightSign that the volume is updated. The volume can be updated with the television user interface, via remote control. BrightSign also gets that as an event from the television.

There are some exceptions:

  • Brightsign Built-In doesn’t send messages back to the television to confirm acknowledgement of receipt of the request message, it only sends the requested information.

  • Both sides can send PowerSettings message to each other. To prevent confusion with receiving a command and a acknowledgement, we have PowerSettings and PowerSettingsAck message types. PowerSettingsAck is sent when device gets a PowerSettings message and switches to the requested power mode.

This is the Proto file for the communication interface:

 

Usage Examples

Set the TV Gamma Value

In this one way communication, BrightSign makes the request and the television updates and returns the gamma value.

Send takes a JavaScript array, but serializeBinary returns Uint8Array. Uint8Array should be converted to Array using Array.from() before calling send.

deserializeBinary also expects a Uint8Array, but receive event returns Array. Array should be converted to Uint8Array before calling deserializeBinary using Uint8Array.from().

 

Send BrightSign Device Information

In the following example, the tv_controller is set up to send a device info, when the television requests it. The application sets up a receive event listener and waits for a request event.

Only one request, DEVICE_INFO, is currently available (anything else will error). A DEVICE_INFO request fills the required fields and sends a message back.