10#ifndef M5_UNIT_INFRARED_IR_PANASONIC_CODEC_HPP
11#define M5_UNIT_INFRARED_IR_PANASONIC_CODEC_HPP
58 bool decode(
const gpio::m5_rmt_item_t* items, uint32_t num,
DecodeResult& result)
override;
83 static uint64_t
encodePanasonic(uint16_t manufacturer, uint8_t device, uint8_t subdevice, uint8_t function)
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);
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};
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.
Result of decoding a received IR frame.
Definition ir_codec.hpp:44