From 2433b2f049eb8e0838f2817660f883f59eecaa30 Mon Sep 17 00:00:00 2001
From: Rahix <rahix@rahix.de>
Date: Fri, 5 Jul 2019 21:30:56 +0200
Subject: [PATCH] fix(pycardium): Make leds module work with colors

Signed-off-by: Rahix <rahix@rahix.de>
---
 pycardium/modules/leds.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/pycardium/modules/leds.c b/pycardium/modules/leds.c
index 5efa13860..4892f573a 100644
--- a/pycardium/modules/leds.c
+++ b/pycardium/modules/leds.c
@@ -8,21 +8,21 @@ static mp_obj_t mp_leds_set(mp_obj_t led_in, mp_obj_t color_in)
 {
 	int led = mp_obj_get_int(led_in);
 
-	if (!mp_obj_is_type(color_in, &mp_type_list)) {
-		mp_raise_TypeError("color must be a list");
+	if (mp_obj_get_int(mp_obj_len(color_in)) < 3) {
+		mp_raise_ValueError("color must have 3 elements");
 	}
-	mp_obj_list_t* color = MP_OBJ_TO_PTR(color_in);
 
-	if (color->len < 3) {
-		mp_raise_ValueError("color list must have 3 elements");
-	}
-
-	epic_leds_set(
-		led,
-		mp_obj_get_int(color->items[0]),
-		mp_obj_get_int(color->items[1]),
-		mp_obj_get_int(color->items[2])
+	uint8_t red = mp_obj_get_int(
+		mp_obj_subscr(color_in, mp_obj_new_int(0), MP_OBJ_SENTINEL)
+	);
+	uint8_t green = mp_obj_get_int(
+		mp_obj_subscr(color_in, mp_obj_new_int(1), MP_OBJ_SENTINEL)
 	);
+	uint8_t blue = mp_obj_get_int(
+		mp_obj_subscr(color_in, mp_obj_new_int(2), MP_OBJ_SENTINEL)
+	);
+
+	epic_leds_set(led, red, green, blue);
 
 	return mp_const_none;
 }
-- 
GitLab