Device Module
Version Device 1.4.1
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 for the connected devices.
It is not recommended to use this API for visual badging on content within your app since this does not reflect the settings of the user.
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 name of the entity which is distributing the current device. There can be multiple distributors which distribute the same device model.
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 negotiated HDCP profiles for a connected device.
For devices that do not require additional connections (e.g. panels), true
will be returned for all profiles.
To get the value of hdcp
call the method like this:
function hdcp(): Promise<HDCPVersionMap>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:info |
Examples
Getting the negotiated HDCP versions
JavaScript:
import { Device } from '@firebolt-js/sdk'
let negotiatedHdcpVersions = await Device.hdcp()
console.log(negotiatedHdcpVersions)
Value of negotiatedHdcpVersions
:
{
"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) => HDCPVersionMap): Promise<number>
Promise resolution:
number
Examples
Getting the negotiated HDCP versions
JavaScript:
import { Device } from '@firebolt-js/sdk'
let listenerId = await hdcp((value) => {
console.log(value)
})
console.log(listenerId)
Value of negotiatedHdcpVersions
:
{
"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 negotiated HDR formats for the connected display and device
To get the value of hdr
call the method like this:
function hdr(): Promise<HDRFormatMap>
Promise resolution:
Capabilities:
Role | Capability |
---|---|
uses | xrn:firebolt:capability:device:info |
Examples
Getting the negotiated HDR formats
JavaScript:
import { Device } from '@firebolt-js/sdk'
let negotiatedHdrFormats = await Device.hdr()
console.log(negotiatedHdrFormats)
Value of negotiatedHdrFormats
:
{
"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) => HDRFormatMap): Promise<number>
Promise resolution:
number
Examples
Getting the negotiated HDR formats
JavaScript:
import { Device } from '@firebolt-js/sdk'
let listenerId = await hdr((value) => {
console.log(value)
})
console.log(listenerId)
Value of negotiatedHdrFormats
:
{
"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 manufacturer of the device model
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 manufacturer designated model of the device
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<NetworkInfoResult>
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) => NetworkInfoResult): 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 a platform identifier for the device. This API should be used to correlate metrics on the device only and cannot be guaranteed to have consistent responses across platforms.
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 resolution for the graphical surface of the app.
The pairs returned will be of a [width, height] format and will correspond to the following values:
NTSC Standard Definition (SD): [720, 480]
PAL Standard Definition (SD): [720, 576]
High Definition (HD): [1280, 720]
Full HD (FHD): [1920, 1080]
4K Ultra High Definition (UHD): [3840, 2160]
Deprecated: Use non-Firebolt APIs specific to your platform, e.g. W3C APIs
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<DeviceVersion>
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 maximum supported video resolution of the currently connected device and display.
The pairs returned will be of a [width, height] format and will correspond to the following values:
NTSC Standard Definition (SD): [720, 480]
PAL Standard Definition (SD): [720, 576]
High Definition (HD): [1280, 720]
Full HD (FHD): [1920, 1080]
4K Ultra High Definition (UHD): [3840, 2160]
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',
},
HDRFormatMap
The type of HDR format
type HDRFormatMap = {
hdr10: boolean
hdr10Plus: boolean
dolbyVision: boolean
hlg: boolean
}
AudioProfiles
type AudioProfiles = {
stereo: boolean
dolbyDigital5_1: boolean
dolbyDigital5_1_plus: boolean
dolbyAtmos: boolean
}
Resolution
type Resolution =
| [
720, // undefined Width in pixels item
480, // undefined Height in pixels item
]
| [
720, // undefined Width in pixels item
576, // undefined Height in pixels item
]
| [
1280, // undefined Width in pixels item
720, // undefined Height in pixels item
]
| [
1920, // undefined Width in pixels item
1080, // undefined Height in pixels item
]
| [
3840, // undefined Width in pixels item
2160, // undefined Height in pixels item
]
NetworkInfoResult
type NetworkInfoResult = {
state: NetworkState // The type of network that is currently active
type: NetworkType // The type of network that is currently active
}
See also:
DeviceVersion
type DeviceVersion = {
sdk?: SemanticVersion // The Firebolt SDK version
api: SemanticVersion // The latest Firebolt API version supported by the current device.
firmware: SemanticVersion // The firmware version as reported by the device
os: SemanticVersion // **Deprecated** Use `firmware`, instead.
debug?: string // Detailed version as a string, for debugging purposes
}
See also:
HDCPVersionMap
The type of HDCP versions
type HDCPVersionMap = {
hdcp1_4: boolean
hdcp2_2: boolean
}