diff --git a/epicardium/modules/hardware.c b/epicardium/modules/hardware.c index 055ae486b391ca0b46b6737689141e1ea175014b..a05c65f38af808b714de9158a71536c77452d482 100644 --- a/epicardium/modules/hardware.c +++ b/epicardium/modules/hardware.c @@ -13,6 +13,7 @@ #include "pb.h" #include "pmic.h" #include "portexpander.h" +#include "max86150.h" #include "gpio.h" #include "i2c.h" @@ -191,6 +192,8 @@ int hardware_early_init(void) */ max86150_mutex_init(); + max86150_shut_down(); + /* Allow user space to trigger interrupts. * Used for BLE, not sure if needed. */ SCB->CCR |= SCB_CCR_USERSETMPEND_Msk; diff --git a/epicardium/modules/max86150.c b/epicardium/modules/max86150.c index fac9fbc511ca94c6f14a95cbe25097c188a013b6..0ed8367e04442a509396fa631acde48c049437c9 100644 --- a/epicardium/modules/max86150.c +++ b/epicardium/modules/max86150.c @@ -106,23 +106,16 @@ int epic_max86150_disable_sensor(void) mutex_lock(&max86150_mutex); hwlock_acquire(HWLOCK_I2C); + max86150_shut_down(); + max86150_sensor_active = false; + struct stream_info *stream = &max86150_stream; result = stream_deregister(SD_MAX86150, stream); - if (result < 0) { - goto out_free; + if (result == 0) { + vQueueDelete(stream->queue); + stream->queue = NULL; } - vQueueDelete(stream->queue); - stream->queue = NULL; - - // disable max86150 leds - max86150_set_led_red_amplitude(0); - max86150_set_led_ir_amplitude(0); - - max86150_sensor_active = false; - - result = 0; -out_free: hwlock_release(HWLOCK_I2C); mutex_unlock(&max86150_mutex); return result;