- mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOB); if (mcp23018_status) goto out;
- mcp23018_status = i2c_start(I2C_ADDR_READ); if (mcp23018_status) goto out;
- data = i2c_read_nack();
- data = ~data;
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, 0); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(GPIOB, 0); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_start(I2C_ADDR_READ, 0); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_read_nack(0); if (mcp23018_status < 0) goto out;
+ data = ~((uint8_t)mcp23018_status);