#include #include #include #include #include #include #include #define I2C_BUS "/dev/i2c-3" void I2C_Write(gulong address, guchar value) { struct i2c_smbus_ioctl_data argswrite; argswrite.read_write = I2C_SMBUS_WRITE; argswrite.size = I2C_SMBUS_BYTE; argswrite.data = NULL; argswrite.command = value; int device = open(I2C_BUS, O_RDWR); // FIXME? if (device == -1) { return; } ioctl(device, I2C_SLAVE, address); ioctl(device, I2C_SMBUS, &argswrite); close(device); } guchar I2C_Read(gulong address) { union i2c_smbus_data data; struct i2c_smbus_ioctl_data argsread; argsread.read_write = I2C_SMBUS_READ; argsread.size = I2C_SMBUS_BYTE; argsread.data = &data; argsread.command = 0; int device = open(I2C_BUS, O_RDWR); if (device == -1) { return 0; } ioctl(device, I2C_SLAVE, address); ioctl(device, I2C_SMBUS, &argsread); close(device); return data.byte; }