35 #include <sys/ioctl.h>
37 #include <linux/i2c-dev.h>
47 template<u16 InterfaceNumber>
56 I2C::s_fileHandle = open((
"/dev/i2c-" + std::to_string(InterfaceNumber)).c_str(), O_RDWR);
57 return I2C::s_fileHandle != -1;
66 close(I2C::s_fileHandle);
78 static void read(
u8 address, std::array<u8, N> &data) {
79 ::ioctl(I2C::s_fileHandle, I2C_SLAVE, address >> 1);
80 ::read(I2C::s_fileHandle, data.data(), N);
91 static void write(
u8 address,
const std::array<u8, N> &data) {
92 ::ioctl(I2C::s_fileHandle, I2C_SLAVE, address >> 1);
93 ::write(I2C::s_fileHandle, data.data(), N);
97 static inline int s_fileHandle = -1;