Device | Firebolt

Device Module


Version The Firebolt JS SDK

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:

Type Description
AudioProfiles the 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:

Param Type Required Summary
subscriber Function Yes A callback that gets invoked when the value for audio changes

Promise resolution:

Type Summary
listenerId The id of the listener that can be used with Device.clear(listenerId) to unsubscribe

Callback parameters:

Param Type Required Summary
supportedAudioProfiles AudioProfiles Yes the 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:

Type Description
string the 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:

Type Description
BooleanMap the 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:

Param Type Required Summary
subscriber Function Yes A callback that gets invoked when the value for hdcp changes

Promise resolution:

Type Summary
listenerId The id of the listener that can be used with Device.clear(listenerId) to unsubscribe

Callback parameters:

Param Type Required Summary
supportedHdcpProfiles BooleanMap Yes the 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:

Type Description
BooleanMap the 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:

Param Type Required Summary
subscriber Function Yes A callback that gets invoked when the value for hdr changes

Promise resolution:

Type Summary
listenerId The id of the listener that can be used with Device.clear(listenerId) to unsubscribe

Callback parameters:

Param Type Required Summary
supportedHdrProfiles BooleanMap Yes the 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:

Type Description
string the 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<bigint>

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
bigint 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:

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

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
bigint 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, call the method with no parameters:

function make(): Promise<string>

Promise resolution:

Type Description
string the 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:

Type Description
string the 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:

Type Description
string the 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:

Param Type Required Summary
subscriber Function Yes A callback that gets invoked when the value for name changes

Promise resolution:

Type Summary
listenerId The id of the listener that can be used with Device.clear(listenerId) to unsubscribe

Callback parameters:

Param Type Required Summary
value string Yes the 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

Field Type Description
state NetworkState  
type NetworkType  

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:

Param Type Required Summary
subscriber Function Yes A callback that gets invoked when the value for network changes

Promise resolution:

Type Summary
listenerId The id of the listener that can be used with Device.clear(listenerId) to unsubscribe

Callback parameters:

Param Type Required Summary
networkInfo object Yes the 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<bigint>

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
bigint 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:

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

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
bigint 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, call the method with no parameters:

function platform(): Promise<string>

Promise resolution:

Type Description
string the 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<[bigint, bigint]>

Promise resolution:

Type Description
[bigint, bigint] 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: [bigint, bigint]) => void): Promise<boolean>

Parameters:

Param Type Required Summary
subscriber Function Yes A callback that gets invoked when the value for screenResolution changes

Promise resolution:

Type Summary
listenerId The id of the listener that can be used with Device.clear(listenerId) to unsubscribe

Callback parameters:

Param Type Required Summary
screenResolution [bigint, bigint] Yes the 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:

Type Description
string the 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:

Type Description
string the 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:

Type Description
string a 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

Field Type Description
sdk SemanticVersion The Firebolt SDK version
os SemanticVersion The Firebolt OS version
debug string Detail 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<[bigint, bigint]>

Promise resolution:

Type Description
[bigint, bigint] 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: [bigint, bigint]) => void): Promise<boolean>

Parameters:

Param Type Required Summary
subscriber Function Yes A callback that gets invoked when the value for videoResolution changes

Promise resolution:

Type Summary
listenerId The id of the listener that can be used with Device.clear(listenerId) to unsubscribe

Callback parameters:

Param Type Required Summary
videoResolution [bigint, bigint] Yes the 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:

Type Description
string the 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.

JavaScript RPC Payload Documentation
hdcpChanged onHdcpChanged BooleanMap hdcp
hdrChanged onHdrChanged BooleanMap hdr
audioChanged onAudioChanged AudioProfiles audio
screenResolutionChanged onScreenResolutionChanged [bigint, bigint] screenResolution
videoResolutionChanged onVideoResolutionChanged [bigint, bigint] videoResolution
nameChanged onNameChanged string name
networkChanged onNetworkChanged object network

Schemas

Resolution

type Resolution = [bigint, bigint]

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:


AudioProfile

type AudioProfile;

See also:


Go To Top