ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
pioneer_wyt_protocol.h
Go to the documentation of this file.
1#pragma once
2
3#include <array>
4#include <vector>
5
7#include "remote_base.h"
8
9namespace esphome::remote_base {
10
12 public:
13 static constexpr uint8_t SIZE = 14;
18
19 // Make default
21 // Make from initializer_list
22 PioneerWytData(std::initializer_list<uint8_t> data) {
23 std::copy_n(data.begin(), std::min(data.size(), this->data_.size()), this->data_.begin());
24 }
25 // Make from vector
26 PioneerWytData(const std::vector<uint8_t> &data) {
27 std::copy_n(data.begin(), std::min(data.size(), this->data_.size()), this->data_.begin());
28 }
29 PioneerWytData(const uint8_t *data, size_t len) {
30 progmem_memcpy(this->data_.data(), data, std::min(len, this->data_.size()));
31 }
32
33 uint8_t *data() { return this->data_.data(); }
34 const uint8_t *data() const { return this->data_.data(); }
35 uint8_t size() const { return this->data_.size(); }
36 // FAN frames add 0x0F to the byte sum
37 void finalize() {
38 this->data_[OFFSET_CS] =
39 sum_bytes(this->data_.data(), OFFSET_CS, this->type() == PIONEER_WYT_TYPE_FAN ? 0x0F : 0x00);
40 }
41 PioneerWytDataType type() const { return static_cast<PioneerWytDataType>(this->data_[3]); }
42 uint8_t &operator[](size_t idx) { return this->data_[idx]; }
43 const uint8_t &operator[](size_t idx) const { return this->data_[idx]; }
44
45 protected:
46 static constexpr uint8_t OFFSET_CS = SIZE - 1;
47 std::array<uint8_t, SIZE> data_{};
48};
49
50class PioneerWytProtocol : public RemoteProtocol<PioneerWytData> {
51 public:
52 void encode(RemoteTransmitData *dst, const PioneerWytData &data);
53};
54
55} // namespace esphome::remote_base
PioneerWytData(const uint8_t *data, size_t len)
PioneerWytData(std::initializer_list< uint8_t > data)
const uint8_t & operator[](size_t idx) const
PioneerWytData(const std::vector< uint8_t > &data)
void encode(RemoteTransmitData *dst, const PioneerWytData &data)
constexpr uint8_t sum_bytes(const uint8_t *data, size_t len, uint8_t sum=0)
Add up the bytes of data with size len, truncated to 8 bits: the checksum many serial and IR protocol...
Definition helpers.h:886
void progmem_memcpy(void *dst, const void *src, size_t len)
Definition hal.h:56
const void size_t len
Definition hal.h:68