|
Home IO Control
ESPHome add-on for IO-Homecontrol devices
|
The roll-call sweep: one keyed 0x2A broadcast, repeated over channels and power classes. More...
#include "device_registry.h"#include "exchange_engine.h"#include "proto_commands.h"#include "proto_device_types.h"#include "tuning_config.h"#include <algorithm>#include <array>#include <cstdint>#include <vector>Go to the source code of this file.
Classes | |
| struct | esphome::home_io_control::ScanResponder |
| One roll-call responder, decoded on arrival. More... | |
| struct | esphome::home_io_control::RollCallPass |
| One roll-call frame shape, and how to listen for its replies. More... | |
| struct | esphome::home_io_control::ScanState |
| Accumulated state of one scan, threaded through every sweep. More... | |
| struct | esphome::home_io_control::RollCallReplyKeys |
| The keys a responder line needs: the one a responder answered under, and the hub's. More... | |
| struct | esphome::home_io_control::PulledKeyReportInfo |
| What build_pulled_key_report() says about the device that handed over a key. More... | |
Namespaces | |
| namespace | esphome |
| namespace | esphome::home_io_control |
Enumerations | |
| enum class | esphome::home_io_control::RollCallAttemptResult : uint8_t { esphome::home_io_control::OK , esphome::home_io_control::BUILD_FAILED } |
| Outcome of one roll-call attempt or sweep, so the caller can surface a build failure. More... | |
| enum class | esphome::home_io_control::ScanAddResult : uint8_t { esphome::home_io_control::ADDED , esphome::home_io_control::DUPLICATE , esphome::home_io_control::FULL } |
| Outcome of add_scan_responder(), so callers can tell a harmless repeat from real loss. More... | |
| enum class | esphome::home_io_control::RollCallKeyDisplay : uint8_t { esphome::home_io_control::HIDDEN , esphome::home_io_control::BANNERED , esphome::home_io_control::PLAIN } |
| How a responder line shows the key it answered under. More... | |
Functions | |
| constexpr bool | esphome::home_io_control::no_roll_call_pass_holds_request_channel () |
| A broadcast has no pinned conversation to hold a channel for, so HOLD_REQUEST_CHANNEL can never be a valid roll-call listen policy — checked at compile time rather than at every call site. | |
| uint8_t | esphome::home_io_control::count_enabled_passes (ScanPowerClasses selection) |
| How many of ROLL_CALL_PASSES selection actually calls. | |
| ScanAddResult | esphome::home_io_control::add_scan_responder (ScanResponder *responders, uint8_t &count, uint8_t capacity, const IoFrame &frame, int16_t rssi_dbm, uint8_t key_slot, const ScanResponder *&entry) |
| Record a responder unless its address is already present. | |
| RollCallAttemptResult | esphome::home_io_control::run_roll_call_sweep (ExchangeEngine &engine, const uint8_t *node_id, const uint8_t *key, uint8_t key_slot, const TuningConfig &tuning, ScanState &state, uint8_t &attempt, uint8_t total_attempts) |
| Run the full roll-call sweep under one key: every enabled pass on every channel. | |
| std::string | esphome::home_io_control::format_roll_call_responder (const ScanResponder &responder, const std::string &device_id, const IoDevice *registered, const RollCallReplyKeys &keys, RollCallKeyDisplay display) |
| Format one roll-call responder's report line(s). | |
| std::string | esphome::home_io_control::build_hub_key_pull_report (const PulledKeyReportInfo &info, const ScanState &state, DeviceRegistry ®istry) |
| Build the report for a pull that returned the hub's own key from a node no platform drives. | |
| std::string | esphome::home_io_control::build_pulled_key_report (const PulledKeyReportInfo &info, const ScanState &state, DeviceRegistry ®istry) |
| Build the one report a proven key pull prints after looking for the devices that hold the key. | |
Variables | |
| constexpr uint8_t | esphome::home_io_control::SCAN_MAX_REPLIES = 24 |
| Maximum distinct responders reported by one scan_paired_devices() call. | |
| constexpr uint32_t | esphome::home_io_control::SCAN_CHANNELS [] = {FREQ_CH2, FREQ_CH1, FREQ_CH3} |
| Channels scan_paired_devices() transmits its roll-call request on, one attempt per channel, per pass (see ROLL_CALL_PASSES). | |
| constexpr uint8_t | esphome::home_io_control::SCAN_CHANNEL_COUNT = sizeof(SCAN_CHANNELS) / sizeof(SCAN_CHANNELS[0]) |
| constexpr RollCallPass | esphome::home_io_control::ROLL_CALL_PASSES [] |
| The roll-call's two fixed frame shapes, low-power first. | |
The roll-call sweep: one keyed 0x2A broadcast, repeated over channels and power classes.
Scan Paired Devices and (in a later change) a pull-key pairing both ask "which devices answer a roll-call under this key?". This module is that question, with the key passed in explicitly: the frame shapes, the channels, the reply decoding and the de-duplication live here once.
Definition in file roll_call.h.