An improved version of mbed's I2C class.

Dependents:   acd52832_Humidity_Temp_Example BB acnSensa_LIS aconnoCellularGnss ... more

Files at this revision

API Documentation at this revision

Comitter:
jurica238814
Date:
Thu Jul 19 15:07:28 2018 +0200
Parent:
5:54ba0e4f13ae
Child:
7:b2f0c302ba6d
Commit message:
SetBits in reg method added

Changed in this revision

aconno_i2c.cpp Show annotated file Show diff for this revision Revisions of this file
aconno_i2c.h Show annotated file Show diff for this revision Revisions of this file
--- a/aconno_i2c.cpp	Thu Jul 19 12:48:11 2018 +0200
+++ b/aconno_i2c.cpp	Thu Jul 19 15:07:28 2018 +0200
@@ -19,6 +19,21 @@
     i2cAddress = address;
 }
 
+uint16_t aconno_i2c::changeRegBits(char regAddress, uint8_t regSize,
+	uint16_t newValue, uint16_t numOfBits, uint16_t offset)
+{
+	uint16_t mask;
+    uint16_t regData = 0;
+	// Read old configuration
+	readFromReg(regAddress, (char*)&regData, regSize);
+	mask = 0 | newValue << offset;
+	// Clear bits
+	regData &= ~(((1 << numOfBits)-1) << offset);
+	regData |= mask; // Set/clear bits as required
+    writeToReg(regAddress, (char*)&regData, regSize);
+    return regData;
+}
+
 /**
  * [aconno_i2c::writeToReg description]
  * @param  regAddress [description]
--- a/aconno_i2c.h	Thu Jul 19 12:48:11 2018 +0200
+++ b/aconno_i2c.h	Thu Jul 19 15:07:28 2018 +0200
@@ -21,10 +21,11 @@
                 uint8_t responseLen, bool repeated = false);
         uint8_t sendCommand(char *command, uint8_t len);
         uint8_t readBus(char *dataBuffer, int len);
+		uint16_t changeRegBits(char regAddress, uint8_t regSize,
+			uint16_t newValue, uint16_t numOfBits, uint16_t offset);
     private:
         uint8_t i2cAddress;
         I2C *i2c;
 };
 
 #endif // ACONNO_I2C_H
-