#pragma once #include "remote_base.h" #include namespace esphome::remote_base { struct BrennenstuhlData { uint32_t code; bool operator==(const BrennenstuhlData &rhs) const { return code == rhs.code; } }; class BrennenstuhlProtocol : public RemoteProtocol { public: void encode(RemoteTransmitData *dst, const BrennenstuhlData &data) override; optional decode(RemoteReceiveData src) override; void dump(const BrennenstuhlData &data) override; }; DECLARE_REMOTE_PROTOCOL(Brennenstuhl) template class BrennenstuhlAction : public RemoteTransmitterActionBase { public: TEMPLATABLE_VALUE(uint32_t, code) void encode(RemoteTransmitData *dst, Ts... x) override { BrennenstuhlData data{}; data.code = this->code_.value(x...); BrennenstuhlProtocol().encode(dst, data); } }; } // namespace esphome::remote_base