An improved version of mbed's I2C class.
Dependents: acd52832_Humidity_Temp_Example BB acnSensa_LIS aconnoCellularGnss ... more
Revision 6:4d1b387c12c3, committed 2018-07-19
- 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*)®Data, regSize);
+ mask = 0 | newValue << offset;
+ // Clear bits
+ regData &= ~(((1 << numOfBits)-1) << offset);
+ regData |= mask; // Set/clear bits as required
+ writeToReg(regAddress, (char*)®Data, 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
-