3 #include <linux/i2c-dev.h>
10 #define I2C_MSG_FMT __u8
13 #include <sys/ioctl.h>
22 this->
write(0x33, 0x66, 0x00);
27 uint16_t nMemAddressRead, uint16_t *data) {
33 char cmd[2] = {(char)(startAddress >> 8), (char)(startAddress & 0xFF)};
36 struct i2c_msg i2c_messages[2];
37 struct i2c_rdwr_ioctl_data i2c_messageset[1];
39 i2c_messages[0].addr = slaveAddr;
40 i2c_messages[0].flags = 0;
41 i2c_messages[0].len = 2;
43 i2c_messages[1].addr = slaveAddr;
44 i2c_messages[1].flags = I2C_M_RD | I2C_M_NOSTART;
45 i2c_messages[1].len = nMemAddressRead * 2;
47 i2c_messageset[0].msgs = i2c_messages;
48 i2c_messageset[0].nmsgs = 2;
50 memset(buf, 0, nMemAddressRead * 2);
51 if (ioctl(this->
i2c_fd, I2C_RDWR, &i2c_messageset) < 0) {
56 for (
int count = 0; count < nMemAddressRead; count++) {
58 *p++ = ((uint16_t)buf[i] << 8) | buf[i + 1];
65 char cmd[4] = {(char)(writeAddress >> 8), (char)(writeAddress & 0x00FF),
66 (char)(data >> 8), (char)(data & 0x00FF)};
69 struct i2c_msg i2c_messages[1];
70 struct i2c_rdwr_ioctl_data i2c_messageset[1];
72 i2c_messages[0].addr = slaveAddr;
73 i2c_messages[0].flags = 0;
74 i2c_messages[0].len = 4;
76 i2c_messageset[0].msgs = i2c_messages;
77 i2c_messageset[0].nmsgs = 1;
79 if (ioctl(this->
i2c_fd, I2C_RDWR, &i2c_messageset) < 0) {