#pragma once #include #include using namespace std; class Protocol { protected: unsigned int no; public: static unordered_map mapProtocols; Protocol(unsigned int protocol) { no = protocol; mapProtocols.insert({ no, this }); } Protocol& setProtocol(unsigned int p) { no = p; return *this; } virtual void fromJson(JsonObjectConst& rcSwitch, RCSwitch& rcDevice) { unsigned int protocol = rcSwitch["protocol"]; rcDevice.setProtocol(protocol); rcDevice.send(rcSwitch["value"]); } virtual void toJson(unsigned long value, JsonDocument& jsonDoc) { JsonObject rcSwitch = jsonDoc.createNestedObject("rcSwitch"); rcSwitch["protocol"] = no; rcSwitch["value"] = value; } }; unordered_map Protocol::mapProtocols; Protocol fallbackProtocol{ 0 };