X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=firmware%2Fpattern.c;h=a8ab5bb585634e96e1aed0be1660dcafdda6d551;hb=08488e2d2076602e799b90a36eb5ad9dd379d3f9;hp=59692bf32a97e07f6f468d878e33cf9c1c7e980d;hpb=647f353f4d8c87c5cf18cae905e9d600cd0e6bcb;p=bike-lights.git diff --git a/firmware/pattern.c b/firmware/pattern.c index 59692bf..a8ab5bb 100644 --- a/firmware/pattern.c +++ b/firmware/pattern.c @@ -76,6 +76,11 @@ static pattern_t pattern_invnum[] = { PATTERN_END }; +pattern_t off_pattern[] = { + { 0, 0x1E }, + PATTERN_END +}; + static void led_set_mode(unsigned char n, unsigned char mode) { if (n < N_PWMLEDS) { @@ -87,12 +92,10 @@ static void led_set_mode(unsigned char n, unsigned char mode) void led_set_pattern(unsigned char n, pattern_t *pattern) { - led_patterns[n] = pattern; + if (!pattern) + pattern = off_pattern; - if (!pattern) { - led_set_mode(n, 0); - return; - } + led_patterns[n] = pattern; led_counters[n] = pattern->duration; led_set_mode(n, pattern->mode); @@ -110,8 +113,8 @@ void init_pattern() pattern_t *number_pattern(unsigned char num, unsigned char inv) { - if (num >= 9) - num = 9; + if (num >= 10) + num = 10; if (inv) { return pattern_invnum @@ -132,6 +135,7 @@ static pattern_t *pattern_select(unsigned char n) case 2: return pwmled2_pattern_select(); case 3: return status_led_pattern_select(); case 4: return illumination_led_pattern_select(); + case 6: return laser_pattern_select(); default: return NULL; } } @@ -161,8 +165,7 @@ void patterns_next_tick() led_set_pattern(i, p); } - if (led_counters[i] < PATTERN_FOREVER) - led_counters[i]--; + led_counters[i]--; } }