From 50b5ee4781a44234b4ea5dccf3be6ae5ec9fd324 Mon Sep 17 00:00:00 2001 From: Robert Kukla Date: Wed, 28 Feb 2007 13:20:36 +0000 Subject: FS#6419 - driver for H1x0 series RTC Mod with runtime detection git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12520 a1c6a512-1295-4272-9138-f99709370657 --- apps/gui/gwps-common.c | 7 +++++++ apps/gui/statusbar.c | 9 +++++++++ apps/menus/settings_menu.c | 30 ++++++++++++++++++++++++++++-- apps/misc.c | 7 +++++++ apps/plugins/clock.c | 2 +- apps/recorder/recording.c | 9 +++++++++ apps/scrobbler.c | 6 ++++++ 7 files changed, 67 insertions(+), 3 deletions(-) (limited to 'apps') diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c index 70f5565b61..8fa80c725a 100644 --- a/apps/gui/gwps-common.c +++ b/apps/gui/gwps-common.c @@ -23,7 +23,9 @@ #include #include "system.h" #include "settings.h" +#ifdef CONFIG_RTC #include "rtc.h" +#endif #include "audio.h" #include "status.h" #include "power.h" @@ -972,6 +974,11 @@ static char* get_tag(struct wps_data* wps_data, #ifdef CONFIG_RTC case 'c': /* Real Time Clock display */ *flags |= WPS_REFRESH_DYNAMIC; +#if CONFIG_RTC == RTC_DS1339_DS3231 + if(!rtc_detected) + return NULL; + else +#endif { int value; char *format = 0; diff --git a/apps/gui/statusbar.c b/apps/gui/statusbar.c index fbd8943315..a36ae15974 100644 --- a/apps/gui/statusbar.c +++ b/apps/gui/statusbar.c @@ -28,6 +28,9 @@ #include "powermgmt.h" #include "usb.h" #include "led.h" +#ifdef CONFIG_RTC +#include "rtc.h" +#endif #include "status.h" /* needed for battery_state global var */ #include "action.h" /* for keys_locked */ @@ -239,6 +242,9 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw) bar->info.led = led_read(HZ/2); /* delay should match polling interval */ #endif #ifdef CONFIG_RTC +#if CONFIG_RTC == RTC_DS1339_DS3231 + if(rtc_detected) +#endif { struct tm* tm = get_time(); bar->info.hour = tm->tm_hour; @@ -324,6 +330,9 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw) gui_statusbar_icon_lock_remote(display); #endif #ifdef CONFIG_RTC +#if CONFIG_RTC == RTC_DS1339_DS3231 + if(rtc_detected) +#endif gui_statusbar_time(display, bar->info.hour, bar->info.minute); #endif /* CONFIG_RTC */ #if (CONFIG_LED == LED_VIRTUAL) || defined(HAVE_REMOTE_LCD) diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c index 508f7214a1..818271b623 100644 --- a/apps/menus/settings_menu.c +++ b/apps/menus/settings_menu.c @@ -38,6 +38,12 @@ #ifdef HAVE_ALARM_MOD #include "alarm_menu.h" #endif +#ifdef CONFIG_RTC +#include "rtc.h" +#endif + +/* callback to display rtc menus dynamically */ +int rtc_detect_callback(int action,const struct menu_item_ex *this_item); /***********************************/ /* TAGCACHE MENU */ @@ -206,7 +212,7 @@ static int timedate_set(void) MENUITEM_FUNCTION(time_set, ID2P(LANG_TIME), timedate_set, NULL, NOICON); MENUITEM_SETTING(timeformat, &global_settings.timeformat, NULL); -MAKE_MENU(time_menu, ID2P(LANG_TIME_MENU), 0, NOICON, &time_set, &timeformat); +MAKE_MENU(time_menu, ID2P(LANG_TIME_MENU), rtc_detect_callback, NOICON, &time_set, &timeformat); #endif /* System menu */ @@ -246,7 +252,7 @@ MENUITEM_FUNCTION(sleep_timer_call, ID2P(LANG_SLEEP_TIMER), sleep_timer, setting to the user */ #ifdef HAVE_ALARM_MOD MENUITEM_FUNCTION(alarm_screen_call, ID2P(LANG_ALARM_MOD_ALARM_MENU), - (menu_function)alarm_screen, NULL, NOICON); + (menu_function)alarm_screen, rtc_detect_callback, NOICON); #endif /* Limits menu */ @@ -383,3 +389,23 @@ MAKE_MENU(settings_menu_item, ID2P(LANG_GENERAL_SETTINGS), 0, &bookmark_settings_menu, &browse_langs, &voice_settings_menu ); /* SETTINGS MENU */ /***********************************/ + +/* callback to display rtc menus dynamically */ +int rtc_detect_callback(int action,const struct menu_item_ex *this_item) +{ + if (action != ACTION_REQUEST_MENUITEM) + return action; + +#if defined(CONFIG_RTC) && CONFIG_RTC == RTC_DS1339_DS3231 + if ((this_item == &time_menu) || + (this_item == &alarm_screen_call)) + { + if (!rtc_detected) + return ACTION_EXIT_MENUITEM; + } +#else + (void)this_item; +#endif + + return action; +} diff --git a/apps/misc.c b/apps/misc.c index 22f6fb50a6..339bc1d0b7 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -60,6 +60,7 @@ #include "gui/gwps-common.h" #include "misc.h" +#include "rtc.h" /* Format a large-range value for output, using the appropriate unit so that * the displayed value is in the range 1 <= display < 1000 (1024 for "binary" @@ -414,6 +415,12 @@ void screen_dump(void) #endif #ifdef CONFIG_RTC +#if CONFIG_RTC == RTC_DS1339_DS3231 + if(!rtc_detected) + create_numbered_filename(filename, "", "dump_", ".bmp", 4 + IF_CNFN_NUM_(, NULL)); + else +#endif create_datetime_filename(filename, "", "dump ", ".bmp", false); #else create_numbered_filename(filename, "", "dump_", ".bmp", 4 diff --git a/apps/plugins/clock.c b/apps/plugins/clock.c index 7e52e2b552..010e293bac 100644 --- a/apps/plugins/clock.c +++ b/apps/plugins/clock.c @@ -277,7 +277,7 @@ extern const fb_data clock_timesup[]; #define EXIT_BUTTON BUTTON_MENU #define MODE_NEXT_BUTTON BUTTON_RIGHT #define MODE_PREV_BUTTON BUTTON_LEFT -#elif (CONFIG_KEYPAD == IRIVER_H300_PAD) +#elif (CONFIG_KEYPAD == IRIVER_H300_PAD) || (CONFIG_KEYPAD == IRIVER_H100_PAD) #define COUNTER_TOGGLE_BUTTON (BUTTON_ON|BUTTON_REL) #define COUNTER_RESET_BUTTON (BUTTON_ON|BUTTON_REPEAT) #define MENU_BUTTON BUTTON_SELECT diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c index 8eea24d82d..2c5fc32b28 100644 --- a/apps/recorder/recording.c +++ b/apps/recorder/recording.c @@ -68,6 +68,9 @@ #include "screen_access.h" #include "action.h" #include "radio.h" +#ifdef CONFIG_RTC +#include "rtc.h" +#endif #ifdef HAVE_RECORDING static bool in_screen = false; @@ -521,6 +524,12 @@ char *rec_create_filename(char *buffer) #ifdef CONFIG_RTC /* We'll wait at least up to the start of the next second so no duplicate names are created */ +#if CONFIG_RTC == RTC_DS1339_DS3231 + if(!rtc_detected) + return create_numbered_filename(buffer, buffer, "rec_", ext, 4 + IF_CNFN_NUM_(, &file_number)); + else +#endif return create_datetime_filename(buffer, buffer, "R", ext, true); #else return create_numbered_filename(buffer, buffer, "rec_", ext, 4 diff --git a/apps/scrobbler.c b/apps/scrobbler.c index a339429cab..1c0d98cbc6 100644 --- a/apps/scrobbler.c +++ b/apps/scrobbler.c @@ -35,6 +35,7 @@ http://www.audioscrobbler.net/wiki/Portable_Player_Logging #ifdef CONFIG_RTC #include "time.h" #include "timefuncs.h" +#include "rtc.h" #endif #include "scrobbler.h" @@ -208,6 +209,11 @@ void scrobbler_change_event(struct mp3entry *id) logf("SCROBBLER: add pending"); copy_mp3entry(&scrobbler_entry, id); #ifdef CONFIG_RTC +#if CONFIG_RTC == RTC_DS1339_DS3231 + if(!rtc_detected) + timestamp = 0; + else +#endif timestamp = mktime(get_time()); #else timestamp = 0; -- cgit v1.2.3