ESPHome 2026.5.1
Loading...
Searching...
No Matches
dyson_protocol.h
Go to the documentation of this file.
1#pragma once
2
3#include "remote_base.h"
4
5#include <cinttypes>
6
7namespace esphome::remote_base {
8
9static constexpr uint8_t IGNORE_INDEX = 0xFF;
10
11struct DysonData {
12 uint16_t code; // the button, e.g. power, swing, fan++, ...
13 uint8_t index; // the rolling index counter
14 bool operator==(const DysonData &rhs) const {
15 if (IGNORE_INDEX == index || IGNORE_INDEX == rhs.index) {
16 return code == rhs.code;
17 }
18 return code == rhs.code && index == rhs.index;
19 }
20};
21
22class DysonProtocol : public RemoteProtocol<DysonData> {
23 public:
24 void encode(RemoteTransmitData *dst, const DysonData &data) override;
25 optional<DysonData> decode(RemoteReceiveData src) override;
26 void dump(const DysonData &data) override;
27};
28
29DECLARE_REMOTE_PROTOCOL(Dyson)
30
31template<typename... Ts> class DysonAction : public RemoteTransmitterActionBase<Ts...> {
32 public:
33 TEMPLATABLE_VALUE(uint16_t, code)
34 TEMPLATABLE_VALUE(uint8_t, index)
35
36 void encode(RemoteTransmitData *dst, Ts... x) override {
37 DysonData data{};
38 data.code = this->code_.value(x...);
39 data.index = this->index_.value(x...);
40 DysonProtocol().encode(dst, data);
41 }
42};
43
44} // namespace esphome::remote_base
optional< DysonData > decode(RemoteReceiveData src) override
void encode(RemoteTransmitData *dst, const DysonData &data) override
void dump(const DysonData &data) override
bool operator==(const DysonData &rhs) const
uint16_t x
Definition tt21100.cpp:5