ESPHome
2026.6.0-dev
Loading...
Searching...
No Matches
esphome
components
remote_base
jvc_protocol.cpp
Go to the documentation of this file.
1
#include "
jvc_protocol.h
"
2
#include "
esphome/core/log.h
"
3
4
namespace
esphome::remote_base
{
5
6
static
const
char
*
const
TAG =
"remote.jvc"
;
7
8
static
constexpr
uint8_t NBITS = 16;
9
static
constexpr
uint32_t
HEADER_HIGH_US = 8400;
10
static
constexpr
uint32_t
HEADER_LOW_US = 4200;
11
static
constexpr
uint32_t
BIT_ONE_LOW_US = 1725;
12
static
constexpr
uint32_t
BIT_ZERO_LOW_US = 525;
13
static
constexpr
uint32_t
BIT_HIGH_US = 525;
14
15
void
JVCProtocol::encode
(
RemoteTransmitData
*dst,
const
JVCData
&data) {
16
dst->
set_carrier_frequency
(38000);
17
dst->
reserve
(2 + NBITS * 2u);
18
19
dst->
item
(HEADER_HIGH_US, HEADER_LOW_US);
20
21
for
(
uint32_t
mask = 1UL << (NBITS - 1); mask != 0; mask >>= 1) {
22
if
(data.data & mask) {
23
dst->
item
(BIT_HIGH_US, BIT_ONE_LOW_US);
24
}
else
{
25
dst->
item
(BIT_HIGH_US, BIT_ZERO_LOW_US);
26
}
27
}
28
29
dst->
mark
(BIT_HIGH_US);
30
}
31
optional<JVCData>
JVCProtocol::decode
(
RemoteReceiveData
src
) {
32
JVCData
out{.data = 0};
33
if
(!
src
.expect_item(HEADER_HIGH_US, HEADER_LOW_US))
34
return
{};
35
36
for
(uint8_t i = 0; i < NBITS; i++) {
37
out.data <<= 1UL;
38
if
(
src
.expect_item(BIT_HIGH_US, BIT_ONE_LOW_US)) {
39
out.data |= 1UL;
40
}
else
if
(
src
.expect_item(BIT_HIGH_US, BIT_ZERO_LOW_US)) {
41
out.data |= 0UL;
42
}
else
{
43
return
{};
44
}
45
}
46
return
out;
47
}
48
void
JVCProtocol::dump
(
const
JVCData
&data) { ESP_LOGI(TAG,
"Received JVC: data=0x%04"
PRIX32, data.data); }
49
50
}
// namespace esphome::remote_base
esphome::remote_base::JVCProtocol::decode
optional< JVCData > decode(RemoteReceiveData src) override
Definition
jvc_protocol.cpp:31
esphome::remote_base::JVCProtocol::encode
void encode(RemoteTransmitData *dst, const JVCData &data) override
Definition
jvc_protocol.cpp:15
esphome::remote_base::JVCProtocol::dump
void dump(const JVCData &data) override
Definition
jvc_protocol.cpp:48
esphome::remote_base::RemoteReceiveData
Definition
remote_base.h:53
esphome::remote_base::RemoteTransmitData
Definition
remote_base.h:20
esphome::remote_base::RemoteTransmitData::set_carrier_frequency
void set_carrier_frequency(uint32_t carrier_frequency)
Definition
remote_base.h:29
esphome::remote_base::RemoteTransmitData::mark
void mark(uint32_t length)
Definition
remote_base.h:22
esphome::remote_base::RemoteTransmitData::item
void item(uint32_t mark, uint32_t space)
Definition
remote_base.h:24
esphome::remote_base::RemoteTransmitData::reserve
void reserve(uint32_t len)
Definition
remote_base.h:28
jvc_protocol.h
log.h
esphome::remote_base
Definition
abbwelcome_protocol.cpp:4
esphome::src
const void * src
Definition
hal.h:64
uint32_t
static void uint32_t
Definition
crash_handler.cpp:141
esphome::remote_base::JVCData
Definition
jvc_protocol.h:9
Generated by
1.12.0