X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=tinyboard.git;a=blobdiff_plain;f=projects%2Fstep-up%2Fpattern.c;h=3336b5812b485da884bc9c52c4b9ce0cf054b810;hp=55b64cc6e5bf23729d75c5a676c69708619999ff;hb=758046649974734ee68f842c3f6d8ebde4c27529;hpb=edebb613b2f867d4f8473747744f329cb30e38fe diff --git a/projects/step-up/pattern.c b/projects/step-up/pattern.c index 55b64cc..3336b58 100644 --- a/projects/step-up/pattern.c +++ b/projects/step-up/pattern.c @@ -3,29 +3,10 @@ #include "lights.h" +#define N_LEDS 2 static unsigned char led_counters[N_LEDS]; static pattern_t *led_patterns[N_LEDS]; -static pattern_t boot_pattern[] = { - { 1, 0x6 }, - { 0, 0x6 }, - { 1, 0x3 }, - { 0, 0x3 }, - { 1, 0x2 }, - { 0, 0x2 }, - { 1, 0x1 }, - { 0, 0x1 }, - { 1, 0x1 }, - { 0, 0x1 }, - { 1, 0x1 }, - { 0, 0x1 }, - { 1, 0x1 }, - { 0, 0x1 }, - { 1, 0x10 }, - { 0, 0x10 }, - PATTERN_END -}; - static pattern_t pattern_num[] = { { 0, 0x5 }, { 1, 0x1 }, /* 10 */ @@ -81,12 +62,21 @@ pattern_t off_pattern[] = { PATTERN_END }; +pattern_t on1_pattern[] = { + { 1, 1 }, + { 0, 2 }, + { 1, 1 }, + { 0, 8 }, + { 1, 1 }, + { 0, 8 }, + PATTERN_END +}; + static void led_set_mode(unsigned char n, unsigned char mode) { - if (n < N_PWMLEDS) { - pwmled_set_mode(n, mode); - } else if (n < N_LEDS) { - gpio_set(n - N_PWMLEDS, mode); + switch (n) { + case 0: pwmled_on_off(mode); break; + case 1: status_led_on_off(mode); break; } } @@ -107,8 +97,6 @@ void init_pattern() for (i = 0; i < N_LEDS; i++) led_set_pattern(i, NULL); - - led_set_pattern(N_PWMLEDS+1, boot_pattern); } pattern_t *number_pattern(unsigned char num, unsigned char inv) @@ -130,12 +118,8 @@ pattern_t *number_pattern(unsigned char num, unsigned char inv) static pattern_t *pattern_select(unsigned char n) { switch(n) { - case 0: return pwmled0_pattern_select(); - case 1: return pwmled1_pattern_select(); - 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(); + case 0: return pwmled_pattern_select(); + case 1: return status_led_pattern_select(); default: return NULL; } } @@ -150,27 +134,8 @@ void pattern_reload() static void inline pattern_finished(unsigned char n) { - unsigned char i; - led_patterns[n] = NULL; - - if (n < N_PWMLEDS) { - for (i = 0; i < N_PWMLEDS; i++) - if (led_patterns[i]) - return; - - /* all pwmleds finished; restart them */ - for (i = 0; i < N_PWMLEDS; i++) - led_set_pattern(i, pattern_select(i)); - } else if (n == 3) { - if (!led_patterns[4]) - led_set_pattern(4, pattern_select(4)); - } else if (n == 4) { - if (!led_patterns[3]) - led_set_pattern(3, pattern_select(3)); - } else { - led_set_pattern(n, pattern_select(n)); - } + led_set_pattern(n, pattern_select(n)); } void patterns_next_tick()