Cosmetic changes to I2C code

This commit is contained in:
RichardG867
2020-12-03 15:02:21 -03:00
parent e99be915d4
commit 02b060c5d8
2 changed files with 221 additions and 217 deletions

View File

@@ -122,7 +122,7 @@ i2c_gpio_set(void *dev_handle, uint8_t scl, uint8_t sda)
switch (dev->slave_read) { switch (dev->slave_read) {
case 2: /* address transfer */ case 2: /* address transfer */
dev->slave_addr = dev->byte >> 1; dev->slave_addr = dev->byte >> 1;
dev->slave_read = (dev->byte & 1); dev->slave_read = dev->byte & 1;
/* slave ACKs? */ /* slave ACKs? */
dev->slave_sda = !(i2c_has_device(dev->i2c, dev->slave_addr) && i2c_start(dev->i2c, dev->slave_addr, dev->slave_read)); dev->slave_sda = !(i2c_has_device(dev->i2c, dev->slave_addr) && i2c_start(dev->i2c, dev->slave_addr, dev->slave_read));
@@ -140,12 +140,16 @@ i2c_gpio_set(void *dev_handle, uint8_t scl, uint8_t sda)
break; break;
} }
} else if (dev->pos == 9) { } else if (dev->pos == 9) {
if (dev->slave_read == 1) { /* read transfer (unless we're in an address transfer) */ switch (dev->slave_read) {
case 1: /* read transfer (unless we're in an address transfer) */
if (!sda) /* master ACKs? */ if (!sda) /* master ACKs? */
dev->byte = i2c_read(dev->i2c, dev->slave_addr); dev->byte = i2c_read(dev->i2c, dev->slave_addr);
i2c_gpio_log(2, "I2C GPIO %s: Read %02X %sACK\n", dev->bus_name, dev->byte, sda ? "N" : ""); i2c_gpio_log(2, "I2C GPIO %s: Read %02X %sACK\n", dev->bus_name, dev->byte, sda ? "N" : "");
} else break;
default:
dev->slave_read &= 1; /* if we're in an address transfer, clear it */ dev->slave_read &= 1; /* if we're in an address transfer, clear it */
}
dev->pos = 0; /* start over */ dev->pos = 0; /* start over */
} }
} else if (dev->prev_scl && !scl && (dev->pos != 8)) { /* keep (N)ACK computed at the 8th bit when transitioning to the 9th bit */ } else if (dev->prev_scl && !scl && (dev->pos != 8)) { /* keep (N)ACK computed at the 8th bit when transitioning to the 9th bit */