]> www.fi.muni.cz Git - bike-lights.git/blobdiff - firmware/pattern.c
firmware: buttons-press and pwrdown rework
[bike-lights.git] / firmware / pattern.c
index fb74ae0204426579429c39a59af78d97ef9f34f4..2e06b67e476fca2c35dad4fe0ef7e39648bff413 100644 (file)
@@ -2,20 +2,19 @@
 
 #include "lights.h"
 
-typedef struct {
-       unsigned char mode: 3;
-       unsigned char duration: 5;
-} pattern_t;
-
 static unsigned char led_counters[N_LEDS];
 static pattern_t *led_patterns[N_LEDS];
 
-#define PATTERN_END { 0, 0 }
 pattern_t off_pattern[] = {
        { 0, 0x1F },
        PATTERN_END
 };
 
+pattern_t on_pattern[] = {
+       { 1, 0x1F },
+       PATTERN_END
+};
+
 pattern_t blink_pattern[] = {
        { 1, 0x4 },
        { 0, 0x8 },
@@ -23,9 +22,9 @@ pattern_t blink_pattern[] = {
 };
 
 pattern_t mode1_pattern[] = {
-       { 3, 0x1 },
+       { 4, 0x1 },
        { 0, 0x1 },
-       { 3, 0x1 },
+       { 4, 0x1 },
        { 0, 0x8 },
        { 1, 0x1 },
        { 0, 0x1 },
@@ -55,24 +54,25 @@ pattern_t boot_pattern[] = {
 };
 
 pattern_t pattern_num[] = {
+       { 0, 0x5 },
        { 1, 0x1 }, /* 10 */
-       { 0, 0x4 },
+       { 0, 0x5 },
        { 1, 0x1 }, /*  9 */
-       { 0, 0x4 },
+       { 0, 0x5 },
        { 1, 0x1 }, /*  8 */
-       { 0, 0x4 },
+       { 0, 0x5 },
        { 1, 0x1 }, /*  7 */
-       { 0, 0x4 },
+       { 0, 0x5 },
        { 1, 0x1 }, /*  6 */
-       { 0, 0x4 },
+       { 0, 0x5 },
        { 1, 0x1 }, /*  5 */
-       { 0, 0x4 },
+       { 0, 0x5 },
        { 1, 0x1 }, /*  4 */
-       { 0, 0x4 },
+       { 0, 0x5 },
        { 1, 0x1 }, /*  3 */
-       { 0, 0x4 },
+       { 0, 0x5 },
        { 1, 0x1 }, /*  2 */
-       { 0, 0x4 },
+       { 0, 0x5 },
        { 1, 0x1 }, /*  1 */
        { 0, 0x1F },
        PATTERN_END
@@ -117,18 +117,17 @@ static pattern_t *number_pattern(unsigned char num)
                num = 9;
 
        return pattern_num + sizeof(pattern_num)/sizeof(pattern_t)
-               - 1 - 2*num;
+               - 2 - 2*num;
 }
 
 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
-
-       if (n == 2) {
+       else if (n == 2)
                return mode1_pattern;
-       }
-       // return number_pattern(1+ambient_zone);
+       else if (n == 3)
+               return number_pattern(1+ambient_zone);
        return off_pattern;
 }