An improved version of mbed's I2C class.
Dependents: acd52832_Humidity_Temp_Example BB acnSensa_LIS aconnoCellularGnss ... more
Diff: aconno_i2c.cpp
- Revision:
- 4:db46d6bb60f0
- Parent:
- 3:b9f3eef1fad9
- Child:
- 5:54ba0e4f13ae
--- a/aconno_i2c.cpp Tue Jan 02 15:46:59 2018 +0000 +++ b/aconno_i2c.cpp Thu May 24 17:50:45 2018 +0200 @@ -9,56 +9,94 @@ #include "aconno_i2c.h" +/** + * [aconno_i2c::aconno_i2c description] + * @param i2c [description] + * @param address [description] + */ aconno_i2c::aconno_i2c(I2C *i2c, char address){ - this->i2c = i2c; + this->i2c = i2c; i2cAddress = address; } +/** + * [aconno_i2c::writeToReg description] + * @param regAddress [description] + * @param data [description] + * @param len [description] + * @return [description] + */ uint8_t aconno_i2c::writeToReg(char regAddress, char *data, int len){ uint8_t success; /* 0 on success (ack), non-0 on failure (nack) */ char dataToSend[2]; - + dataToSend[0] = regAddress; dataToSend[1] = *data; success = i2c->write(i2cAddress & 0xFE, dataToSend, len + 1); // R/W bit is set low for a write command return success; } +/** + * [aconno_i2c::readFromReg description] + * @param regAddress [description] + * @param dataBuffer [description] + * @param len [description] + * @return [description] + */ 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; - + i2c->write(i2cAddress & 0xFE, ®Addr, 1); // R/W bit is set low for a write command success = i2c->read(i2cAddress | 0x01, dataBuffer, len); // R/W bit is set high for a read command return success; } -/* - * This method is used with sendCommand(char *command, uint8_t len) method when delay between command - * and response from the slave is required +/** + * This method is used with sendCommand(char *command, uint8_t len) method when delay between command + * and response from the slave is required + * @param dataBuffer [description] + * @param len [description] + * @return [description] */ uint8_t aconno_i2c::readBus(char *dataBuffer, int len){ uint8_t success; /* 0 on success (ack), non-0 on failure (nack) */ - + success = i2c->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. +/** + * This method is used to send commands to I2C Device. * Ex. send 2B command to Si7006 to get Device ID. + * @param command [description] + * @param len [description] + * @param response [description] + * @param responseLen [description] + * @param repeated [description] + * @return 0 on success (ack), non-0 on failure (nack) */ -uint8_t aconno_i2c::sendCommand(char *command, uint8_t len, char *response, uint8_t responseLen){ +uint8_t aconno_i2c::sendCommand(char *command, uint8_t len, char *response, + uint8_t responseLen, bool repeated) + { uint8_t success; /* 0 on success (ack), non-0 on failure (nack) */ - - i2c->write(i2cAddress & 0xFE, command, len); // R/W bit is set low for a write command - success = i2c->read(i2cAddress | 0x01, response, responseLen); // R/W bit is set high for a read command + + // R/W bit is set low for a write command + i2c->write(i2cAddress & 0xFE, command, len, repeated); + // R/W bit is set high for a read command + success = i2c->read(i2cAddress | 0x01, response, responseLen); return success; } +/** + * [aconno_i2c::sendCommand description] + * @param command [description] + * @param len [description] + * @return [description] + */ uint8_t aconno_i2c::sendCommand(char *command, uint8_t len){ uint8_t success; /* 0 on success (ack), non-0 on failure (nack) */ - + success = i2c->write(i2cAddress & 0xFE, command, len); return success; }