summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorUwe Freese <thebreaker@rockbox.org>2003-01-22 12:50:34 +0000
committerUwe Freese <thebreaker@rockbox.org>2003-01-22 12:50:34 +0000
commit86352ccc3f47bc0f6bdcdcdc7b752f0836900fcd (patch)
tree6bb892fcae88e04a3a45239236cd3dde97d8d7ce /apps
parentfa2229559802f7066b55cc2ab0761c9e742658f7 (diff)
downloadrockbox-86352ccc3f47bc0f6bdcdcdc7b752f0836900fcd.tar.gz
rockbox-86352ccc3f47bc0f6bdcdcdc7b752f0836900fcd.tar.bz2
rockbox-86352ccc3f47bc0f6bdcdcdc7b752f0836900fcd.zip
Code for alarm mod. Enable with adding -DHAVE_ALARM_MOD in Makefile (EXTRA_DEFINES).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3150 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/alarm_menu.c154
-rw-r--r--apps/alarm_menu.h24
-rw-r--r--apps/lang/deutsch.lang80
-rw-r--r--apps/lang/english.lang30
-rw-r--r--apps/main_menu.c13
5 files changed, 298 insertions, 3 deletions
diff --git a/apps/alarm_menu.c b/apps/alarm_menu.c
new file mode 100644
index 0000000000..ba16743c82
--- /dev/null
+++ b/apps/alarm_menu.c
@@ -0,0 +1,154 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2003 Uwe Freese
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+#include "config.h"
+#include "options.h"
+
+#include "lcd.h"
+#include "font.h"
+#include "button.h"
+#include "kernel.h"
+#include "sprintf.h"
+#include <string.h>
+#include "settings.h"
+#include "power.h"
+#include "status.h"
+#include "rtc.h"
+#include <stdbool.h>
+
+#include "lang.h"
+#include "power.h"
+#include "alarm_menu.h"
+#include "backlight.h"
+
+#ifdef HAVE_ALARM_MOD
+
+bool alarm_screen(void)
+{
+ /* get alarm time from RTC */
+
+ int h, m, hour, minute;
+
+ rtc_get_alarm(&h, &m);
+
+ m = m / 5 * 5; /* 5 min accuracy should be enough */
+
+ bool done=false;
+ char buf[32];
+
+ lcd_clear_display();
+ lcd_puts(0,1, str(LANG_ALARM_MOD_KEYS));
+
+ while(!done) {
+ snprintf(buf, 32, str(LANG_ALARM_MOD_TIME), h, m);
+ lcd_puts(0,0, buf);
+ lcd_update();
+
+ switch(button_get(true)) {
+ case BUTTON_PLAY:
+ /* prevent that an alarm occurs in the shutdown procedure */
+ /* accept alarms only if they are in 2 minutes or more */
+ hour = rtc_read(0x03);
+ hour = ((hour & 0x30) >> 4) * 10 + (hour & 0x0f);
+ minute = rtc_read(0x02);
+ minute = ((minute & 0x70) >> 4) * 10 + (minute & 0x0f);
+ int togo = (m + h * 60 - minute - hour * 60 + 1440) % 1440;
+ if (togo > 1) {
+ lcd_clear_display();
+ snprintf(buf, 32, str(LANG_ALARM_MOD_TIME_TO_GO), togo / 60, togo % 60);
+ lcd_puts(0,0, buf);
+ lcd_update();
+ rtc_init();
+ rtc_set_alarm(h,m);
+ /* in some cases enabling the alarm results in an activated AF flag */
+ /* this should not happen, but it does */
+ /* if you know why, tell me! */
+ /* for now, we try again forever in this case */
+ while (rtc_enable_alarm(true)) { /* error occured */
+ sleep(HZ / 10);
+ rtc_init();
+ rtc_set_alarm(h,m);
+ }
+ sleep(HZ);
+ lcd_puts(0,1,str(LANG_ALARM_MOD_SHUTDOWN));
+ lcd_update();
+ sleep(HZ);
+ power_off();
+ } else {
+ lcd_clear_display();
+ lcd_puts(0,0,str(LANG_ALARM_MOD_ERROR));
+ lcd_update();
+ sleep(HZ);
+ lcd_clear_display();
+ lcd_puts(0,1,str(LANG_ALARM_MOD_KEYS));
+ }
+ break;
+
+ /* inc(m) */
+ case BUTTON_RIGHT:
+ case BUTTON_RIGHT | BUTTON_REPEAT:
+ m += 5;
+ if (m == 60) {
+ h += 1;
+ m = 0;
+ }
+ if (h == 24)
+ h = 0;
+ break;
+
+ /* dec(m) */
+ case BUTTON_LEFT:
+ case BUTTON_LEFT | BUTTON_REPEAT:
+ m -= 5;
+ if (m == -5) {
+ h -= 1;
+ m = 55;
+ }
+ if (h == -1)
+ h = 23;
+ break;
+
+#ifdef HAVE_RECORDER_KEYPAD
+ /* inc(h) */
+ case BUTTON_UP:
+ case BUTTON_UP | BUTTON_REPEAT:
+ h = (h+1) % 24;
+ break;
+
+ /* dec(h) */
+ case BUTTON_DOWN:
+ case BUTTON_DOWN | BUTTON_REPEAT:
+ h = (h+23) % 24;
+ break;
+#endif
+
+#ifdef HAVE_RECORDER_KEYPAD
+ case BUTTON_OFF:
+#else
+ case BUTTON_STOP:
+ case BUTTON_MENU:
+#endif
+ done = true;
+ break;
+ }
+ }
+
+ return false;
+}
+
+#endif /* HAVE_ALARM_MOD */ \ No newline at end of file
diff --git a/apps/alarm_menu.h b/apps/alarm_menu.h
new file mode 100644
index 0000000000..8ad062e419
--- /dev/null
+++ b/apps/alarm_menu.h
@@ -0,0 +1,24 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2003 Uwe Freese
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+#ifndef _ALARM_MENU_H
+#define _ALARM_MENU_H
+
+bool alarm_screen(void);
+
+#endif
diff --git a/apps/lang/deutsch.lang b/apps/lang/deutsch.lang
index e5914cff03..8607769132 100644
--- a/apps/lang/deutsch.lang
+++ b/apps/lang/deutsch.lang
@@ -1208,3 +1208,83 @@ id: LANG_QUEUE_TOTAL
desc: number of queued tracks %d
eng: "Total queued: %d"
new: "Anzahl: %d"
+
+id: LANG_ALARM_MOD_ALARM_MENU
+desc: The name of the additional entry in the main menu for the RTC alarm mod.
+eng: "Wake-Up Alarm"
+new: "Wecker"
+
+id: LANG_ALARM_MOD_ERROR
+desc: The text that tells that the time is incorrect (for the RTC alarm mod).
+eng: "Alarm time is too soon!"
+new: "Weckzeit ist zu früh!"
+
+id: LANG_ALARM_MOD_KEYS
+desc: Shown key functions in alarm menu (for the RTC alarm mod).
+eng: "PLAY=Set OFF=Cancel"
+new: "PLAY=OK OFF=Abbruch"
+
+id: LANG_ALARM_MOD_SHUTDOWN
+desc: The text that tells the user that the alarm time is ok and the device shuts off (for the RTC alarm mod).
+eng: "Shutting down..."
+new: "Schalte aus..."
+
+id: LANG_ALARM_MOD_TIME
+desc: The current alarm time shown in the alarm menu for the RTC alarm mod.
+eng: "Alarm time: %02d:%02d"
+new: "Weckzeit: %02d:%02d"
+
+id: LANG_ALARM_MOD_TIME_TO_GO
+desc: The time until the alarm will go off shown in the alarm menu for the RTC alarm mod.
+eng: "Waking up in %d:%02d"
+new: "Einschalten in %d:%02d"
+
+id: LANG_DELETE
+desc: The verb/action Delete
+eng: "Delete"
+new: "Löschen"
+
+id: LANG_DELETED
+desc: A file has beed deleted
+eng: "Deleted"
+new: "Gelöscht"
+
+id: LANG_FAILED
+desc: Something failed. To be appended after above actions
+eng: "failed"
+new: "fehlgeschlagen"
+
+id: LANG_MENU_SETTING_CANCEL
+desc: Visual confirmation of canceling a changed setting
+eng: "Canceled"
+new: "Abgebrochen"
+
+id: LANG_MENU_SETTING_OK
+desc: Visual confirmation of changing a setting
+eng: "OK"
+new: "OK"
+
+id: LANG_PLAYER_ONPLAY_1
+desc:
+eng: "\x81 Queue"
+new: "\x81 Warteschlange"
+
+id: LANG_PLAYER_ONPLAY_2
+desc:
+eng: "- Ren + Del"
+new: "- Umb + Ent"
+
+id: LANG_QUEUE
+desc: The verb/action Queue
+eng: "Queue"
+new: "in Warteschlange stellen"
+
+id: LANG_REALLY_DELETE
+desc: Really Delete?
+eng: "Delete?"
+new: "Löschen?"
+
+id: LANG_RENAME
+desc: The verb/action Rename
+eng: "Rename"
+new: "Umbenennen"
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index aa47808805..9e80f95cd2 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -1286,3 +1286,33 @@ id: LANG_FAILED
desc: Something failed. To be appended after above actions
eng: "failed"
new:
+
+id: LANG_ALARM_MOD_ALARM_MENU
+desc: The name of the additional entry in the main menu for the RTC alarm mod.
+eng: "Wake-Up Alarm"
+new:
+
+id: LANG_ALARM_MOD_TIME
+desc: The current alarm time shown in the alarm menu for the RTC alarm mod.
+eng: "Alarm time: %02d:%02d"
+new:
+
+id: LANG_ALARM_MOD_TIME_TO_GO
+desc: The time until the alarm will go off shown in the alarm menu for the RTC alarm mod.
+eng: "Waking up in %d:%02d"
+new:
+
+id: LANG_ALARM_MOD_SHUTDOWN
+desc: The text that tells the user that the alarm time is ok and the device shuts off (for the RTC alarm mod).
+eng: "Shutting down..."
+new:
+
+id: LANG_ALARM_MOD_ERROR
+desc: The text that tells that the time is incorrect (for the RTC alarm mod).
+eng: "Alarm time is too soon!"
+new:
+
+id: LANG_ALARM_MOD_KEYS
+desc: Shown key functions in alarm menu (for the RTC alarm mod).
+eng: "PLAY=Set OFF=Cancel"
+new:
diff --git a/apps/main_menu.c b/apps/main_menu.c
index 0b51a798ab..9eb6643aef 100644
--- a/apps/main_menu.c
+++ b/apps/main_menu.c
@@ -47,6 +47,10 @@
#include "recording.h"
#endif
+#ifdef HAVE_ALARM_MOD
+#include "alarm_menu.h"
+#endif
+
#ifdef HAVE_LCD_BITMAP
#include "bmp.h"
#include "icons.h"
@@ -253,10 +257,13 @@ bool main_menu(void)
struct menu_items items[] = {
{ str(LANG_SOUND_SETTINGS), sound_menu },
{ str(LANG_GENERAL_SETTINGS), settings_menu },
- { str(LANG_SLEEP_TIMER), sleeptimer_screen },
+ { str(LANG_SLEEP_TIMER), sleeptimer_screen },
+#ifdef HAVE_ALARM_MOD
+ { str(LANG_ALARM_MOD_ALARM_MENU), alarm_screen },
+#endif
#ifdef HAVE_MAS3587F
- { str(LANG_RECORDING_SETTINGS), recording_menu },
- { str(LANG_RECORDING), recording_screen },
+ { str(LANG_RECORDING_SETTINGS), recording_menu },
+ { str(LANG_RECORDING), recording_screen },
#endif
#ifdef HAVE_LCD_BITMAP
#ifdef USE_GAMES