Added more error-checking to SpanCharacteristic
Checks to ensure that: (A) Characteristic is allowable (i.e. either required or optional) for the defined Service, and (B) Characteristic has not already been instantiated for the defined Service.
This commit is contained in:
parent
a584cbb042
commit
254406c802
|
|
@ -103,7 +103,8 @@ void Span::poll() {
|
||||||
Serial.print(displayName);
|
Serial.print(displayName);
|
||||||
Serial.print(" is READY!\n\n");
|
Serial.print(" is READY!\n\n");
|
||||||
isInitialized=true;
|
isInitialized=true;
|
||||||
}
|
|
||||||
|
} // isInitialized
|
||||||
|
|
||||||
if(strlen(network.wifiData.ssid)>0 && WiFi.status()!=WL_CONNECTED){
|
if(strlen(network.wifiData.ssid)>0 && WiFi.status()!=WL_CONNECTED){
|
||||||
initWifi();
|
initWifi();
|
||||||
|
|
@ -1109,6 +1110,29 @@ SpanCharacteristic::SpanCharacteristic(char *type, uint8_t perms, char *hapName)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char valid=false;
|
||||||
|
|
||||||
|
for(int i=0; !valid && i<homeSpan.Accessories.back()->Services.back()->req.size(); i++)
|
||||||
|
valid=!strcmp(type,homeSpan.Accessories.back()->Services.back()->req[i]->id);
|
||||||
|
|
||||||
|
for(int i=0; !valid && i<homeSpan.Accessories.back()->Services.back()->opt.size(); i++)
|
||||||
|
valid=!strcmp(type,homeSpan.Accessories.back()->Services.back()->opt[i]->id);
|
||||||
|
|
||||||
|
if(!valid){
|
||||||
|
homeSpan.configLog+=" *** ERROR! Service does not support this Characteristic. ***";
|
||||||
|
homeSpan.nFatalErrors++;
|
||||||
|
}
|
||||||
|
|
||||||
|
valid=true;
|
||||||
|
|
||||||
|
for(int i=0; valid && i<homeSpan.Accessories.back()->Services.back()->Characteristics.size(); i++)
|
||||||
|
valid=strcmp(type,homeSpan.Accessories.back()->Services.back()->Characteristics[i]->type);
|
||||||
|
|
||||||
|
if(!valid){
|
||||||
|
homeSpan.configLog+=" *** ERROR! Characteristic already defined for this Service. ***";
|
||||||
|
homeSpan.nFatalErrors++;
|
||||||
|
}
|
||||||
|
|
||||||
homeSpan.configLog+="\n";
|
homeSpan.configLog+="\n";
|
||||||
homeSpan.Accessories.back()->Services.back()->Characteristics.push_back(this);
|
homeSpan.Accessories.back()->Services.back()->Characteristics.push_back(this);
|
||||||
iid=++(homeSpan.Accessories.back()->iidCount);
|
iid=++(homeSpan.Accessories.back()->iidCount);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue