- if (i2c_start(address | I2C_READ)) return 1;
-
- for (uint16_t i = 0; i < (length-1); i++)
- {
- data[i] = i2c_read_ack();
+ i2c_status_t status = i2c_start(address | I2C_READ, timeout);
+ if (status) return status;
+
+ for (uint16_t i = 0; i < (length-1); i++) {
+ status = i2c_read_ack(timeout);
+ if (status >= 0) {
+ data[i] = status;
+ } else {
+ return status;
+ }