From cb1712d5d9e72d1ef8baab54868019576d00028c Mon Sep 17 00:00:00 2001
From: schneider <schneider@blinkenlichts.net>
Date: Fri, 24 Jan 2020 22:30:47 +0100
Subject: [PATCH] fix(leds): Consolidate led locking

---
 epicardium/modules/leds.c           |  8 ++------
 epicardium/modules/personal_state.c | 17 ++---------------
 2 files changed, 4 insertions(+), 21 deletions(-)

diff --git a/epicardium/modules/leds.c b/epicardium/modules/leds.c
index dd2c20ca..ffe5969e 100644
--- a/epicardium/modules/leds.c
+++ b/epicardium/modules/leds.c
@@ -99,9 +99,7 @@ void epic_leds_dim_top(uint8_t value)
 {
 	leds_set_dim_top(value);
 	if (personal_state_enabled() == 0) {
-		hwlock_acquire(HWLOCK_I2C);
-		leds_update();
-		hwlock_release(HWLOCK_I2C);
+		do_update();
 	}
 }
 
@@ -109,9 +107,7 @@ void epic_leds_dim_bottom(uint8_t value)
 {
 	leds_set_dim_bottom(value);
 	if (personal_state_enabled() == 0) {
-		hwlock_acquire(HWLOCK_I2C);
-		leds_update();
-		hwlock_release(HWLOCK_I2C);
+		do_update();
 	}
 }
 
diff --git a/epicardium/modules/personal_state.c b/epicardium/modules/personal_state.c
index e9390bf8..285cb872 100644
--- a/epicardium/modules/personal_state.c
+++ b/epicardium/modules/personal_state.c
@@ -31,13 +31,8 @@ int epic_personal_state_set(uint8_t state, bool persistent)
 	personal_state_persistent = persistent;
 
 	if (was_enabled && !_personal_state_enabled) {
-		hwlock_acquire(HWLOCK_LED);
-
 		leds_prep(PERSONAL_STATE_LED, 0, 0, 0);
-		leds_update_power();
-		leds_update();
-
-		hwlock_release(HWLOCK_LED);
+		epic_leds_update();
 	}
 
 	return 0;
@@ -58,8 +53,6 @@ void vLedTask(void *pvParameters)
 	const int led_animation_rate = 1000 / 25; /* 25Hz -> 40ms*/
 	while (1) {
 		if (_personal_state_enabled) {
-			hwlock_acquire(HWLOCK_LED);
-
 			led_animation_ticks++;
 			if (personal_state == STATE_NO_CONTACT) {
 				leds_prep(PERSONAL_STATE_LED, 255, 0, 0);
@@ -126,13 +119,7 @@ void vLedTask(void *pvParameters)
 							led_animation_rate))));
 			}
 
-			hwlock_acquire(HWLOCK_I2C);
-
-			leds_update_power();
-			leds_update();
-
-			hwlock_release(HWLOCK_I2C);
-			hwlock_release(HWLOCK_LED);
+			epic_leds_update();
 		}
 
 		vTaskDelay(led_animation_rate / portTICK_PERIOD_MS);
-- 
GitLab