my prototype PCF8563's library

PCF8563.h

Committer:
irsanjul
Date:
2016-01-22
Revision:
0:47c63ed3af91

File content as of revision 0:47c63ed3af91:

#ifndef PCF8563_H
#define PCF8563_H

#define W8563_ADDR     0xA2    // I2C address for write
#define R8563_ADDR     0xA3    // I2C address for read
#define PCF8563_FREQ     400000  // bus speed 400 kHz

class PCF8563
{
public:
    PCF8563(PinName sda, PinName scl);

    /** Read current real time from PCF8563
     *
     * @returns
     *   current time on success,
     *   0 on error (I2C fail, clock not set)
     */
    time_t now();
    
    /** Write current real time to PCF8563
     *
     * @param time Real time to set up
     * @returns
     *   true on success,
     *   false on error (I2C fail)
     */
    bool set_time(time_t time);
    
    /** Write alarm time to PCF8563
     * @param time is set time for alarm
     * @returns
     *    true on success,
     *    false on error
     */
    bool set_alarm(time_t time);
    
    /**
     */
    bool alarmOff();
    
    /**
     */
    bool check_alarm();
    
    /**
     */
    
private:
    I2C pcf8563_i2c;

    static int bcdToDecimal(int bcd) {
        return ((bcd & 0xF0) >> 4) * 10 + (bcd & 0x0F);
    }

    static int decimalToBcd(int dec) {
        return (dec % 10) + ((dec / 10) << 4);
    }
};

#endif