From c0ba5e0c0d43ba8800feaf7f4a3f8b3a0637d849 Mon Sep 17 00:00:00 2001 From: Rahix <rahix@rahix.de> Date: Sat, 24 Aug 2019 20:25:31 +0200 Subject: [PATCH] fix(max30001): Initialize mutex before RTOS startup Signed-off-by: Rahix <rahix@rahix.de> --- epicardium/modules/hardware.c | 5 +++++ epicardium/modules/max30001.c | 6 +++++- epicardium/modules/modules.h | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/epicardium/modules/hardware.c b/epicardium/modules/hardware.c index 91a87471..17c70721 100644 --- a/epicardium/modules/hardware.c +++ b/epicardium/modules/hardware.c @@ -182,6 +182,11 @@ int hardware_early_init(void) */ dispatcher_mutex_init(); + /* + * MAX30001 mutex init + */ + max30001_mutex_init(); + return 0; } diff --git a/epicardium/modules/max30001.c b/epicardium/modules/max30001.c index 5cc3ef36..811af4bf 100644 --- a/epicardium/modules/max30001.c +++ b/epicardium/modules/max30001.c @@ -370,10 +370,14 @@ static void max300001_interrupt_callback(void *_) } /* }}} */ +void max30001_mutex_init(void) +{ + max30001_mutex = xSemaphoreCreateMutexStatic(&max30001_mutex_data); +} + void vMAX30001Task(void *pvParameters) { max30001_task_id = xTaskGetCurrentTaskHandle(); - max30001_mutex = xSemaphoreCreateMutexStatic(&max30001_mutex_data); int lockret = hwlock_acquire(HWLOCK_SPI_ECG, pdMS_TO_TICKS(100)); if (lockret < 0) { diff --git a/epicardium/modules/modules.h b/epicardium/modules/modules.h index 87124144..98b0d5e9 100644 --- a/epicardium/modules/modules.h +++ b/epicardium/modules/modules.h @@ -92,7 +92,9 @@ void disp_forcelock(); #define BHI160_MUTEX_WAIT_MS 50 void vBhi160Task(void *pvParameters); +/* ---------- MAX30001 ----------------------------------------------------- */ #define MAX30001_MUTEX_WAIT_MS 50 void vMAX30001Task(void *pvParameters); +void max30001_mutex_init(void); #endif /* MODULES_H */ -- GitLab