#include "globals.h" #include #include #include #include #include #include #include #define I2C_BUS "/dev/i2c-3" gboolean write_error_flagged; gboolean read_error_flagged; 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); if ((device == -1) && !write_error_flagged) { write_error_flagged = TRUE; g_print_debug("ERROR: could not open I2C bus %s for writing\n", I2C_BUS); 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) && !read_error_flagged) { read_error_flagged = TRUE; g_print_debug("ERROR: could not open I2C bus %s for reading\n", I2C_BUS); return 0; } ioctl(device, I2C_SLAVE, address); ioctl(device, I2C_SMBUS, &argsread); close(device); return data.byte; }