mirror of
https://github.com/esphome/esphome.git
synced 2026-07-08 07:55:34 +00:00
29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
import esphome.codegen as cg
|
|
from esphome.components.light import generate_gamma_table
|
|
from tests.testing_helpers import ComponentManifestOverride
|
|
|
|
|
|
def override_manifest(manifest: ComponentManifestOverride) -> None:
|
|
# Light benchmarks need USE_LIGHT_GAMMA_LUT defined and a gamma table
|
|
# with external linkage that the benchmark .cpp can reference.
|
|
manifest.enable_codegen()
|
|
original_to_code = manifest.to_code
|
|
|
|
async def to_code(config):
|
|
await original_to_code(config)
|
|
cg.add_define("USE_LIGHT_GAMMA_LUT")
|
|
# Use the light component's own generate_gamma_table() so the
|
|
# benchmark stays in sync with any formula changes.
|
|
forward = generate_gamma_table(2.8)
|
|
values = ", ".join(f"0x{int(v):04X}" for v in forward)
|
|
# Use extern-visible (non-static) array so the benchmark .cpp
|
|
# can reference it via extern declaration.
|
|
cg.add_global(
|
|
cg.RawStatement(
|
|
f"extern const uint16_t bench_gamma_2_8_fwd[256] PROGMEM = {{{values}}};"
|
|
)
|
|
)
|
|
|
|
to_code.priority = original_to_code.priority
|
|
manifest.to_code = to_code
|