diff --git a/gateway/include/devices.h b/gateway/include/devices.h index 604ab27..a35efbd 100644 --- a/gateway/include/devices.h +++ b/gateway/include/devices.h @@ -6,7 +6,7 @@ using namespace Ha; -DeviceConfig* gatewayDevice = (new DeviceConfig{MAIN_DEVICE_ID})->withName("RC Gateway")->withManufacturer("Adafruit")->withModel("Huzzah Esp8266"); +auto gatewayDevice = DeviceConfig::create(MAIN_DEVICE_ID)->withName("RC Gateway")->withManufacturer("Adafruit")->withModel("Huzzah Esp8266"); namespace OilTank { Sensor* buildRoomSensor(const char* id) { @@ -60,7 +60,7 @@ struct PollinSwitch : Switch { strcpy(uId, s.c_str()); return uId; }()), group(group), channel(channel) { - mainDevice = (new DeviceConfig{id})->withName(name)->withManufacturer("Pollin")->withArea(area)->withParent(gatewayDevice); + mainDevice = DeviceConfig::create(id)->withName(name)->withManufacturer("Pollin")->withArea(area)->withParent(gatewayDevice); deviceClass = "outlet"; p1Switches.insert({ string(id), this }); } @@ -80,7 +80,7 @@ struct EasyHomeSwitch : Switch { : Switch(name, id) { memcpy(&this->on[4], on, 4 * sizeof(unsigned long)); memcpy(&this->off[4], off, 4 * sizeof(unsigned long)); - mainDevice = (new DeviceConfig{id})->withName(name)->withManufacturer("Intertek")->withModel("Easy Home")->withArea(area)->withParent(gatewayDevice); + mainDevice = DeviceConfig::create(id)->withName(name)->withManufacturer("Intertek")->withModel("Easy Home")->withArea(area)->withParent(gatewayDevice); deviceClass = "outlet"; for (int i = 0; i < 8; i++) { onSwitches.insert({ this->on[i], this }); diff --git a/gateway/include/ha.h b/gateway/include/ha.h index 26385c3..6c856ff 100644 --- a/gateway/include/ha.h +++ b/gateway/include/ha.h @@ -18,8 +18,6 @@ namespace Ha { const char* area = nullptr; DeviceConfig* parent = nullptr; - DeviceConfig(const char* id) : id(id) {} - static DeviceConfig* create(const char* id) { return new DeviceConfig{ id }; } @@ -59,6 +57,9 @@ namespace Ha { parent = deviceConfig; return this; } + + protected: + DeviceConfig(const char* id) : id(id) {} }; struct Component { @@ -162,13 +163,13 @@ namespace Ha { } Builder& withSecondary(Component* c) { - c->mainDevice = new DeviceConfig{ cmp->id }; + c->mainDevice = DeviceConfig::create(cmp->id); return *this; } Builder& withDiagnostic(Component* c) { c->entityCategory = "diagnostic"; - c->mainDevice = new DeviceConfig{ cmp->id }; + c->mainDevice = DeviceConfig::create(cmp->id); return *this; }