M5Unit-INFRARED 0.2.0 git rev:76ad9e1
Loading...
Searching...
No Matches
mitsubishi_codec.hpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2026 M5Stack Technology CO LTD
3 *
4 * SPDX-License-Identifier: MIT
5 */
10#ifndef M5_UNIT_INFRARED_IR_MITSUBISHI_CODEC_HPP
11#define M5_UNIT_INFRARED_IR_MITSUBISHI_CODEC_HPP
12
13#include "ir_codec.hpp"
14
15namespace m5 {
16namespace unit {
17namespace ir {
18
45class MitsubishiCodec : public IRCodec {
46public:
51
53 item_container_type encode(uint16_t address, uint16_t command, bool repeat) override;
55 bool decode(const gpio::m5_rmt_item_t* items, uint32_t num, DecodeResult& result) override;
56
58 uint32_t carrierFrequencyHz() const override
59 {
60 return 33000;
61 }
62
64 uint8_t minFrames() const override
65 {
66 return 2;
67 }
68
70 uint16_t frameGapUs() const override
71 {
72 return 28500;
73 }
74
75private:
76 static constexpr uint16_t BIT_MARK{300};
77 static constexpr uint16_t ONE_SPACE{2100};
78 static constexpr uint16_t ZERO_SPACE{900};
79 static constexpr uint16_t TOLERANCE{250};
80};
81
82} // namespace ir
83} // namespace unit
84} // namespace m5
85#endif
Abstract base class for IR protocol encoding/decoding.
Definition ir_codec.hpp:62
Mitsubishi 16-bit IR protocol encoder/decoder.
Definition mitsubishi_codec.hpp:45
item_container_type encode(uint16_t address, uint16_t command, bool repeat) override
Encode a single 16-bit Mitsubishi frame (UnitIR::send() replicates per minFrames())
Definition mitsubishi_codec.cpp:17
uint32_t carrierFrequencyHz() const override
Carrier frequency for Mitsubishi (33 kHz)
Definition mitsubishi_codec.hpp:58
uint16_t frameGapUs() const override
Inter-frame gap ≈ 28.5 ms as used by real Mitsubishi remotes.
Definition mitsubishi_codec.hpp:70
bool decode(const gpio::m5_rmt_item_t *items, uint32_t num, DecodeResult &result) override
Decode a single 16-bit Mitsubishi frame (16 data items + trailing stop mark)
Definition mitsubishi_codec.cpp:36
MitsubishiCodec()
Constructor.
Definition mitsubishi_codec.hpp:48
uint8_t minFrames() const override
Mitsubishi requires the frame to be sent twice per keypress.
Definition mitsubishi_codec.hpp:64
IR protocol codec base class and types.
std::vector< m5::unit::gpio::m5_rmt_item_t > item_container_type
RMT item container.
Definition ir_codec.hpp:54
CodecType
Identifies the IR protocol codec implementation.
Definition ir_codec.hpp:27
@ Mitsubishi
Mitsubishi (16-bit, no leader, sent twice)
Top level namespace of M5Stack.
Unit-related namespace.
Result of decoding a received IR frame.
Definition ir_codec.hpp:44