diff --git a/src/HomeSpan.cpp b/src/HomeSpan.cpp index 9a0991f..d0612f2 100644 --- a/src/HomeSpan.cpp +++ b/src/HomeSpan.cpp @@ -1645,6 +1645,13 @@ int SpanCharacteristic::sprintfAttributes(char *cBuf, int flags){ nBytes+=snprintf(cBuf?(cBuf+nBytes):NULL,cBuf?128:0,",\"minStep\":%s",uvPrint(stepValue).c_str()); } + if(unit){ + if(strlen(unit)>0) + nBytes+=snprintf(cBuf?(cBuf+nBytes):NULL,cBuf?128:0,",\"unit\":\"%s\"",unit); + else + nBytes+=snprintf(cBuf?(cBuf+nBytes):NULL,cBuf?128:0,",\"unit\":null"); + } + if(validValues){ nBytes+=snprintf(cBuf?(cBuf+nBytes):NULL,cBuf?128:0,",\"valid-values\":%s",validValues); } diff --git a/src/HomeSpan.h b/src/HomeSpan.h index 40f872a..3a3f39c 100644 --- a/src/HomeSpan.h +++ b/src/HomeSpan.h @@ -260,6 +260,7 @@ struct SpanCharacteristic{ uint8_t perms; // Characteristic Permissions FORMAT format; // Characteristic Format char *desc=NULL; // Characteristic Description (optional) + char *unit=NULL; // Characteristic Unit (optional) UVal minValue; // Characteristic minimum (not applicable for STRING) UVal maxValue; // Characteristic maximum (not applicable for STRING) UVal stepValue; // Characteristic step size (not applicable for STRING) @@ -607,6 +608,12 @@ struct SpanCharacteristic{ return(this); } + SpanCharacteristic *setUnit(const char *c){ + unit = (char *)realloc(unit, strlen(c) + 1); + strcpy(unit, c); + return(this); + } + }; ///////////////////////////////