Architecture & Set-up

The dab-adapter-rs the "DAB <-> RDK adapter" can be executed both on the RDK device or using an external PC.

Note: current implementation is for STB devices.

Preferred mode of operation : "On Device" implementation

Reference:

Alexa based implementation flow

Device run-times

Comaptible Navigator UI version 4.1.3 or later. (Why is it? - UI need to listen and manage external app lifecycle related events and send app state report to Alexa.)

All the below commands can be executed from device console (SSH prompt or serial terminal).

Related RFC

Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.DAB.Enable

How to check current RFC configuration:

tr181 -g Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.DAB.Enable

How to set the RFC:

tr181 -s -t boolean -v true Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.DAB.Enable

How to clear the RFC:

tr181 -s -t boolean -v false Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.DAB.Enable

DAB Operations - API Map

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

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=launch (topmost:true, focused:true)

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

applications/launch-with-content
 https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=launch
https://code.rdkcentral.com/r/plugins/gitiles/rdk/components/generic/cobalt/+/refs/heads/24.lts.dev/plugin/doc/CobaltPlugin.md#method.deeplink
[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
https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=getstate
applications/exit
https://rdkcentral.github.io/rdkservices/#/api/RDKShellPlugin?id=destroy

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

device/info
System



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

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

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

https://rdkcentral.github.io/rdkservices/#/api/NetworkPlugin?id=getinterfaces

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

https://rdkcentral.github.io/rdkservices/#/api/DeviceIdentificationPlugin?id=deviceidentification

https://rdkcentral.github.io/rdkservices/#/api/NetworkPlugin?id=getipsettings

system/restart
https://rdkcentral.github.io/rdkservices/#/api/SystemPlugin?id=reboot
system/settings/list


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

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

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

https://rdkcentral.github.io/rdkservices/#/api/FrameRatePlugin?id=getdisplayframerate

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

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?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

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

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

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

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/FrameRatePlugin?id=getdisplayframerate

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

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

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

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

system/settings/set

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

https://rdkcentral.github.io/rdkservices/#/api/FrameRatePlugin?id=setdisplayframerate

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

https://rdkcentral.github.io/rdkservices/#/api/DisplaySettingsPlugin?id=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://rdkcentral.github.io/rdkservices/#/api/TextToSpeechPlugin?id=enabletts

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 with following format: key value pair of "DAB_KEY": PLATFORM_KEYCODE

{
  "KEY_GREEN": 406,
  "KEY_YELLOW": 403,
  "KEY_BLUE": 404,
  "KEY_HOME": 173
}
input/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
Output

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

device-telemetry/start
Device & Application Telemetry




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.
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.

{"enable":false, "ptt":{"enable":false}}
voice/send-audio
 https://rdkcentral.github.io/rdkservices/#/api/VoiceControlPlugin?id=voicesessionrequest
voice/send-text
 https://rdkcentral.github.io/rdkservices/#/api/VoiceControlPlugin?id=voicesessionrequest
versionVersionNo RDK specific implementation required.

DAB Message Sniffer for analysis

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).

Install required tools on the DAB Monitor Linux machine 

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudo apt-get install mosquitto-clients moreutils

Listen to the MQTT messages from the broker(dab-adapter)

user@DABMonitor:~$ mosquitto_sub -h 10.0.0.4 -v -t '#' | ts '[%Y%b%d %H:%M:%.S]'

Common pit-falls

journalctl -fu dab-adapter
root@AmlogicFirebolt:~# journalctl -fu dab-adapter
-- Logs begin at Mon 2023-09-11 16:32:00 UTC. --
Sep 11 16:35:05 AmlogicFirebolt systemd[1]: Started DAB <-> RDK adapter.
Sep 11 16:35:05 AmlogicFirebolt dab-adapter[22887]: Monitoring changes of /run/dab-enable
Sep 11 16:35:06 AmlogicFirebolt dab-adapter[22887]: DAB Device ID: AC64CF339B28
Sep 11 16:35:06 AmlogicFirebolt dab-adapter[22887]: Ready to process DAB requests
Sep 11 16:35:33 AmlogicFirebolt dab-adapter[22887]: OK: operations/list

References

  • No labels