cecservice is a system service allowing its clients to put CEC enabled TVs in and out of standby mode.
The service exposes a D-Bus API consisting of following functions:
SendWakeUpToAllDevices
- wakes up all TVs, putting them out of standby and announces the device running this service as an active source.SendStandByToAllDevices
- puts all TVs on standby.GetTvsPowerStatus
- returns power status of TVs (devices with logical address 0) on all connected CEC adapters.cecservice uses the Linux CEC API to interact with CEC adapters present on the device. It assumes exclusive ownership of /dev/cecX
device nodes and keeps all of them open at all times. The service uses libudev to keep track of CEC devices as they come and go.
When the client invokes the SendWakeUpToAllDevices
method on the service, the service sends a Image View On
request to devices with logical address 0 on all present /dev/cecX
adapters. Following that, an Active Source
message is sent, announcing the device to be an active source.
Similarly, when SendWakeUpToAllDevices
is called, the service sends a StandBy
request to devices with logical address 0 on all CEC adapters.
After the SendWakeUpToAllDevices
is called the service will assume an active source role. While being an active source it will respond to Request Active Source
requests and will continue doing so until either another CEC device announces itself as an active source or the SendStandByToAllDevice
is called.
GetTvsPowerStatus
sends give device power status
request on all adapters. This method returns array of integers, each integer describing power state of a TV connected to an adapter. The meaning of the values is explained in the service system API definition.
The service only works with CEC adapters which drivers handle physical address configuration on their own and which allow userland to configure logical addresses.