RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
RDK Services are the RDK components implemented as the Thunder Nano services. RDK services are the services that are developed based on the Thunder (WPE) Framework. Services each other or a particular service can be controlled through JSON RPC commands and it has a web-based controller UI.
The graphics UI services like WebKit Browser and so on are run on top of RDK Shell. RDK Shell is a native component that gives the Wayland composition with application management.
For the Integration of RDK Services on Generic RDK image, below are the important components
The links are given here provide the instruction to generate RDK Image for Media Client and Media Gateway through a Yocto 2.2 (Morty) based build framework and also contain the instruction to flash the images to a micro SD card. These instructions are made for the execution of the RDK media stack on Raspberrypi 3 B+ Model.
User Interface involves graphics display on TV to show the app launched on the box and a controller UI that can be launched from the host machine's web browser to control all RDK services remotely.
SwitcherApp is a lightning framework based JS application that launches on a WebKit Browser instance. The URL and other parameters of this WebKit Browser instance can be controller from the ResidentApp service on controller UI (from Host machine's web browser).
SwitcherApp URL: https://px-apps.sys.comcast.net/lightning_apps/SwitcherApp/dist/index.html
Note: App's can be navigated through a Keyboard or an IR (especially Xfinity) remote connected to the RPi
Metrological's App Functionality
Controller UI is a web UI that can be launched from a host machine's (machine under the same network where RPi resides) browser. This UI can be loaded with the RPi box's IP address with port number 9998.
URL: http://<Rpi's IP address>:9998
Controller: List of plugins
In the Controller tab, any plugins can be enabled or disabled. On loading the controller UI initially, it loads the Controller tab with all possible services with the enable or disable status.
ResidentApp Control
Function | Request | Response | Remarks |
---|---|---|---|
get Screen Resolution |
{ "jsonrpc" : "2.0" , "id" : 3 , "method" : "org.rdk.RDKShell.1.getScreenResolution" , "params" :{ }}' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : { "w" : 1920 , "h" : 1080 } } | |
set Screen Resolution |
{ "jsonrpc" : "2.0" , "id" : 3 , "method" : "org.rdk.RDKShell.1.setScreenResolution" , "params" :{ "w" : 1920 , "h" : 1080 }}' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : {} } | |
launch Application |
{ "jsonrpc" : "2.0" , "id" : 3 , "method" : "org.rdk.RDKShell.1.launchApplication" , "params" :{ "client" : "appName" , "uri" : "testapp" , "mimeType" : "application/native" }}' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : {} } | |
suspend Application |
{ "jsonrpc" : "2.0" , "id" : 3 , "method" : "org.rdk.RDKShell.1.suspendApplication" , "params" :{ "client" : "Cobalt" }}' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : {} } | |
resume Application |
{ "jsonrpc" : "2.0" , "id" : 3 , "method" : "org.rdk.RDKShell.1.resumeApplication" , "params" :{ "client" : "Cobalt" }}' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : {} } | |
get Clients |
"jsonrpc" : "2.0" , "id" : 3 , "method" : "org.rdk.RDKShell.1.getClients" , "params" :{ }}' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : { "clients" : [ "ResidentApp" , "org.rdk.RDKBrowser2" ]} } | The below functionality will be succeeded only to the clients listed in this response |
get Z-Order |
{ "jsonrpc" : "2.0" , "id" : 3 , "method" : "org.rdk.RDKShell.1.getZOrder" , "params" :{ }}' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : { "clients" : [ "ResidentApp" , "org.rdk.RDKBrowser2" ]} } | |
Move to Front | curl 'http://127.0.0.1:9998/jsonrpc' -d ' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : {} } | client argument should be the exact name of the graphics UI service |
Move to Back | curl 'http://127.0.0.1:9998/jsonrpc' -d ' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : {} } | |
move Behind |
| { "jsonrpc" : "2.0" , "id" : 3 , "result" : {} } | |
set Focus |
| { "jsonrpc" : "2.0" , "id" : 3 , "result" : {} } | |
get Bounds |
{ "jsonrpc" : "2.0" , "id" : 3 , "method" : "org.rdk.RDKShell.1.getBounds" , "params" :{ "client" : "ResidentApp" }}' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : { "x" : 0 , "y" : 0 , "w" : 600 , "h" : 400 } } | |
set Bounds |
{ "jsonrpc" : "2.0" , "id" : 3 , "method" : "org.rdk.RDKShell.1.setBounds" , "params" :{ "client" : "WebKitBrowser" , "x" : 0 , "y" : 0 , "w" : 600 , "h" : 400 }}' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : {} } | |
get Visibility |
{ "jsonrpc" : "2.0" , "id" : 3 , "method" : "org.rdk.RDKShell.1.getVisibility" , "params" :{ "client" : "ResidentApp" }}' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : { "visible" : true } } | |
set Visibility |
| { "jsonrpc" : "2.0" , "id" : 3 , "result" : {} } | |
get Opacity |
{ "jsonrpc" : "2.0" , "id" : 3 , "method" : "org.rdk.RDKShell.1.getOpacity" , "params" :{ "client" : "ResidentApp" }}' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : { "opacity" : 100 } } | |
set Opacity |
{ "jsonrpc" : "2.0" , "id" : 3 , "method" : "org.rdk.RDKShell.1.setOpacity" , "params" :{ "client" : "ResidentApp" , "opacity" : 100 }}' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : {} } | |
get Scale |
{ "jsonrpc" : "2.0" , "id" : 3 , "method" : "org.rdk.RDKShell.1.getScale" , "params" :{ "client" : "ResidentApp" }}' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : { "sx" : 1.5 , "sy" : 1.5 } } | |
set Scale |
{ "jsonrpc" : "2.0" , "id" : 3 , "method" : "org.rdk.RDKShell.1.setScale" , "params" :{ "client" : "ResidentApp" , "sx" : 1.5 , "sy" : 1.5 }}' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : {} } | |
kill |
{ "jsonrpc" : "2.0" , "id" : 3 , "method" : "org.rdk.RDKShell.1.kill" , "params" :{ "client" : "WebKitBrowser " }}' | { "jsonrpc" : "2.0" , "id" : 3 , "result" : {} } |