M5Unit-INFRARED 0.2.0 git rev:76ad9e1
Loading...
Searching...
No Matches
panasonic_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_PANASONIC_CODEC_HPP
11#define M5_UNIT_INFRARED_IR_PANASONIC_CODEC_HPP
12
13#include "ir_codec.hpp"
14
15namespace m5 {
16namespace unit {
17namespace ir {
18
48class PanasonicCodec : public IRCodec {
49public:
54
56 item_container_type encode(uint16_t address, uint16_t command, bool repeat) override;
58 bool decode(const gpio::m5_rmt_item_t* items, uint32_t num, DecodeResult& result) override;
59
61 uint32_t carrierFrequencyHz() const override
62 {
63 return 36700;
64 }
65
71 item_container_type encodeRaw48(uint64_t data48);
72
83 static uint64_t encodePanasonic(uint16_t manufacturer, uint8_t device, uint8_t subdevice, uint8_t function)
84 {
85 uint8_t checksum = static_cast<uint8_t>(device ^ subdevice ^ function);
86 return (static_cast<uint64_t>(manufacturer) << 32) | (static_cast<uint64_t>(device) << 24) |
87 (static_cast<uint64_t>(subdevice) << 16) | (static_cast<uint64_t>(function) << 8) |
88 static_cast<uint64_t>(checksum);
89 }
90
91private:
92 static constexpr uint16_t LEADER_MARK{3500};
93 static constexpr uint16_t LEADER_SPACE{1750};
94 static constexpr uint16_t BIT_MARK{425};
95 static constexpr uint16_t ONE_SPACE{1275};
96 static constexpr uint16_t ZERO_SPACE{425};
97 static constexpr uint16_t TOLERANCE{200};
98};
99
100} // namespace ir
101} // namespace unit
102} // namespace m5
103#endif
Abstract base class for IR protocol encoding/decoding.
Definition ir_codec.hpp:62
Panasonic (Kaseikyo) 48-bit IR protocol encoder/decoder.
Definition panasonic_codec.hpp:48
item_container_type encodeRaw48(uint64_t data48)
Encode with explicit 48-bit raw data.
Definition panasonic_codec.cpp:42
item_container_type encode(uint16_t address, uint16_t command, bool repeat) override
Encode a 48-bit Panasonic frame from (manufacturer=address, device+function=command)
Definition panasonic_codec.cpp:30
PanasonicCodec()
Constructor.
Definition panasonic_codec.hpp:51
static uint64_t encodePanasonic(uint16_t manufacturer, uint8_t device, uint8_t subdevice, uint8_t function)
Build a 48-bit Panasonic / Kaseikyo frame from structured fields.
Definition panasonic_codec.hpp:83
uint32_t carrierFrequencyHz() const override
Carrier frequency for Panasonic (36.7 kHz)
Definition panasonic_codec.hpp:61
bool decode(const gpio::m5_rmt_item_t *items, uint32_t num, DecodeResult &result) override
Decode a 48-bit Panasonic frame; result.raw receives the full 48-bit value.
Definition panasonic_codec.cpp: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
@ Panasonic
Panasonic / Kaseikyo (48-bit, customer code + data)
Top level namespace of M5Stack.
Unit-related namespace.
Result of decoding a received IR frame.
Definition ir_codec.hpp:44