Added getVal and getNewVal
Updated Example 11 to use getVal and getNewVal, but kept distinction between integer and double Characteristics
This commit is contained in:
parent
819c6ebe0d
commit
1347e4fd5c
|
|
@ -74,22 +74,23 @@ struct DEV_DimmableLED : Service::LightBulb { // Dimmable LED
|
||||||
LOG1(ledPin);
|
LOG1(ledPin);
|
||||||
LOG1(": Current Power=");
|
LOG1(": Current Power=");
|
||||||
LOG1(power->value.BOOL?"true":"false");
|
LOG1(power->value.BOOL?"true":"false");
|
||||||
|
LOG1(power->getVal<boolean>()?"true":"false");
|
||||||
LOG1(" Current Brightness=");
|
LOG1(" Current Brightness=");
|
||||||
LOG1(level->value.INT);
|
LOG1(level->getVal<int>());
|
||||||
|
|
||||||
if(power->isUpdated){
|
if(power->isUpdated){
|
||||||
LOG1(" New Power=");
|
LOG1(" New Power=");
|
||||||
LOG1(power->newValue.BOOL?"true":"false");
|
LOG1(power->getNewVal<boolean>()?"true":"false");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(level->isUpdated){
|
if(level->isUpdated){
|
||||||
LOG1(" New Brightness=");
|
LOG1(" New Brightness=");
|
||||||
LOG1(level->newValue.INT);
|
LOG1(level->getNewVal<boolean>());
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG1("\n");
|
LOG1("\n");
|
||||||
|
|
||||||
pwmPin->set(channel,power->newValue.BOOL*level->newValue.INT);
|
pwmPin->set(channel,power->getNewVal<boolean>()*level->getNewVal<boolean>());
|
||||||
|
|
||||||
return(StatusCode::OK); // return OK status code
|
return(StatusCode::OK); // return OK status code
|
||||||
|
|
||||||
|
|
@ -138,42 +139,42 @@ struct DEV_RgbLED : Service::LightBulb { // RGB LED (Command Cathode)
|
||||||
int v;
|
int v;
|
||||||
double h, s, r, g, b;
|
double h, s, r, g, b;
|
||||||
|
|
||||||
h=H->value.FLOAT; // get all current values
|
h=H->getVal<double>(); // get all current values
|
||||||
s=S->value.FLOAT;
|
s=S->getVal<double>();
|
||||||
v=V->value.INT;
|
v=V->getVal<int>();
|
||||||
p=power->value.BOOL;
|
p=power->getVal<boolean>();
|
||||||
|
|
||||||
char cBuf[128];
|
char cBuf[128];
|
||||||
sprintf(cBuf,"Updating RGB LED on pins=(%d,%d,%d): ",redPin->getPin(),greenPin->getPin(),bluePin->getPin());
|
sprintf(cBuf,"Updating RGB LED on pins=(%d,%d,%d): ",redPin->getPin(),greenPin->getPin(),bluePin->getPin());
|
||||||
LOG1(cBuf);
|
LOG1(cBuf);
|
||||||
|
|
||||||
if(power->isUpdated){
|
if(power->isUpdated){
|
||||||
p=power->newValue.BOOL;
|
p=power->getNewVal<boolean>();
|
||||||
sprintf(cBuf,"Power=%s->%s, ",power->value.BOOL?"true":"false",p?"true":"false");
|
sprintf(cBuf,"Power=%s->%s, ",power->getVal<boolean>()?"true":"false",p?"true":"false");
|
||||||
} else {
|
} else {
|
||||||
sprintf(cBuf,"Power=%s, ",p?"true":"false");
|
sprintf(cBuf,"Power=%s, ",p?"true":"false");
|
||||||
}
|
}
|
||||||
LOG1(cBuf);
|
LOG1(cBuf);
|
||||||
|
|
||||||
if(H->isUpdated){
|
if(H->isUpdated){
|
||||||
h=H->newValue.FLOAT;
|
h=H->getNewVal<double>();
|
||||||
sprintf(cBuf,"H=%d->%d, ",(int)H->value.FLOAT,(int)h);
|
sprintf(cBuf,"H=%d->%d, ",(int)H->getVal<double>(),(int)h);
|
||||||
} else {
|
} else {
|
||||||
sprintf(cBuf,"H=%d, ",(int)h);
|
sprintf(cBuf,"H=%d, ",(int)h);
|
||||||
}
|
}
|
||||||
LOG1(cBuf);
|
LOG1(cBuf);
|
||||||
|
|
||||||
if(S->isUpdated){
|
if(S->isUpdated){
|
||||||
s=S->newValue.FLOAT;
|
s=S->getNewVal<double>();
|
||||||
sprintf(cBuf,"S=%d->%d, ",(int)S->value.FLOAT,(int)s);
|
sprintf(cBuf,"S=%d->%d, ",(int)S->getVal<double>(),(int)s);
|
||||||
} else {
|
} else {
|
||||||
sprintf(cBuf,"S=%d, ",(int)s);
|
sprintf(cBuf,"S=%d, ",(int)s);
|
||||||
}
|
}
|
||||||
LOG1(cBuf);
|
LOG1(cBuf);
|
||||||
|
|
||||||
if(V->isUpdated){
|
if(V->isUpdated){
|
||||||
v=V->newValue.INT;
|
v=V->getNewVal<int>();
|
||||||
sprintf(cBuf,"V=%d->%d ",V->value.INT,v);
|
sprintf(cBuf,"V=%d->%d ",V->getVal<int>(),v);
|
||||||
} else {
|
} else {
|
||||||
sprintf(cBuf,"V=%d ",v);
|
sprintf(cBuf,"V=%d ",v);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1093,5 +1093,3 @@ SpanRange::SpanRange(int min, int max, int step){
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -164,6 +164,37 @@ struct SpanCharacteristic{
|
||||||
|
|
||||||
int sprintfAttributes(char *cBuf, int flags); // prints Characteristic JSON records into buf, according to flags mask; return number of characters printed, excluding null terminator
|
int sprintfAttributes(char *cBuf, int flags); // prints Characteristic JSON records into buf, according to flags mask; return number of characters printed, excluding null terminator
|
||||||
StatusCode loadUpdate(char *val, char *ev); // load updated val/ev from PUT /characteristic JSON request. Return intiial HAP status code (checks to see if characteristic is found, is writable, etc.)
|
StatusCode loadUpdate(char *val, char *ev); // load updated val/ev from PUT /characteristic JSON request. Return intiial HAP status code (checks to see if characteristic is found, is writable, etc.)
|
||||||
|
|
||||||
|
template <class T> T getVal(){return(getValue<T>(value));} // returns UVal value
|
||||||
|
template <class T> T getNewVal(){return(getValue<T>(newValue));} // returns UVal newValue
|
||||||
|
template <class T> T getValue(UVal v); // returns UVal v
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
///////////////////////////////
|
||||||
|
|
||||||
|
template <class T> T SpanCharacteristic::getValue(UVal v){
|
||||||
|
|
||||||
|
switch(format){
|
||||||
|
case BOOL:
|
||||||
|
return((T) v.BOOL);
|
||||||
|
case INT:
|
||||||
|
return((T) v.INT);
|
||||||
|
case UINT8:
|
||||||
|
return((T) v.UINT8);
|
||||||
|
case UINT16:
|
||||||
|
return((T) v.UINT16);
|
||||||
|
case UINT32:
|
||||||
|
return((T) v.UINT32);
|
||||||
|
case UINT64:
|
||||||
|
return((T) v.UINT64);
|
||||||
|
case FLOAT:
|
||||||
|
return((T) v.FLOAT);
|
||||||
|
case STRING:
|
||||||
|
Serial.print("*** ERROR: Can't use getVal() or getNewVal() for string Characteristics.\n\n");
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue