X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=firmware%2Fcontrol.c;h=9b356993d359f575bdc76b865fd7e6fddbe91fff;hb=783dec62b5002f6e1c1ff4417659d32b46aa5407;hp=efc61ad2498d4a240d31a64415b545a0946769b9;hpb=ea3a89b1a1e089f72fc7a5a7a9cc9f46cf666faa;p=bike-lights.git diff --git a/firmware/control.c b/firmware/control.c index efc61ad..9b35699 100644 --- a/firmware/control.c +++ b/firmware/control.c @@ -4,34 +4,27 @@ #include "lights.h" static pattern_t panic_pattern[] = { - { 3, D_1 }, // FIXME: will be 4, but let's be safe while testing - { 0, D_1 }, - { 3, D_1 }, - { 0, D_1 }, - { 3, D_1 }, - { 0, D_1 }, - { 3, D_1 }, - { 0, D_1 }, - { 3, D_1 }, - { 0, D_1 }, - { 3, D_1 }, - { 0, D_1 }, - { 3, D_1 }, - { 0, D_1 }, - { 3, D_1 }, - { 0, D_1 }, - { 3, D_1 }, - { 0, D_1 }, - { 3, D_1 }, - { 0, D_1 }, - { 3, D_1 }, - { 0, D_1 }, - PATTERN_END -}; - -static pattern_t brake_pattern [] = { - { 4, D_2 }, - { 3, D_8 }, + { PWM_PAT(2, 0, 0), D_1 }, + { PWM_PAT(0, 0, 2), D_1 }, + { PWM_PAT(0, 0, 0), D_1 }, + { PWM_PAT(2, 0, 0), D_1 }, + { PWM_PAT(0, 0, 2), D_1 }, + { PWM_PAT(0, 0, 0), D_1 }, + { PWM_PAT(2, 0, 0), D_1 }, + { PWM_PAT(0, 0, 2), D_1 }, + { PWM_PAT(0, 0, 0), D_1 }, + { PWM_PAT(2, 0, 0), D_1 }, + { PWM_PAT(0, 0, 2), D_1 }, + { PWM_PAT(0, 0, 0), D_1 }, + { PWM_PAT(2, 0, 0), D_1 }, + { PWM_PAT(0, 0, 2), D_1 }, + { PWM_PAT(0, 0, 0), D_1 }, + { PWM_PAT(2, 0, 0), D_1 }, + { PWM_PAT(0, 0, 2), D_1 }, + { PWM_PAT(0, 0, 0), D_1 }, + { PWM_PAT(2, 0, 0), D_1 }, + { PWM_PAT(0, 0, 2), D_1 }, + { PWM_PAT(0, 0, 0), D_1 }, PATTERN_END }; @@ -71,7 +64,19 @@ pattern_t on_pattern[] = { PATTERN_END }; -static unsigned char dim_mode, towbar_mode, braking; +// #define TEST_PATTERN 1 +#ifdef TEST_PATTERN +pattern_t test_pattern[] = { + { PWM_PAT(1, 0, 0), D_13 }, + { PWM_PAT(2, 0, 0), D_13 }, + { PWM_PAT(0, 0, 1), D_13 }, + { PWM_PAT(0, 0, 2), D_13 }, + PATTERN_END +}; +#endif + +volatile unsigned char braking; +static unsigned char dim_mode, towbar_mode; void init_control() { @@ -85,7 +90,7 @@ void brake_on() braking = 1; gpio_set(0, 1); led_set_pattern(N_STATUS_LED, status_led_pattern_select()); - led_set_pattern(0, pwmled_pattern_select()); + pwmleds_update_mode(); } void brake_off() @@ -93,7 +98,7 @@ void brake_off() braking = 0; gpio_set(0, 0); led_set_pattern(N_STATUS_LED, status_led_pattern_select()); - led_set_pattern(0, pwmled_pattern_select()); + pwmleds_update_mode(); } void toggle_dim_mode() @@ -110,15 +115,12 @@ void set_panic_mode() pattern_t *pwmled_pattern_select() { +#ifdef TEST_PATTERN + return tmp_pattern; +#endif if (battery_critical) return slow_pattern; - if (towbar_mode) - return NULL; - - if (braking) - return brake_pattern; - switch (ambient_zone) { case 0: return night_pattern; case 1: