ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
pronto_protocol.h
Go to the documentation of this file.
1#pragma once
2
4#include "remote_base.h"
5
6#include <vector>
7
8namespace esphome::remote_base {
9
10std::vector<uint16_t> encode_pronto(const std::string &str);
11
12struct ProntoData {
13 std::string data;
14 int delta;
15
16 bool operator==(const ProntoData &rhs) const;
17};
18
19class ProntoProtocol : public RemoteProtocol<ProntoData> {
20 private:
21 void send_pronto_(RemoteTransmitData *dst, const std::vector<uint16_t> &data);
22 void send_pronto_(RemoteTransmitData *dst, const std::string &str);
23
24 uint16_t effective_frequency_(uint16_t frequency);
25 uint16_t to_timebase_(uint16_t frequency);
26 uint16_t to_frequency_code_(uint16_t frequency);
27 std::string dump_digit_(uint8_t x);
28 std::string dump_number_(uint16_t number, bool end = false);
29 std::string dump_duration_(uint32_t duration, uint16_t timebase, bool end = false);
30 std::string compensate_and_dump_sequence_(const RawTimings &data, uint16_t timebase);
31
32 public:
33 void encode(RemoteTransmitData *dst, const ProntoData &data) override;
34 optional<ProntoData> decode(RemoteReceiveData src) override;
35 void dump(const ProntoData &data) override;
36};
37
38DECLARE_REMOTE_PROTOCOL(Pronto)
39
40template<typename... Ts> class ProntoAction : public RemoteTransmitterActionBase<Ts...> {
41 public:
42 TEMPLATABLE_VALUE(std::string, data)
43 TEMPLATABLE_VALUE(int, delta)
44
45 void encode(RemoteTransmitData *dst, Ts... x) override {
46 ProntoData data{};
47 data.data = this->data_.value(x...);
48 data.delta = this->delta_.value(x...);
49 ProntoProtocol().encode(dst, data);
50 }
51};
52
53} // namespace esphome::remote_base
uint16_le_t frequency
Definition bl0942.h:6
void encode(RemoteTransmitData *dst, const ProntoData &data) override
optional< ProntoData > decode(RemoteReceiveData src) override
void dump(const ProntoData &data) override
uint8_t duration
Definition msa3xx.h:0
std::vector< uint16_t > encode_pronto(const std::string &str)
std::vector< int32_t > RawTimings
Definition remote_base.h:18
const void * src
Definition hal.h:64
static void uint32_t
bool operator==(const ProntoData &rhs) const
uint8_t end[39]
Definition sun_gtil2.cpp:17
uint16_t x
Definition tt21100.cpp:5