From c5a9c2e03361e4e0d4b8c0be3708607e2b68973a Mon Sep 17 00:00:00 2001 From: Patrick Fallberg Date: Sun, 10 Jan 2016 13:57:49 +0100 Subject: [PATCH] Fix addressing bug in _doSign bitfield --- libraries/MySensors/MySensor.cpp | 6 +++--- libraries/MySensors/MySensor.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/MySensors/MySensor.cpp b/libraries/MySensors/MySensor.cpp index 6c3a348..8409e5d 100644 --- a/libraries/MySensors/MySensor.cpp +++ b/libraries/MySensors/MySensor.cpp @@ -24,9 +24,9 @@ #ifdef MY_SIGNING_FEATURE // Macros for manipulating signing requirement table -#define DO_SIGN(node) (node == 0 ? (~doSign[0]&1) : (~doSign[node>>4]&(node%16))) -#define SET_SIGN(node) (node == 0 ? (doSign[0]&=~1) : (doSign[node>>4]&=~(node%16))) -#define CLEAR_SIGN(node) (node == 0 ? (doSign[0]|=1) : (doSign[node>>4]|=(node%16))) +#define DO_SIGN(node) (~_doSign[node>>3]&(1<<(node%8))) +#define SET_SIGN(node) (_doSign[node>>3]&=~(1<<(node%8))) +#define CLEAR_SIGN(node) (_doSign[node>>3]|=(1<<(node%8))) #endif // Inline function and macros diff --git a/libraries/MySensors/MySensor.h b/libraries/MySensors/MySensor.h index 18f4cb7..ba6edc3 100644 --- a/libraries/MySensors/MySensor.h +++ b/libraries/MySensors/MySensor.h @@ -366,7 +366,7 @@ class MySensor MyTransport& radio; #ifdef MY_SIGNING_FEATURE - uint16_t doSign[16]; // Bitfield indicating which sensors require signed communication + uint8_t doSign[32]; // Bitfield indicating which sensors require signed communication MyMessage msgSign; // Buffer for message to sign. MySigning& signer; #endif