Device Module
Version Device 1.3.0
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'
Overview
A module for querying about the device and it’s capabilities.
Methods
audio
Get the supported audio profiles
To get the value of audio
call the method like this:
function audio(): Promise<AudioProfiles>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:info |
Examples
Getting the supported audio profiles
JavaScript:
import { Device } from '@firebolt-js/sdk'
let supportedAudioProfiles = await Device.audio()
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, call the method like this:
function audio(callback: (value) => AudioProfiles): Promise<number>
Promise resolution:
number
Examples
Getting the supported audio profiles
JavaScript:
import { Device } from '@firebolt-js/sdk'
let listenerId = await audio((value) => {
console.log(value)
})
console.log(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": {
"stereo": true,
"dolbyDigital5.1": true,
"dolbyDigital5.1+": true,
"dolbyAtmos": true
}
}
distributor
Get the distributor ID for this device
To get the value of distributor
call the method like this:
function distributor(): Promise<string>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:distributor |
Examples
Getting the distributor ID
JavaScript:
import { Device } from '@firebolt-js/sdk'
let distributorId = await Device.distributor()
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 of hdcp
call the method like this:
function hdcp(): Promise<BooleanMap>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:info |
Examples
Getting the supported HDCP profiles
JavaScript:
import { Device } from '@firebolt-js/sdk'
let supportedHdcpProfiles = await Device.hdcp()
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, call the method like this:
function hdcp(callback: (value) => BooleanMap): Promise<number>
Promise resolution:
number
Examples
Getting the supported HDCP profiles
JavaScript:
import { Device } from '@firebolt-js/sdk'
let listenerId = await hdcp((value) => {
console.log(value)
})
console.log(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": {
"hdcp1.4": true,
"hdcp2.2": true
}
}
hdr
Get the supported HDR profiles
To get the value of hdr
call the method like this:
function hdr(): Promise<BooleanMap>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:info |
Examples
Getting the supported HDR profiles
JavaScript:
import { Device } from '@firebolt-js/sdk'
let supportedHdrProfiles = await Device.hdr()
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, call the method like this:
function hdr(callback: (value) => BooleanMap): Promise<number>
Promise resolution:
number
Examples
Getting the supported HDR profiles
JavaScript:
import { Device } from '@firebolt-js/sdk'
let listenerId = await hdr((value) => {
console.log(value)
})
console.log(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": {
"hdr10": true,
"hdr10Plus": true,
"dolbyVision": true,
"hlg": true
}
}
id
Get the platform back-office device identifier
To get the value of id
call the method like this:
function id(): Promise<string>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:id |
Examples
Default Example
JavaScript:
import { Device } from '@firebolt-js/sdk'
let id = await Device.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
To listen to a specific event pass the event name as the first parameter:
listen(event: string, callback: (data: any) => void): Promise<number>
Parameters:
Param | Type | Required | Summary |
---|---|---|---|
event |
string |
Yes | The event to listen for, see Events. |
callback | function |
Yes | A function that will be invoked when the event occurs. |
Promise resolution:
Type | Description |
---|---|
number |
Listener ID to clear the callback method and stop receiving the event, e.g. Device.clear(id) |
Callback parameters:
Param | Type | Required | Summary |
---|---|---|---|
data |
any |
Yes | The 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:
listen(callback: (event: string, data: any) => void): Promise<number>
Parameters:
Param | Type | Required | Summary |
---|---|---|---|
callback | function |
Yes | A function that will be invoked when the event occurs. The event data depends on which event is firing, see Events. |
Callback parameters:
Param | Type | Required | Summary |
---|---|---|---|
event |
string |
Yes | The event that has occured listen for, see Events. |
data |
any |
Yes | The event data, which depends on which event is firing, see Events. |
Promise resolution:
Type | Description |
---|---|
number |
Listener 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 of make
call the method like this:
function make(): Promise<string>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:make |
Examples
Getting the device make
JavaScript:
import { Device } from '@firebolt-js/sdk'
let make = await Device.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 of model
call the method like this:
function model(): Promise<string>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:model |
Examples
Getting the device model
JavaScript:
import { Device } from '@firebolt-js/sdk'
let model = await Device.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 of name
call the method like this:
function name(): Promise<string>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:name |
Examples
Default example #1
JavaScript:
import { Device } from '@firebolt-js/sdk'
let value = await Device.name()
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"
}
Default example #2
JavaScript:
import { Device } from '@firebolt-js/sdk'
let value = await Device.name()
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": "Kitchen"
}
To subscribe to notifications when the value changes, call the method like this:
function name(callback: (value) => string): Promise<number>
Promise resolution:
number
Examples
Default example #1
JavaScript:
import { Device } from '@firebolt-js/sdk'
let listenerId = await name((value) => {
console.log(value)
})
console.log(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": "Living Room"
}
Default example #2
JavaScript:
import { Device } from '@firebolt-js/sdk'
let listenerId = await name((value) => {
console.log(value)
})
console.log(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": "Kitchen"
}
network
Get the current network status and type
To get the value of network
call the method like this:
function network(): Promise<object>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:network:status |
Examples
Getting the network info
JavaScript:
import { Device } from '@firebolt-js/sdk'
let networkInfo = await Device.network()
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, call the method like this:
function network(callback: (value) => object): Promise<number>
Promise resolution:
number
Examples
Getting the network info
JavaScript:
import { Device } from '@firebolt-js/sdk'
let listenerId = await network((value) => {
console.log(value)
})
console.log(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": {
"state": "connected",
"type": "wifi"
}
}
once
To listen to a single instance of a specific event pass the event name as the first parameter:
once(event: string, callback: (data: any) => void): Promise<number>
The once
method will only pass the next instance of this event, and then dicard the listener you provided.
Parameters:
Param | Type | Required | Summary |
---|---|---|---|
event |
string |
Yes | The event to listen for, see Events. |
callback | function |
Yes | A function that will be invoked when the event occurs. |
Promise resolution:
Type | Description |
---|---|
number |
Listener ID to clear the callback method and stop receiving the event, e.g. Device.clear(id) |
Callback parameters:
Param | Type | Required | Summary |
---|---|---|---|
data |
any |
Yes | The event data, which depends on which event is firing, see Events. |
To listen to the next instance only of any events from this module pass only a callback, without specifying an event name:
once(callback: (event: string, data: any) => void): Promise<number>
Parameters:
Param | Type | Required | Summary |
---|---|---|---|
callback | function |
Yes | A function that will be invoked when the event occurs. The event data depends on which event is firing, see Events. |
Callback parameters:
Param | Type | Required | Summary |
---|---|---|---|
event |
string |
Yes | The event that has occured listen for, see Events. |
data |
any |
Yes | The event data, which depends on which event is firing, see Events. |
Promise resolution:
Type | Description |
---|---|
number |
Listener 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 of platform
call the method like this:
function platform(): Promise<string>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:info |
Examples
Getting the platform ID
JavaScript:
import { Device } from '@firebolt-js/sdk'
let platformId = await Device.platform()
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 of screenResolution
call the method like this:
function screenResolution(): Promise<Resolution>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:info |
Examples
Getting the screen resolution
JavaScript:
import { Device } from '@firebolt-js/sdk'
let screenResolution = await Device.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, call the method like this:
function screenResolution(callback: (value) => Resolution): Promise<number>
Promise resolution:
number
Examples
Getting the screen resolution
JavaScript:
import { Device } from '@firebolt-js/sdk'
let listenerId = await screenResolution((value) => {
console.log(value)
})
console.log(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": [1920, 1080]
}
sku
Get the device sku
To get the value of sku
call the method like this:
function sku(): Promise<string>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:sku |
Examples
Getting the device sku
JavaScript:
import { Device } from '@firebolt-js/sdk'
let sku = await Device.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 of type
call the method like this:
function type(): Promise<string>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:info |
Examples
Getting the device type
JavaScript:
import { Device } from '@firebolt-js/sdk'
let deviceType = await Device.type()
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 of uid
call the method like this:
function uid(): Promise<string>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:uid |
Examples
Getting the unique ID
JavaScript:
import { Device } from '@firebolt-js/sdk'
let uniqueId = await Device.uid()
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 of version
call the method like this:
function version(): Promise<object>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:info |
Examples
Getting the os and sdk versions
JavaScript:
import { Device } from '@firebolt-js/sdk'
let versions = await Device.version()
console.log(versions)
Value of versions
:
{
"sdk": {
"major": 0,
"minor": 8,
"patch": 0,
"readable": "Firebolt JS SDK v0.8.0"
},
"api": {
"major": 0,
"minor": 8,
"patch": 0,
"readable": "Firebolt API v0.8.0"
},
"firmware": {
"major": 1,
"minor": 2,
"patch": 3,
"readable": "Device Firmware v1.2.3"
},
"os": {
"major": 0,
"minor": 1,
"patch": 0,
"readable": "Firebolt OS v0.1.0"
},
"debug": "Non-parsable build info for error logging only."
}
JSON-RPC:
Request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "Device.version",
"params": {}
}
Response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"sdk": {
"major": 0,
"minor": 8,
"patch": 0,
"readable": "Firebolt JS SDK v0.8.0"
},
"api": {
"major": 0,
"minor": 8,
"patch": 0,
"readable": "Firebolt API v0.8.0"
},
"firmware": {
"major": 1,
"minor": 2,
"patch": 3,
"readable": "Device Firmware v1.2.3"
},
"os": {
"major": 0,
"minor": 1,
"patch": 0,
"readable": "Firebolt OS v0.1.0"
},
"debug": "Non-parsable build info for error logging only."
}
}
videoResolution
Get the current video resolution
To get the value of videoResolution
call the method like this:
function videoResolution(): Promise<Resolution>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:info |
Examples
Getting the video resolution
JavaScript:
import { Device } from '@firebolt-js/sdk'
let videoResolution = await Device.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, call the method like this:
function videoResolution(callback: (value) => Resolution): Promise<number>
Promise resolution:
number
Examples
Getting the video resolution
JavaScript:
import { Device } from '@firebolt-js/sdk'
let listenerId = await videoResolution((value) => {
console.log(value)
})
console.log(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": [1920, 1080]
}
Events
audioChanged
See: audio
deviceNameChanged
function listen('deviceNameChanged', () => void): Promise<number>
See also: listen(), once(), clear().
Event value:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device: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": {
"listen": true
}
}
Response:
{
"jsonrpc": "2.0",
"id": 1,
"result": "Living Room"
}
hdcpChanged
See: hdcp
hdrChanged
See: hdr
nameChanged
See: name
networkChanged
See: network
screenResolutionChanged
See: screenResolution
videoResolutionChanged
See: videoResolution
Types
NetworkState
The type of network that is currently active
NetworkState: {
CONNECTED: 'connected',
DISCONNECTED: 'disconnected',
},
NetworkType
The type of network that is currently active
NetworkType: {
WIFI: 'wifi',
ETHERNET: 'ethernet',
HYBRID: 'hybrid',
},
AudioProfiles
type AudioProfiles = {
STEREO?: boolean
DOLBY_DIGITAL_5_1?: boolean
DOLBY_DIGITAL_7_1?: boolean
DOLBY_DIGITAL_5_1_PLUS?: boolean
DOLBY_DIGITAL_7_1_PLUS?: boolean
DOLBY_ATMOS?: boolean
}
See also:
Resolution
type Resolution = [
number, // undefined item
number, // undefined item
]