Hallo,
ich hatte bisher zum Unterscheiden, ob der VDR durch die RTC oder Powerswitch gestartet wurde, für das CEC Plugin folgenden Code im Einsatz:
if (Setup.NextWakeupTime > 0) {
// 600 comes from vdr's MANUALSTART constant in vdr.c
if (abs(Setup.NextWakeupTime - time(NULL)) < 600) {
mStartManually = false;
}
}
D.h, wenn man den VDR 5 Minuten vor einem Timer manuell startet, so kann die Software den Start nicht unterscheiden, was dann etwas doof ist, wenn man nicht mehr an den Aufnahmetimer gedacht hat und sich dann wundert warum der VDR den Verstärker nicht einschaltet
Ich habe jetzt mal etwas gegraben und ein cat /proc/driver/rtc bringt da folgenden Output:
root@vdr:~> cat /proc/driver/rtc
rtc_time : 12:17:16
rtc_date : 2016-04-24
alrm_time : 11:05:00
alrm_date : 2016-04-25
alarm_IRQ : no
alrm_pending : no
update IRQ enabled : no
periodic IRQ enabled : no
periodic IRQ frequency : 1024
max user IRQ frequency : 64
24hr : yes
periodic_IRQ : no
update_IRQ : no
HPET_emulated : no
BCD : yes
DST_enable : no
periodic_freq : 1024
batt_status : okay
Wenn mein VDR per Timer gestartet wurde steht alarm_IRQ auf yes, solange bis der Alarm mittels echo "0" > /sys/class/rtc/rtc0/wakealarm zurückgesetzt wurde.
Ich habe mal ein Testprogramm angehängt, mit dem man das Verhalten testen kann (Compilieren mittels gcc -O2 -Wall rtcwakeup.c -o rtcwakeup). Ich würde den Ansatz gerne in meinem CEC-Plugin verwenden. Gibt es da Meinungen zu dem Ansatz?