Dennis Smith / Mbed 2 deprecated NixieClock800Max

Dependencies:   PCF8583_rtc mbed

Revision:
1:a8b9fb95696b
Parent:
0:f09cf90def53
--- a/PCF8583_rtc.h	Sun Feb 09 00:25:21 2014 +0000
+++ b/PCF8583_rtc.h	Thu Feb 13 21:46:08 2014 +0000
@@ -1,26 +1,66 @@
 #include <mbed.h>
 
-#ifndef rtc_included
-#define rtc_included
+/** Set these public variables according to your locale, default is Australian English.  Default in brackets.
+ *  char *ShortDateFormat;  ("d,m,yy")
+ *  char *LongDateFormat;   ("dddd dd mmmm yyyy")
+ *  char *ShortTimeFormat;  ("d:m:yy")
+ *  char *LongTimeFormat;   ("dd:nn:yyyy")
+
+ *  char DateSeparator;     ("\")
+ *  char TimeSeparator;     (":")
+
+ *  char *ShortDayNames[7];    ({"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"})
+ *  char *LongDayNames[7];     ({"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"})
+ *  char *ShortMonthNames[12]; ({"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"})
+ *  char *LongMonthNames[12];  ({"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"})
+
+* Example:
+* @code
+* #include "mbed.h"
+* #include "PCF8583_rtc.h"
+*
+* I2C i2c(P0_10, P0_11);       // sda, scl
+* PCF8583rtc rtc(&i2c, 0xA2);
+* 
+*    struct DateTime_t dtl;
+*
+*    //Set the time
+*    dtl = rtc.read(TIME);
+*    dtl.time.hours = rtc.bin2bcd(11);
+*    dtl.time.minutes = rtc.bin2bcd(43);
+*    rtc.write(TIME, dtl);
+*
+*    //Set the Alarm  
+*    dtl = rtc.read(TIME);
+*    dtl.time.hours = rtc.bin2bcd(7);
+*    dtl.time.minutes = rtc.bin2bcd(30);
+*    rtc.write(ALARM, dtl);
+*
+*    //Read and display the time on the nixie display
+*    dtl = rtc.read(TIME);
+*    i2c.write(ADDR_8574_1, &dtl.time.hours, 1);
+*    i2c.write(ADDR_8574_2, &dtl.time.minutes, 1);
+*
+* @endcode
+
+  PCF8583rtc(I2C *i2c, char I2cAddress);
+
+  DateTime_t read(const char address);
+  void   write(const char address, DateTime_t dti);
+  void   FormatDateTime(char *dest, char *format);
+  bool   WriteNVram(char address, char * value, char num);
+  bool   ReadNVram(char address, char * dest, char num);
+  void   SetDateTime(DateTime_t dti);
+  struct DateTime_t GetDateTimeBCD(void);
+
+*/
+//#ifndef rtc_included
+//#define rtc_included
 
 #define PCF8583_addr        0xA2     // PCF8583 Write address,
-#define Write_addr          0xA2     // PCF8583 Write address,
-#define Read_addr           0xA3     // PCF8583 Read address
-#define SET_DATE_TIME       0x01
-#define GET_DATE_TIME       0x02
-#define SET_ALARM           0x09
-#define GET_ALARM           0x0A
 #define ON                  1
 #define OFF                 0
 
-#ifndef TRUE
-#define TRUE  1
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
 //Configuration Alarm Control Register
 #define alarm_enable_bit    0x04
 #define alarm_flag          0x02;
@@ -47,8 +87,8 @@
 #define ALARM               9
 
 struct Time_t {
-  char fmt_hours;
-  char am_pm_flag;
+  bool fmt_hours;
+  bool am_pm_flag;
   char hours;
   char minutes;
   char seconds;
@@ -72,7 +112,7 @@
   I2C *_i2c;
   
 public:
-  //Set these public variables according to your locale, default is Australia English
+
   char *ShortDateFormat;
   char *LongDateFormat;
   char *ShortTimeFormat;
@@ -86,18 +126,36 @@
   char *ShortMonthNames[12];
   char *LongMonthNames[12];
     
-  PCF8583rtc(I2C *i2c);
+  PCF8583rtc(I2C *i2c, char I2cAddress);
+
+/** read the current Time or Alarm
+*
+* @param address "TIME" = read the time, "ALARM" = read the alarm
+* @returns
+*   a DateTime_t structure
+*/
+  DateTime_t read(const char address);
 
-  int  bin2bcd(char value);
-  void read(const char address);
-  void write(const char address);
-  void FormatDateTime(char *dest, char *format);
-  bool WriteNVram(char address, char * value, char num);
-  bool ReadNVram(char address, char * dest, char num);
-  struct DateTime_t GetDateTime(void); 
-  struct DateTime_t GetDateTimeBCD(void); 
+/** write the current Time or Alarm
+*
+* @param address "TIME" = read the time, "ALARM" = read the alarm 
+* @param dti a DateTime_t structure containing the time or alarm data 
+*/
+  void   write(const char address, DateTime_t dti);
+
+  void   FormatDateTime(char *dest, char *format);
+
+  bool   WriteNVram(char address, char * value, char num);
+
+  bool   ReadNVram(char address, char * dest, char num);
+
+  void   SetDateTime(DateTime_t dti);
+
+  char bin2bcd(char value);
+  
 private:
   struct DateTime_t dt;
+  char   _I2cAddress;
 
   char Bcd2Char(char *d, char val, char WantLeadZero);
   void enableCounting(void);
@@ -162,4 +220,4 @@
  */
 //void WriteNVram(char address, char *value, char num);
 
-#endif
\ No newline at end of file
+//#endif
\ No newline at end of file