#pragma once #include #include enum ProtocolNo : unsigned int { NO_PROTOCOL = 0, PROTOCOL_1 = 1, PROTOCOL_2 = 2, PROTOCOL_13 = 13 }; class Protocol { protected: ProtocolNo no; public: explicit Protocol(ProtocolNo protocol) : no(protocol) {} Protocol& setProtocol(unsigned int p) { no = static_cast(p); return *this; } virtual void fromJson(JsonObjectConst& rcSwitch, RCSwitch& rcDevice) { ProtocolNo 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; } } fallbackProtocol{ NO_PROTOCOL };