#pragma once #include #include enum ProtocolNo : uint8_t { 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(uint8_t 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(uint32_t value, JsonDocument& jsonDoc) { JsonObject rcSwitch = jsonDoc.createNestedObject("rcSwitch"); rcSwitch["protocol"] = no; rcSwitch["value"] = value; } } fallbackProtocol{ NO_PROTOCOL };