Skip to main content
Version: 0.8.0

Device Module


Version 0.8.0

Overview

A module for querying about the device and it's capabilities.

OpenRPC

Firebolt APIs are maintained in the rdkcentral/firebolt-core-sdk GitHub repository.

You can see this API in the device.json OpenRPC JSON-Schema document.

Table of Contents

Usage

To use the Device module, you can import it into your project from the Firebolt SDK:

import { Device } from '@firebolt-js/sdk'

Methods

audio

Get the supported audio profiles

To get the value, call the method with no parameters:

function audio(): Promise<AudioProfiles>

Promise resolution:

TypeDescription
AudioProfilesthe supported audio profiles

Examples

Getting the supported audio profiles

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.audio()
.then(supportedAudioProfiles => {
console.log(supportedAudioProfiles)
})

Value of supportedAudioProfiles:

{
"stereo": true,
"dolbyDigital5.1": true,
"dolbyDigital5.1+": true,
"dolbyAtmos": true
}
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.audio",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"stereo": true,
"dolbyDigital5.1": true,
"dolbyDigital5.1+": true,
"dolbyAtmos": true
}
}

To subscribe to notifications when the value changes, pass a function as the only parameter:

function audio(subscriber: (supportedAudioProfiles: AudioProfiles) => void): Promise<boolean>

Parameters:

ParamTypeRequiredSummary
subscriberFunctionYesA callback that gets invoked when the value for audio changes

Promise resolution:

TypeSummary
listenerIdThe id of the listener that can be used with Device.clear(listenerId) to unsubscribe

Callback parameters:

ParamTypeRequiredSummary
supportedAudioProfilesAudioProfilesYesthe supported audio profiles

Examples

Getting the supported audio profiles

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.audio(supportedAudioProfiles => {
// property value was changed
console.log(supportedAudioProfiles)
}).then(listenerId => {
// you can clear this listener w/ Device.clear(listenerId)
})

value of supportedAudioProfiles:

{
"stereo": true,
"dolbyDigital5.1": true,
"dolbyDigital5.1+": true,
"dolbyAtmos": true
}
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.onAudioChanged",
"params": {
"listen": true
}
}

Response:

{
"jsonrpc": "2.0",
"id": "1",
"result": {
"listening": "true"
}
}
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"stereo": true,
"dolbyDigital5.1": true,
"dolbyDigital5.1+": true,
"dolbyAtmos": true
}
}

distributor

Get the distributor ID for this device

To get the value, call the method with no parameters:

function distributor(): Promise<string>

Promise resolution:

TypeDescription
stringthe distributor ID

Examples

Getting the distributor ID

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.distributor()
.then(distributorId => {
console.log(distributorId)
})

Value of distributorId:

"Company"
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.distributor",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": "Company"
}

hdcp

Get the supported HDCP profiles

To get the value, call the method with no parameters:

function hdcp(): Promise<BooleanMap>

Promise resolution:

TypeDescription
BooleanMapthe supported HDCP profiles

Examples

Getting the supported HDCP profiles

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.hdcp()
.then(supportedHdcpProfiles => {
console.log(supportedHdcpProfiles)
})

Value of supportedHdcpProfiles:

{
"hdcp1.4": true,
"hdcp2.2": true
}
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.hdcp",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"hdcp1.4": true,
"hdcp2.2": true
}
}

To subscribe to notifications when the value changes, pass a function as the only parameter:

function hdcp(subscriber: (supportedHdcpProfiles: BooleanMap) => void): Promise<boolean>

Parameters:

ParamTypeRequiredSummary
subscriberFunctionYesA callback that gets invoked when the value for hdcp changes

Promise resolution:

TypeSummary
listenerIdThe id of the listener that can be used with Device.clear(listenerId) to unsubscribe

Callback parameters:

ParamTypeRequiredSummary
supportedHdcpProfilesBooleanMapYesthe supported HDCP profiles

Examples

Getting the supported HDCP profiles

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.hdcp(supportedHdcpProfiles => {
// property value was changed
console.log(supportedHdcpProfiles)
}).then(listenerId => {
// you can clear this listener w/ Device.clear(listenerId)
})

value of supportedHdcpProfiles:

{
"hdcp1.4": true,
"hdcp2.2": true
}
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.onHdcpChanged",
"params": {
"listen": true
}
}

Response:

{
"jsonrpc": "2.0",
"id": "1",
"result": {
"listening": "true"
}
}
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"hdcp1.4": true,
"hdcp2.2": true
}
}

hdr

Get the supported HDR profiles

To get the value, call the method with no parameters:

function hdr(): Promise<BooleanMap>

Promise resolution:

TypeDescription
BooleanMapthe supported HDR profiles

Examples

Getting the supported HDR profiles

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.hdr()
.then(supportedHdrProfiles => {
console.log(supportedHdrProfiles)
})

Value of supportedHdrProfiles:

{
"hdr10": true,
"hdr10Plus": true,
"dolbyVision": true,
"hlg": true
}
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.hdr",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"hdr10": true,
"hdr10Plus": true,
"dolbyVision": true,
"hlg": true
}
}

To subscribe to notifications when the value changes, pass a function as the only parameter:

function hdr(subscriber: (supportedHdrProfiles: BooleanMap) => void): Promise<boolean>

Parameters:

ParamTypeRequiredSummary
subscriberFunctionYesA callback that gets invoked when the value for hdr changes

Promise resolution:

TypeSummary
listenerIdThe id of the listener that can be used with Device.clear(listenerId) to unsubscribe

Callback parameters:

ParamTypeRequiredSummary
supportedHdrProfilesBooleanMapYesthe supported HDR profiles

Examples

Getting the supported HDR profiles

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.hdr(supportedHdrProfiles => {
// property value was changed
console.log(supportedHdrProfiles)
}).then(listenerId => {
// you can clear this listener w/ Device.clear(listenerId)
})

value of supportedHdrProfiles:

{
"hdr10": true,
"hdr10Plus": true,
"dolbyVision": true,
"hlg": true
}
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.onHdrChanged",
"params": {
"listen": true
}
}

Response:

{
"jsonrpc": "2.0",
"id": "1",
"result": {
"listening": "true"
}
}
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"hdr10": true,
"hdr10Plus": true,
"dolbyVision": true,
"hlg": true
}
}

id

Get the platform back-office device identifier

To get the value, call the method with no parameters:

function id(): Promise<string>

Promise resolution:

TypeDescription
stringthe id

Examples

Default Example

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.id()
.then(id => {
console.log(id)
})

Value of id:

"123"
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.id",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": "123"
}

listen

Listen for events from this module.

To listen to a specific event pass the event name as the first parameter:

Device.listen(event: string, (data: any) => void): Promise<number>

Parameters:

ParamTypeRequiredSummary
eventstringYesThe event to listen for, see Events.
callbackfunctionYesA function that will be invoked when the event occurs.

Promise resolution:

TypeDescription
numberListener ID to clear the callback method and stop receiving the event, e.g. Device.clear(id)

Callback parameters:

ParamTypeRequiredSummary
dataanyYesThe event data, which depends on which event is firing, see Events.

To listen to all events from this module pass only a callback, without specifying an event name:

Device.listen((event: string, data: any) => void): Promise<number>

Parameters:

ParamTypeRequiredSummary
callbackfunctionYesA function that will be invoked when the event occurs. The event data depends on which event is firing, see Events.

Callback parameters:

ParamTypeRequiredSummary
eventstringYesThe event that has occured listen for, see Events.
dataanyYesThe event data, which depends on which event is firing, see Events.

Promise resolution:

TypeDescription
numberListener ID to clear the callback method and stop receiving the event, e.g. Device.clear(id)

See Listening for events for more information and examples.


make

Get the device make

To get the value, call the method with no parameters:

function make(): Promise<string>

Promise resolution:

TypeDescription
stringthe device make

Examples

Getting the device make

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.make()
.then(make => {
console.log(make)
})

Value of make:

"Arris"
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.make",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": "Arris"
}

model

Get the device model

To get the value, call the method with no parameters:

function model(): Promise<string>

Promise resolution:

TypeDescription
stringthe device model

Examples

Getting the device model

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.model()
.then(model => {
console.log(model)
})

Value of model:

"xi6"
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.model",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": "xi6"
}

name

The human readable name of the device

To get the value, call the method with no parameters:

function name(): Promise<string>

Promise resolution:

TypeDescription
stringthe device friendly-name

Examples

Example value for device name

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.name()
.then(value => {
console.log(value)
})

Value of value:

"Living Room"
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.name",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": "Living Room"
}

To subscribe to notifications when the value changes, pass a function as the only parameter:

function name(subscriber: (value: string) => void): Promise<boolean>

Parameters:

ParamTypeRequiredSummary
subscriberFunctionYesA callback that gets invoked when the value for name changes

Promise resolution:

TypeSummary
listenerIdThe id of the listener that can be used with Device.clear(listenerId) to unsubscribe

Callback parameters:

ParamTypeRequiredSummary
valuestringYesthe device friendly-name

Examples

Example value for device name

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.name(value => {
// property value was changed
console.log(value)
}).then(listenerId => {
// you can clear this listener w/ Device.clear(listenerId)
})

value of value:

"Living Room"
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.onNameChanged",
"params": {
"listen": true
}
}

Response:

{
"jsonrpc": "2.0",
"id": "1",
"result": {
"listening": "true"
}
}
{
"jsonrpc": "2.0",
"id": 1,
"result": "Living Room"
}

network

Get the current network status and type

To get the value, call the method with no parameters:

function network(): Promise<object>

Promise resolution:

the status and type

FieldTypeDescription
stateNetworkState
typeNetworkType

Examples

Getting the network info

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.network()
.then(networkInfo => {
console.log(networkInfo)
})

Value of networkInfo:

{
"state": "connected",
"type": "wifi"
}
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.network",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"state": "connected",
"type": "wifi"
}
}

To subscribe to notifications when the value changes, pass a function as the only parameter:

function network(subscriber: (networkInfo: object) => void): Promise<boolean>

Parameters:

ParamTypeRequiredSummary
subscriberFunctionYesA callback that gets invoked when the value for network changes

Promise resolution:

TypeSummary
listenerIdThe id of the listener that can be used with Device.clear(listenerId) to unsubscribe

Callback parameters:

ParamTypeRequiredSummary
networkInfoobjectYesthe status and type

Examples

Getting the network info

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.network(networkInfo => {
// property value was changed
console.log(networkInfo)
}).then(listenerId => {
// you can clear this listener w/ Device.clear(listenerId)
})

value of networkInfo:

{
"state": "connected",
"type": "wifi"
}
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.onNetworkChanged",
"params": {
"listen": true
}
}

Response:

{
"jsonrpc": "2.0",
"id": "1",
"result": {
"listening": "true"
}
}
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"state": "connected",
"type": "wifi"
}
}

once

Listen for only one occurance of an event from this module. The callback will be cleared after one event.

To listen to a specific event pass the event name as the first parameter:

Device.once(event: string, (data: any) => void): Promise<number>

Parameters:

ParamTypeRequiredSummary
eventstringYesThe event to listen for, see Events.
callbackfunctionYesA function that will be invoked when the event occurs.

Promise resolution:

TypeDescription
numberListener ID to clear the callback method and stop receiving the event, e.g. Device.clear(id)

Callback parameters:

ParamTypeRequiredSummary
dataanyYesThe event data, which depends on which event is firing, see Events.

To listen to all events from this module pass only a callback, without specifying an event name:

Device.once((event: string, data: any) => void): Promise<number>

Parameters:

ParamTypeRequiredSummary
callbackfunctionYesA function that will be invoked when the event occurs. The event data depends on which event is firing, see Events.

Callback parameters:

ParamTypeRequiredSummary
eventstringYesThe event that has occured listen for, see Events.
dataanyYesThe event data, which depends on which event is firing, see Events.

Promise resolution:

TypeDescription
numberListener ID to clear the callback method and stop receiving the event, e.g. Device.clear(id)

See Listening for events for more information and examples.


platform

Get the platform ID for this device

To get the value, call the method with no parameters:

function platform(): Promise<string>

Promise resolution:

TypeDescription
stringthe platform ID

Examples

Getting the platform ID

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.platform()
.then(platformId => {
console.log(platformId)
})

Value of platformId:

"WPE"
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.platform",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": "WPE"
}

screenResolution

Get the current screen resolution

To get the value, call the method with no parameters:

function screenResolution(): Promise<[number, number]>

Promise resolution:

TypeDescription
[number, number]the resolution

Examples

Getting the screen resolution

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.screenResolution()
.then(screenResolution => {
console.log(screenResolution)
})

Value of screenResolution:

[
1920,
1080
]
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.screenResolution",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": [
1920,
1080
]
}

To subscribe to notifications when the value changes, pass a function as the only parameter:

function screenResolution(subscriber: (screenResolution: [number, number]) => void): Promise<boolean>

Parameters:

ParamTypeRequiredSummary
subscriberFunctionYesA callback that gets invoked when the value for screenResolution changes

Promise resolution:

TypeSummary
listenerIdThe id of the listener that can be used with Device.clear(listenerId) to unsubscribe

Callback parameters:

ParamTypeRequiredSummary
screenResolution[number, number]Yesthe resolution

Examples

Getting the screen resolution

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.screenResolution(screenResolution => {
// property value was changed
console.log(screenResolution)
}).then(listenerId => {
// you can clear this listener w/ Device.clear(listenerId)
})

value of screenResolution:

[
1920,
1080
]
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.onScreenResolutionChanged",
"params": {
"listen": true
}
}

Response:

{
"jsonrpc": "2.0",
"id": "1",
"result": {
"listening": "true"
}
}
{
"jsonrpc": "2.0",
"id": 1,
"result": [
1920,
1080
]
}

sku

Get the device sku

To get the value, call the method with no parameters:

function sku(): Promise<string>

Promise resolution:

TypeDescription
stringthe device sku

Examples

Getting the device sku

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.sku()
.then(sku => {
console.log(sku)
})

Value of sku:

"AX061AEI"
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.sku",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": "AX061AEI"
}

type

Get the device type

To get the value, call the method with no parameters:

function type(): Promise<string>

Promise resolution:

TypeDescription
stringthe device type

Examples

Getting the device type

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.type()
.then(deviceType => {
console.log(deviceType)
})

Value of deviceType:

"STB"
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.type",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": "STB"
}

uid

Gets a unique id for the current app & device

To get the value, call the method with no parameters:

function uid(): Promise<string>

Promise resolution:

TypeDescription
stringa unique ID

Examples

Getting the unique ID

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.uid()
.then(uniqueId => {
console.log(uniqueId)
})

Value of uniqueId:

"ee6723b8-7ab3-462c-8d93-dbf61227998e"
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.uid",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": "ee6723b8-7ab3-462c-8d93-dbf61227998e"
}

version

Get the SDK, OS and other version info

To get the value, call the method with no parameters:

function version(): Promise<object>

Promise resolution:

the versions

FieldTypeDescription
sdkSemanticVersionThe Firebolt SDK version
osSemanticVersionThe Firebolt OS version
debugstringDetail version as a string, for debugging purposes

Examples

Getting the os and sdk versions

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.version()
.then(versions => {
console.log(versions)
})

Value of versions:

{
"sdk": {
"major": 0,
"minor": 5,
"patch": 0,
"readable": "Firebolt JS SDK v0.5.0"
},
"os": {
"major": 0,
"minor": 1,
"patch": 0,
"readable": "Firebolt OS v0.1.0"
},
"debug": ""
}
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.version",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"sdk": {
"major": 0,
"minor": 5,
"patch": 0,
"readable": "Firebolt JS SDK v0.5.0"
},
"os": {
"major": 0,
"minor": 1,
"patch": 0,
"readable": "Firebolt OS v0.1.0"
},
"debug": ""
}
}

videoResolution

Get the current video resolution

To get the value, call the method with no parameters:

function videoResolution(): Promise<[number, number]>

Promise resolution:

TypeDescription
[number, number]the resolution

Examples

Getting the video resolution

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.videoResolution()
.then(videoResolution => {
console.log(videoResolution)
})

Value of videoResolution:

[
1920,
1080
]
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.videoResolution",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": [
1920,
1080
]
}

To subscribe to notifications when the value changes, pass a function as the only parameter:

function videoResolution(subscriber: (videoResolution: [number, number]) => void): Promise<boolean>

Parameters:

ParamTypeRequiredSummary
subscriberFunctionYesA callback that gets invoked when the value for videoResolution changes

Promise resolution:

TypeSummary
listenerIdThe id of the listener that can be used with Device.clear(listenerId) to unsubscribe

Callback parameters:

ParamTypeRequiredSummary
videoResolution[number, number]Yesthe resolution

Examples

Getting the video resolution

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.videoResolution(videoResolution => {
// property value was changed
console.log(videoResolution)
}).then(listenerId => {
// you can clear this listener w/ Device.clear(listenerId)
})

value of videoResolution:

[
1920,
1080
]
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.onVideoResolutionChanged",
"params": {
"listen": true
}
}

Response:

{
"jsonrpc": "2.0",
"id": "1",
"result": {
"listening": "true"
}
}
{
"jsonrpc": "2.0",
"id": 1,
"result": [
1920,
1080
]
}

Events

deviceNameChanged

This API is deprecated since version 0.6.0. Use Device.name() instead.

Get the human readable name of the device

See also: listen(), once(), clear().

Event value:

TypeDescription
stringthe device friendly-name

Examples

Getting the device name:

JavaScript:

import { Device } from '@firebolt-js/sdk'

Device.listen('deviceNameChanged', value => {
console.log(value)
})

Value of value

"Living Room"
JSON-RPC:

Request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "device.onDeviceNameChanged",
"params": {}
}

Response:

{
"jsonrpc": "2.0",
"id": 1,
"result": "Living Room"
}

Additional events

The following events are documented as part of a related set of method APIs.

For more information, follow the links under the "Documentation" column.

JavaScriptRPCPayloadDocumentation
hdcpChangedonHdcpChangedBooleanMaphdcp
hdrChangedonHdrChangedBooleanMaphdr
audioChangedonAudioChangedAudioProfilesaudio
screenResolutionChangedonScreenResolutionChanged[number, number]screenResolution
videoResolutionChangedonVideoResolutionChanged[number, number]videoResolution
nameChangedonNameChangedstringname
networkChangedonNetworkChangedobjectnetwork

Schemas

Resolution

type Resolution = [number, number]

NetworkType

The type of network that is currently active

type NetworkType = 'wifi' | 'ethernet' | 'hybrid'

NetworkState

The type of network that is currently active

type NetworkState = 'connected' | 'disconnected'

AudioProfiles

type AudioProfiles = {
stereo: boolean
"dolbyDigital5.1": boolean
"dolbyDigital7.1": boolean
"dolbyDigital5.1+": boolean
"dolbyDigital7.1+": boolean
dolbyAtmos: boolean
}

See also: