HDMI Service
The HDMI Service provides functionality to get information about existing
HDMI settings on the STB and supports some HDMI CEC functionalities.
HDMI CEC Functionalities
HDMI CEC (Consumer Electronics Control) is a protocol that provides high-level control functions
between HDMI CEC compliant devices in the home environment.
Supported CEC Features
The following CEC features are supported:
- One Touch Play
- Routing Control
- Power Status
- Feature Abort
- Standby Initiator
- Standby Follower
- System Information
- Device OSD Transfer
- Remote Control Pass Through Initiator
- Remote Control Pass Through Follower
HDMI Service Functionalities
HDMI Sink Information
ToiHdmiService provides an interface ToiHdmiService.getSinkInfo()for users to read the current HDMI sink information.
It provides you with the information about HDMI sinks that may be connected
to hdmi[0] including the HDMI connection status, HDCP status and HDMI sink's manufacturer information.
ToiHdmiService.getSinkInfo()
also gives you a list of audio formats and video modes that a connected HDMI sink claims to support through its EDID.
Standby Control
Entering Standby Mode:
When the STB enters standby mode its Standby Control automatically sends Standby and Give Device Power Status to the TV (HDMI sink) to power it off.
Leaving Standby Mode:
When the STB leaves standby mode, Standby Control automatically powers on the TV (HDMI sink) and tells it to switch to the correct HDMI input.
To do this, it sends Image View On, Active Source, and Give Device Power to the TV.
Standby Control responds to the user pressing the STB's Power button. If you would like to wake up the TV (HDMI sink) programatically, the One Touch Play interface
ToiHdmiService.sendCecWakeup() can be called to wake up the TV from its standby and tell it to select the HDMI input for the STB.
To enable standby control, call
ToiHdmiService.setCecFeatures() with the parameter
ToiHdmiService.CEC_FEATURE_SYSTEM_STANDBY.
This feature can also be enabled by adding
kreatv-option-hdmicec:system_standby=true to the boot image configuration.
Standby Following Control
When the TV (HDMI sink) is turned off, the STB uses Standby Following Control to automatically enter its standby mode too.
To enable standby following control, call
ToiHdmiService.setCecFeatures() with the parameter
ToiHdmiService.CEC_FEATURE_SYSTEM_STANDBY_FOLLOWER
This feature can also be enabled by adding
kreatv-option-hdmicec:system_standby_follower=true to the boot image configuration.
Wake Up
Wake Up as a One Touch Play feature when calling HDMI TOI interface ToiHdmiService.sendCecWakeup() the following is sent to the TV (HDMI sink) by the platform: Image View On, Active Source and Give Device Power Status.
Remote Control Pass Through Initiator
The Remote control pass through initiator feature can be used to pass remote control commands from the STB to the TV.
There is no automatic pass through of commands on the platform level, all commands need to be sent/forwarded by the application.
At present, only the volume up/down and mute commands an HDMI connected TV are supported.
Mute/Unmute
To mute/unmute the TV, call
ToiHdmiService.sendCecUserControlPressed()
with the parameter ToiHdmiService.CEC_UICOMMAND_MUTE and call
ToiHdmiService.sendCecUserControlReleased()
a few seconds later to the simulate the key release event.
UI Command code(HDMI spec CEC table 30) 0x43 will be sent to the connected TV.
Volume Up/Down
To change the volume up/down on the TV, call
ToiHdmiService.sendCecUserControlPressed()
with the parameter
ToiHdmiService.CEC_UICOMMAND_VOLUME_UP or
ToiHdmiService.CEC_UICOMMAND_VOLUME_DOWN and call
ToiHdmiService.sendCecUserControlReleased()
a few seconds later to simulate the key release event.
UI Command code(HDMI spec CEC table 30) 0x41 (Volume Up) and 0x42 (Volume Down) will be sent to the connected TV.
To enable Remote control pass through initiator, call
ToiHdmiService.setCecFeatures() to enable
CEC_FEATURE_REMOTE_CONTROL_PASSTHROUGH.
This feature can also be enabled by adding
kreatv-option-hdmicec:remote_control_passthrough=true
to the boot image configuration.
According to CEC requirement, the RCU repetition time should be no less
than 200ms and no more than 500ms, the RCU repetition time can be configured by adding
kreatv-option-rcu-config:repeat_rate=250 to the boot image configuration.
Remote Control Pass Through Follower
The Remote control pass through follower feature can be used to pass remote control commands from the connected devices to the STB.
The KreaTV platform does not perform any automatic command handling. It is up to the application to handle this task.
The portal needs to subscribe to the ON_CEC_USER_CONTROL_PRESSED
and ON_CEC_USER_CONTROL_RELEASED events, and take appropriate
action when they occur.
To enable the generation of these events, call
ToiHdmiService.setCecFeatures() to enable
CEC_FEATURE_REMOTE_CONTROL_PASSTHROUGH_FOLLOWER.
This feature can also be enabled by adding
kreatv-option-hdmicec:remote_control_passthrough_follower=true
to the boot image configuration.
HDMI Service Methods
The HDMI service provides the following HDMI CEC related methods:
- setCecFeatures()
- getCecFeatures()
- getCecDevices()
- sendCecUserControlPressed()
- sendCecUserControlReleased()
- sendCecWakeup()
For more information about HDMI CEC-related functionality provided by KreaTV,
see:
TOI HDMI Service Interface
HDMI Service Event Subscriptions
Event subscriptions are used by the applications to get events when the CEC
information of the devices on the CEC bus, any CEC feature status or the HDMI sink connection of hdmi[0] changes.
Event subscriptions are done using event listener registration.
See also: TOI HDMI Service Interface