08-01-2024, 10:22 PM
I'm not sure what that user installed but the HDMI CEC feature included in moode uses the built in Linux kernel based CEC functionality. The command cec-ctl is used. There is nothing else that has to be installed.
Here are the code blocks
/var/www/daemon/worker.php
/var/www/daemon/watchdog.sh
Here are the code blocks
/var/www/daemon/worker.php
Code:
//----------------------------------------------------------------------------//
workerLog('worker: --');
workerLog('worker: -- Startup complete ');
workerLog('worker: --');
//----------------------------------------------------------------------------//
// Turn display on
if ($_SESSION['hdmi_cec'] == 'on' && $_SESSION['localui'] == '1') {
if (file_exists('/sys/class/drm/card0-HDMI-A-1/edid')) {
$drmCardID = 'card0-HDMI-A-1';
} else if (file_exists('/sys/class/drm/card1-HDMI-A-1/edid')) {
$drmCardID = 'card1-HDMI-A-1';
} else {
$drmCardID = 'undefined';
}
if ($drmCardID != 'undefined') {
sysCmd('cec-ctl --device=0 --playback "--phys-addr-from-edid=/sys/class/drm/' . $drmCardID . '/edid"');
$cecSourceAddress = trim(sysCmd('cec-ctl --skip-info --show-topology | grep ": Playback" | cut -d":" -f1')[0]);
sysCmd('cec-ctl --skip-info --to 0 --active-source phys-addr=' . $cecSourceAddress);
sysCmd('cec-ctl --skip-info --to 0 --cec-version-1.4 --image-view-on');
workerLog('worker: HDMI display: drm-card=' . $drmCardID . ', cec-source-addr=' . $cecSourceAddress);
} else {
workerLog('worker: HDMI display: drm-card=' . $drmCardID);
}
}
/var/www/daemon/watchdog.sh
Code:
wake_display () {
WAKE_DISPLAY=$(sqlite3 $SQLDB "SELECT value FROM cfg_system WHERE param='wake_display'")
if [[ $WAKE_DISPLAY = "1" ]]; then
cec-ctl --skip-info --to 0 --cec-version-1.4 --image-view-on
export DISPLAY=:0
xset s reset > /dev/null 2>&1
fi
}