X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=firmware%2Fpattern.c;h=d3e097740249474921fc3c55b53b38a9cd5ca018;hb=68424ad19806bd6f0b857e878bf632cf5851e7c5;hp=2e06b67e476fca2c35dad4fe0ef7e39648bff413;hpb=59eca43bd94de2fc23cff584306cdd666a1598e2;p=bike-lights.git diff --git a/firmware/pattern.c b/firmware/pattern.c index 2e06b67..d3e0977 100644 --- a/firmware/pattern.c +++ b/firmware/pattern.c @@ -6,13 +6,16 @@ static unsigned char led_counters[N_LEDS]; static pattern_t *led_patterns[N_LEDS]; pattern_t off_pattern[] = { - { 0, 0x1F }, + { 0, PATTERN_FOREVER }, +}; + +pattern_t zero_pattern[] = { + { 0, 0x10 }, PATTERN_END }; pattern_t on_pattern[] = { - { 1, 0x1F }, - PATTERN_END + { 1, PATTERN_FOREVER }, }; pattern_t blink_pattern[] = { @@ -74,7 +77,7 @@ pattern_t pattern_num[] = { { 1, 0x1 }, /* 2 */ { 0, 0x5 }, { 1, 0x1 }, /* 1 */ - { 0, 0x1F }, + { 0, 0x1E }, PATTERN_END }; @@ -103,15 +106,14 @@ void pattern_init() { unsigned char i; - for (i = 0; i < N_LEDS; i++) { - led_counters[i] = 0; - led_patterns[i] = off_pattern; - } + for (i = 0; i < N_LEDS; i++) + led_set_pattern(i, zero_pattern); + led_set_pattern(N_PWMLEDS+1, boot_pattern); test_running = 0; } -static pattern_t *number_pattern(unsigned char num) +pattern_t *number_pattern(unsigned char num) { if (num >= 9) num = 9; @@ -124,10 +126,12 @@ static inline pattern_t *pattern_select(unsigned char n) { if (n < N_PWMLEDS && !pwmled_enabled(n)) return off_pattern; // Don't mess with non-enabled LEDs - else if (n == 2) + else if (n < N_PWMLEDS) return mode1_pattern; else if (n == 3) - return number_pattern(1+ambient_zone); + return status_pattern_select(0); + else if (n == 4) + return status_pattern_select(1); return off_pattern; } @@ -145,11 +149,8 @@ void patterns_next_tick() led_set_pattern(i, p); } - led_counters[i]--; + if (led_counters[i] < PATTERN_FOREVER) + led_counters[i]--; } } -void led_set_status(unsigned char status) -{ - led_set_pattern(N_PWMLEDS+1, number_pattern(status)); -}