RX8025 library
Dependents: mbed_RX8025 MAPLEminiA MAPLEminiA
See https://developer.mbed.org/users/yasuyuki/notebook/RX8025/
RX8025.cpp
- Committer:
- yasuyuki
- Date:
- 2014-11-08
- Revision:
- 0:6da3d94a7774
File content as of revision 0:6da3d94a7774:
//********************** // RX8025.cpp for mbed // // RX8025 rx8025(P0_5,P0_4); // or // I2C i2c(P0_5,P0_4); // RX8025 rx8025(i2c); // // (C)Copyright 2014 All rights reserved by Y.Onodera // http://einstlab.web.fc2.com //********************** #include "mbed.h" #include "RX8025.h" RX8025::RX8025 (PinName sda, PinName scl) : _i2c(sda, scl) { init(); } RX8025::RX8025 (I2C& p_i2c) : _i2c(p_i2c) { init(); } void RX8025::put(unsigned char a, unsigned char b) { wait_us(100); // wait 62us buf[0]=a; buf[1]=b; _i2c.write(RX8025_ADDR, buf, 2); } void RX8025::get(unsigned char a) { wait_us(100); // wait 62us buf[0] = a; _i2c.write(RX8025_ADDR, buf, 1, true); // no stop, repeated _i2c.read( RX8025_ADDR, buf, 1); } Times RX8025::getTIME() { get(RX8025_SECONDS); time.seconds=buf[0]; get(RX8025_MINUTES); time.minutes=buf[0]; get(RX8025_HOURS); time.hours=buf[0]; get(RX8025_WEEKDAYS); time.weekdays=buf[0]; get(RX8025_DAYS); time.days=buf[0]; get(RX8025_MONTHS); time.months=buf[0]; get(RX8025_YEARS); time.years=buf[0]; return time; } void RX8025::setTIME(Times t) { put(RX8025_SECONDS, t.seconds); put(RX8025_MINUTES, t.minutes); put(RX8025_HOURS, t.hours); put(RX8025_WEEKDAYS, t.weekdays); put(RX8025_DAYS, t.days); put(RX8025_MONTHS, t.months); put(RX8025_YEARS, t.years); } Alarmw RX8025::getALARMw() { get(RX8025_ALARM_W_M); alarmw.minute=buf[0]; get(RX8025_ALARM_W_H); alarmw.hour=buf[0]; get(RX8025_ALARM_W_W); alarmw.weekday=buf[0]; return alarmw; } void RX8025::setALARMw(Alarmw a) { put(RX8025_ALARM_W_M, a.minute); put(RX8025_ALARM_W_H, a.hour); put(RX8025_ALARM_W_W, a.weekday); } Alarmd RX8025::getALARMd() { get(RX8025_ALARM_D_M); alarmd.minute=buf[0]; get(RX8025_ALARM_D_H); alarmd.hour=buf[0]; return alarmd; } void RX8025::setALARMd(Alarmd a) { put(RX8025_ALARM_D_M, a.minute); put(RX8025_ALARM_D_H, a.hour); } Control RX8025::getCONTROL() { get(RX8025_CONTROL1); control.control1=buf[0]; get(RX8025_CONTROL2); control.control2=buf[0]; get(RX8025_OFFSET); control.offset=buf[0]; return control; } void RX8025::setCONTROL(Control c) { put(RX8025_CONTROL1, c.control1); put(RX8025_CONTROL2, c.control2); put(RX8025_OFFSET, c.offset); } void RX8025::init() { control.control1=0x00; control.control2=0x20; control.offset=0x00; setCONTROL(control); }