diff --git a/lib/bme280_dht/bme280_dht.c b/lib/bme280_dht/bme280_dht.c index 801aacb..c1e1d26 100644 --- a/lib/bme280_dht/bme280_dht.c +++ b/lib/bme280_dht/bme280_dht.c @@ -77,16 +77,17 @@ bme280_ret_t bme280_measure(bme280_t *bme, bme280_result_t *result) { uint8_t status = 0; uint8_t ctrl_meas; uint8_t loop_count = 0; - bme->cb.read_register_cb(bme->user_data, 0xF4, &ctrl_meas, 0x01); + if(bme->cb.read_register_cb(bme->user_data, 0xF4, &ctrl_meas, 0x01) != BME_OK) return BME_FAIL; + bme->cb.write_register_cb(bme->user_data, 0xF4, ctrl_meas | BME_MODE_FORCED); do { - bme->cb.read_register_cb(bme->user_data, 0xF3, &status, 0x01); + if(bme->cb.read_register_cb(bme->user_data, 0xF3, &status, 0x01) != BME_OK) return BME_FAIL; loop_count++; bme->cb.delay_cb(bme->user_data, 100); } while(status & 0x08 && (loop_count < 12)); - bme->cb.read_register_cb(bme->user_data, 0xF7, measure_data, 0x08); + if(bme->cb.read_register_cb(bme->user_data, 0xF7, measure_data, 0x08) != BME_OK) return BME_FAIL; raw_P = ((uint32_t)measure_data[0] << 12) | ((uint32_t)measure_data[1] << 0x04) | ((uint32_t)measure_data[2] >> 0x04); raw_T = ((uint32_t)measure_data[3] << 12) | ((uint32_t)measure_data[4] << 0x04) | ((uint32_t)measure_data[5] >> 0x04); raw_H = ((uint32_t)measure_data[6] << 8) | ((uint32_t)measure_data[7]); diff --git a/src/drivers/user_gpio_driver.c b/src/drivers/user_gpio_driver.c index f818ffa..c68a334 100644 --- a/src/drivers/user_gpio_driver.c +++ b/src/drivers/user_gpio_driver.c @@ -79,9 +79,10 @@ int user_gpio_intr_poll(user_gpio_t *gpio, uint32_t timeout_ms, struct gpiod_line_event ev; int ret = gpiod_line_event_wait(gpio->line, &ts); - if(ret > 0) { - ret = gpiod_line_event_read(gpio->line, &ev); - } else return ret; + if(ret <= 0) return ret; + + ret = gpiod_line_event_read(gpio->line, &ev); + if(ret < 0) return ret; if(ev.event_type == GPIOD_LINE_EVENT_RISING_EDGE) { *event = USER_GPIO_INTR_RISING; diff --git a/src/tasks/user_dht_task.c b/src/tasks/user_dht_task.c index b7dff32..64d367f 100644 --- a/src/tasks/user_dht_task.c +++ b/src/tasks/user_dht_task.c @@ -33,7 +33,10 @@ void *user_dht_task(void *arguments) { } user_bme280_impl_t bme_impl; - user_bme280_impl_init(&bme_impl); + if(user_bme280_impl_init(&bme_impl) != 0) { + USER_LOG(USER_LOG_FATAL, "Failed to init BME280 implementation."); + return NULL; + } bme280_t bme = { .cb =