X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=pattern.c;h=efe2ea4e1af48a6b8007f90ab99f6c35534b7eb8;hb=2f02dcff5103d6466523678a8fafb385530406d2;hp=386f9df9938ea959f3ca83a2f3b6e5b6ee46830c;hpb=4b93ea55987c25fcce022403a505ca1749dc329c;p=bike-lights.git diff --git a/pattern.c b/pattern.c index 386f9df..efe2ea4 100644 --- a/pattern.c +++ b/pattern.c @@ -1,3 +1,5 @@ +#include + #include "lights.h" typedef struct { @@ -15,8 +17,50 @@ pattern_t off_pattern[] = { }; pattern_t blink_pattern[] = { - { 1, 5 }, - { 0, 5 }, + { 1, 0x4 }, + { 0, 0x8 }, + PATTERN_END +}; + +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 +}; + +pattern_t pattern_num[] = { + { 1, 0x1 }, + { 0, 0x4 }, + { 1, 0x1 }, + { 0, 0x4 }, + { 1, 0x1 }, + { 0, 0x4 }, + { 1, 0x1 }, + { 0, 0x4 }, + { 1, 0x1 }, + { 0, 0x4 }, + { 1, 0x1 }, + { 0, 0x4 }, + { 1, 0x1 }, + { 0, 0x4 }, + { 1, 0x1 }, + { 0, 0x4 }, + { 1, 0x1 }, + { 0, 0x1F }, PATTERN_END }; @@ -28,6 +72,29 @@ void pattern_init() led_counters[i] = 0; led_patterns[i] = off_pattern; } + led_patterns[N_PWMLEDS] = boot_pattern; + led_counters[N_PWMLEDS] = boot_pattern->duration; + gpio_set(GPIO_LED2, 1); +} + +static inline pattern_t *pattern_select(unsigned char n) +{ + return pattern_num + sizeof(pattern_num)/sizeof(pattern_t) + - 1 - 2*(1+ambient_zone);; +} + +static void inline led_off(unsigned char n) +{ + if (n == N_PWMLEDS) { + gpio_set(GPIO_LED2, 0); + } +} + +static void inline led_set_level(unsigned char n, unsigned char level) +{ + if (n == N_PWMLEDS) { + gpio_set(GPIO_LED2, 1); + } } void patterns_next_tick()