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=launchgetstate Note: Implementation supports only YouTube common port. https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=setfocusapplications/launch-with-contentlaunch getvisibilitycode 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. | applications/get-state | If parameter is present; App specific deeplink API is invoked. For YouTube: https://code.rdkcentral. github.iordkservices#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 | Systemhttps://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 getvisibilityNetworkPlugin RDKShellPlugin?id=getinterfaces setvisibilityhttps://rdkcentral.github.io/rdkservices/#/api/DeviceInfoPlugin?id=systeminfo [uptime is extracted from this] 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 DeviceInfoPluginRDKShellPlugin?id= makedestroy 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/restarthttps://rdkcentral.github.io/rdkservices/#/api/ SystemPluginrebootsystem/settings/list 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=gettvhdrsupportMEMC: 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/sethttps://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 | InputPlatform configurable key map /opt/dab_platform_keymap.json with following format: key value pair of "DAB_KEY": PLATFORM_KEYCODE
| https://rdkcentral.github.io/rdkservices/#/api/TextToSpeechPlugin?id=isttsenabled https://rdkcentral.github.io/rdkservices/#/api/UserPreferencesPlugin?id=getuilanguage | ||||||
system/settings/set | input/key-press | https:/ /rdkcentral.github.io/rdkservices/#/api/ RDKShellPlugininjectkey[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-presshttps://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 | 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/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 | voice/list | Voicehttps:// rdkcentral.github.io/rdkservices/#/api/ VoiceControlPluginvoicestatusvoice/sethttps://rdkcentral.github.io/rdkservices/#/api/ VoiceControlPluginconfigurevoice with following parameter in the current implementation.
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
| 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 | To convert the audio to platform compatible format; gst-launch-1.0 binary is required. https://rdkcentral.githubVoiceControlPluginvoicesessionrequest
| |||||||||
version | Version | No RDK specific implementation required. | ||||||||
[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 | For generating DAB Device ID | Generic | https://rdkcentral.github.io/rdkservices/#/api/SystemPluginScreenCapturePlugin?id=getdeviceinfo with param estb_mac | For feature/service availability | Generic | https://github.com/rdkcentral/Thunder/blob/master/Source/WPEFramework/doc/ControllerPlugin.md#property.services [Used as 'status@callsign']||||
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. | |||||||||
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 Check | No RDK specific implementation required. | ||||||||
messages | Operational General Notifications | As per DAB-2.0 specifiction; it is an optional requirement. | ||||||||
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.
| |||||||||
voice/send-audio | https://rdkcentral.github.io/rdkservices/#/api/VoiceControlPlugin?id=voicesessionrequest
| |||||||||
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
| |||||||||
version | Version | No RDK specific implementation required. | ||||||||
For generating DAB Device ID | Generic | https://rdkcentral.github.io/rdkservices/#/api/SystemPlugin?id=getdeviceinfo with param estb_mac | ||||||||
For feature/service availability | Generic | 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 |
---|
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 |
...