1
0
mirror of https://github.com/esphome/esphome.git synced 2025-11-18 07:45:56 +00:00

save 4 bytes

This commit is contained in:
J. Nick Koston
2025-11-08 23:14:57 -06:00
parent 5b8827d47a
commit 59485c1d2b

View File

@@ -44,19 +44,18 @@ template<typename... Ts> class RawAction : public RemoteTransmitterActionBase<Ts
public: public:
void set_code_template(RawTimings (*func)(Ts...)) { void set_code_template(RawTimings (*func)(Ts...)) {
this->code_.func = func; this->code_.func = func;
this->static_ = false; this->len_ = -1;
} }
void set_code_static(const int32_t *code, size_t len) { void set_code_static(const int32_t *code, size_t len) {
this->code_.static_code.data = code; this->code_.data = code;
this->code_.static_code.len = len; this->len_ = len;
this->static_ = true;
} }
TEMPLATABLE_VALUE(uint32_t, carrier_frequency); TEMPLATABLE_VALUE(uint32_t, carrier_frequency);
void encode(RemoteTransmitData *dst, Ts... x) override { void encode(RemoteTransmitData *dst, Ts... x) override {
if (this->static_) { if (this->len_ >= 0) {
for (size_t i = 0; i < this->code_.static_code.len; i++) { for (size_t i = 0; i < static_cast<size_t>(this->len_); i++) {
auto val = this->code_.static_code.data[i]; auto val = this->code_.data[i];
if (val < 0) { if (val < 0) {
dst->space(static_cast<uint32_t>(-val)); dst->space(static_cast<uint32_t>(-val));
} else { } else {
@@ -70,13 +69,10 @@ template<typename... Ts> class RawAction : public RemoteTransmitterActionBase<Ts
} }
protected: protected:
bool static_{true}; ssize_t len_{-1};
union Code { union Code {
RawTimings (*func)(Ts...); RawTimings (*func)(Ts...);
struct {
const int32_t *data; const int32_t *data;
size_t len;
} static_code;
} code_; } code_;
}; };