+++ /dev/null
-#include <avr/io.h>
-
-#include "lights.h"
-
-static uint16_t ambient_val;
-volatile unsigned char ambient_zone;
-static unsigned char ambient_zone_set;
-
-static uint16_t ambient_zones[] = {
- 0x10, 0x18, 0x20, 0x40, 0x100, 0x400, 0x1000, 0x4000, 0xffff
-};
-#define N_AMBIENT_ZONES (sizeof(ambient_zones)/sizeof(ambient_zones[0]))
-
-void ambient_init()
-{
- ambient_val = 0;
- ambient_zone = 0;
- ambient_zone_set = 0;
-}
-
-void ambient_zone_changed()
-{
- log_byte(0xCC);
- log_byte(ambient_zone);
- log_word(ambient_val);
-}
-
-void ambient_adc(uint16_t adcval)
-{
- unsigned char newzone;
-
- if (!ambient_zone_set)
- ambient_val = adcval << 4;
- else // running sum
- ambient_val += adcval - (ambient_val >> 4);
-
- newzone = 0;
- while (newzone < N_AMBIENT_ZONES-1
- && ambient_zones[newzone] < ambient_val)
- newzone++;
-
- if (!ambient_zone_set || newzone != ambient_zone) {
- ambient_zone = newzone;
- ambient_zone_set = 1;
- // ambient_zone_changed();
- }
-}
-