RX8025 library

Dependents:   mbed_RX8025 MAPLEminiA MAPLEminiA

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers RX8025.cpp Source File

RX8025.cpp

00001 //**********************
00002 // RX8025.cpp for mbed
00003 //
00004 // RX8025 rx8025(P0_5,P0_4);
00005 // or
00006 // I2C i2c(P0_5,P0_4);
00007 // RX8025 rx8025(i2c);
00008 //
00009 // (C)Copyright 2014 All rights reserved by Y.Onodera
00010 // http://einstlab.web.fc2.com
00011 //**********************
00012 
00013 #include "mbed.h"
00014 #include "RX8025.h"
00015 
00016 RX8025::RX8025 (PinName sda, PinName scl) : _i2c(sda, scl) {
00017     init();
00018 }
00019 RX8025::RX8025 (I2C& p_i2c) : _i2c(p_i2c) {
00020     init();
00021 }
00022 
00023 void RX8025::put(unsigned char a, unsigned char b)
00024 {
00025     wait_us(100);   // wait 62us
00026     buf[0]=a;
00027     buf[1]=b;
00028     _i2c.write(RX8025_ADDR, buf, 2);
00029 }
00030 
00031 
00032 void RX8025::get(unsigned char a)
00033 {
00034     wait_us(100);   // wait 62us
00035     buf[0] = a;
00036     _i2c.write(RX8025_ADDR, buf, 1, true); // no stop, repeated
00037     _i2c.read( RX8025_ADDR, buf, 1);
00038 
00039 }
00040 
00041 
00042 Times RX8025::getTIME()
00043 {
00044     get(RX8025_SECONDS);
00045     time.seconds=buf[0];
00046     get(RX8025_MINUTES);
00047     time.minutes=buf[0];
00048     get(RX8025_HOURS);
00049     time.hours=buf[0];
00050     get(RX8025_WEEKDAYS);
00051     time.weekdays=buf[0];
00052     get(RX8025_DAYS);
00053     time.days=buf[0];
00054     get(RX8025_MONTHS);
00055     time.months=buf[0];
00056     get(RX8025_YEARS);
00057     time.years=buf[0];
00058     return time;
00059 }
00060 
00061 
00062 void RX8025::setTIME(Times t)
00063 {
00064     put(RX8025_SECONDS, t.seconds);
00065     put(RX8025_MINUTES, t.minutes);
00066     put(RX8025_HOURS, t.hours);
00067     put(RX8025_WEEKDAYS, t.weekdays);
00068     put(RX8025_DAYS, t.days);
00069     put(RX8025_MONTHS, t.months);
00070     put(RX8025_YEARS, t.years);
00071 }
00072 
00073 
00074 Alarmw RX8025::getALARMw()
00075 {
00076     get(RX8025_ALARM_W_M);
00077     alarmw.minute=buf[0];
00078     get(RX8025_ALARM_W_H);
00079     alarmw.hour=buf[0];
00080     get(RX8025_ALARM_W_W);
00081     alarmw.weekday=buf[0];
00082     return alarmw;
00083 }
00084 
00085 
00086 void RX8025::setALARMw(Alarmw a)
00087 {
00088     put(RX8025_ALARM_W_M, a.minute);
00089     put(RX8025_ALARM_W_H, a.hour);
00090     put(RX8025_ALARM_W_W, a.weekday);
00091 }
00092 
00093 
00094 Alarmd RX8025::getALARMd()
00095 {
00096     get(RX8025_ALARM_D_M);
00097     alarmd.minute=buf[0];
00098     get(RX8025_ALARM_D_H);
00099     alarmd.hour=buf[0];
00100     return alarmd;
00101 }
00102 
00103 
00104 void RX8025::setALARMd(Alarmd a)
00105 {
00106     put(RX8025_ALARM_D_M, a.minute);
00107     put(RX8025_ALARM_D_H, a.hour);
00108 }
00109 
00110 
00111 Control RX8025::getCONTROL()
00112 {
00113     get(RX8025_CONTROL1);
00114     control.control1=buf[0];
00115     get(RX8025_CONTROL2);
00116     control.control2=buf[0];
00117     get(RX8025_OFFSET);
00118     control.offset=buf[0];
00119     return control;
00120 }
00121 
00122 
00123 void RX8025::setCONTROL(Control c)
00124 {
00125     put(RX8025_CONTROL1, c.control1);
00126     put(RX8025_CONTROL2, c.control2);
00127     put(RX8025_OFFSET, c.offset);
00128 }
00129 
00130 
00131 void RX8025::init()
00132 {
00133     control.control1=0x00;
00134     control.control2=0x20;
00135     control.offset=0x00;
00136     setCONTROL(control);
00137 }
00138 
00139