summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2007-03-07 01:16:25 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2007-03-07 01:16:25 +0000
commit9e554a87fc79825b32d2de050734a52d5753049b (patch)
tree58c21c5d6dcfc52cf3b6bc6fb7b31e571e700326
parentf609c5bd3ef8b378394b920a001441ba01db04cf (diff)
downloadrockbox-9e554a87fc79825b32d2de050734a52d5753049b.tar.gz
rockbox-9e554a87fc79825b32d2de050734a52d5753049b.zip
Fix alarm wake up. If the target has fm or recording (or both) an option is in the System menu to choose what to start when the alarm wakes up,
otherwise the WPS will start git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12654 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/lang/english.lang14
-rw-r--r--apps/menus/settings_menu.c7
-rw-r--r--apps/root_menu.c23
-rw-r--r--apps/settings.h24
-rw-r--r--apps/settings_list.c14
5 files changed, 75 insertions, 7 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index 5452aba1e2..55838f2b39 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -10687,3 +10687,17 @@
10687 *: "Previous Screen" 10687 *: "Previous Screen"
10688 </voice> 10688 </voice>
10689</phrase> 10689</phrase>
10690<phrase>
10691 id: LANG_ALARM_WAKEUP_SCREEN
10692 desc: in alarm menu setting
10693 user:
10694 <source>
10695 *: "Alarm Wake up Screen"
10696 </source>
10697 <dest>
10698 *: "Alarm Wake up Screen"
10699 </dest>
10700 <voice>
10701 *: "Alarm Wake up Screen"
10702 </voice>
10703</phrase>
diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c
index 690f9e62e4..b962f1fb52 100644
--- a/apps/menus/settings_menu.c
+++ b/apps/menus/settings_menu.c
@@ -211,6 +211,10 @@ MENUITEM_SETTING(poweroff, &global_settings.poweroff, NULL);
211#ifdef HAVE_RTC_ALARM 211#ifdef HAVE_RTC_ALARM
212MENUITEM_FUNCTION(alarm_screen_call, ID2P(LANG_ALARM_MOD_ALARM_MENU), 212MENUITEM_FUNCTION(alarm_screen_call, ID2P(LANG_ALARM_MOD_ALARM_MENU),
213 (menu_function)alarm_screen, NULL, Icon_NOICON); 213 (menu_function)alarm_screen, NULL, Icon_NOICON);
214#if defined(HAVE_RECORDING) || CONFIG_TUNER
215MENUITEM_SETTING(alarm_wake_up_screen,
216 &global_settings.alarm_wake_up_screen, NULL);
217#endif
214#endif 218#endif
215 219
216/* Limits menu */ 220/* Limits menu */
@@ -256,6 +260,9 @@ MAKE_MENU(system_menu, ID2P(LANG_SYSTEM),
256 &poweroff, 260 &poweroff,
257#ifdef HAVE_RTC_ALARM 261#ifdef HAVE_RTC_ALARM
258 &alarm_screen_call, 262 &alarm_screen_call,
263#if defined(HAVE_RECORDING) || CONFIG_TUNER
264 &alarm_wake_up_screen,
265#endif
259#endif 266#endif
260 &limits_menu, 267 &limits_menu,
261#if CONFIG_CODEC == MAS3507D 268#if CONFIG_CODEC == MAS3507D
diff --git a/apps/root_menu.c b/apps/root_menu.c
index b797d473a5..3b9f6eab36 100644
--- a/apps/root_menu.c
+++ b/apps/root_menu.c
@@ -152,13 +152,6 @@ static int wpsscrn(void* param)
152 DEBUGF("Resume index %X offset %X\n", 152 DEBUGF("Resume index %X offset %X\n",
153 global_status.resume_index, 153 global_status.resume_index,
154 global_status.resume_offset); 154 global_status.resume_offset);
155
156#ifdef HAVE_RTC_ALARM
157 if ( rtc_check_alarm_started(true) ) {
158 rtc_enable_alarm(false);
159 }
160#endif
161
162 if (playlist_resume() != -1) 155 if (playlist_resume() != -1)
163 { 156 {
164 playlist_start(global_status.resume_index, 157 playlist_start(global_status.resume_index,
@@ -329,6 +322,22 @@ void root_menu(void)
329 ret_val = (int)global_status.last_screen; 322 ret_val = (int)global_status.last_screen;
330 else ret_val = global_settings.start_in_screen - 2; 323 else ret_val = global_settings.start_in_screen - 2;
331 324
325#ifdef HAVE_RTC_ALARM
326 if ( rtc_check_alarm_started(true) )
327 {
328 rtc_enable_alarm(false);
329 ret_val = GO_TO_WPS;
330#if CONFIG_TUNER
331 if (global_settings.alarm_wake_up_screen == ALARM_START_FM)
332 ret_val = GO_TO_FM;
333#endif
334#ifdef HAVE_RECORDING
335 if (global_settings.alarm_wake_up_screen == ALARM_START_REC)
336 ret_val = GO_TO_RECSCREEN;
337#endif
338 }
339#endif /* HAVE_RTC_ALARM */
340
332 while (true) 341 while (true)
333 { 342 {
334 switch (ret_val) 343 switch (ret_val)
diff --git a/apps/settings.h b/apps/settings.h
index 6e2db093d9..f9e08152af 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -166,7 +166,26 @@ enum { REPLAYGAIN_TRACK = 0, REPLAYGAIN_ALBUM, REPLAYGAIN_SHUFFLE };
166/* show path types */ 166/* show path types */
167enum { SHOW_PATH_OFF = 0, SHOW_PATH_CURRENT, SHOW_PATH_FULL }; 167enum { SHOW_PATH_OFF = 0, SHOW_PATH_CURRENT, SHOW_PATH_FULL };
168 168
169/* Alarm settings */
170#ifdef HAVE_RTC_ALARM
171enum { ALARM_START_WPS = 0,
172#if CONFIG_TUNER
173 ALARM_START_FM,
174#endif
175#ifdef HAVE_RECORDING
176 ALARM_START_REC,
177#endif
178 ALARM_START_COUNT
179 };
180#if CONFIG_TUNER && defined(HAVE_RECORDING)
181#define ALARM_SETTING_TEXT "wps,fm,rec"
182#elif CONFIG_TUNER
183#define ALARM_SETTING_TEXT "wps,fm"
184#elif defined(HAVE_RECORDING)
185#define ALARM_SETTING_TEXT "wps,rec"
186#endif
169 187
188#endif /* HAVE_RTC_ALARM */
170/** virtual pointer stuff.. move to another .h maybe? **/ 189/** virtual pointer stuff.. move to another .h maybe? **/
171/* These define "virtual pointers", which could either be a literal string, 190/* These define "virtual pointers", which could either be a literal string,
172 or a mean a string ID if the pointer is in a certain range. 191 or a mean a string ID if the pointer is in a certain range.
@@ -681,6 +700,11 @@ struct user_settings
681#endif /* CONFIG_CODEC == SWCODEC */ 700#endif /* CONFIG_CODEC == SWCODEC */
682 bool cuesheet; 701 bool cuesheet;
683 int start_in_screen; 702 int start_in_screen;
703#if defined(HAVE_RTC_ALARM) && \
704 (defined(HAVE_RECORDING) || CONFIG_TUNER)
705 int alarm_wake_up_screen;
706#endif
707
684}; 708};
685 709
686/** global variables **/ 710/** global variables **/
diff --git a/apps/settings_list.c b/apps/settings_list.c
index c01584f8e2..ac410d57ca 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -1113,6 +1113,20 @@ const struct settings_list settings[] = {
1113 ID2P(LANG_BOOKMARK_MENU_RECENT_BOOKMARKS) 1113 ID2P(LANG_BOOKMARK_MENU_RECENT_BOOKMARKS)
1114 ), 1114 ),
1115 SYSTEM_SETTING(NVRAM(1),last_screen,-1), 1115 SYSTEM_SETTING(NVRAM(1),last_screen,-1),
1116#if defined(HAVE_RTC_ALARM) && \
1117 (defined(HAVE_RECORDING) || CONFIG_TUNER)
1118 CHOICE_SETTING(0, alarm_wake_up_screen, LANG_ALARM_WAKEUP_SCREEN,
1119 ALARM_START_WPS,
1120 "alarm wakeup screen", ALARM_SETTING_TEXT,
1121 NULL, ALARM_START_COUNT, ID2P(LANG_RESUME_PLAYBACK)
1122#if CONFIG_TUNER
1123 ,ID2P(LANG_FM_RADIO)
1124#endif
1125#ifdef HAVE_RECORDING
1126 ,ID2P(LANG_RECORDING)
1127#endif
1128 ),
1129#endif /* HAVE_RTC_ALARM */
1116}; 1130};
1117 1131
1118const int nb_settings = sizeof(settings)/sizeof(*settings); 1132const int nb_settings = sizeof(settings)/sizeof(*settings);