RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
...
Preferred mode of operation : "On Device" implementation
Reference:
...
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)
DAB Request | DAB Category | Thunder Implementation for the Request | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operations/list | Supported Operations | No 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=launch (topmost:true, focused:true) Note: Implementation supports only YouTube common port. getstatelaunch movetofrontcode rdkcentral.rdkcentral github.com io/r rdkservices/#/plugins/gitiles/rdk/components/generic/cobalt/+/refs/heads/24.lts.dev/plugin/doc/CobaltPlugin.md#method.deeplink api/RDKShellPlugin?id=setfocus Note: Implementation supports only YouTube common port. | applications/get-state | If parameter is present; App specific deeplink API is invoked. For YouTube: https://code.rdkcentral. github.iordkservices#api/RDKShellPlugin?id=getstatePlease see Provideplatformspecificapplifecycledelays/timeouts for adding platform specific tuning. | |||||||||||||||||||||||||||||
applications/launch-with-content | applications/exit | https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=destroy | https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=suspend | device/info | Systemgetstate https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginRDKShellPlugin?id=getconnectedvideodisplayslaunch https://rdkcentral.github.rdkcentral.github.io/rdkservices/#/api/SystemPluginRDKShellPlugin?id=getdeviceinfomovetofront https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=getscreenresolutionsetfocus https://rdkcentral.github.io/rdkservices/#/api/NetworkPlugin RDKShellPlugin?id=getinterfaces getvisibilityDeviceInfoPlugin RDKShellPlugin?id=systeminfo [estb_mac is used as DAB Device ID] setvisibility Note: Implementation supports only YouTube common port. Please see Provideplatformspecificapplifecycledelays/timeouts for adding platform specific tuning. | |||||||||||||||||||||||||||
applications/get-state | https://rdkcentral.github.io/rdkservices/#/api/ DeviceIdentificationPluginRDKShellPlugin?id= deviceidentificationgetstate | |||||||||||||||||||||||||||||||
applications/exit | https://rdkcentral.github.io/rdkservices/#/api/ NetworkPluginRDKShellPlugin?id= getipsettingsgetstate | system/restart | https://rdkcentral.github.io/rdkservices/#/api/SystemPluginRDKShellPlugin?id=rebootsystem/settings/listdestroy https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginRDKShellPlugin?id=getsupportedresolutionssuspend Please see Provideplatformspecificapplifecycledelays/timeouts for adding platform specific tuning. | |||||||||||||||||||||||||||||
device/info | System | https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getsupportedaudioportsgetconnectedvideodisplays https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginSystemPlugin?id=getdeviceinfo [estb_mac is used as DAB Device ID] https:getsupportedaudiomodeshttps://rdkcentral.github.io/rdkservices/#/api/FrameRatePluginRDKShellPlugin?id=getdisplayframerategetscreenresolution https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginNetworkPlugin?id=getsettophdrsupportgetinterfaces https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginDeviceInfoPlugin?id=gettvhdrsupport 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 | systeminfo [uptime is extracted from this] https://rdkcentral.github.io/rdkservices/#/api/DeviceIdentificationPlugin?id=deviceidentification https://https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginNetworkPlugin?id=getsupportedresolutionsgetipsettings https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginDeviceInfoPlugin?id=getsupportedaudioportsmake https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginDeviceInfoPlugin?id=getsupportedaudiomodesmodelid https://rdkcentral.github.io/rdkservices/#/api/HdmiCec_2PluginDeviceInfoPlugin?id=getenabledserialnumber https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginDeviceInfoPlugin?id=getsoundmodefirmwareversion https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPluginDeviceIdentificationPlugin?id=getmuteddeviceidentification [chipset is extracted from this] | ||||||||||||||||||||||||||||
system/restart | https://rdkcentral.github.io/rdkservices/#/api/FrameRatePlugin SystemPlugin?id=getdisplayframerate reboot | |||||||||||||||||||||||||||||||
system/settings/list | https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getconnectedvideodisplaysgetsupportedresolutions https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getsettophdrsupportgetsupportedaudioports https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=gettvhdrsupportgetsupportedaudiomodes https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getconnectedaudioportsgetsettophdrsupport https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getvolumelevelgettvhdrsupport https://rdkcentral.github.io/rdkservices/#/api/TextToSpeechPlugin?id=isttsenabled | system/settings/set | CEC: checks availability of https://rdkcentral.github.io/rdkservices/#/api/ | DisplaySettingsPlugin?id=setcurrentresolutionMEMC: 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 | DisplaySettingsPlugin | setmuted | HdmiCec_2Plugin | setenabled | DisplaySettingsPlugin | setenableaudioport | https://rdkcentral.github. | Note: expecting response as "Framerate60" instead of "FRAMERATE_60" as per component owner review. Documentation needs updation. https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id= | setforcehdrmodehttps://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id= | setsoundmodeTextToSpeechPlugin | enabletts | input/key/list | InputPlatform configurable key map /opt/dab_platform_keymap.json with following format: key value pair of "DAB_KEY": PLATFORM_KEYCODE
| input/key-press | https://rdkcentral.github.io/rdkservices/#/api/HdmiCec_2Plugin?id=getenabled https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getsoundmode https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getmuted https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getconnectedvideodisplays | RDKShellPlugin | injectkeyinput/long-key-press | https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=gettvhdrsupport | RDKShellPlugininjectkey | output/image | Outputhttps://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getvolumelevel | ScreenCapturePluginuploadscreencapture | device-telemetry/start | Device & Application TelemetryTBD: 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 Check | No RDK specific implementation required. | ||||||||||||||||||||||||||||||
messages | Operational General Notifications | TBD: Funtionality not tested. | ||||||||||||||||||||||||||||||
https://rdkcentral.github.io/rdkservices/#/api/UserPreferencesPlugin?id=getuilanguage | ||||||||||||||||||||||||||||||||
system/settings/set | https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getconnectedvideodisplays https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=setcurrentresolution https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=getconnectedaudioports https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=setvolumelevel https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=setmuted | voice/list | VoiceVoiceControlPlugin | voicestatus | voice/set | VoiceControlPlugin | configurevoice with following parameter in the current implementation. |
Code Block | ||
---|---|---|
| ||
{"enable":false, "ptt":{"enable":false}} |
voice/send-audio
voice/send-text
https://rdkcentral.github.io/rdkservices/#/api/TextToSpeechPlugin?id=enabletts
https://rdkcentral.github.io/rdkservices/#/api/UserPreferencesPlugin?id=setuilanguage
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.
Please see Provideplatformkeymapconfigurationinput/key-press
https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=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.io/rdkservices/#/api/RDKShellPlugin?id=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
https://rdkcentral.github.io/rdkservices/#/api/ScreenCapturePlugin?id=uploadscreencapture
device-telemetry/start
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
health-check/get
messages
As per DAB-2.0 specifiction; it is an optional requirement.
No RDK specific implementation required.
voice/list
voice/set
https://rdkcentral.github.io/rdkservices/#/api/VoiceControlPlugin?id=configurevoice with following parameter in the current implementation.
Code Block | ||
---|---|---|
| ||
{"enable":false, "ptt":{"enable":false}} |
voice/send-audio
https://rdkcentral.github.io/rdkservices/#/api/VoiceControlPlugin?id=voicesessionrequest
Code Block | ||
---|---|---|
| ||
{"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 | ||
---|---|---|
| ||
{"audio_file":"/tmp/tts.wav","type":"ptt_audio_file"} |
https://rdkcentral.github.io/rdkservices/#/api/SystemPlugin?id=getdeviceinfo with param estb_mac
https://github.com/rdkcentral/Thunder/blob/master/Source/WPEFramework/doc/ControllerPlugin.md#property.services [Used as 'status@callsign']
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 | ||
---|---|---|
| ||
{
"KEY_GREEN": 406,
"KEY_YELLOW": 403,
"KEY_BLUE": 404,
"KEY_HOME": 173
} |
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 | ||||
---|---|---|---|---|
| ||||
{
"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 | ||||
---|---|---|---|---|
| ||||
{
"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
}
}
|
This section details about how to setup a tool to see DAB messages being exchanged over the test network using a Linux PC(DAB Monitor).
...
Code Block | ||
---|---|---|
| ||
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudo apt-get install mosquitto-clients moreutils |
-clients moreutils |
Code Block |
---|
user@DABMonitor:~$ mosquitto_sub -h 10.0.0.4 -v -t '#' | ts '[%Y%b%d %H:%M:%.S]'
|
If at any time during DAB adapter development or integration phase wanted to see what is the Thunder API request payload and its platform response that dab-adapter sends/receives, you could run the dab-adapter binary with verbose mode enabled as below.
Code Block |
---|
user@STB:~$ dab-adapter --debug true |
Code Block |
user@DABMonitor:~$ mosquitto_sub -h 10.0.0.4 -v -t '#' | ts '[%Y%b%d %H:%M:%.S]'
|
...