summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dim.c8
-rw-r--r--lightctrl.c5
2 files changed, 9 insertions, 4 deletions
diff --git a/dim.c b/dim.c
index 78ae5a3..21ea528 100644
--- a/dim.c
+++ b/dim.c
@@ -12,11 +12,11 @@ struct switchcfg sw;
static uint8_t tast_curstate(void)
{
uint16_t sum = 0;
- sum += target[sw.targets0[0]];
- sum += target[sw.targets0[1]];
+ sum += target_get(sw.targets0[0]);
+ sum += target_get(sw.targets0[1]);
if (sw.tgt1active) {
- sum += target[sw.targets1[0]];
- sum += target[sw.targets1[1]];
+ sum += target_get(sw.targets1[0]);
+ sum += target_get(sw.targets1[1]);
sum++;
sum >>= 1;
}
diff --git a/lightctrl.c b/lightctrl.c
index 5b5e1c0..7c0f1e9 100644
--- a/lightctrl.c
+++ b/lightctrl.c
@@ -31,6 +31,11 @@ const uint8_t __signature[3] __attribute__((section (".signature"), used)) =
static uint8_t target[0x40] = { 0 };
static uint8_t cooldown[0x40] = { 0 };
static void target_set(uint8_t dst, uint8_t val);
+#define target_get(idx) target[idx]
+/* [0] bit 0 => addr 0, [0] bit 1 => addr 1, etc. */
+static uint8_t dali_map[8];
+#define target_present(addr) (dali_map[(addr) >> 3] & (1 << ((addr) & 0x07)))
+#define target_set_present(addr) dali_map[(addr) >> 3] |= 1 << ((addr) & 0x7)
#include "uart.c"
#include "tick.c"