Set timeout of 1s on reads
This commit is contained in:
@ -218,7 +218,7 @@ int main() {
|
||||
if (!(baro=mgos_barometer_create_i2c(i2c, 0x60, BARO_MPL3115))) {
|
||||
LOG(LL_ERROR, ("Cannot create barometer"));
|
||||
} else {
|
||||
mgos_barometer_set_cache_ttl(baro, 0);
|
||||
mgos_barometer_set_cache_ttl(baro, 1000);
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
|
@ -61,11 +61,21 @@ bool mgos_barometer_mpl3115_read(struct mgos_barometer *dev) {
|
||||
}
|
||||
|
||||
uint8_t val = 0;
|
||||
while (!(val & 0x80)) { // Data Ready
|
||||
uint8_t retries=100;
|
||||
if ((val = mgos_i2c_read_reg_b(dev->i2c, dev->i2caddr, MPL3115_REG_STATUS)) < 0)
|
||||
return false;
|
||||
|
||||
while (!(val & 0x08) && retries>0) { // Data Ready
|
||||
if ((val = mgos_i2c_read_reg_b(dev->i2c, dev->i2caddr, MPL3115_REG_STATUS)) < 0) {
|
||||
return false;
|
||||
}
|
||||
mgos_usleep(10000);
|
||||
LOG(LL_DEBUG, ("Snoozing, retries=%d", retries));
|
||||
retries--;
|
||||
}
|
||||
if (retries==0) {
|
||||
LOG(LL_ERROR, ("Timed out waiting for data ready"));
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32_t pressure;
|
||||
|
Reference in New Issue
Block a user