From ec83c10c6b50b310d4145ab4956ac1b2dae066d7 Mon Sep 17 00:00:00 2001 From: Stefan Seyfried Date: Sun, 22 Apr 2012 11:45:11 +0200 Subject: [PATCH] neutrino: add deep-standby support on SPARK --- src/neutrino.cpp | 26 ++++++++++++++++++++++---- src/neutrino_menue.cpp | 3 +++ src/timerd/timermanager.cpp | 8 +++++++- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 4cd7126c2..0b32f881d 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -2970,22 +2970,25 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) g_settings.shutdown_timer_record_type = timer_is_rec; saveSetup(NEUTRINO_SETTINGS_FILE); +#if HAVE_COOL_HARDWARE if(retcode) { +#endif const char *neutrino_enter_deepstandby_script = CONFIGDIR "/deepstandby.on"; printf("[%s] executing %s\n",__FILE__ ,neutrino_enter_deepstandby_script); if (safe_system(neutrino_enter_deepstandby_script) != 0) perror(neutrino_enter_deepstandby_script ); printf("entering off state\n"); + printf("timer_minutes: %ld\n", timer_minutes); mode = mode_off; //CVFD::getInstance()->ShowText(g_Locale->getText(LOCALE_MAINMENU_SHUTDOWN)); +#if HAVE_COOL_HARDWARE system("/etc/init.d/rcK"); system("/bin/sync"); system("/bin/umount -a"); sleep(1); { -#if HAVE_COOL_HARDWARE standby_data_t standby; time_t mtime = time(NULL); struct tm *tmtime = localtime(&mtime); @@ -3039,10 +3042,8 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) while(true) sleep(1); } } -#else - reboot(LINUX_REBOOT_CMD_RESTART); -#endif } +#endif #if 0 neutrino_msg_t msg; neutrino_msg_data_t data; @@ -3081,7 +3082,22 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) } } #endif +#if HAVE_COOL_HARDWARE } else { +#endif + if (timer_minutes) + { + FILE *f = fopen("/tmp/.timer", "w"); + if (f) + { + fprintf(stderr, "timer_wakeup: %ld\n", timer_minutes * 60); + fprintf(f, "%ld\n", timer_minutes * 60); + fclose(f); + } + else + perror("fopen /tmp/.timer"); + } + if (g_RCInput != NULL) delete g_RCInput; //fan speed @@ -3104,7 +3120,9 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) _exit(retcode); #endif exit(retcode); +#if HAVE_COOL_HARDWARE } +#endif } } diff --git a/src/neutrino_menue.cpp b/src/neutrino_menue.cpp index 885a80e91..92c01c4fa 100644 --- a/src/neutrino_menue.cpp +++ b/src/neutrino_menue.cpp @@ -132,6 +132,9 @@ void CNeutrinoApp::InitMenuMain() dprintf(DEBUG_DEBUG, "init mainmenue\n"); unsigned int system_rev = cs_get_revision(); +#if HAVE_SPARK_HARDWARE + system_rev = 8; // :-) +#endif // Dynamic renumbering personalize.setShortcut(); diff --git a/src/timerd/timermanager.cpp b/src/timerd/timermanager.cpp index 4ed76fe2b..f404edd1c 100644 --- a/src/timerd/timermanager.cpp +++ b/src/timerd/timermanager.cpp @@ -82,6 +82,13 @@ void CTimerManager::Init(void) wakeup = ((wk.source == WAKEUP_SOURCE_TIMER) /* || (wk.source == WAKEUP_SOURCE_PWLOST)*/); close(fd); } +#endif + /* not platform specific - this is created by the init process */ + if (access("/tmp/.timer_wakeup", F_OK) == 0) { + wakeup = true; + unlink("/tmp/.timer_wakeup"); + } + printf("[timerd] wakeup from standby: %s\n", wakeup ? "yes" : "no"); if(wakeup){ creat("/tmp/.wakeup", 0); @@ -92,7 +99,6 @@ void CTimerManager::Init(void) if (system(neutrino_leave_deepstandby_script) != 0) perror( neutrino_leave_deepstandby_script ); } -#endif loadRecordingSafety(); //thread starten