Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Reverted from v. 54

...

Preferred mode of operation : "On Device" implementation

Image Added


Image AddedImage Removed

Reference:

Alexa based implementation flow

Image Modified

Device run-times

...

Below table enlists the API mapping details of current DAB adapter implementation of RDK for STB devices. RDK APIs are listed under 'Thunder Implementation'.

API details are as per dab-adapter version : https://github.com/device-automation-bus/dab-adapter-rs/commit/f6318d0080ab8282f758bb2bf19a0097f58f34a6 (6.0 f6318d)

System
Input
Device & Application Telemetry
Voice
DAB RequestDAB CategoryThunder Implementation for the Request
operations/listSupported OperationsNo RDK specific implementation required except platform specific key map configuration.
applications/list
Applications



https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=getavailabletypes

Use the response to match the AppID as per DAB-2.0 spec. [Note: should have YouTube, Amazon & Netflix as types in the API response.]

applications/launch
https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=launchgetstate
https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=movetofrontlaunch
https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=setfocusmovetofront

Note: Implementation supports only YouTube common port.
If previous state is suspended; then moveToFront & setFocus rdkshell APIs are called with AppID matching callsign.

https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=setfocusapplications/launch-with-content
https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=
launch
getvisibility
https://
code
rdkcentral.
rdkcentral
github.
com
io/
r
rdkservices/
plugins
#/
gitiles/rdk/components/generic/cobalt/+/refs/heads/24.lts.dev/plugin/doc/CobaltPlugin.md#method.deeplink

https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=movetofront

https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=setfocus

api/RDKShellPlugin?id=setvisibility

Note: Implementation supports only YouTube common port.
Note: Implementation supports only YouTube common port.
If previous state is suspended; then moveToFront & setFocus rdkshell APIs are called with AppID matching callsign.

applications/get-state

If parameter is present; App specific deeplink API is invoked.

For YouTube: https://code.rdkcentral.

github.io

com/

rdkservices

r/

#

plugins/gitiles/rdk/components/generic/cobalt/+/refs/heads/24.lts.dev/plugin/doc/CobaltPlugin.md#deeplink-method

Please see Provideplatformspecificapplifecycledelays/timeouts for adding platform specific tuning.

applications/launch-with-contentapi/RDKShellPlugin?id=getstateapplications/exit
https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=destroygetstate

https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=suspend

device/info

launch

https://code.rdkcentral.com/r/plugins/gitiles/rdk/components/generic/cobalt/+/refs/heads/24.lts.dev/plugin/doc/CobaltPlugin.md#method.deeplink

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginRDKShellPlugin?id=getconnectedvideodisplaysmovetofront

https://rdkcentral.github.io/rdkservices/#/api/SystemPluginRDKShellPlugin?id=getdeviceinfo [estb_mac is used as DAB Device ID]https:setfocus

https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=
getscreenresolution
getvisibility
https://rdkcentral.github.io/rdkservices/#/api/
NetworkPlugin
RDKShellPlugin?id=
getinterfaces
setvisibility
https://rdkcentral.github.io/rdkservices/#/api/DeviceInfoPlugin?id=systeminfo [uptime is extracted from this]

Note: Implementation supports only YouTube common port.
If previous state is suspended; then moveToFront & setFocus rdkshell APIs are called with AppID matching callsign.

Please see Provideplatformspecificapplifecycledelays/timeouts for adding platform specific tuning.

applications/get-state
https://rdkcentral.github.io/rdkservices/#/api/
DeviceIdentificationPlugin
RDKShellPlugin?id=
deviceidentification
getstate
applications/exit
https://rdkcentral.github.io/rdkservices/#/api/
NetworkPlugin
RDKShellPlugin?id=
getipsettings
getstate
https://rdkcentral.github.io/rdkservices/#/api/
DeviceInfoPlugin
RDKShellPlugin?id=
make
destroy

https://rdkcentral.github.io/rdkservices/#/api/DeviceInfoPluginRDKShellPlugin?id=modelidsuspend

Please see Provideplatformspecificapplifecycledelays/timeouts for adding platform specific tuning.

device/info
System



https://rdkcentral.github.io/rdkservices/#/api/DeviceInfoPluginDisplaySettingsPlugin?id=serialnumbergetconnectedvideodisplays

https://rdkcentral.github.io/rdkservices/#/api/DeviceInfoPluginSystemPlugin?id=firmwareversiongetdeviceinfo [estb_mac is used as DAB Device ID]

https://rdkcentral.github.io/rdkservices/#/api/DeviceIdentificationPluginRDKShellPlugin?id=deviceidentification [chipset is extracted from this]

system/restart

getscreenresolution

https://rdkcentral.github.io/rdkservices/#/api/

SystemPlugin

NetworkPlugin?id=

reboot
system/settings/list

getinterfaces

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginDeviceInfoPlugin?id=getsupportedresolutionssysteminfo [uptime is extracted from this]

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginDeviceIdentificationPlugin?id=getsupportedaudioportsdeviceidentification

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginNetworkPlugin?id=getsupportedaudiomodesgetipsettings

https://rdkcentral.github.io/rdkservices/#/api/FrameRatePluginDeviceInfoPlugin?id=getdisplayframeratemake

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginDeviceInfoPlugin?id=getsettophdrsupportmodelid

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginDeviceInfoPlugin?id=gettvhdrsupportserialnumber

MEMC: false

LowLatencyMode: true as its being enabled by the pipeline property. No plugin exposed APIs available.

VideoInputSource : Home (STB's playback source is its app itself.)

PictureMode: None (not an STB feature)

https://rdkcentral.github.io/rdkservices/#/api/DeviceInfoPlugin?id=firmwareversion

https://rdkcentral.github.io/rdkservices/#/api/DeviceIdentificationPlugin?id=deviceidentification [chipset is extracted from this]

system/restartsystem/settings/get
https://rdkcentral.github.io/rdkservices/#/api/
DisplaySettingsPlugin
SystemPlugin?id=
getsupportedresolutions
reboot
system/settings/list


https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getsupportedaudioportsgetsupportedresolutions

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getsupportedaudiomodesgetsupportedaudioports

https://rdkcentral.github.io/rdkservices/#/api/HdmiCec_2PluginDisplaySettingsPlugin?id=getenabledgetsupportedaudiomodes

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getsoundmodegetsettophdrsupport

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getmutedgettvhdrsupport

https://rdkcentral.github.io/rdkservices/#/api/FrameRatePluginTextToSpeechPlugin?id=getdisplayframerateisttsenabled

CEC: checks availability of https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getconnectedvideodisplays

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getsettophdrsupport

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=gettvhdrsupport

HdmiCec_2Plugin

MEMC: false

LowLatencyMode: true as its being enabled by the pipeline property. No plugin exposed APIs available.

VideoInputSource : Home (STB's playback source is its app itself.)

PictureMode: None (not an STB feature)

system/settings/get

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginDisplayInfoPlugin?id=getconnectedaudioportswidth

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginDisplayInfoPlugin?id=getvolumelevelheight

https://rdkcentral.github.io/rdkservices/#/api/TextToSpeechPluginDisplayInfoPlugin?id=isttsenabledframerate

Note: expecting response as "Framerate60" instead of "FRAMERATE_60" as per component owner review. Documentation needs updation.

https://rdkcentral.github.io/rdkservices/#/api/UserPreferencesPluginDisplaySettingsPlugin?id=getuilanguage

system/settings/set

getsupportedresolutions

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=setcurrentresolutiongetsupportedaudioports

https://rdkcentral.github.io/rdkservices/#/api/FrameRatePluginDisplaySettingsPlugin?id=setdisplayframerategetsupportedaudiomodes

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginHdmiCec_2Plugin?id=setvolumelevelgetenabled

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=setmutedgetsoundmode

https://rdkcentral.github.io/rdkservices/#/api/HdmiCec_2PluginDisplaySettingsPlugin?id=setenabledgetmuted

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=setenableaudioportgetconnectedvideodisplays

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=setforcehdrmodegetsettophdrsupport

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=setsoundmodegettvhdrsupport

https://rdkcentral.github.io/rdkservices/#/api/TextToSpeechPluginDisplaySettingsPlugin?id=enablettsgetconnectedaudioports

https://rdkcentral.github.io/rdkservices/#/api/UserPreferencesPluginDisplaySettingsPlugin?id=setuilanguagegetvolumelevel

PictureMode: not implemented (not an STB feature)

VideoInputSource : not implemented due to lack of device capability.

input/key/list

Platform configurable key map /opt/dab_platform_keymap.json with following format: key value pair of "DAB_KEY": PLATFORM_KEYCODE

Code Block
languagejs
{
  "KEY_GREEN": 406,
  "KEY_YELLOW": 403,
  "KEY_BLUE": 404,
  "KEY_HOME": 173
}

https://rdkcentral.github.io/rdkservices/#/api/TextToSpeechPlugin?id=isttsenabled

https://rdkcentral.github.io/rdkservices/#/api/UserPreferencesPlugin?id=getuilanguage

system/settings/set

https:/

input/key-press
https:/

/rdkcentral.github.io/rdkservices/#/api/

RDKShellPlugin

DisplaySettingsPlugin?id=

injectkey

getconnectedvideodisplays

[Note: injectKey will not be overridden by the rdkshell_keymapping.json so put the final KEYCODE in /opt/dab_platform_keymap.json]

input/long-key-press

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=setcurrentresolution

https://rdkcentral.github.io/rdkservices/#/api/RDKShellPluginDisplaySettingsPlugin?id=injectkeygetconnectedaudioports

[Note: injectKey will not be overridden by the rdkshell_keymapping.json so put the final KEYCODE in /opt/dab_platform_keymap.json]

output/image
Output

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=setvolumelevel

https://rdkcentral.github.io/rdkservices/#/api/ScreenCapturePluginDisplaySettingsPlugin?id=uploadscreencapture

device-telemetry/start
TBD: Funtionality not tested.
device-telemetry/stop
TBD: Funtionality not tested.
device-telemetry/metrics
TBD: Funtionality not tested.
app-telemetry/start
TBD: Funtionality not tested.
app-telemetry/stop
TBD: Funtionality not tested.
app-telemetry/metrics
TBD: Funtionality not tested.
health-check/get
Health CheckNo RDK specific implementation required.
messages
Operational General NotificationsTBD: Funtionality not tested.

setmuted

https://rdkcentral.github.io/rdkservices/#/api/HdmiCec_2Plugin?id=setenabled

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=setenableaudioport

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=setforcehdrmode

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=setsoundmode

https://

voice/list
https://

rdkcentral.github.io/rdkservices/#/api/

VoiceControlPlugin

TextToSpeechPlugin?id=

voicestatusvoice/set

enabletts

https://rdkcentral.github.io/rdkservices/#/api/

VoiceControlPlugin

UserPreferencesPlugin?id=

configurevoice with following parameter in the current implementation.
Code Block
languagejs
{"enable":false, "ptt":{"enable":false}}

setuilanguage

PictureMode: not implemented (not an STB feature)

VideoInputSource : not implemented due to lack of device capability.

input/key/list
Input

Platform configurable key map /opt/dab_platform_keymap.json.

Please see Provideplatformkeymapconfiguration
input/key-press
voice/send-audio
 
https://rdkcentral.github.io/rdkservices/#/api/
VoiceControlPlugin
RDKShellPlugin?id=
voicesessionrequest
Code Block
languagejs
{"audio_file":"/tmp/tts.wav","type":"ptt_audio_file"}
voice/send-text
injectkey

[Note: injectKey will not be overridden by the rdkshell_keymapping.json so put the final KEYCODE in /opt/dab_platform_keymap.json]

input/long-key-press

https://rdkcentral.github

To convert the audio to platform compatible format; gst-launch-1.0 binary is required.

https://rdkcentral.github

.io/rdkservices/#/api/

VoiceControlPlugin

RDKShellPlugin?id=

voicesessionrequest
Code Block
languagejs
{"audio_file":"/tmp/tts.wav","type":"ptt_audio_file"}
versionVersionNo RDK specific implementation required.

injectkey

[Note: injectKey will not be overridden by the rdkshell_keymapping.json so put the final KEYCODE in /opt/dab_platform_keymap.json]

output/image
OutputFor generating DAB Device IDGeneric

https://rdkcentral.github.io/rdkservices/#/api/SystemPluginScreenCapturePlugin?id=getdeviceinfo with param estb_mac

For feature/service availabilityGeneric

https://github.com/rdkcentral/Thunder/blob/master/Source/WPEFramework/doc/ControllerPlugin.md#method.activate

https://github.com/rdkcentral/Thunder/blob/master/Source/WPEFramework/doc/ControllerPlugin.md#method.deactivate

https://github.com/rdkcentral/Thunder/blob/master/Source/WPEFramework/doc/ControllerPlugin.md#property.services [Used as 'status@callsign']

...

uploadscreencapture

device-telemetry/start
Device & Application Telemetry




As per DAB-2.0 specifiction; it is an optional requirement. TBD: Funtionality not tested.
device-telemetry/stop
As per DAB-2.0 specifiction; it is an optional requirement. TBD: Funtionality not tested.
device-telemetry/metrics
As per DAB-2.0 specifiction; it is an optional requirement.
https://rdkcentral.github.io/rdkservices/#/api/DeviceInfoPlugin?id=systeminfo [totalram, freeram & cpuload is used]
app-telemetry/start
As per DAB-2.0 specifiction; it is an optional requirement. TBD: Funtionality not tested.
app-telemetry/stop
As per DAB-2.0 specifiction; it is an optional requirement. TBD: Funtionality not tested.
app-telemetry/metrics
As per DAB-2.0 specifiction; it is an optional requirement. Funtionality not implemented.
health-check/get
Health CheckNo RDK specific implementation required.
messages
Operational General Notifications
As per DAB-2.0 specifiction; it is an optional requirement.
No RDK specific implementation required.
voice/list
Voice


https://rdkcentral.github.io/rdkservices/#/api/VoiceControlPlugin?id=voicestatus

voice/set

https://rdkcentral.github.io/rdkservices/#/api/VoiceControlPlugin?id=configurevoice with following parameter in the current implementation.

Code Block
languagejs
{"enable":false, "ptt":{"enable":false}}
voice/send-audio
https://rdkcentral.github.io/rdkservices/#/api/VoiceControlPlugin?id=voicesessionrequest
Code Block
languagejs
{"audio_file":"/tmp/tts.wav","type":"ptt_audio_file"}
voice/send-text

To convert the audio to platform compatible format; gst-launch-1.0 binary is required.

https://rdkcentral.github.io/rdkservices/#/api/VoiceControlPlugin?id=voicesessionrequest
Code Block
languagejs
{"audio_file":"/tmp/tts.wav","type":"ptt_audio_file"}
versionVersionNo RDK specific implementation required.
For generating DAB Device IDGeneric

https://rdkcentral.github.io/rdkservices/#/api/SystemPlugin?id=getdeviceinfo with param estb_mac

For feature/service availabilityGeneric

https://github.com/rdkcentral/Thunder/blob/master/Source/WPEFramework/doc/ControllerPlugin.md#method.activate

https://github.com/rdkcentral/Thunder/blob/master/Source/WPEFramework/doc/ControllerPlugin.md#method.deactivate

https://github.com/rdkcentral/Thunder/blob/master/Source/WPEFramework/doc/ControllerPlugin.md#property.services [Used as 'status@callsign']

DAB Integration & Debug Helpers

How to fine tune dab-adapter to platform

Provide platform keymap configuration

RDK dab-adapter by default is configured to align DAB keymap with RDKShell keycodes https://github.com/rdkcentral/RDKShell/blob/master/linuxkeys.h. There is another provision to override or add more keys by introducing a platform specific keymap configuration file to dab-adapter runtime.

Create /opt/dab_platform_keymap.json with following format: key value pair of "DAB_KEY": PLATFORM_KEYCODE.

Code Block
languagejs
{
  "KEY_GREEN": 406,
  "KEY_YELLOW": 403,
  "KEY_BLUE": 404,
  "KEY_HOME": 173
}

Provide platform specific app lifecycle delays/timeouts

The time required to launch and exit an app runtime would be greately dependent on the platform. DAB-2.0 specification mandates that the DAB app lifecycle APIs shall only return the DAB response after the app lifecycle is completed.

Create /opt/dab_platform_app_lifecycle.json and add app specific parameters as per following template.

Code Block
languagejs
titleTemplate
{
    "dab-app-id-lowercase": {
        "cold_launch_timeout_ms": 6000,
        "resume_launch_timeout_ms": 3000,
        "exit_to_destroy_timeout_ms": 2500,
        "exit_to_background_timeout_ms": 2000
    }
}


Code Block
languagejs
titleExample
{
    "youtube": {
        "cold_launch_timeout_ms": 6000,
        "resume_launch_timeout_ms": 3000,
        "exit_to_destroy_timeout_ms": 2500,
        "exit_to_background_timeout_ms": 2000
    },
    "primevideo": {
        "cold_launch_timeout_ms": 8000,
        "resume_launch_timeout_ms": 4000,
        "exit_to_destroy_timeout_ms": 5000,
        "exit_to_background_timeout_ms": 2300
    }
} 

DAB Message Sniffer for analysis

...