Set timeout of 1s on reads

This commit is contained in:
Pim van Pelt
2018-04-21 23:33:58 +02:00
parent 38fca7c650
commit b2f71583a1
2 changed files with 12 additions and 2 deletions

View File

@ -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 (;;) {

View File

@ -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;