+ if ((new_zone > ambient_zone)
+ || (new_zone > 1 && new_zone == ambient_zone - 1)) {
+ // but change to the neighbouring zone is governed by _slow,
+ // except to the darkest zone, where we want fast reaction.
+ new_zone = val_to_zone(slow_10bit);
+ }
+
+ // user_param ambient zone override
+ if ((user_zone = get_user_param(0)) > 0)
+ new_zone = user_zone - 1;
+
+#if 0 // ignore shadow-entering code altogether for now
+ // are we entering the shadow?
+ if (!user_zone && new_zone < ambient_zone
+ && ambient_zone >= 2 && slow_10bit > fast_10bit
+ && slow_10bit - fast_10bit >= SHADOW_DROP_LIMIT) {
+ // we are entering the shadow
+ new_shadow = 0x30;
+ }
+
+ if (ambient_shadow) {
+ if (new_shadow) {
+ new_zone = ambient_zone; // don't change while entering shadow
+ ambient_shadow = new_shadow; // update the timeout
+ } else {
+ ambient_shadow--;
+ if (!ambient_shadow) { // leaving the shadow
+ ambient_zone_changed();
+ }
+ }
+ } else if (new_shadow) {
+ ambient_shadow = new_shadow; // set up the timeout
+ new_zone = ambient_zone; // don't change while entering shadow
+ ambient_zone_changed(); // notify others the first time
+ }
+#endif
+
+ // TODO: maybe use these values instead of 10-bit?
+ byte_fast = fast_10bit >> 2;
+ byte_slow = slow_10bit >> 2;