diff --git a/epicardium/modules/leds.c b/epicardium/modules/leds.c index ed1ca2a61720d6f0ffecda97531e5790e4eb2062..b16a10227c516d22784e415654e48875d49bcfa5 100644 --- a/epicardium/modules/leds.c +++ b/epicardium/modules/leds.c @@ -7,79 +7,80 @@ void epic_leds_set(int led, uint8_t r, uint8_t g, uint8_t b) { - leds_prep(led, r, g, b); - leds_update_power(); - leds_update(); + leds_prep(led, r, g, b); + leds_update_power(); + leds_update(); } void epic_leds_set_hsv(int led, float h, float s, float v) { - leds_prep_hsv(led, h, s, v); - leds_update_power(); - leds_update(); + leds_prep_hsv(led, h, s, v); + leds_update_power(); + leds_update(); } void epic_leds_prep(int led, uint8_t r, uint8_t g, uint8_t b) { - leds_prep(led, r, g, b); + leds_prep(led, r, g, b); } void epic_leds_prep_hsv(int led, float h, float s, float v) { - leds_prep_hsv(led, h, s, v); + leds_prep_hsv(led, h, s, v); } void epic_leds_set_all(uint8_t *pattern_ptr, uint8_t len) { - uint8_t (*pattern)[3] = (uint8_t(*)[3])pattern_ptr; - for(int i=0;i<len;i++){ - leds_prep(i, pattern[i][0], pattern[i][1], pattern[i][2]); - } - leds_update_power(); - leds_update(); + uint8_t(*pattern)[3] = (uint8_t(*)[3])pattern_ptr; + for (int i = 0; i < len; i++) { + leds_prep(i, pattern[i][0], pattern[i][1], pattern[i][2]); + } + leds_update_power(); + leds_update(); } void epic_leds_set_all_hsv(float *pattern_ptr, uint8_t len) { - float (*pattern)[3] = (float(*)[3])pattern_ptr; - for(int i=0;i<len;i++){ - leds_prep_hsv(i, pattern[i][0], pattern[i][1], pattern[i][2]); - } - leds_update_power(); - leds_update(); + float(*pattern)[3] = (float(*)[3])pattern_ptr; + for (int i = 0; i < len; i++) { + leds_prep_hsv(i, pattern[i][0], pattern[i][1], pattern[i][2]); + } + leds_update_power(); + leds_update(); } void epic_leds_dim_top(uint8_t value) { - leds_set_dim_top(value); + leds_set_dim_top(value); } void epic_leds_dim_bottom(uint8_t value) { - leds_set_dim_bottom(value); + leds_set_dim_bottom(value); } void epic_leds_rocket_set(int led, uint8_t value) { - pmic_set_led(led, value); + pmic_set_led(led, value); } -void epic_flashlight(bool power){ - leds_flashlight(power); +void epic_flashlight(bool power) +{ + leds_flashlight(power); } void epic_leds_update(void) { - leds_update_power(); - leds_update(); + leds_update_power(); + leds_update(); } void epic_leds_powersave(bool eco) { - leds_powersave(eco); + leds_powersave(eco); } void epic_leds_set_gamma_table(uint8_t rgb_channel, uint8_t gamma_table[256]) { - leds_set_gamma_table(rgb_channel, gamma_table); + leds_set_gamma_table(rgb_channel, gamma_table); } diff --git a/hw-tests/dual-core/main.c b/hw-tests/dual-core/main.c index a63c4f38aec1522b7955a6fb4fe0cce64b80a874..5c27950215bd835ce488ba17225ab309b0f0468c 100644 --- a/hw-tests/dual-core/main.c +++ b/hw-tests/dual-core/main.c @@ -26,7 +26,7 @@ int main(void) // Release core1 core1_start((void *)0x10080000); - int h = 0; + int h = 0; while (1) { #define NUM 15 diff --git a/hw-tests/hello-world/main.c b/hw-tests/hello-world/main.c index 0741bae621cd13e574627dbc35d73aca35e53c7f..b797233be16784476f33da9201ecd1cab2b70a32 100644 --- a/hw-tests/hello-world/main.c +++ b/hw-tests/hello-world/main.c @@ -32,9 +32,9 @@ int main(void) Paint_DrawImage(Heart, 0, 0, 160, 80); LCD_Update(); - for(int i=0; i<11; i++) { -// leds_set_dim(i, 1); - } + for (int i = 0; i < 11; i++) { + // leds_set_dim(i, 1); + } int __attribute__((unused)) h = 0; while (1) { diff --git a/lib/card10/leds.c b/lib/card10/leds.c index 01a8352150b8b52cf83e0d020ccec88b3b8cd9de..44684a9e208eec68e3ea14c4b00a3f96f6a97a9b 100644 --- a/lib/card10/leds.c +++ b/lib/card10/leds.c @@ -4,21 +4,26 @@ #include <stdint.h> #include <string.h> #include <stdbool.h> -#include <stdio.h> -#define NUM_LEDS 15 +#include <stdio.h> +#define NUM_LEDS 15 #define DEFAULT_DIM_TOP 1 #define DEFAULT_DIM_BOTTOM 8 -#define MAX_DIM 8 - -static const gpio_cfg_t rgb_dat_pin = {PORT_1, PIN_14, GPIO_FUNC_OUT, GPIO_PAD_NONE}; -static const gpio_cfg_t rgb_clk_pin = {PORT_1, PIN_15, GPIO_FUNC_OUT, GPIO_PAD_NONE}; +#define MAX_DIM 8 + +static const gpio_cfg_t rgb_dat_pin = { + PORT_1, PIN_14, GPIO_FUNC_OUT, GPIO_PAD_NONE +}; +static const gpio_cfg_t rgb_clk_pin = { + PORT_1, PIN_15, GPIO_FUNC_OUT, GPIO_PAD_NONE +}; static uint8_t leds[NUM_LEDS][3]; static uint8_t gamma_table[3][256]; static uint8_t active_groups; static uint8_t bottom_dim; //index 11-14 -static uint8_t top_dim; //index 0-10 +static uint8_t top_dim; //index 0-10 static bool powersave; -static long powerup_wait_cycles = 500; //ugly hack, remove at nearest convenience +static long powerup_wait_cycles = + 500; //ugly hack, remove at nearest convenience /***** Functions *****/ // ***************************************************************************** @@ -182,17 +187,17 @@ static void leds_stop(void) uint8_t led_to_dim_value(uint8_t led) { - return (led < 11) ? top_dim : bottom_dim; + return (led < 11) ? top_dim : bottom_dim; } void leds_set_dim_top(uint8_t value) { - top_dim = (value > MAX_DIM) ? MAX_DIM : value; + top_dim = (value > MAX_DIM) ? MAX_DIM : value; } void leds_set_dim_bottom(uint8_t value) { - bottom_dim = (value > MAX_DIM) ? MAX_DIM : value; + bottom_dim = (value > MAX_DIM) ? MAX_DIM : value; } void leds_prep(uint8_t led, uint8_t r, uint8_t g, uint8_t b) @@ -229,84 +234,117 @@ void leds_prep_hsv(uint8_t led, float h, float s, float v) bool is_led_on(uint8_t led) // scheduled to be on after next update { - if(!led_to_dim_value(led)){return false;} - for(int i=0;i<3;i++){ - if(leds[led][i] != 0){return true;} - } - return false; + if (!led_to_dim_value(led)) { + return false; + } + for (int i = 0; i < 3; i++) { + if (leds[led][i] != 0) { + return true; + } + } + return false; } uint8_t led_to_group(uint8_t led) { - if(led==14){return 1;} - else if(led>=11){return 2;} - return 3; + if (led == 14) { + return 1; + } else if (led >= 11) { + return 2; + } + return 3; } uint8_t check_privilege(void) //returns number of hierarchical groups with power { - for(int i=0;i<NUM_LEDS;i++){ - if(is_led_on(i)){return led_to_group(i);} - } - return 0; + for (int i = 0; i < NUM_LEDS; i++) { + if (is_led_on(i)) { + return led_to_group(i); + } + } + return 0; } -uint8_t power_pin_conversion(uint8_t group){ - if(group==2){return 1;} - if(group==1){return 2;} - return 0; +uint8_t power_pin_conversion(uint8_t group) +{ + if (group == 2) { + return 1; + } + if (group == 1) { + return 2; + } + return 0; } -void power_all(void){ - for(int i=0;i<3;i++){ - portexpander_prep(i,0); - } - portexpander_update(); +void power_all(void) +{ + for (int i = 0; i < 3; i++) { + portexpander_prep(i, 0); + } + portexpander_update(); } -void leds_update_power(void){ - if(!powersave){return;} - uint8_t new_groups = check_privilege(); //there must be a prettier way to do this but meh - if(new_groups==active_groups){return;} - for(int i=0;i<3;i++){ - if(i<new_groups){portexpander_prep(power_pin_conversion(i), 0);} - else{portexpander_prep(power_pin_conversion(i), 1);} - } - portexpander_update(); - //TODO: move this delay into epicardium if us delay exists to avoid wasted cycles - if(active_groups<new_groups){ - for(int i = 0; i < powerup_wait_cycles; i++){ - __NOP(); - } - } - active_groups=new_groups; +void leds_update_power(void) +{ + if (!powersave) { + return; + } + uint8_t new_groups = + check_privilege(); //there must be a prettier way to do this but meh + if (new_groups == active_groups) { + return; + } + for (int i = 0; i < 3; i++) { + if (i < new_groups) { + portexpander_prep(power_pin_conversion(i), 0); + } else { + portexpander_prep(power_pin_conversion(i), 1); + } + } + portexpander_update(); + //TODO: move this delay into epicardium if us delay exists to avoid wasted cycles + if (active_groups < new_groups) { + for (int i = 0; i < powerup_wait_cycles; i++) { + __NOP(); + } + } + active_groups = new_groups; } -void leds_powersave(bool eco){ - powersave=eco; - if(!powersave){power_all();} - else{leds_update_power();} +void leds_powersave(bool eco) +{ + powersave = eco; + if (!powersave) { + power_all(); + } else { + leds_update_power(); + } } void leds_update(void) { - leds_start(); - for(int i=NUM_LEDS-1; i>=0; i--) { - leds_shift(gamma_table[0][leds[i][0]], gamma_table[1][leds[i][1]], gamma_table[2][leds[i][2]], led_to_dim_value(i)); - } - leds_stop(); + leds_start(); + for (int i = NUM_LEDS - 1; i >= 0; i--) { + leds_shift( + gamma_table[0][leds[i][0]], + gamma_table[1][leds[i][1]], + gamma_table[2][leds[i][2]], + led_to_dim_value(i) + ); + } + leds_stop(); } void leds_flashlight(bool power) { - portexpander_set(7, (power) ? 0 : 1); + portexpander_set(7, (power) ? 0 : 1); } void leds_set_gamma_table(uint8_t rgb_channel, uint8_t table[256]) { - for(int i=0; i<256; i++){ - gamma_table[rgb_channel][i]=table[i]; - } + for (int i = 0; i < 256; i++) { + gamma_table[rgb_channel][i] = table[i]; + } } void leds_init(void) @@ -319,19 +357,19 @@ void leds_init(void) memset(leds, 0, sizeof(leds)); - powersave = TRUE; - top_dim = DEFAULT_DIM_TOP; - bottom_dim = DEFAULT_DIM_BOTTOM; - for(int i=0; i<NUM_LEDS; i++) { - for(int j=0; j<3; j++){ - leds[i][j] = 0; - } - } - for(int i=0; i<256; i++){ - for(int j=0; j<3;j++){ - int k = (i*(1+i)+255)>>8; - gamma_table[j][i]=(k*(k+1)+255)>>8; - } - } - leds_update(); + powersave = TRUE; + top_dim = DEFAULT_DIM_TOP; + bottom_dim = DEFAULT_DIM_BOTTOM; + for (int i = 0; i < NUM_LEDS; i++) { + for (int j = 0; j < 3; j++) { + leds[i][j] = 0; + } + } + for (int i = 0; i < 256; i++) { + for (int j = 0; j < 3; j++) { + int k = (i * (1 + i) + 255) >> 8; + gamma_table[j][i] = (k * (k + 1) + 255) >> 8; + } + } + leds_update(); } diff --git a/pycardium/modules/py/ledfx.py b/pycardium/modules/py/ledfx.py index 51a731a5a81c603375aaff51805c1f758176d85b..5a52ec447d9fe2508151d29b4c4d1281f32861a8 100644 --- a/pycardium/modules/py/ledfx.py +++ b/pycardium/modules/py/ledfx.py @@ -1,31 +1,45 @@ import leds, utime, math -def kitt(cycles=100, delay=80, power=10, minimum=0.3, rgb=[255,0,0], spectrum = [], halo = False): - #prepare lookup table - kitt_table = [((-math.cos(math.pi*(x/10.0)))+1)/2.0 for x in range(21)] - kitt_table = [math.pow(x,power)*(1-minimum)+minimum for x in kitt_table] +def kitt( + cycles=100, + delay=80, + power=10, + minimum=0.3, + rgb=[255, 0, 0], + spectrum=[], + halo=False, +): - #start loop + # prepare lookup table + kitt_table = [((-math.cos(math.pi * (x / 10.0))) + 1) / 2.0 for x in range(21)] + kitt_table = [math.pow(x, power) * (1 - minimum) + minimum for x in kitt_table] + + # start loop for i in range(cycles): - #compute position of center + # compute position of center j = i % 20 - if j>10: - j = 20-j + if j > 10: + j = 20 - j - #prepare output table and print + # prepare output table and print if spectrum == []: used_leds = 11 - output = [[int(x*y) for y in rgb] for x in kitt_table[j:(j+11)]] + output = [[int(x * y) for y in rgb] for x in kitt_table[j : (j + 11)]] else: used_leds = len(spectrum) - output = [[int(y*kitt_table[j+x]) for y in spectrum[x]] for x in range(used_leds)] + output = [ + [int(y * kitt_table[j + x]) for y in spectrum[x]] + for x in range(used_leds) + ] if halo: - output += [[0,0,0]]*(11-used_leds) - output += [output[used_leds-1]]+[output[0]]*2+[output[used_leds-1]] + output += [[0, 0, 0]] * (11 - used_leds) + output += ( + [output[used_leds - 1]] + [output[0]] * 2 + [output[used_leds - 1]] + ) leds.set_all(output) utime.sleep_ms(delay) - #cleanup after loop has finished + # cleanup after loop has finished leds.clear() diff --git a/pycardium/modules/py/leds.py b/pycardium/modules/py/leds.py index 5b21e35caf169244e387d263608f786e2cd0e8a4..9d4ae4a6b2dfcd176faf0d27b1e87e2f13556000 100644 --- a/pycardium/modules/py/leds.py +++ b/pycardium/modules/py/leds.py @@ -1,5 +1,6 @@ import sys_leds import math + """ the led class does led stuff. some notes: - the hardware allows for led values to only be set in bulk, so for maximum speed all new led values should be set first before updating. @@ -7,59 +8,77 @@ import math - upon further consideration it might be best to implement macro functions in pycardium/modules/sys_leds.c if best performance is what you seek """ + def update(): sys_leds.update() + def clear(): - values = [[0,0,0] for x in range(15)] + values = [[0, 0, 0] for x in range(15)] sys_leds.set_all(values) + def flashlight(on): sys_leds.flashlight(on) + def dim_top(dim): sys_leds.dim_top(dim) sys_leds.update() + def dim_bottom(dim): sys_leds.dim_bottom(dim) sys_leds.update() + def rocket(led, value): sys_leds.rocket_set(led, value) + def prep(led, value): sys_leds.prep(led, value) + def prep_hsv(led, value): sys_leds.prep_hsv(led, value) + def set(led, value): sys_leds.set(led, value) + def set_hsv(led, value): sys_leds.set_hsv(led, value) + def set_all(values): sys_leds.set_all(values) + def set_all_hsv(values): sys_leds.set_all_hsv(values) + def gay(value=0.5): - values=[[((x*360.0)/11),1.0,value] for x in range(11)] + values = [[((x * 360.0) / 11), 1.0, value] for x in range(11)] sys_leds.set_all_hsv(values) + def powersave(eco=True): sys_leds.powersave(eco) + def gamma(power=4.0): - table = [int(math.ceil(math.pow((x/255.0),power)*255)) for x in range(256)] + table = [int(math.ceil(math.pow((x / 255.0), power) * 255)) for x in range(256)] for i in range(3): - sys_leds.set_gamma(i,table) + sys_leds.set_gamma(i, table) sys_leds.update() -def gamma_rgb(channel,power=4.0, gain=1.0): - table = [int(math.ceil(math.pow((x/255.0),power)*gain*255)) for x in range(256)] - sys_leds.set_gamma(channel,table) + +def gamma_rgb(channel, power=4.0, gain=1.0): + table = [ + int(math.ceil(math.pow((x / 255.0), power) * gain * 255)) for x in range(256) + ] + sys_leds.set_gamma(channel, table) sys_leds.update() diff --git a/pycardium/modules/py/prideleds.py b/pycardium/modules/py/prideleds.py index 36a6770c044356e75a64d5627d26912abc2ba229..f5788ccc4cf5fd41089b395dedb26c19bdd1d3d2 100644 --- a/pycardium/modules/py/prideleds.py +++ b/pycardium/modules/py/prideleds.py @@ -1,39 +1,121 @@ flags = {} -flags['rainbow'] = ([255,0,24],[255, 165, 44],[255,255,65],[0,128,24],[0,0,249],[134,0,125]) -flags['trans'] = ([85,205,252],[247,168,184],[255,255,255],[247,168,184],[85,205,252]) -flags['bi'] = ([214,2,112],[155,79,150],[0,56,168]) -flags['ace'] = ([1,1,1],[164,164,164],[255,255,255],[150,0,150]) -flags['greyace'] = ([150,0,150],[164,164,164],[255,255,255],[164,164,164],[150,0,150]) -flags['aro'] = ([61,165,66],[167,211,121],[255,255,255],[169,169,169],[1,1,1]) -flags['greyaro'] = ([61,165,66],[164,164,164],[255,255,255],[164,164,164],[61,165,66]) -flags['pan'] = ([255,27,141],[255,218,0],[27,179,255]) -flags['inter'] = ([255,218,0],[122,0,172]) -flags['genderqueer'] = ([201,138,255],[255,255,255],[80,150,85]) -flags['lesbian'] = ([139,60,105],[171,99,143],[187,127,179],[255,255,255],[214,113,113],[134,70,70]) -flags['nonbinary'] = ([255,244,51],[255,255,255],[155,89,208],[0,0,0]) -flags['genderfluid'] = ([254,117,161],[255,255,255],[189,22,213],[0,0,0],[50,61,187]) -flags['agender'] = ([0,0,0],[150,150,150],[150,150,150],[255,255,255],[182,245,131],[182,245,131],[255,255,255],[150,150,150],[150,150,150],[0,0,0]) -flags['poly'] = ([0,0,255],[0,0,255],[0,0,255],[255,0,0],[255,0,0],[255,255,0],[255,0,0],[255,0,0],[0,0,0],[0,0,0],[0,0,0]) +flags["rainbow"] = ( + [255, 0, 24], + [255, 165, 44], + [255, 255, 65], + [0, 128, 24], + [0, 0, 249], + [134, 0, 125], +) +flags["trans"] = ( + [85, 205, 252], + [247, 168, 184], + [255, 255, 255], + [247, 168, 184], + [85, 205, 252], +) +flags["bi"] = ([214, 2, 112], [155, 79, 150], [0, 56, 168]) +flags["ace"] = ([1, 1, 1], [164, 164, 164], [255, 255, 255], [150, 0, 150]) +flags["greyace"] = ( + [150, 0, 150], + [164, 164, 164], + [255, 255, 255], + [164, 164, 164], + [150, 0, 150], +) +flags["aro"] = ( + [61, 165, 66], + [167, 211, 121], + [255, 255, 255], + [169, 169, 169], + [1, 1, 1], +) +flags["greyaro"] = ( + [61, 165, 66], + [164, 164, 164], + [255, 255, 255], + [164, 164, 164], + [61, 165, 66], +) +flags["pan"] = ([255, 27, 141], [255, 218, 0], [27, 179, 255]) +flags["inter"] = ([255, 218, 0], [122, 0, 172]) +flags["genderqueer"] = ([201, 138, 255], [255, 255, 255], [80, 150, 85]) +flags["lesbian"] = ( + [139, 60, 105], + [171, 99, 143], + [187, 127, 179], + [255, 255, 255], + [214, 113, 113], + [134, 70, 70], +) +flags["nonbinary"] = ([255, 244, 51], [255, 255, 255], [155, 89, 208], [0, 0, 0]) +flags["genderfluid"] = ( + [254, 117, 161], + [255, 255, 255], + [189, 22, 213], + [0, 0, 0], + [50, 61, 187], +) +flags["agender"] = ( + [0, 0, 0], + [150, 150, 150], + [150, 150, 150], + [255, 255, 255], + [182, 245, 131], + [182, 245, 131], + [255, 255, 255], + [150, 150, 150], + [150, 150, 150], + [0, 0, 0], +) +flags["poly"] = ( + [0, 0, 255], + [0, 0, 255], + [0, 0, 255], + [255, 0, 0], + [255, 0, 0], + [255, 255, 0], + [255, 0, 0], + [255, 0, 0], + [0, 0, 0], + [0, 0, 0], + [0, 0, 0], +) import leds, math, ledfx -def show(flag='rainbow', brightness = 0.5, gamma = 1, cutoff = 12): - colors = [[int(255*brightness*math.pow((y/255.0),gamma)) for y in x] for x in flags[flag]] - leds_per_color = int(cutoff/len(colors)) + +def show(flag="rainbow", brightness=0.5, gamma=1, cutoff=12): + colors = [ + [int(255 * brightness * math.pow((y / 255.0), gamma)) for y in x] + for x in flags[flag] + ] + leds_per_color = int(cutoff / len(colors)) output = [] for i in colors: - output += [i]*leds_per_color + output += [i] * leds_per_color leds.clear() leds.set_all(output[::-1][0:11]) -def get(flag='rainbow', brightness = 1, gamma = 1, cutoff = 12): - colors = [[int(255*brightness*math.pow((y/255.0),gamma)) for y in x] for x in flags[flag]] - leds_per_color = int(cutoff/len(colors)) + +def get(flag="rainbow", brightness=1, gamma=1, cutoff=12): + colors = [ + [int(255 * brightness * math.pow((y / 255.0), gamma)) for y in x] + for x in flags[flag] + ] + leds_per_color = int(cutoff / len(colors)) output = [] for i in colors: - output += [i]*leds_per_color + output += [i] * leds_per_color return output[::-1][0:11] + def demo(s_delay=2): for i in flags: print(i) - ledfx.kitt(delay=int((1000*s_delay)/40), minimum = 0.7, spectrum=get(flag=i), cycles=40, halo=True) + ledfx.kitt( + delay=int((1000 * s_delay) / 40), + minimum=0.7, + spectrum=get(flag=i), + cycles=40, + halo=True, + ) diff --git a/pycardium/modules/sys_leds.c b/pycardium/modules/sys_leds.c index 0a0ff0fa86dc0ec3b007e153df6dbac84c048ed3..aa53c68a7ce35bf9ec4e77a2fd37fb0591a02279 100644 --- a/pycardium/modules/sys_leds.c +++ b/pycardium/modules/sys_leds.c @@ -103,42 +103,46 @@ static MP_DEFINE_CONST_FUN_OBJ_2(leds_prep_hsv_obj, mp_leds_prep_hsv); static mp_obj_t mp_leds_set_all(mp_obj_t color_in) { - uint8_t len = mp_obj_get_int(mp_obj_len(color_in)); + uint8_t len = mp_obj_get_int(mp_obj_len(color_in)); uint8_t pattern[len][3]; - for(int i=0;i<len;i++){ - mp_obj_t color = mp_obj_subscr(color_in, mp_obj_new_int(i), MP_OBJ_SENTINEL); - pattern[i][0] = mp_obj_get_int( - mp_obj_subscr(color, mp_obj_new_int(0), MP_OBJ_SENTINEL) - ); - pattern[i][1] = mp_obj_get_int( - mp_obj_subscr(color, mp_obj_new_int(1), MP_OBJ_SENTINEL) - ); - pattern[i][2] = mp_obj_get_int( - mp_obj_subscr(color, mp_obj_new_int(2), MP_OBJ_SENTINEL) - ); - } - epic_leds_set_all((uint8_t*)pattern, len); - return mp_const_none; + for (int i = 0; i < len; i++) { + mp_obj_t color = mp_obj_subscr( + color_in, mp_obj_new_int(i), MP_OBJ_SENTINEL + ); + pattern[i][0] = mp_obj_get_int(mp_obj_subscr( + color, mp_obj_new_int(0), MP_OBJ_SENTINEL) + ); + pattern[i][1] = mp_obj_get_int(mp_obj_subscr( + color, mp_obj_new_int(1), MP_OBJ_SENTINEL) + ); + pattern[i][2] = mp_obj_get_int(mp_obj_subscr( + color, mp_obj_new_int(2), MP_OBJ_SENTINEL) + ); + } + epic_leds_set_all((uint8_t *)pattern, len); + return mp_const_none; } static MP_DEFINE_CONST_FUN_OBJ_1(leds_set_all_obj, mp_leds_set_all); static mp_obj_t mp_leds_set_all_hsv(mp_obj_t color_in) { - uint8_t len = mp_obj_get_int(mp_obj_len(color_in)); + uint8_t len = mp_obj_get_int(mp_obj_len(color_in)); float pattern[len][3]; - for(int i=0;i<len;i++){ - mp_obj_t color = mp_obj_subscr(color_in, mp_obj_new_int(i), MP_OBJ_SENTINEL); - pattern[i][0] = mp_obj_get_float( - mp_obj_subscr(color, mp_obj_new_int(0), MP_OBJ_SENTINEL) - ); - pattern[i][1] = mp_obj_get_float( - mp_obj_subscr(color, mp_obj_new_int(1), MP_OBJ_SENTINEL) - ); - pattern[i][2] = mp_obj_get_float( - mp_obj_subscr(color, mp_obj_new_int(2), MP_OBJ_SENTINEL) - ); - } - epic_leds_set_all_hsv((float*)pattern, len); + for (int i = 0; i < len; i++) { + mp_obj_t color = mp_obj_subscr( + color_in, mp_obj_new_int(i), MP_OBJ_SENTINEL + ); + pattern[i][0] = mp_obj_get_float(mp_obj_subscr( + color, mp_obj_new_int(0), MP_OBJ_SENTINEL) + ); + pattern[i][1] = mp_obj_get_float(mp_obj_subscr( + color, mp_obj_new_int(1), MP_OBJ_SENTINEL) + ); + pattern[i][2] = mp_obj_get_float(mp_obj_subscr( + color, mp_obj_new_int(2), MP_OBJ_SENTINEL) + ); + } + epic_leds_set_all_hsv((float *)pattern, len); return mp_const_none; } @@ -154,7 +158,7 @@ static MP_DEFINE_CONST_FUN_OBJ_1(leds_flashlight_obj, mp_leds_flashlight); static mp_obj_t mp_leds_rocket_set(mp_obj_t led_in, mp_obj_t value_in) { - int led = mp_obj_get_int(led_in); + int led = mp_obj_get_int(led_in); int value = mp_obj_get_int(value_in); epic_leds_rocket_set(led, value); return mp_const_none; @@ -192,19 +196,20 @@ static mp_obj_t mp_leds_powersave(mp_obj_t eco_in) } static MP_DEFINE_CONST_FUN_OBJ_1(leds_powersave_obj, mp_leds_powersave); -static mp_obj_t mp_leds_set_gamma(mp_obj_t rgb_channel_in, mp_obj_t gamma_table_in) +static mp_obj_t +mp_leds_set_gamma(mp_obj_t rgb_channel_in, mp_obj_t gamma_table_in) { - int rgb_channel = mp_obj_get_int(rgb_channel_in); + int rgb_channel = mp_obj_get_int(rgb_channel_in); if (mp_obj_get_int(mp_obj_len(gamma_table_in)) < 256) { mp_raise_ValueError("table must have 256 elements"); } - uint8_t gamma_table[256]; - for(int i=0;i<256;i++){ - gamma_table[i] = mp_obj_get_int( - mp_obj_subscr(gamma_table_in, mp_obj_new_int(i), MP_OBJ_SENTINEL) - ); - } - epic_leds_set_gamma_table(rgb_channel, gamma_table); + uint8_t gamma_table[256]; + for (int i = 0; i < 256; i++) { + gamma_table[i] = mp_obj_get_int(mp_obj_subscr( + gamma_table_in, mp_obj_new_int(i), MP_OBJ_SENTINEL) + ); + } + epic_leds_set_gamma_table(rgb_channel, gamma_table); return mp_const_none; } static MP_DEFINE_CONST_FUN_OBJ_2(leds_set_gamma_obj, mp_leds_set_gamma);