- if (i2c_start(devaddr)) return 1;
-
- i2c_write(regaddr);
-
- if (i2c_start(devaddr | 0x01)) return 1;
-
- for (uint16_t i = 0; i < (length-1); i++)
- {
- data[i] = i2c_read_ack();
+ i2c_status_t status = i2c_start(devaddr, timeout);
+ if (status) return status;
+
+ status = i2c_write(regaddr, timeout);
+ if (status) return status;
+
+ status = i2c_start(devaddr | 0x01, 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;
+ }