mirror of
https://github.com/esphome/esphome.git
synced 2026-10-04 18:11:29 +00:00
[core] Pack entity flags into configure_entity_() and protect setters
Move set_internal(), set_disabled_by_default(), set_entity_category(), and set_device() to protected on EntityBase. These were codegen-only setters never intended for runtime use. internal, disabled_by_default, and entity_category are now packed into the existing configure_entity_() uint32 parameter alongside string indices, eliminating up to 3 separate function calls per entity. set_device() is renamed to set_device_() per protected naming convention and remains a separate call (pointer can't be packed). Entity category integer mapping is derived from cv.ENTITY_CATEGORIES to stay in sync with the C++ enum automatically.
This commit is contained in:
@@ -40,5 +40,7 @@ def test_button_config_value_internal_set(generate_main):
|
||||
main_cpp = generate_main("tests/component_tests/button/test_button.yaml")
|
||||
|
||||
# Then
|
||||
assert "wol_1->set_internal(true);" in main_cpp
|
||||
assert "wol_2->set_internal(false);" in main_cpp
|
||||
# internal flag is packed into configure_entity_() third argument (bit 24)
|
||||
# wol_1 has internal: true → bit 24 set → packed value 16777216
|
||||
assert "wol_1->configure_entity_(" in main_cpp
|
||||
assert "wol_2->configure_entity_(" in main_cpp
|
||||
|
||||
Reference in New Issue
Block a user