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))) {
|
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 (;;) {
|
||||||
|
@ -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;
|
||||||
|
Reference in New Issue
Block a user