Home IO Control
ESPHome add-on for IO-Homecontrol devices
Loading...
Searching...
No Matches
proto_timing.h File Reference

Physical-layer radio and timing parameters for the IO-Homecontrol protocol. More...

#include <cstdint>
Include dependency graph for proto_timing.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  esphome
namespace  esphome::home_io_control

Variables

static constexpr uint32_t esphome::home_io_control::FREQ_CH1 = 868250000
 The protocol uses 3 frequency channels in the 868 MHz ISM band.
static constexpr uint32_t esphome::home_io_control::FREQ_CH2 = 868950000
 Channel 2: 868.95 MHz (1W and 2W, TX channel).
static constexpr uint32_t esphome::home_io_control::FREQ_CH3 = 869850000
 Channel 3: 869.85 MHz (2W only).
static constexpr uint16_t esphome::home_io_control::LONG_PREAMBLE = 1024
 Preamble is a sequence of 0xAA bytes that precedes every frame.
static constexpr uint16_t esphome::home_io_control::SHORT_PREAMBLE = 8
 8 bytes for response/continuation frames
static constexpr uint16_t esphome::home_io_control::COLD_BROADCAST_REPLY_PREAMBLE = 80
 Default for TuningConfig::cold_broadcast_reply_preamble — preamble for a broadcast reply to a frame the peer caught via a rotating/hopping listen (currently: only the key-extraction responder's 0x29, the sole start=true frame any device-role builder in this codebase produces) — long enough to be reliably caught by a hopping receiver, short enough that broadcasting it across all 3 channels doesn't block the loop the way LONG_PREAMBLE does.
static constexpr uint16_t esphome::home_io_control::NORMAL_START_PREAMBLE = 32
 Default for TuningConfig::normal_start_preamble — the preamble in front of a directed start frame whose target is not a low-power / duty-cycled device (CTRL1_LOW_POWER clear).
static constexpr uint16_t esphome::home_io_control::PAIRING_DISCOVERY_PREAMBLE = LONG_PREAMBLE
 Default for TuningConfig::pairing_discovery_preamble — the preamble on the pairing discovery broadcast (CMD_DISCOVER_REQ/CMD_DISCOVER_ALT_REQ, 0x28/0x2E).
static constexpr uint32_t esphome::home_io_control::PREAMBLE_LINGER_DWELL_MS = 15
 Preamble/sync linger extension for a rotating listen (ListenSpec::linger_dwell_ms): how much longer to stay on a channel once a frame is visibly incoming, so a hop doesn't cut it off mid-reception.
static constexpr int32_t esphome::home_io_control::HOP_TIME_US = 2700
 Timing constants for frequency hopping and response waiting.
static constexpr int32_t esphome::home_io_control::RESPONSE_WAIT_MS = 500
 Wait for response to non-start frame.
static constexpr int32_t esphome::home_io_control::RESPONSE_START_WAIT_MS = 400
 Wait for a response to a start frame — the first frame of an exchange, and the one a sleeping device has just been woken by.
static constexpr int32_t esphome::home_io_control::RESPONSE_AUTH_WAIT_MS
 Wait for final response after challenge response.
static constexpr int32_t esphome::home_io_control::EXCHANGE_RETRY_DELAY_MS = 250
 Gap between retries within one HA command.
static constexpr uint8_t esphome::home_io_control::EXCHANGE_RETRY_COUNT = 3
 Attempts per command before reporting failure.
static constexpr uint8_t esphome::home_io_control::SCHEDULED_POLL_MAX_TRIES = 1
 Exchange tries for a status poll the scheduler owns — every status poll issued while StatusPollPolicy is tracking the device, which today is every status poll this component can produce (there is no user-facing "refresh status" button or action; if one is ever added, it must not take this branch).
static constexpr uint8_t esphome::home_io_control::SCHEDULED_POLL_RETRY_GRACE_FIRST_FAILURE = 1
 Ladder positions at which a scheduler-owned status poll gets the full EXCHANGE_RETRY_COUNT back.
static constexpr uint8_t esphome::home_io_control::SCHEDULED_POLL_RETRY_GRACE_LAST_FAILURE = 3
static constexpr uint16_t esphome::home_io_control::EXCHANGE_TOTAL_BUDGET_MS = 2500
 Wall-clock ceiling on one whole exchange, retries included.
static constexpr uint8_t esphome::home_io_control::ONEWAY_BURST_REPEATS = 4
 One-way (1W) transmit cadence.
static constexpr uint32_t esphome::home_io_control::ONEWAY_BURST_INTERVAL_MS = 40
 Gap between those copies.
static constexpr int16_t esphome::home_io_control::LBT_RSSI_THRESHOLD_DBM = -90
 Listen-before-talk (LBT) parameters for ETSI EN 300 220 compliance.
static constexpr uint8_t esphome::home_io_control::LBT_MAX_RETRIES = 5
 Max carrier-sense attempts before TX anyway.
static constexpr uint8_t esphome::home_io_control::LBT_RETRY_DELAY_MS = 5
 Backoff between LBT checks (≥ 5ms per ETSI).
static constexpr uint16_t esphome::home_io_control::PAIRING_DISCOVERY_WAIT_MS = 2000
 Canonical defaults for the chip-neutral runtime-tunable pairing/discovery parameters.
static constexpr uint16_t esphome::home_io_control::PAIRING_DISCOVERY_INITIAL_DWELL_MS = 300
 Dwell on CH2 before discovery hopping begins.
static constexpr uint8_t esphome::home_io_control::PAIRING_KEY_EXCHANGE_RETRIES = 3
 Retries for the authenticated key-exchange phase.

Detailed Description

Physical-layer radio and timing parameters for the IO-Homecontrol protocol.

Definition in file proto_timing.h.