You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Introduction

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

  • RDK Shell
  • WPE's Thunder Framework
  • RDK Services (Thunder Nano services developed by Comcast)
  • WPE Framework's UI (for Controller UI)
  • WebKit Browser Plugin (A Thunder Nano service for WPE WebKit Browser)
  • RDK Reference App

Yocto build

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

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.

App UI

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

SwitcherApp Home screen

Metrological's App Functionality

Live stream playback through AAMPVimeo Home ScreenVimeo VOD Playback

Controller UI

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

RDK Services

Each RDK Service can be validated through JSON RPC Commands through HTTP. It has a request and response in JSON format. Some RDK Services which has graphics UI can be validated through the controller UI as well.

As the JSON RPC commands to control the RDK service through HTTP, requests can be sent from the target and from the remote (a host connected on the same network) machines.

  • On target - Use box's IP or the local host's IP
  • On Remote - Use only the box's IP

org.rdk.RDKShell

RDK Shell as an RDK service enables by default which controls the management of Composition, Layout, Z-Order, and Key handling. Below JSON RPC commands are used to validate the RDK Shell's service functionality.

FunctionRequestResponseRemarks
get Screen Resolutioncurl 'http://127.0.0.1:9998/jsonrpc' -d '{"jsonrpc":"2.0""id":3"method":"org.rdk.RDKShell.1.getScreenResolution""params":{ }}'{"jsonrpc":"2.0", "id":3, "result": {"w": 1920, "h": 1080} }
set Screen Resolutioncurl 'http://127.0.0.1:9998/jsonrpc' -d '{"jsonrpc":"2.0""id":3"method":"org.rdk.RDKShell.1.setScreenResolution""params":{ "w"1920"h"1080 }}'{"jsonrpc":"2.0""id":3"result": {} }
launch Applicationcurl 'http://127.0.0.1:9998/jsonrpc' -d '{"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 Applicationcurl 'http://127.0.0.1:9998/jsonrpc' -d '{"jsonrpc":"2.0""id":3"method":"org.rdk.RDKShell.1.suspendApplication""params":{"client""Cobalt"}}'{"jsonrpc":"2.0""id":3"result": {} }
resume Applicationcurl 'http://127.0.0.1:9998/jsonrpc' -d '{"jsonrpc":"2.0""id":3"method":"org.rdk.RDKShell.1.resumeApplication""params":{"client""Cobalt"}}'{"jsonrpc":"2.0", "id":3, "result": {} }
get Clientscurl 'http://127.0.0.1:9998/jsonrpc' -d '{"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-Ordercurl 'http://127.0.0.1:9998/jsonrpc' -d '{"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 Frontcurl 'http://127.0.0.1:9998/jsonrpc' -d '{"jsonrpc":"2.0", "id":3, "method":"org.rdk.RDKShell.1.moveToFront", "params":{ "client": "ResidentApp" }}'{"jsonrpc":"2.0", "id":3, "result": {} }client argument should be the exact name of the graphics UI service
Move to Backcurl 'http://127.0.0.1:9998/jsonrpc' -d '{"jsonrpc":"2.0", "id":3, "method":"org.rdk.RDKShell.1.moveToBack", "params":{ "client": "ResidentApp" }}'{"jsonrpc":"2.0", "id":3, "result": {} }
move Behind

curl 'http://127.0.0.1:9998/jsonrpc' -d '{"jsonrpc":"2.0", "id":3, "method":"org.rdk.RDKShell.1.moveBehind", "params":{ "client": "WebKitBrowser", "target": "ResidentApp"}}'

{"jsonrpc":"2.0", "id":3, "result": {} }
set Focus

curl 'http://127.0.0.1:9998/jsonrpc' -d '{"jsonrpc":"2.0", "id":3, "method":"org.rdk.RDKShell.1.setFocus", "params":{ "client": "WebKitBrowser" }}'

{"jsonrpc":"2.0", "id":3, "result": {} }
get Boundscurl 'http://127.0.0.1:9998/jsonrpc' -d '{"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 Boundscurl 'http://127.0.0.1:9998/jsonrpc' -d '{"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 Visibilitycurl 'http://127.0.0.1:9998/jsonrpc' -d '{"jsonrpc":"2.0""id":3"method":"org.rdk.RDKShell.1.getVisibility""params":{ "client""ResidentApp" }}'{"jsonrpc":"2.0", "id":3, "result": {"visible": true} }
set Visibilitycurl 'http://127.0.0.1:9998/jsonrpc' -d '

{"jsonrpc":"2.0", "id":3, "method":"org.rdk.RDKShell.1.setVisibility", "params":{ "client": "ResidentApp", "visible": true }}'

{"jsonrpc":"2.0", "id":3, "result": {} }
get Opacitycurl 'http://127.0.0.1:9998/jsonrpc' -d '{"jsonrpc":"2.0""id":3"method":"org.rdk.RDKShell.1.getOpacity""params":{ "client""ResidentApp"}}'{"jsonrpc":"2.0", "id":3, "result": { "opacity" : 100} }
set Opacitycurl 'http://127.0.0.1:9998/jsonrpc' -d '{"jsonrpc":"2.0""id":3"method":"org.rdk.RDKShell.1.setOpacity""params":{ "client""ResidentApp""opacity"100}}'{"jsonrpc":"2.0", "id":3, "result": {} }
get Scalecurl 'http://127.0.0.1:9998/jsonrpc' -d '{"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 Scalecurl 'http://127.0.0.1:9998/jsonrpc' -d '{"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": {} }
killcurl 'http://127.0.0.1:9998/jsonrpc' -d '{"jsonrpc":"2.0""id":3"method":"org.rdk.RDKShell.1.kill""params":{ "client": "WebKitBrowser" }}'{"jsonrpc":"2.0", "id":3, "result": {} }


  • No labels