/* ... */
/*
* Connect to the EEPROM. 0x50 is the device address.
* smbus_fp is a file pointer into the SMBus device.
*/
ioctl(smbus_fp, 0x50, slave);
/* Write a byte (0xAB) at memory offset 0 on the EEPROM */
i2c_smbus_write_byte_data(smbus_fp, 0, 0xAB);
/*
* This is the corresponding transaction observed
* on the bus after the write:
* S 0x50 Wr [A] 0 [A] 0xAB [A] P
*
* S is the start bit, 0x50 is the 7-bit slave address (0101000b),
* Wr is the write command (0b), A is the Accept bit (or
* acknowledgment) received by the host from the slave, 0 is the
* address offset on the slave device where the byte is to be
* written, 0xAB is the data to be written, and P is the stop bit.
* The data enclosed within [] is sent from the slave to the
* host, while the rest of the bits are sent by the host to the
* slave.
*/
/* Read a byte from offset 0 on the EEPROM */
res = i2c_smbus_read_byte_data(smbus_fp, 0);
/*
* This is the corresponding transaction observed
* on the bus after the read:
* S 0x50 Wr [A] 0 [A] S 0x50 Rd [A] [0xAB] NA P
*
* The explanation of the bits is the same as before, except that
* Rd stands for the Read command (1b), 0xAB is the data received
* from the slave, and NA is the Reverse Accept bit (or the
* acknowledgment sent by the host to the slave).
*/
syntax highlighted by Code2HTML, v. 0.9.1