Added setUnit(char *) as method to SpanCharacteristic

Optional method to add or override the units for a Characteristic (i.e., "percentage", or "celsius") as per HAP-R2 Table 6-6.
This commit is contained in:
Gregg 2021-12-23 22:28:26 -06:00
parent 3cc14c3a8d
commit 8737efea14
2 changed files with 14 additions and 0 deletions

View File

@ -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()); 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){ if(validValues){
nBytes+=snprintf(cBuf?(cBuf+nBytes):NULL,cBuf?128:0,",\"valid-values\":%s",validValues); nBytes+=snprintf(cBuf?(cBuf+nBytes):NULL,cBuf?128:0,",\"valid-values\":%s",validValues);
} }

View File

@ -260,6 +260,7 @@ struct SpanCharacteristic{
uint8_t perms; // Characteristic Permissions uint8_t perms; // Characteristic Permissions
FORMAT format; // Characteristic Format FORMAT format; // Characteristic Format
char *desc=NULL; // Characteristic Description (optional) char *desc=NULL; // Characteristic Description (optional)
char *unit=NULL; // Characteristic Unit (optional)
UVal minValue; // Characteristic minimum (not applicable for STRING) UVal minValue; // Characteristic minimum (not applicable for STRING)
UVal maxValue; // Characteristic maximum (not applicable for STRING) UVal maxValue; // Characteristic maximum (not applicable for STRING)
UVal stepValue; // Characteristic step size (not applicable for STRING) UVal stepValue; // Characteristic step size (not applicable for STRING)
@ -607,6 +608,12 @@ struct SpanCharacteristic{
return(this); return(this);
} }
SpanCharacteristic *setUnit(const char *c){
unit = (char *)realloc(unit, strlen(c) + 1);
strcpy(unit, c);
return(this);
}
}; };
/////////////////////////////// ///////////////////////////////