Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: WizFi250_AP_HelloWorld
Fork of mbed-src by
Diff: common/rtc_time.c
- Revision:
- 489:119543c9f674
- Parent:
- 221:8276e3a4886f
--- a/common/rtc_time.c Thu Mar 05 13:15:07 2015 +0000
+++ b/common/rtc_time.c Thu Mar 12 14:30:49 2015 +0000
@@ -19,6 +19,18 @@
#include "rtc_time.h"
#include "us_ticker_api.h"
+#if DEVICE_RTC
+static void (*_rtc_init)(void) = rtc_init;
+static int (*_rtc_isenabled)(void) = rtc_isenabled;
+static time_t (*_rtc_read)(void) = rtc_read;
+static void (*_rtc_write)(time_t t) = rtc_write;
+#else
+static void (*_rtc_init)(void) = NULL;
+static int (*_rtc_isenabled)(void) = NULL;
+static time_t (*_rtc_read)(void) = NULL;
+static void (*_rtc_write)(time_t t) = NULL;
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -29,15 +41,16 @@
#endif
{
-#if DEVICE_RTC
- if (!(rtc_isenabled())) {
- set_time(0);
+ if (_rtc_isenabled != NULL) {
+ if (!(_rtc_isenabled())) {
+ set_time(0);
+ }
}
- time_t t = rtc_read();
-
-#else
+
time_t t = 0;
-#endif
+ if (_rtc_read != NULL) {
+ t = _rtc_read();
+ }
if (timer != NULL) {
*timer = t;
@@ -46,10 +59,12 @@
}
void set_time(time_t t) {
-#if DEVICE_RTC
- rtc_init();
- rtc_write(t);
-#endif
+ if (_rtc_init != NULL) {
+ _rtc_init();
+ }
+ if (_rtc_write != NULL) {
+ _rtc_write(t);
+ }
}
clock_t clock() {
@@ -58,6 +73,17 @@
return t;
}
+void attach_rtc(time_t (*read_rtc)(void), void (*write_rtc)(time_t), void (*init_rtc)(void), int (*isenabled_rtc)(void)) {
+ __disable_irq();
+ _rtc_read = read_rtc;
+ _rtc_write = write_rtc;
+ _rtc_init = init_rtc;
+ _rtc_isenabled = isenabled_rtc;
+ __enable_irq();
+}
+
+
+
#ifdef __cplusplus
}
#endif
