]> www.fi.muni.cz Git - bike-lights.git/blobdiff - firmware/ambient.c
logic for setting brightness
[bike-lights.git] / firmware / ambient.c
index b8397532026fed989d06ff6454974be46e043850..48a752d4b35bf744fcf11992684a2b1fef521e44 100644 (file)
@@ -24,10 +24,10 @@ typedef struct {
  * and having small overlaps in order to provide a bit of hysteresis.
  */
 static ambient_zone_t ambient_zones[] = {
-       { 0x0000                   , 0x0280<<AMBIENT_VAL_SHIFT }, // dark
-       { 0x0270<<AMBIENT_VAL_SHIFT, 0x02f0<<AMBIENT_VAL_SHIFT }, // evening
-       { 0x02e8<<AMBIENT_VAL_SHIFT, 0x0306<<AMBIENT_VAL_SHIFT }, // dawn
-       { 0x0300<<AMBIENT_VAL_SHIFT, 0xffff                    }, // day
+       { 0x0000                   , 0x0270<<AMBIENT_VAL_SHIFT }, // dark
+       { 0x0260<<AMBIENT_VAL_SHIFT, 0x02e0<<AMBIENT_VAL_SHIFT }, // evening
+       { 0x02d0<<AMBIENT_VAL_SHIFT, 0x0306<<AMBIENT_VAL_SHIFT }, // dawn
+       { 0x0302<<AMBIENT_VAL_SHIFT, 0xffff                    }, // day
 };
 #define N_AMBIENT_ZONES (sizeof(ambient_zones)/sizeof(ambient_zones[0]))
 
@@ -63,8 +63,8 @@ void ambient_log_min_max()
        if (ambient_log_offset >= AMBIENT_LOG_SIZE - 1)
                return;
 
-       eeprom_write_byte(&ambient_log[ambient_log_offset++], ambient_min);
-       // eeprom_write_byte(&ambient_log[ambient_log_offset++], ambient_max);
+       // eeprom_write_byte(&ambient_log[ambient_log_offset++], ambient_min);
+       eeprom_write_byte(&ambient_log[ambient_log_offset++], ambient_max);
        eeprom_write_byte(&ambient_log[ambient_log_offset++], ambient_16drop);
 
        ambient_min = 0xFF;
@@ -72,18 +72,10 @@ void ambient_log_min_max()
        ambient_16drop = 0;
 }
 
-void ambient_zone_changed()
+static inline void ambient_zone_changed()
 {
-#if 1
-       log_byte(0xab);
-       log_byte(ambient_zone);
-       log_word(ambient_val);
-       log_flush();
-#endif
-
-       // led_set_pattern(N_PWMLEDS, status_led_pattern_select());
-       // led_set_pattern(N_PWMLEDS+1, illumination_led_pattern_select());
-       // pattern_reload();
+       pwmled_select_brightness();
+       pattern_reload();
 }
 
 void ambient_adc(uint16_t adcval)
@@ -116,14 +108,14 @@ void ambient_adc(uint16_t adcval)
 
        if (ambient_max < byte_val)
                ambient_max = byte_val;
-#if 0
        if (old_zone != ambient_zone) {
+#if 0
                log_byte(0xab);
                log_byte(ambient_zone);
                log_word(adcval);
                log_flush();
-       }
-               // ambient_zone_changed();
 #endif
+               ambient_zone_changed();
+       }
 }