Device Module


Version Device 1.2.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:

AudioProfiles

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:

BooleanMap

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:

BooleanMap

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:

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:

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:

BooleanMap AudioProfile


Resolution

type Resolution = [
  number, // undefined  item
  number, // undefined  item
]