]> www.fi.muni.cz Git - bike-lights.git/blobdiff - firmware/control.c
logic for setting brightness
[bike-lights.git] / firmware / control.c
index 9b356993d359f575bdc76b865fd7e6fddbe91fff..3012ba65856aaa02d9e2939ace37ed2463863da0 100644 (file)
@@ -83,6 +83,8 @@ void init_control()
        dim_mode = 0;
        towbar_mode = 0;
        braking = 0;
+
+       pwmled_select_brightness();
 }
 
 void brake_on()
@@ -104,6 +106,7 @@ void brake_off()
 void toggle_dim_mode()
 {
        dim_mode = !dim_mode;
+       pwmled_select_brightness();
        pattern_reload();
 }
 
@@ -172,3 +175,23 @@ pattern_t *laser_pattern_select()
        else
                return NULL;
 }
+
+void pwmled_select_brightness()
+{
+       uint16_t brightness = PWMLED_BRIGHTNESS(0, 2, 1, 0, 2); // default
+
+       if (battery_critical) {
+               brightness = PWMLED_BRIGHTNESS(0, 0, 0, 0, 0);
+       } else if (ambient_zone < 2) {
+               if (dim_mode)
+                       brightness = PWMLED_BRIGHTNESS(0, 1, 0, 0, 1);
+               else
+                       brightness = PWMLED_BRIGHTNESS(0, 2, 1, 0, 2);
+       } else if (ambient_zone == 2) {
+               brightness = PWMLED_BRIGHTNESS(1, 3, 2, 1, 3);
+       } else if (ambient_zone == 3) {
+               brightness = PWMLED_BRIGHTNESS(2, 4, 2, 2, 4);
+       }
+
+       pwmled_set_brightness(brightness);
+}