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[] = {
};
pattern_t mode1_pattern[] = {
- { 4, 0x1 },
+ { 2, 0x1 },
{ 0, 0x1 },
- { 4, 0x1 },
+ { 2, 0x1 },
{ 0, 0x8 },
{ 1, 0x1 },
{ 0, 0x1 },
{ 1, 0x1 }, /* 2 */
{ 0, 0x5 },
{ 1, 0x1 }, /* 1 */
- { 0, 0x1F },
+ { 0, 0x1E },
PATTERN_END
};
led_set_mode(n, pattern->mode);
}
-void pattern_init()
+void init_pattern()
{
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;
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)
+ 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;
}
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));
-}