An improved version of mbed's I2C class.

Dependents:   acd52832_Humidity_Temp_Example BB acnSensa_LIS aconnoCellularGnss ... more

Revision:
0:bfefd65ef71d
Child:
1:5ae1807e3902
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/aconno_i2c.cpp	Fri Sep 22 12:46:17 2017 +0000
@@ -0,0 +1,47 @@
+/*
+ *  I2C library made by Jurica Resetar @ aconno
+ *  2017
+ *  More info @ aconno.de
+ *  jurica_resetar@yahoo.com
+ *  All right reserved
+ *
+ */
+
+#include "aconno_i2c.h"
+
+aconno_i2c::aconno_i2c(PinName data, PinName clock, char address) : I2C(data, clock){
+    i2cAddress = address;
+} 
+
+uint8_t aconno_i2c::writeToReg(char regAddress, char *data, int len){
+    uint8_t success; /* '0' - NAK was received '1' - ACK was received, '2' - timeout */
+    char dataToSend[2];
+    
+    dataToSend[0] = regAddress;
+    dataToSend[1] = *data;
+    success = write(i2cAddress & 0xFE, dataToSend, len + 1); // R/W bit is set low for a write command
+    return success;
+}
+
+uint8_t aconno_i2c::readFromReg(char regAddress, char *dataBuffer, int len){
+    uint8_t success;    /* 0 on success (ack), non-0 on failure (nack) */
+    char regAddr = regAddress;
+    
+    write(i2cAddress & 0xFE, &regAddr, 1);               // R/W bit is set low for a write command
+    success = read(i2cAddress | 0x01, dataBuffer, len);     // R/W bit is set high for a read command
+    return success;
+}
+
+/*
+ *  This method is used to send commands to I2C Device. 
+ *  Ex. send 2B command to Si7006 to get Device ID.
+ */
+uint8_t aconno_i2c::sendCommand(char *command, uint8_t len, char *response, uint8_t responseLen){
+    uint8_t success;    /* 0 on success (ack), non-0 on failure (nack) */
+    
+    write(i2cAddress & 0xFE, command, len);               // R/W bit is set low for a write command
+    success = read(i2cAddress | 0x01, response, responseLen);     // R/W bit is set high for a read command
+    return success;
+}
+
+