|
|
|
@ -13,6 +13,9 @@
@@ -13,6 +13,9 @@
|
|
|
|
|
#include <linux/i2c-dev.h> |
|
|
|
|
#ifndef I2C_SMBUS_BLOCK_MAX |
|
|
|
|
#include <linux/i2c.h> |
|
|
|
|
#define I2C_DATA_TYPE __u8 |
|
|
|
|
#else |
|
|
|
|
#define I2C_DATA_TYPE char |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
using namespace Linux; |
|
|
|
@ -142,13 +145,13 @@ uint8_t LinuxI2CDriver::readRegisters(uint8_t addr, uint8_t reg,
@@ -142,13 +145,13 @@ uint8_t LinuxI2CDriver::readRegisters(uint8_t addr, uint8_t reg,
|
|
|
|
|
addr : addr, |
|
|
|
|
flags : 0, |
|
|
|
|
len : 1, |
|
|
|
|
buf : (char *)® |
|
|
|
|
buf : (I2C_DATA_TYPE *)® |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
addr : addr, |
|
|
|
|
flags : I2C_M_RD, |
|
|
|
|
len : len, |
|
|
|
|
buf : (char *)data, |
|
|
|
|
buf : (I2C_DATA_TYPE *)data, |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
struct i2c_rdwr_ioctl_data i2c_data = { |
|
|
|
@ -179,11 +182,11 @@ uint8_t LinuxI2CDriver::readRegistersMultiple(uint8_t addr, uint8_t reg,
@@ -179,11 +182,11 @@ uint8_t LinuxI2CDriver::readRegistersMultiple(uint8_t addr, uint8_t reg,
|
|
|
|
|
msgs[i*2].addr = addr; |
|
|
|
|
msgs[i*2].flags = 0; |
|
|
|
|
msgs[i*2].len = 1; |
|
|
|
|
msgs[i*2].buf = (char *)® |
|
|
|
|
msgs[i*2].buf = ® |
|
|
|
|
msgs[i*2+1].addr = addr; |
|
|
|
|
msgs[i*2+1].flags = I2C_M_RD; |
|
|
|
|
msgs[i*2+1].len = len; |
|
|
|
|
msgs[i*2+1].buf = (char *)data; |
|
|
|
|
msgs[i*2+1].buf = (I2C_DATA_TYPE *)data; |
|
|
|
|
data += len; |
|
|
|
|
}; |
|
|
|
|
if (ioctl(_fd, I2C_RDWR, &i2c_data) == -1) { |
|
|
|
|