diff --git a/src/Characteristics.h b/src/Characteristics.h index 5530d15..2364e97 100644 --- a/src/Characteristics.h +++ b/src/Characteristics.h @@ -196,8 +196,6 @@ struct HapCharacteristics { HAPCHAR( VolumeSelector, EA, PW, UINT8, true ); HAPCHAR( WaterLevel, B5, PR+EV, FLOAT, false ); - HAPCHAR( EveTest, 12345678-079E-48FF-8F27-9C2605A29F52, PW+PR+EV, DATA, false ); - }; extern HapCharacteristics hapChars; diff --git a/src/Span.h b/src/Span.h index d7221be..382456c 100644 --- a/src/Span.h +++ b/src/Span.h @@ -526,8 +526,6 @@ namespace Characteristic { CREATE_CHAR(uint8_t,VolumeSelector,0,0,1); CREATE_CHAR(double,WaterLevel,0,0,100); - CREATE_CHAR(const char *,EveTest,"AAAA",0,1); - } //////////////////////////////////////////////////////// @@ -542,6 +540,10 @@ namespace Characteristic { 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,true} { init(val,nvsStore); } }; } +#define CUSTOM_CHAR_DATA(NAME,UUID,PERMISISONS) \ + HapChar _CUSTOM_##NAME {#UUID,#NAME,(PERMS)(PERMISISONS),DATA,true}; \ + namespace Characteristic { struct NAME : SpanCharacteristic { NAME(const char * val="AA==", boolean nvsStore=false) : SpanCharacteristic {&_CUSTOM_##NAME,true} { init(val,nvsStore); } }; } + #define CUSTOM_SERV(NAME,UUID) \ namespace Service { struct NAME : SpanService { NAME() : SpanService{#UUID,#NAME,true}{} }; } diff --git a/src/src.ino b/src/src.ino index b15dcb8..6a9026f 100644 --- a/src/src.ino +++ b/src/src.ino @@ -4,7 +4,9 @@ #include "HomeSpan.h" -Characteristic::EveTest *eveTest; +CUSTOM_CHAR_DATA(DataTest, 87654321-079E-48FF-8F27-9C2605A29F52, PW+PR+EV); +Characteristic::DataTest *eveTest; + void setup() { @@ -21,16 +23,26 @@ void setup() { new Service::LightBulb(); new Characteristic::On(); new Characteristic::ConfiguredName(); - eveTest=new Characteristic::EveTest(); + eveTest=new Characteristic::DataTest(); uint8_t x[]={0x01,0x26,0xFF,0x01,0x26,0xFF}; eveTest->setData(x,6); uint8_t y[6]={0}; int n=eveTest->getData(y,10); Serial.printf("%d:",n); - for(int i=0;isetData(y,6); + n=eveTest->getData(x,10); + Serial.printf("%d:",n); + for(int i=0;i