Java Script Objects For Bright (5.0)

2014-10-15

: Brightsign Javascript Objects For Brightscript (5.0) JavaScript Objects for BrightScript (5.0) s

Open the PDF directly: View PDF PDF.
Page Count: 25

DownloadJava Script Objects For Bright (5.0)
Open PDF In BrowserView PDF
TECHNICAL NOTES

Using JavaScript Objects for BrightScript
(FW 5.0.x)

BrightSign, LLC. 16795 Lark Ave., Suite 200 Los Gatos, CA 95032
408-852-9263 | www.brightsign.biz

INTRODUCTION
The BrightSign Webkit implementation exposes several JavaScript objects for
BrightScript. These objects allow you to link many standard interactive events
and hardware elements (serial, CEC, device info, etc.) to HTML5 pages. This
tech note details the methods and parameters for each JavaScript object. For
more information about the BrightScript objects that the JavaScript objects are
linked to, see the BrightScript Object Reference Manual.

Technical Notes – JavaScript Objects (FW ver. 5.0.x)

1

AVAILABLE OBJECTS
BSControlPort ............................................................................. 3
BSDatagramSocket ..................................................................... 5
BSDeviceInfo ............................................................................... 7
BSIRReceiver ............................................................................... 9
BSIRTransmitter ........................................................................ 10
BSVideoMode ............................................................................ 11
BSCECTransmitter .................................................................... 13
BSCECReceiver ......................................................................... 14
BSSyncManager ........................................................................ 15
BSMessagePort ......................................................................... 18
BSSerialPort .............................................................................. 20
BSTicker ..................................................................................... 22

Technical Notes – JavaScript Objects (FW ver. 5.0.x)

2

BSControlPort
For more information about available methods, refer to the entry on roControlPort.
Object Creation
BSControlPort(in DOMString PortName);
Methods
• boolean
• boolean
in
in
in
• boolean
in

SetOutputValue(in unsigned long Param)
SetOutputValues(in unsigned long Param1,
unsigned long Param2,
unsigned long Param3,
unsigned long Param4)
SetPinValue(in unsigned long Pin,
unsigned long Param)

Events
The following events are available on the BSControlPort object. Each event can receive a
ControlPortEvent event.
• oncontroldown
• oncontrolup
• oncontrolevent
ControlPortEvent – Attributes
• readonly attribute unsigned long code
Example
The following JavaScript example causes the LEDs on a BP900 button board to twinkle:
function myFunction()
{
var bp900_setup = new BSControlPort("TouchBoard-0-LED-SETUP");
bp900_setup.SetPinValue(0, 11)
var bp900 = new BSControlPort("TouchBoard-0-LED");
bp900.SetPinValue(0, 0x07fe)
bp900.SetPinValue(1, 0x07fd)
bp900.SetPinValue(2, 0x07fb)
bp900.SetPinValue(3, 0x07f7)
bp900.SetPinValue(4, 0x07ef)
bp900.SetPinValue(5, 0x07df)
bp900.SetPinValue(6, 0x07bf)
bp900.SetPinValue(7, 0x077f)
bp900.SetPinValue(8, 0x06ff)
bp900.SetPinValue(9, 0x05ff)
bp900.SetPinValue(10, 0x03ff)

Technical Notes – JavaScript Objects (FW ver. 5.0.x)

3

}

var bp900_gpio = new BSControlPort("TouchBoard-0-GPIO");
bp900_gpio.oncontroldown = function(e)
{
console.log('###### oncontroldown' + e.code);
}

Technical Notes – JavaScript Objects (FW ver. 5.0.x)

4

BSDatagramSocket
For more information about available methods, refer to the entry on roDatagramReceiver and
roDatagramEvent.
Methods
• boolean BindLocalPort(in unsigned long portNumber)
• byteArray GetBytes()
Events
The following event is available on the BSDatagramSocket object. It can receive an event of the type
DatagramSocketEvent.
• ondatagram
DatagramSocketEvent – Attributes
• readonly attribute DOMString remoteHost
• readonly attribute int remotePort
Example
sock = new BSDatagramSocket();
// receiving
sock.BindLocalPort(5000);
sock.ondatagram = function(e) {
$("#message").empty();
bytes = e.getBytes();
array = new Int8Array(bytes);
console.log("the array:"+ array);
console.log("Received from " + e.remoteHost + " port " + e.remotePort + "
payload " + bytes + " " + array.length + " " + array[0]);
var udpstring = []
$.each(array, function(i){
console.log(array[i])
var udpval = array[i]
var udpconvert = String.fromCharCode(udpval)
udpstring.push(udpconvert)
})
var udpMessage = udpstring.join("");
switch(udpMessage){
case 'GE':
$( "#message").append("UDP Message: "+udpMessage)
$('#promo').css('background-image',"url(Giants_GE.png)")
$("#scrollingText").show()
break;
case 'Morgan':
$( "#message").append("UDP Message: "+udpMessage)
$('#promo').css('background-image',"url(CaptainMorganLwrapNew.png)")
$("#scrollingText").hide()
break;

Technical Notes – JavaScript Objects (FW ver. 5.0.x)

5

case 'Heinz':
$( "#message").append("UDP Message: "+udpMessage)
$('#promo').css('background-image',"url(Giants_Heinz.png)")
$("#scrollingText").hide()
break;
}
}

Send UDP


Technical Notes – JavaScript Objects (FW ver. 5.0.x)

10

BSVideoMode
For more information about available methods, please refer to the entry on roVideoMode. If you’d like
to change the video mode of the player, you will need to use BrightScript instead of this JavaScript
class.
Attributes
• readonly
• readonly
• readonly
• readonly
• readonly
• readonly
• readonly

attribute
attribute
attribute
attribute
attribute
attribute
attribute

int resX
int resY
int safeX
int safeY
int safeWidth
int safeHeight
DOMString mode

Methods
• boolean IsAttached(in DOMString connector)
• DOMString GetBestMode(in DOMString connector)
• boolean SetBackgroundColour(in unsigned long rgb)
• boolean SetBackgroundColour(in unsigned long r,
in unsigned long g,
in unsigned long b);
• boolean HdmiAudioDisable(in boolean disable)
Example
The following JavaScript example illustrates how to retrieve information about the current video
mode:
function fillInVideoData()
{
var videomode_info = new BSVideoMode();
document.getElementById("resX").innerHTML = videomode_info.resX;
document.getElementById("resY").innerHTML = videomode_info.resY;
document.getElementById("safeX").innerHTML = videomode_info.safeX;
document.getElementById("safeY").innerHTML = videomode_info.safeY;
document.getElementById("safeWidth").innerHTML =
videomode_info.safeWidth;
document.getElementById("safeHeight").innerHTML =
videomode_info.safeHeight;
document.getElementById("videoMode").innerHTML = videomode_info.mode;
document.getElementById("bestMode").innerHTML =
videomode_info.GetBestMode("hdmi");
document.getElementById("connectedFlag").innerHTML =
videomode_info.IsAttached("vga");
}

Technical Notes – JavaScript Objects (FW ver. 5.0.x)

11

function changeBackground()
{
var videomode_info = new BSVideoMode();
videomode_info.SetBackgroundColour(0xFF0000);
}

Technical Notes – JavaScript Objects (FW ver. 5.0.x)

12

BSCECTransmitter
For more information about available methods, refer to the entry on roCecInterface. Note that you can
only use this JavaScript class to send CEC messages.
Methods
• boolean SendRawMessage(in ArrayBuffer data)
• boolean SendRawMessage(in ArrayBufferView data)
• boolean SendRawMessage(in DOMString data)
Example
The following JavaScript example shows how to send a set of CEC messages:
function cecDisplayOn()
{
console.log("### cecDisplayOn ###");
var cec_control = new BSCECTransmitter();
var buffer = new Uint8Array(2);
buffer[ 0 ] = 0x40;
buffer[ 1 ] = 0x0D;
cec_control.SendRawMessage(buffer);
}
function cecDisplayOff()
{
console.log("### cecDisplayOff ###");
var cec_control = new BSCECTransmitter();
var buffer = new Uint8Array(2);
buffer[ 0 ] = 0x40;
buffer[ 1 ] = 0x36;
}

cec_control.SendRawMessage(buffer);

Technical Notes – JavaScript Objects (FW ver. 5.0.x)

13

BSCECReceiver
For more information about available methods, refer to the documentation for roCecInterface. Note
that you can only use this JavaScript class to receive CEC messages.
Events
The following events are available on the BSCECReceiver object. They can receive an event of the
type CECReceiverEvent.
• onececrxframe
• oncectxcomplete
CECReceiverEvent – Attributes
• readonly attribute int status
• readonly attribute DOMString data
Example


Technical Notes – JavaScript Objects (FW ver. 5.0.x)

14

BSSyncManager
For more information about available methods, refer to the documentation for roSyncManager.
Object Creation
BSSyncManager(in DOMString domain, in DOMString multicast_address, in
DOMString multicast_port);
Methods
• BSSyncManager(in DOMString domain, in DOMString multicast_address,
in DOMString multicast_port)
• void SetMaster(in boolean master_mode) raises(DOMException)
• void Synchronize(in DOMString id, in unsigned long ms_delay)
raises(DOMException)
Events
The following event is available on the BSSyncManager object. It can receive events of the type
BSSyncManagerEvent.
• onsyncevent
HTML video tags have been extended to include a setSyncParams function. Calling this function
causes a video to synchronize with the specified sync group.
• setSyncParams(in DOMString domain, in DOMString id, in DOMString
iso_timestamp)
BSSyncManagerEvent – Attributes
The following attributes are relevant to the onsyncevent event:
• readonly attribute DOMString domain
• readonly attribute DOMString id
• readonly attribute DOMString iso_timestamp
Example
The following JavaScript example contains two videos being synchronized locally with
BSSyncManager. If a Slave player is configured to be in the same PTP domain as the Master player
and uses the Slave HTML script, then it will display the videos in sync with the Master player. This
can be implemented on multiple Slave players.
Master Script:



Slave Script:





Technical Notes – JavaScript Objects (FW ver. 5.0.x)

17

BSMessagePort
This object allows for an associative array to be passed from JavaScript to BrightScript (or vice
versa). Only one BSMessagePort instance may be created per roHtmlWidget instance.
Methods
• boolean PostBSMessage(in Dictionary message)
Events
The following event occurs when a message is sent from BrightScript to JavaScript. It will appear as a
MessagePortEvent event.
• onbsmessage
Examples
The following script will send a collection of properties to BrightScript:
function myFunction()
{
var bsMesssage = new BSMessagePort();
}

bsMesssage.PostBSMessage({complete: true, result: "PASS"});

The following message will appear in BrightScript as an roHtmlWidgetEvent. In this case, the
GetData().reason equals "message" and GetData().message contains the
roAssociativeArray.
while not finished
ev = mp.WaitMessage(30000)
if type(ev) <> "roHtmlWidgetEvent" then
print type(ev)
stop
end if
payload = ev.GetData()
print payload
print "Reason: "; payload.reason
if payload.reason = "message" then
print "Message: "; payload.message
if payload.message.complete = invalid then
stop
else if payload.message.complete = "true" then
finished = true
if payload.message.result = "PASS" then
print "Test passed"
else
print "Test failed: "; payload.message.err
stop
end if

Technical Notes – JavaScript Objects (FW ver. 5.0.x)

18

end if
end if
end while

MessagePortEvent
This event contains a single field:
readonly attribute any data;
The following script will iterate over all the fields received in the event:
var bsMesssage = new BSMessagePort();
bsMesssage.onbsmessage = function(msg)
{
for(name in msg.data)
{
console.log('### ' + name + ': ' + msg.data[name]);
}
}

In BrightScript, the roHtmlWidget.PostJSMessage() method can be used to post a message to
JavaScript:
widget.PostJSMessage({ Param1: "Data1", Param2: "Data2", Param3: "Data3" })

Technical Notes – JavaScript Objects (FW ver. 5.0.x)

19

BSSerialPort
For more information about available methods, refer to the entry on roSerialPort.
Object Creation
BSSerialPort(in unsigned long port);
Methods
• void
• void
• void
• void

SetBaudRate(in unsigned long baudRate) raises(DOMException)
SetDataBits(in unsigned long dataBits) raises(DOMException)
SetStopBits(in unsigned long stopBits) raises(DOMException)
SetParity(in DOMString parity) raises(DOMException)

•
•

boolean SetEcho(in boolean flag)
boolean SetInverted(in boolean flag)

•
•

void SetGenerateByteEvent(in boolean flag) raises(DOMException)
void SetGenerateLineEvent(in boolean flag) raises(DOMException)

•

void SetLineEnding(in DOMString eol) raises(DOMException)

•
•
•
•

boolean
boolean
boolean
boolean

•
•

boolean SendBreak(in long duration_ms)
void Flush() raises(DOMException)

SendByte(in unsigned long byte)
SendBytes(in ArrayBuffer data)
SendBytes(in ArrayBufferView data)
SendBytes(in DOMString data)

Events
The following events are available via the BSSerialPort object. Each event can receive a
SerialPortEvent event.
• onserialbyte
• onserialline
SerialPortEvent – Attributes
For the onserialbyte event:
• readonly attribute unsigned long byte
For the onserialline event:

Technical Notes – JavaScript Objects (FW ver. 5.0.x)

20

•

readonly attribute DOMString data

Example
function serialOut()
{
console.log("*** serialOut **");
// '2' is the first externally connected USB
var serial_out = new BSSerialPort(2);

port on Cheetah

serial_out.SetBaudRate(115200);
serial_out.SetDataBits(8);
serial_out.SetStopBits(1);
serial_out.SetParity("none");
serial_out.SetEcho(true);
serial_out.SetGenerateByteEvent(true);
serial_out.SetGenerateLineEvent(true);
serial_out.onserialbyte = function(e){
console.log('### onserialbyte: ' + e.byte);
}
serial_out.onserialline = function(e){
console.log('### onserialline: ' + e.data);
}
serial_out.SendByte(89);
serial_out.SendByte(90);
serial_out.SendByte(91);
serial_out.SendBytes('Hello World!');
serial_out.SendBytes(String.fromCharCode(64, 27, 66, 67))

Technical Notes – JavaScript Objects (FW ver. 5.0.x)

21

BSTicker
For more information about object creation and available methods, refer to the entry on roTextWidget.
This object can only be used to display a "smooth right-to-left scrolling" type ticker.
Object Creation
BSTicker(in unsigned long x, in unsigned long y, in unsigned long w, in
unsigned long h, in long rotation);
The x and y integers specify the position of the ticker widget (via the top-left corner), while the w and
h integers specify the size of the widget. The rotation parameter accepts the following values:
• 0: 0 degrees
• 1: 90 degrees
• 2: 180 degrees
• 3: 270 degrees
Methods
• boolean AddString(in DOMString str);
• boolean PopStrings(in unsigned long count);
•
•

boolean
boolean
in
in
in

SetForegroundColor(in unsigned long argb);
SetForegroundColor(in unsigned long a,
unsigned long r,
unsigned long g,
unsigned long b);

•
•

boolean
boolean
in
in
in

SetBackgroundColor(in unsigned long argb);
SetBackgroundColor(in unsigned long a,
unsigned long r,
unsigned long g,
unsigned long b);

•
•
•
•

boolean
boolean
boolean
boolean

SetSeparatorString(in DOMString str);
SetSeparatorCircle();
SetSeparatorDiamond();
SetSeparatorSquare();

•

unsigned long SetPixelsPerSecond(in unsigned long pps);

Example
The following script shows how to use many of the available BSTicker methods:
var bsTicker = new BSTicker(10, 110, 600, 30);
function addText1()

Technical Notes – JavaScript Objects (FW ver. 5.0.x)

22

{

console.log('############ addText1');
bsTicker.AddString("addText1");

}
function addText2()
{
console.log('############ addText2');
bsTicker.AddString("addText2");
}
function addText3()
{
console.log('############ addText3');
bsTicker.AddString("addText3");
}
function setBackground1()
{
console.log('############ setBackground1');
bsTicker.SetBackgroundColor(0xFF0000);
}
function setBackground2()
{
console.log('############ setBackground2');
bsTicker.SetBackgroundColor(0x00FF00);
}
function setForeground1()
{
console.log('############ setBackground1');
bsTicker.SetForegroundColor(0x007700);
}
function setForeground2()
{
console.log('############ setBackground2');
bsTicker.SetForegroundColor(0x000077);
}
function setSeparatorString()
{
console.log('############ setSeparatorString');
bsTicker.SetSeparatorString(" ### ");
}
function setSeparatorCircle()
{
console.log('############ setSeparatorCircle');
bsTicker.SetSeparatorCircle();
}
function setSeparatorDiamond()
{
console.log('############ setSeparatorDiamond');
bsTicker.SetSeparatorDiamond();
}

Technical Notes – JavaScript Objects (FW ver. 5.0.x)

23

function setSeparatorSquare()
{
console.log('############ setSeparatorSquare');
bsTicker.SetSeparatorSquare();
}
function setTickerSpeed()
{
console.log('############ setTickerSpeed');
var speed = bsTicker.SetPixelsPerSecond(180);
console.log('############ SetPixelsPerSecond(180), Resulting speed: ' +
speed);
}

Technical Notes – JavaScript Objects (FW ver. 5.0.x)

24



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.4
Linearized                      : Yes
Tagged PDF                      : Yes
XMP Toolkit                     : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:08:04
Modify Date                     : 2014:10:13 16:52:34-07:00
Create Date                     : 2014:10:13 16:52:13-07:00
Metadata Date                   : 2014:10:13 16:52:34-07:00
Creator Tool                    : Acrobat PDFMaker 9.1 for Word
Document ID                     : uuid:45813543-57bd-42ab-8d43-7177809243fe
Instance ID                     : uuid:7914bdae-5a14-43d2-9a95-24947a36d893
Format                          : application/pdf
Title                           : 
Creator                         : 
Producer                        : Adobe PDF Library 9.0
Page Layout                     : OneColumn
Page Count                      : 25
Author                          : 
EXIF Metadata provided by EXIF.tools

Navigation menu