From a87211174354af23647cda8462d4b90d67f2c2bf Mon Sep 17 00:00:00 2001 From: Gregg Date: Fri, 3 Dec 2021 07:02:25 -0600 Subject: [PATCH] Fixed bug in CUSTOM_CHAR() when applied to STRING Characteristic Created a new CUSTOM_CHAR_STRING(NAME,UUID,PERMISISONS,DEFVAL) macro specifically for STRING Characteristics --- src/Span.h | 4 +++- src/src.ino | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Span.h b/src/Span.h index e10c585..57eda29 100644 --- a/src/Span.h +++ b/src/Span.h @@ -529,4 +529,6 @@ namespace Characteristic { HapChar _CUSTOM_##NAME {#UUID,#NAME,(PERMS)(PERMISISONS),FORMAT,STATIC_RANGE}; \ namespace Characteristic { struct NAME : SpanCharacteristic { NAME(FORMAT##_t val=DEFVAL, boolean nvsStore=false) : SpanCharacteristic {&_CUSTOM_##NAME} { init(val,nvsStore,(FORMAT##_t)MINVAL,(FORMAT##_t)MAXVAL); } }; } - +#define CUSTOM_CHAR_STRING(NAME,UUID,PERMISISONS,DEFVAL) \ + HapChar _CUSTOM_##NAME {#UUID,#NAME,(PERMS)(PERMISISONS),STRING,true}; \ + namespace Characteristic { struct NAME : SpanCharacteristic { NAME(const char * val=DEFVAL, boolean nvsStore=false) : SpanCharacteristic {&_CUSTOM_##NAME} { init(val,nvsStore); } }; } diff --git a/src/src.ino b/src/src.ino index 671ca89..1aa3888 100644 --- a/src/src.ino +++ b/src/src.ino @@ -4,7 +4,10 @@ #include "HomeSpan.h" -CUSTOM_CHAR(CustomActive, E863F10A-079E-48FF-8F27-9C2605A29F52, PR+EV, UINT16, 0, 0, 4800, false); +#define STRING_t const char * // WORK-AROUND + +CUSTOM_CHAR(LightMode, AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA, PR, STRING, "ANY_VALUE", NULL, NULL, true); +CUSTOM_CHAR_STRING(DarkMode, AAAAAAAA-BBBB-AAAA-AAAA-AAAAAAAAAAAA, PR, "MY_VALUE"); void setup() { @@ -45,7 +48,9 @@ void setup() { new Service::LightBulb(); new Characteristic::On(0); - new Characteristic::CustomActive(1200); + new Characteristic::LightMode("HELLO"); + new Characteristic::DarkMode(); + new Characteristic::DarkMode("OVERRIDE"); new Characteristic::Brightness(50); new Characteristic::Name("Light 1"); new Characteristic::ColorTemperature();