Subversion Repositories idreammicro-arduino

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
21 jlesech 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
};