Hotboards MX / Hotboards_rtcc

Dependents:   Hotboards_rtcc_manual_timedate Hotboards_rtcc_timeSpan Hotboards_rtcc_alarm Hotboards_rtcc_compiler_timedate ... more

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Hotboards_rtcc.h Source File

Hotboards_rtcc.h

00001 /*
00002   Hotboards_rtcc.cpp - Library to read, write and control the real time clock MCP7941x included in rtc board.
00003   http://hotboards.org
00004   adapted and Taken from https://github.com/adafruit/RTClib
00005   Released into the public domain.
00006 */
00007  
00008 #ifndef Hotboards_rtcc_h
00009 #define Hotboards_rtcc_h
00010 
00011 #include "mbed.h"
00012 
00013 class TimeSpan;
00014 
00015 class DateTime 
00016 {
00017     public:
00018         DateTime( uint32_t t = 0 );
00019         DateTime( uint16_t year, uint8_t month, uint8_t day,
00020                   uint8_t hour = 0, uint8_t min = 0, uint8_t sec = 0, uint8_t dweek = 0 );
00021         DateTime( const DateTime& copy );
00022         DateTime( const char* date, const char* time );
00023         uint16_t year() const       { return 2000 + yOff; }
00024         uint8_t month() const       { return m; }
00025         uint8_t day() const         { return d; }
00026         uint8_t hour() const        { return hh; }
00027         uint8_t minute() const      { return mm; }
00028         uint8_t second() const      { return ss; }
00029         uint8_t dweek( void ) const { return ss; }
00030         uint8_t dayOfTheWeek( void ) const;
00031         // 32-bit times as seconds since 1/1/2000
00032         uint32_t secondstime( void ) const;  
00033         // 32-bit times as seconds since 1/1/1970
00034         uint32_t unixtime( void ) const;
00035         DateTime operator+(const TimeSpan& span);
00036         DateTime operator-(const TimeSpan& span);
00037         TimeSpan operator-(const DateTime& right);
00038 
00039         
00040     protected:
00041         uint8_t yOff, m, d, dw, hh, mm, ss;
00042 };
00043 
00044 // Timespan which can represent changes in time with seconds accuracy.
00045 class TimeSpan 
00046 {
00047 public:
00048     TimeSpan (int32_t seconds = 0);
00049     TimeSpan (int16_t days, int8_t hours, int8_t minutes, int8_t seconds);
00050     TimeSpan (const TimeSpan& copy);
00051     int16_t days() const         { return _seconds / 86400L; }
00052     int8_t  hours() const        { return _seconds / 3600 % 24; }
00053     int8_t  minutes() const      { return _seconds / 60 % 60; }
00054     int8_t  seconds() const      { return _seconds % 60; }
00055     int32_t totalseconds() const { return _seconds; }
00056 
00057     TimeSpan operator+(const TimeSpan& right);
00058     TimeSpan operator-(const TimeSpan& right);
00059 
00060 protected:
00061     int32_t _seconds;
00062 };
00063 
00064 class Hotboards_rtcc 
00065 {
00066     public:
00067         Hotboards_rtcc( I2C &i2c );
00068         void begin( void );
00069         void adjust( const DateTime &dt );
00070         DateTime now( void );
00071         uint8_t isrunning( void );
00072         void setVBAT( uint8_t OnOff );
00073         void setAlarm( const DateTime &dt, uint8_t alarm = 0 );
00074         uint8_t getAlarmStatus( uint8_t alarm = 0 );
00075         void clearAlarm( uint8_t alarm = 0 );
00076         void turnOnAlarm( uint8_t alarm = 0 );
00077         void turnOffAlarm( uint8_t alarm = 0 );
00078         
00079     protected:
00080         I2C _i2c;
00081         uint8_t on_off;
00082         
00083         void stop( void );
00084         uint8_t readReg( uint8_t address );
00085         void writeReg( uint8_t address, uint8_t val );
00086         uint8_t bcd2bin( uint8_t val );
00087         uint8_t bin2bcd( uint8_t val );
00088 
00089 };
00090 
00091 
00092 #endif
00093