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))) { if (!(baro=mgos_barometer_create_i2c(i2c, 0x60, BARO_MPL3115))) {
LOG(LL_ERROR, ("Cannot create barometer")); LOG(LL_ERROR, ("Cannot create barometer"));
} else { } else {
mgos_barometer_set_cache_ttl(baro, 0); mgos_barometer_set_cache_ttl(baro, 1000);
} }
for (;;) { for (;;) {

View File

@ -61,11 +61,21 @@ bool mgos_barometer_mpl3115_read(struct mgos_barometer *dev) {
} }
uint8_t val = 0; 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) { if ((val = mgos_i2c_read_reg_b(dev->i2c, dev->i2caddr, MPL3115_REG_STATUS)) < 0) {
return false; return false;
} }
mgos_usleep(10000); 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; uint32_t pressure;