23#include <linux/i2c-dev.h>
39 i2c_fd_ = open(i2c_device, O_RDWR);
41 perror(
"Failed to open I2C device");
46 perror(
"Failed to set I2C address");
67 std::array<uint8_t, 3> buffer = {reg,
static_cast<uint8_t
>(value >> 8),
68 static_cast<uint8_t
>(value & 0xFF)};
69 if (write(
i2c_fd_, buffer.data(), buffer.size()) != 3) {
70 perror(
"I2C write failed");
82 if (write(
i2c_fd_, ®, 1) != 1) {
83 perror(
"I2C write failed");
85 std::array<uint8_t, 2> buffer;
86 if (read(
i2c_fd_, buffer.data(), buffer.size()) != 2) {
87 perror(
"I2C read failed");
89 return (buffer[0] << 8) | buffer[1];
Definition of the I2CController class.
uint16_t readRegister(uint8_t reg) override
Read a 16-bit value from a register.
void writeRegister(uint8_t reg, uint16_t value) override
Write a 16-bit value to a register.
~I2CController() override
Destroy the I2CController object.
I2CController(const char *i2c_device, int address)
Construct a new I2CController object.