RTC Driver

Revision:
0:4399479f355f
diff -r 000000000000 -r 4399479f355f DS3231.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DS3231.cpp	Sat Feb 20 13:32:01 2016 +0000
@@ -0,0 +1,110 @@
+#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;
+//        }
+//    }
\ No newline at end of file