diff --git a/epicardium/modules/bhi.c b/epicardium/modules/bhi.c index 811961413cbc9a5c2edd8ee044e71e11a0d32986..a40a73eb64a6503d47319c9bc25603f766e822cd 100644 --- a/epicardium/modules/bhi.c +++ b/epicardium/modules/bhi.c @@ -312,11 +312,15 @@ bhi160_handle_packet(bhy_data_type_t data_type, bhy_data_generic_t *sensor_data) data_vector.y = sensor_data->data_vector.y; data_vector.z = sensor_data->data_vector.z; data_vector.status = sensor_data->data_vector.status; - xQueueSend( - bhi160_streams[sensor_type].queue, - &data_vector, - BHI160_MUTEX_WAIT_MS - ); + + /* Discard overflow. See discussion in !316. */ + if (xQueueSend( + bhi160_streams[sensor_type].queue, + &data_vector, + 0) != pdTRUE) { + LOG_WARN("bhi160", "queue full for %d", sensor_type); + } + if (wakeup) { api_interrupt_trigger(epic_int); } diff --git a/epicardium/modules/max30001.c b/epicardium/modules/max30001.c index 811af4bf8aa274443abb1415a7586c2766660991..e3ad57da09bbcea572a336a7b5bb0a7ce343908a 100644 --- a/epicardium/modules/max30001.c +++ b/epicardium/modules/max30001.c @@ -155,13 +155,10 @@ static void max30001_handle_samples(int16_t *sensor_data, int16_t n) while (n--) { uint16_t data = -*sensor_data++; - if (xQueueSend( - max30001_stream.queue, - &data, - MAX30001_MUTEX_WAIT_MS) != pdTRUE) { - LOG_WARN( - "max30001", - "queue full"); // TODO; handle queue full + + /* Discard overflow. See discussion in !316. */ + if (xQueueSend(max30001_stream.queue, &data, 0) != pdTRUE) { + LOG_WARN("max30001", "queue full"); } } api_interrupt_trigger(EPIC_INT_MAX30001_ECG);