diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 5d4a80f5d..3a5271bb6 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -2153,6 +2153,18 @@ void wake_up(bool &wakeup) } printf("[timerd] wakeup from standby: %s\n", wakeup ? "yes" : "no"); #endif +#if HAVE_ARM_HARDWARE + FILE *f = fopen("/proc/stb/fp/was_timer_wakeup", "r"); + if (f) + { + unsigned int tmp; + if (fscanf(f, "%u", &tmp) != 1) + printf("[neutrino] read /proc/stb/fp/was_timer_wakeup failed: %m\n"); + else + wakeup = (tmp > 0); + fclose(f); + } +#endif // HAVE_ARM_HARDWARE /* not platform specific - this is created by the init process */ if (access("/tmp/.timer_wakeup", F_OK) == 0) { wakeup = 1; @@ -3886,6 +3898,21 @@ void CNeutrinoApp::ExitRun(int can_shutdown) #endif if (timer_minutes || leds) { +#if HAVE_ARM_HARDWARE + FILE *f = fopen("/proc/stb/fp/wakeup_time","w"); + if (f) + { + time_t t = timer_minutes * 60; + struct tm *tm = localtime(&t); + char date[30]; + strftime(date, sizeof(date), "%c", tm); + fprintf(stderr, "timer_wakeup: %s (%ld)\n", date, timer_minutes * 60); + fprintf(f, "%ld\n", timer_minutes * 60); + fclose(f); + } + else + perror("fopen /proc/stb/fp/wakeup_time"); +#else FILE *f = fopen("/tmp/.timer", "w"); if (f) { @@ -3897,6 +3924,7 @@ void CNeutrinoApp::ExitRun(int can_shutdown) } else perror("fopen /tmp/.timer"); +#endif } delete g_RCInput;