From 876b2f0db6f0728178c6db9dffe3fb53a1ab829f Mon Sep 17 00:00:00 2001 From: C0d3v Date: Thu, 15 Jan 2026 20:04:02 +0100 Subject: [PATCH] Use bit based communication with drawers --- terminal/master/src/main.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/terminal/master/src/main.cpp b/terminal/master/src/main.cpp index 907bf6d..a3e62c8 100644 --- a/terminal/master/src/main.cpp +++ b/terminal/master/src/main.cpp @@ -5,15 +5,18 @@ void resetPuzzles(); /* ========================================================= */ const uint8_t ARCHIV_ADDR = 0x10; -const uint8_t CMD_POWER_OFF = 0x01; -const uint8_t CMD_LIGHT_INDEX = 0x02; -const uint8_t CMD_DRAWER_INDEX = 0x03; + +const uint8_t BITMASK_CMD = 0b00011000; +const uint8_t BITMASK_PAYLOAD = 0b00000111; + +const uint8_t CMD_POWER_OFF = 0b00001000; +const uint8_t CMD_LIGHT_INDEX = 0b00010000; +const uint8_t CMD_DRAWER_INDEX = 0b00011000; void setDrawerLight(uint8_t index) { Wire.beginTransmission(ARCHIV_ADDR); - Wire.write(CMD_LIGHT_INDEX); - Wire.write(index); + Wire.write(CMD_LIGHT_INDEX | (index & BITMASK_PAYLOAD)); Wire.endTransmission(); } @@ -27,8 +30,7 @@ void turnLightsOff() void openDrawer(uint8_t index) { Wire.beginTransmission(ARCHIV_ADDR); - Wire.write(CMD_DRAWER_INDEX); - Wire.write(index); + Wire.write(CMD_DRAWER_INDEX | (index & BITMASK_PAYLOAD)); Wire.endTransmission(); } /* ========================================================= */