RTC Driver
DS3231.cpp
- Committer:
- sk398
- Date:
- 2016-02-20
- Revision:
- 0:4399479f355f
File content as of revision 0:4399479f355f:
#include "mbed.h" #include "DS3231.h" DS3231::DS3231(PinName sda,PinName scl) { _DS3231 = new I2C(sda,scl) ; } void DS3231::readControl() { int *a; a = DS3231::readBytes(MSB_OF_TEMP,1); int b = *a; printf("Control: %d\r\n",b); } /*----------------------------------------- I2C Functions -----------------------------------------*/ int DS3231::readByte(uint8_t registerAddress) { char address[1]; address[0] = registerAddress; if(_DS3231 -> write(DS3231_ADDRESS,address,SINGLE_BYTE,1)) { return -2; } else { uint8_t inBuffer[1]; if(_DS3231 -> read(DS3231_ADDRESS,(char *)inBuffer,SINGLE_BYTE,0)) { return -1; } else { return inBuffer[0]; } } } int *DS3231::readBytes(uint8_t registerAddress, uint8_t numBytes) { int g = -1; int *gPtr = &g; char address[1]; address[0] = registerAddress; if(_DS3231 -> write(DS3231_ADDRESS,address,SINGLE_BYTE,TRUE)) { return gPtr; } else { uint8_t inBuffer[numBytes]; uint8_t *inBufferPtr = &inBuffer[0]; if(_DS3231 -> read(DS3231_ADDRESS,(char *)inBuffer,numBytes,FALSE)) { return gPtr; } else { printf("Inside: %d\r\n",inBuffer[0]); return (int *)inBufferPtr; } } } int DS3231::writeByte(uint8_t registerAddress,uint8_t outBuffer) { char address[1]; address[0] = registerAddress; if(_DS3231 -> write(DS3231_ADDRESS,address,SINGLE_BYTE,TRUE)) { return 1; } else { char buffer[1]; buffer[0] = outBuffer; if(_DS3231 -> write(DS3231_ADDRESS,buffer,SINGLE_BYTE,FALSE)) { return 1; } else { return 0; } } } //int DS3231::writeBytes(uint8_t registerAddress, uint8_t *outBuffer, uint8_t numBytes) //{ // if(_DS3231 -> write(DS3231_ADDRESS,(char *)registerAddress,SINGLE_BYTE,TRUE)) // { // return 1; // } // else // { // if(_DS3231 -> write(DS3231_ADDRESS,(char *)outBuffer,numBytes,FALSE)) // { // return 1; // } // else // { // return 0; // } // }