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();