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

The IO node-type and subtype table: names, entity class, platform and behaviour flags. More...

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

Go to the source code of this file.

Classes

struct  esphome::home_io_control::DeviceTypeInfo
 One row of the node-type / subtype table. More...

Namespaces

namespace  esphome
namespace  esphome::home_io_control
namespace  esphome::home_io_control::device_type_flags
 Bit flags carried by a DeviceTypeInfo row.

Functions

const DeviceTypeInfo * esphome::home_io_control::find_device_type_info (DeviceType type, uint8_t subtype)
 Look up the table row for a (type, subtype) pair.
const DeviceTypeInfo * esphome::home_io_control::find_exact_device_type_info (DeviceType type, uint8_t subtype)
 Look up the table row with exactly this (type, subtype), without falling back.
bool esphome::home_io_control::device_has_platform (DeviceType type, uint8_t subtype)
 Can an ESPHome platform drive this (type, subtype) today?
const char * esphome::home_io_control::device_platform_name (DeviceType type, uint8_t subtype)
 Name of the ESPHome platform that drives this (type, subtype).
DeviceCapabilityClass esphome::home_io_control::device_capability_class (DeviceType type, uint8_t subtype)
 Capability class of a (type, subtype), subtype-aware.
bool esphome::home_io_control::device_light_is_brightness_only (DeviceType type, uint8_t subtype)
 Is this light limited to brightness (no colour, no colour temperature)?
std::string esphome::home_io_control::format_device_kind (DeviceType type, uint8_t subtype)
 Human-readable description of a (type, subtype) for logs and reports.
std::string esphome::home_io_control::format_device_ids (DeviceType type, uint8_t subtype)
 Wire values of a (type, subtype), for logs that must stay readable without the table.

Variables

static constexpr uint8_t esphome::home_io_control::SUBTYPE_MAIN_PARAMETER_ONLY = 58
 Subtype value that marks a device taking the main parameter only, on any node type.
static constexpr uint8_t esphome::home_io_control::SUBTYPE_HEATER_WITH_SETPOINT = 1
 Subtype of the electrical heater (node type 52) with an adjustable setpoint, the one driven over the private register protocol (proto_heating.h).
static constexpr uint8_t esphome::home_io_control::device_type_flags::YAML_SELECTABLE = 1U << 0U
 Type rows only: the type's identifier is accepted by the YAML io_device_type key (hub_validators.py DEVICE_TYPE_OPTIONS lists exactly these).
static constexpr uint8_t esphome::home_io_control::device_type_flags::HAS_PLATFORM = 1U << 1U
 An ESPHome platform of the row's capability class can drive this (type, subtype).
static constexpr uint8_t esphome::home_io_control::device_type_flags::MAIN_PARAMETER_ONLY = 1U << 2U
 Movement commands carry the main parameter only (no functional-parameter block), see device_takes_main_parameter_only().
static constexpr uint8_t esphome::home_io_control::device_type_flags::BRIGHTNESS_ONLY = 1U << 3U
 Light rows only: brightness is the only controllable property (no colour, no colour temperature).
static constexpr uint8_t esphome::home_io_control::device_type_flags::STANDALONE_NAME = 1U << 4U
 Subtype rows only: name already is the complete description ("window lock") and is printed alone, instead of being appended to the type's name ("roller shutter, with projection").

Detailed Description

The IO node-type and subtype table: names, entity class, platform and behaviour flags.

One row per (node type, subtype) the project knows by name. Every per-type fact that is not a bare number — the lowercase identifier, the YAML selectability, the capability class, whether a platform can drive the device yet, and the behaviour flags — is read from that table, so there is exactly one place to add a type or a subtype. A lookup falls back from (type, subtype) to (type, 0) to "not in the table".

Subtype names agree across manufacturers, so rows are keyed on (type, subtype) only. A row names a wire type, not a product: products that share a (type, subtype) are told apart by data the wire does not carry, which is why the names stay generic.

Definition in file proto_device_types.h.