IoT Morioka private / us_ticker_rtc
Committer:
YJKIYOKAWA
Date:
Tue Oct 11 05:11:40 2016 +0000
Revision:
0:321130411be8
us_ticker base rtc

Who changed what in which revision?

UserRevisionLine numberNew contents of line
YJKIYOKAWA 0:321130411be8 1 /*
YJKIYOKAWA 0:321130411be8 2 * Copyright (c) 2016 Delta Electronics(Japan), Inc
YJKIYOKAWA 0:321130411be8 3 *
YJKIYOKAWA 0:321130411be8 4 */
YJKIYOKAWA 0:321130411be8 5 #ifndef US_TICKER_RTC_H
YJKIYOKAWA 0:321130411be8 6 #define US_TICKER_RTC_H
YJKIYOKAWA 0:321130411be8 7
YJKIYOKAWA 0:321130411be8 8 #include <time.h>
YJKIYOKAWA 0:321130411be8 9
YJKIYOKAWA 0:321130411be8 10 #ifdef __cplusplus
YJKIYOKAWA 0:321130411be8 11 extern "C" {
YJKIYOKAWA 0:321130411be8 12 #endif
YJKIYOKAWA 0:321130411be8 13
YJKIYOKAWA 0:321130411be8 14 /**
YJKIYOKAWA 0:321130411be8 15 *
YJKIYOKAWA 0:321130411be8 16 * Provides Real-Time Clock (RTC) functions based on us_ticker.
YJKIYOKAWA 0:321130411be8 17 *
YJKIYOKAWA 0:321130411be8 18 * us_ticker count up 32 bit value in microseconds.
YJKIYOKAWA 0:321130411be8 19 * So it is overflow in 4294.967295 seconds = 71 minutes.
YJKIYOKAWA 0:321130411be8 20 * Need to call set_time() before overflow.
YJKIYOKAWA 0:321130411be8 21 *
YJKIYOKAWA 0:321130411be8 22 *
YJKIYOKAWA 0:321130411be8 23 * Example:
YJKIYOKAWA 0:321130411be8 24 * @code
YJKIYOKAWA 0:321130411be8 25 * #include "mbed.h"
YJKIYOKAWA 0:321130411be8 26 * #include "us_ticker_rtc.h"
YJKIYOKAWA 0:321130411be8 27 *
YJKIYOKAWA 0:321130411be8 28 * int main() {
YJKIYOKAWA 0:321130411be8 29 *
YJKIYOKAWA 0:321130411be8 30 * // Attach us_ticker base rtc functions to be used for the C time functions
YJKIYOKAWA 0:321130411be8 31 * attach_rtc(us_ticker_rtc_read, us_ticker_rtc_write, us_ticker_rtc_init, us_ticker_rtc_isenabled);
YJKIYOKAWA 0:321130411be8 32 *
YJKIYOKAWA 0:321130411be8 33 * time_t init_seconds = 1256729737; // Set RTC time to Wed, 28 Oct 2009 11:35:37
YJKIYOKAWA 0:321130411be8 34 * set_time(init_seconds);
YJKIYOKAWA 0:321130411be8 35 *
YJKIYOKAWA 0:321130411be8 36 * while(1) {
YJKIYOKAWA 0:321130411be8 37 * time_t seconds = time(NULL);
YJKIYOKAWA 0:321130411be8 38 * if ((seconds - init_seconds) > 3600)
YJKIYOKAWA 0:321130411be8 39 * {
YJKIYOKAWA 0:321130411be8 40 * set_time(seconds);
YJKIYOKAWA 0:321130411be8 41 * init_seconds = seconds;
YJKIYOKAWA 0:321130411be8 42 * }
YJKIYOKAWA 0:321130411be8 43 *
YJKIYOKAWA 0:321130411be8 44 * printf("Time as seconds since January 1, 1970 = %d\n", seconds);
YJKIYOKAWA 0:321130411be8 45 *
YJKIYOKAWA 0:321130411be8 46 * printf("Time as a basic string = %s", ctime(&seconds));
YJKIYOKAWA 0:321130411be8 47 *
YJKIYOKAWA 0:321130411be8 48 * char buffer[32];
YJKIYOKAWA 0:321130411be8 49 * strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds));
YJKIYOKAWA 0:321130411be8 50 * printf("Time as a custom formatted string = %s", buffer);
YJKIYOKAWA 0:321130411be8 51 *
YJKIYOKAWA 0:321130411be8 52 * wait(1);
YJKIYOKAWA 0:321130411be8 53 * }
YJKIYOKAWA 0:321130411be8 54 * }
YJKIYOKAWA 0:321130411be8 55 * @endcode
YJKIYOKAWA 0:321130411be8 56 */
YJKIYOKAWA 0:321130411be8 57
YJKIYOKAWA 0:321130411be8 58 void us_ticker_rtc_init(void);
YJKIYOKAWA 0:321130411be8 59 void us_ticker_rtc_free(void);
YJKIYOKAWA 0:321130411be8 60 int us_ticker_rtc_isenabled(void);
YJKIYOKAWA 0:321130411be8 61
YJKIYOKAWA 0:321130411be8 62 time_t us_ticker_rtc_read(void);
YJKIYOKAWA 0:321130411be8 63 void us_ticker_rtc_write(time_t t);
YJKIYOKAWA 0:321130411be8 64
YJKIYOKAWA 0:321130411be8 65 #ifdef __cplusplus
YJKIYOKAWA 0:321130411be8 66 }
YJKIYOKAWA 0:321130411be8 67 #endif
YJKIYOKAWA 0:321130411be8 68
YJKIYOKAWA 0:321130411be8 69 #endif