* Note: these have to be sorted, starting with 0, ending with 0xFFFF
* and having small overlaps in order to provide a bit of hysteresis.
*/
-static ambient_zone_t ambient_zones[] = {
- { 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
+static ambient_zone_t ambient_zones[N_AMBIENT_ZONES] = {
+ { 0x0000 , 0x0250<<AMBIENT_VAL_SHIFT }, // dark
+ { 0x0240<<AMBIENT_VAL_SHIFT, 0x02e0<<AMBIENT_VAL_SHIFT }, // evening
+ { 0x02c0<<AMBIENT_VAL_SHIFT, 0x0306<<AMBIENT_VAL_SHIFT }, // dawn
+ { 0x02f8<<AMBIENT_VAL_SHIFT, 0xffff }, // day
};
-#define N_AMBIENT_ZONES (sizeof(ambient_zones)/sizeof(ambient_zones[0]))
void init_ambient()
{
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)
if (ambient_max < byte_val)
ambient_max = byte_val;
-#if 0
+
+ // user_param ambient zone override
+ if ((byte_val = get_user_param(0)) > 0)
+ ambient_zone = byte_val - 1;
+
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();
+ }
}