]> git.piffa.net Git - arduino/blob - books/pdummies/Libraries/RTClib/RTClib.h
Merge branch 'master' of kim:/home/git/arduino
[arduino] / books / pdummies / Libraries / RTClib / RTClib.h
1 // Code by JeeLabs http://news.jeelabs.org/code/
2 // Released to the public domain! Enjoy!
3
4 // Simple general-purpose date/time class (no TZ / DST / leap second handling!)
5 class DateTime {
6 public:
7     DateTime (uint32_t t =0);
8     DateTime (uint16_t year, uint8_t month, uint8_t day,
9                 uint8_t hour =0, uint8_t min =0, uint8_t sec =0);
10     DateTime (const char* date, const char* time);
11     uint16_t year() const       { return 2000 + yOff; }
12     uint8_t month() const       { return m; }
13     uint8_t day() const         { return d; }
14     uint8_t hour() const        { return hh; }
15     uint8_t minute() const      { return mm; }
16     uint8_t second() const      { return ss; }
17     uint8_t dayOfWeek() const;
18
19     // 32-bit times as seconds since 1/1/2000
20     long secondstime() const;   
21     // 32-bit times as seconds since 1/1/1970
22     uint32_t unixtime(void) const;
23
24 protected:
25     uint8_t yOff, m, d, hh, mm, ss;
26 };
27
28 // RTC based on the DS1307 chip connected via I2C and the Wire library
29 class RTC_DS1307 {
30 public:
31   static uint8_t begin(void);
32     static void adjust(const DateTime& dt);
33     uint8_t isrunning(void);
34     static DateTime now();
35 };
36
37 // RTC using the internal millis() clock, has to be initialized before use
38 // NOTE: this clock won't be correct once the millis() timer rolls over (>49d?)
39 class RTC_Millis {
40 public:
41     static void begin(const DateTime& dt) { adjust(dt); }
42     static void adjust(const DateTime& dt);
43     static DateTime now();
44
45 protected:
46     static long offset;
47 };