fix CONF_* and macros

This commit is contained in:
Gábor Poczkodi 2024-10-18 04:45:00 +02:00
parent 95c16c3453
commit 7a357d1b6b
6 changed files with 127 additions and 120 deletions

View file

@ -4,7 +4,19 @@ from esphome import automation, pins
from esphome.components import i2c, sensor, binary_sensor, text_sensor
from esphome.const import (
CONF_ID,
CONF_ANALOG,
CONF_SENSOR,
CONF_FREQUENCY,
CONF_POWER,
CONF_LEVEL,
CONF_ATTENUATION,
CONF_CHANNELS,
CONF_MODE,
CONF_SOURCE,
CONF_THRESHOLD,
CONF_GAIN,
CONF_PRESET,
CONF_TEXT,
STATE_CLASS_MEASUREMENT,
ICON_CHIP,
ENTITY_CATEGORY_DIAGNOSTIC,
@ -19,7 +31,7 @@ UNIT_MEGA_HERTZ = "MHz"
UNIT_KILO_HERTZ = "kHz"
UNIT_MILLI_VOLT = "mV"
UNIT_MICRO_AMPERE = "mA"
UNIT_DECIBEL_MICRO_VOLT = "dBµV"
UNIT_DECIBEL_MICRO_VOLT = "dBuV"
UNIT_PICO_FARAD = "pF"
UNIT_KILO_OHM = "kOhm"
UNIT_DECIBEL_FS = "dBfs"
@ -39,17 +51,14 @@ Si4713Component = si4713_ns.class_(
CONF_SI4713_ID = "si4713_id"
CONF_RESET_PIN = "reset_pin"
CONF_SECTION_TUNER = "tuner"
CONF_SECTION_ANALOG = "analog"
CONF_SECTION_DIGITAL = "digital"
CONF_SECTION_PILOT = "pilot"
CONF_SECTION_REFCLK = "refclk"
CONF_SECTION_COMPRESSOR = "compressor"
CONF_SECTION_LIMITER = "limiter"
CONF_SECTION_ASQ = "asq"
CONF_SECTION_RDS = "rds"
CONF_SECTION_OUTPUT = "output"
CONF_SECTION_SENSOR = "sensor"
CONF_TUNER = "tuner"
CONF_DIGITAL = "digital"
CONF_PILOT = "pilot"
CONF_REFCLK = "refclk"
CONF_COMPRESSOR = "compressor"
CONF_LIMITER = "limiter"
CONF_ASQ = "asq"
CONF_RDS = "rds"
# general config
CONF_OP_MODE = "op_mode"
CONF_MUTE = "mute"
@ -58,16 +67,16 @@ CONF_PRE_EMPHASIS = "pre_emphasis"
# tuner
# CONF_FREQUENCY = "frequency"
CONF_DEVIATION = "deviation"
CONF_POWER = "power"
# CONF_POWER = "power"
CONF_ANTCAP = "antcap"
# analog
CONF_LEVEL = "level"
CONF_ATTENUATION = "attenuation"
# CONF_LEVEL = "level"
# CONF_ATTENUATION = "attenuation"
# digital
CONF_SAMPLE_RATE = "sample_rate"
CONF_SAMPLE_BITS = "sample_bits"
CONF_CHANNELS = "channels"
CONF_MODE = "mode"
# CONF_CHANNELS = "channels"
# CONF_MODE = "mode"
CONF_CLOCK_EDGE = "clock_edge"
# pilot
CONF_ENABLE = "enable"
@ -75,15 +84,15 @@ CONF_ENABLE = "enable"
CONF_DEVIATION = "deviation"
# refclk
# CONF_FREQUENCY = "frequency"
CONF_SOURCE = "source"
# CONF_SOURCE = "source"
CONF_PRESCALER = "prescaler"
# compressor
CONF_ENABLE = "enable"
CONF_THRESHOLD = "threshold"
# CONF_THRESHOLD = "threshold"
CONF_ATTACK = "attack"
CONF_RELEASE = "release"
CONF_GAIN = "gain"
CONF_PRESET = "preset"
# CONF_GAIN = "gain"
# CONF_PRESET = "preset"
# limiter
CONF_ENABLE = "enable"
CONF_RELEASE_TIME = "release_time"
@ -99,7 +108,7 @@ CONF_DURATION_HIGH = "duration_high"
CONF_ENABLE = "enable"
CONF_DEVIATION = "deviation"
CONF_STATION = "station"
CONF_TEXT = "text"
# CONF_TEXT = "text"
# output
CONF_GPIO1 = "gpio1"
CONF_GPIO2 = "gpio2"
@ -351,16 +360,16 @@ CONFIG_SCHEMA = (
cv.Optional(CONF_MUTE, default=False): cv.boolean,
cv.Optional(CONF_MONO, default=False): cv.boolean,
cv.Optional(CONF_PRE_EMPHASIS, default="75us"): cv.enum(PRE_EMPHASIS),
cv.Optional(CONF_SECTION_TUNER): TUNER_SCHEMA,
cv.Optional(CONF_SECTION_ANALOG): ANALOG_SCHEMA,
cv.Optional(CONF_SECTION_DIGITAL): DIGITAL_SCHEMA,
cv.Optional(CONF_SECTION_PILOT): PILOT_SCHEMA,
cv.Optional(CONF_SECTION_REFCLK): REFCLK_SCHEMA,
cv.Optional(CONF_SECTION_COMPRESSOR): COMPRESSOR_SCHEMA,
cv.Optional(CONF_SECTION_LIMITER): LIMITER_SCHEMA,
cv.Optional(CONF_SECTION_ASQ): ASQ_SCHEMA,
cv.Optional(CONF_SECTION_RDS): RDS_SCHEMA,
cv.Optional(CONF_SECTION_SENSOR): SENSOR_SCHEMA,
cv.Optional(CONF_TUNER): TUNER_SCHEMA,
cv.Optional(CONF_ANALOG): ANALOG_SCHEMA,
cv.Optional(CONF_DIGITAL): DIGITAL_SCHEMA,
cv.Optional(CONF_PILOT): PILOT_SCHEMA,
cv.Optional(CONF_REFCLK): REFCLK_SCHEMA,
cv.Optional(CONF_COMPRESSOR): COMPRESSOR_SCHEMA,
cv.Optional(CONF_LIMITER): LIMITER_SCHEMA,
cv.Optional(CONF_ASQ): ASQ_SCHEMA,
cv.Optional(CONF_RDS): RDS_SCHEMA,
cv.Optional(CONF_SENSOR): SENSOR_SCHEMA,
}
)
.extend(cv.polling_component_schema("60s"))
@ -424,39 +433,39 @@ async def to_code(config):
await set_var(config, CONF_MUTE, var.set_mute)
await set_var(config, CONF_MONO, var.set_mono)
await set_var(config, CONF_PRE_EMPHASIS, var.set_pre_emphasis)
if tuner_config := config.get(CONF_SECTION_TUNER):
if tuner_config := config.get(CONF_TUNER):
await set_var(tuner_config, CONF_FREQUENCY, var.set_frequency)
await set_var(tuner_config, CONF_DEVIATION, var.set_audio_deviation)
await set_var(tuner_config, CONF_POWER, var.set_power)
await set_var(tuner_config, CONF_ANTCAP, var.set_antcap)
if analog_config := config.get(CONF_SECTION_ANALOG):
if analog_config := config.get(CONF_ANALOG):
await set_var(analog_config, CONF_LEVEL, var.set_analog_level)
await set_var(analog_config, CONF_ATTENUATION, var.set_analog_attenuation)
if digital_config := config.get(CONF_SECTION_DIGITAL):
if digital_config := config.get(CONF_DIGITAL):
await set_var(digital_config, CONF_SAMPLE_RATE, var.set_digital_sample_rate)
await set_var(digital_config, CONF_SAMPLE_BITS, var.set_digital_sample_bits)
await set_var(digital_config, CONF_CHANNELS, var.set_digital_channels)
await set_var(digital_config, CONF_MODE, var.set_digital_mode)
await set_var(digital_config, CONF_CLOCK_EDGE, var.set_digital_clock_edge)
if pilot_config := config.get(CONF_SECTION_PILOT):
if pilot_config := config.get(CONF_PILOT):
await set_var(pilot_config, CONF_ENABLE, var.set_pilot_enable)
await set_var(pilot_config, CONF_FREQUENCY, var.set_pilot_frequency)
await set_var(pilot_config, CONF_DEVIATION, var.set_pilot_deviation)
if refclk_config := config.get(CONF_SECTION_REFCLK):
if refclk_config := config.get(CONF_REFCLK):
await set_var(refclk_config, CONF_FREQUENCY, var.set_refclk_frequency)
await set_var(refclk_config, CONF_SOURCE, var.set_refclk_source)
await set_var(refclk_config, CONF_PRESCALER, var.set_refclk_prescaler)
if compressor_config := config.get(CONF_SECTION_COMPRESSOR):
if compressor_config := config.get(CONF_COMPRESSOR):
await set_var(compressor_config, CONF_ENABLE, var.set_acomp_enable)
await set_var(compressor_config, CONF_THRESHOLD, var.set_acomp_threshold)
await set_var(compressor_config, CONF_ATTACK, var.set_acomp_attack)
await set_var(compressor_config, CONF_RELEASE, var.set_acomp_release)
await set_var(compressor_config, CONF_GAIN, var.set_acomp_gain)
await set_var(compressor_config, CONF_PRESET, var.set_acomp_preset)
if limiter_config := config.get(CONF_SECTION_LIMITER):
if limiter_config := config.get(CONF_LIMITER):
await set_var(limiter_config, CONF_ENABLE, var.set_limiter_enable)
await set_var(limiter_config, CONF_RELEASE_TIME, var.set_limiter_release_time)
if asq_config := config.get(CONF_SECTION_ASQ):
if asq_config := config.get(CONF_ASQ):
await set_var(asq_config, CONF_IALL, var.set_asq_iall_enable)
await set_var(asq_config, CONF_IALH, var.set_asq_ialh_enable)
await set_var(asq_config, CONF_OVERMOD, var.set_asq_overmod_enable)
@ -464,12 +473,12 @@ async def to_code(config):
await set_var(asq_config, CONF_DURATION_LOW, var.set_asq_duration_low)
await set_var(asq_config, CONF_LEVEL_HIGH, var.set_asq_level_high)
await set_var(asq_config, CONF_DURATION_HIGH, var.set_asq_duration_high)
if rds_config := config.get(CONF_SECTION_RDS):
if rds_config := config.get(CONF_RDS):
await set_var(rds_config, CONF_ENABLE, var.set_rds_enable)
await set_var(rds_config, CONF_DEVIATION, var.set_rds_deviation)
await set_var(rds_config, CONF_STATION, var.set_rds_station)
await set_var(rds_config, CONF_TEXT, var.set_rds_text)
if sensor_config := config.get(CONF_SECTION_SENSOR):
if sensor_config := config.get(CONF_SENSOR):
await new_text_sensor(sensor_config, CONF_CHIP_ID, var.set_chip_id_text_sensor)
await new_sensor(
sensor_config, CONF_READ_FREQUENCY, var.set_read_frequency_sensor

View file

@ -4,6 +4,11 @@ import esphome.config_validation as cv
from esphome.const import (
CONF_FREQUENCY,
CONF_MODE,
CONF_ANALOG,
CONF_POWER,
CONF_LEVEL,
CONF_THRESHOLD,
CONF_GAIN,
UNIT_HERTZ,
UNIT_MILLISECOND,
UNIT_DECIBEL,
@ -19,24 +24,18 @@ from .. import (
CONF_SI4713_ID,
Si4713Component,
si4713_ns,
CONF_SECTION_TUNER,
CONF_SECTION_ANALOG,
CONF_SECTION_DIGITAL,
CONF_SECTION_PILOT,
CONF_SECTION_REFCLK,
CONF_SECTION_COMPRESSOR,
CONF_SECTION_LIMITER,
CONF_SECTION_ASQ,
CONF_SECTION_RDS,
CONF_FREQUENCY,
CONF_TUNER,
CONF_DIGITAL,
CONF_PILOT,
CONF_REFCLK,
CONF_COMPRESSOR,
CONF_LIMITER,
CONF_ASQ,
CONF_RDS,
CONF_DEVIATION,
CONF_POWER,
CONF_ANTCAP,
CONF_LEVEL,
CONF_SAMPLE_RATE,
CONF_PRESCALER,
CONF_THRESHOLD,
CONF_GAIN,
CONF_RELEASE_TIME,
CONF_LEVEL_LOW,
CONF_DURATION_LOW,
@ -71,7 +70,7 @@ RdsDeviationNumber = si4713_ns.class_("RdsDeviationNumber", number.Number)
CONFIG_SCHEMA = cv.Schema(
{
cv.GenerateID(CONF_SI4713_ID): cv.use_id(Si4713Component),
cv.Optional(CONF_SECTION_TUNER): cv.Schema(
cv.Optional(CONF_TUNER): cv.Schema(
{
cv.Optional(CONF_FREQUENCY): number.number_schema(
FrequencyNumber,
@ -99,7 +98,7 @@ CONFIG_SCHEMA = cv.Schema(
),
}
),
cv.Optional(CONF_SECTION_ANALOG): cv.Schema(
cv.Optional(CONF_ANALOG): cv.Schema(
{
cv.Optional(CONF_LEVEL): number.number_schema(
AnalogLevelNumber,
@ -109,7 +108,7 @@ CONFIG_SCHEMA = cv.Schema(
),
},
),
cv.Optional(CONF_SECTION_DIGITAL): cv.Schema(
cv.Optional(CONF_DIGITAL): cv.Schema(
{
cv.Optional(CONF_SAMPLE_RATE): number.number_schema(
DigitalSampleRateNumber,
@ -119,7 +118,7 @@ CONFIG_SCHEMA = cv.Schema(
),
},
),
cv.Optional(CONF_SECTION_PILOT): cv.Schema(
cv.Optional(CONF_PILOT): cv.Schema(
{
cv.Optional(CONF_FREQUENCY): number.number_schema(
PilotFrequencyNumber,
@ -135,7 +134,7 @@ CONFIG_SCHEMA = cv.Schema(
),
},
),
cv.Optional(CONF_SECTION_REFCLK): cv.Schema(
cv.Optional(CONF_REFCLK): cv.Schema(
{
cv.Optional(CONF_FREQUENCY): number.number_schema(
RefClkFrequencyNumber,
@ -151,7 +150,7 @@ CONFIG_SCHEMA = cv.Schema(
),
},
),
cv.Optional(CONF_SECTION_COMPRESSOR): cv.Schema(
cv.Optional(CONF_COMPRESSOR): cv.Schema(
{
cv.Optional(CONF_THRESHOLD): number.number_schema(
AcompThresholdNumber,
@ -167,7 +166,7 @@ CONFIG_SCHEMA = cv.Schema(
),
},
),
cv.Optional(CONF_SECTION_LIMITER): cv.Schema(
cv.Optional(CONF_LIMITER): cv.Schema(
{
cv.Optional(CONF_RELEASE_TIME): number.number_schema(
LimiterReleaseTimeNumber,
@ -177,7 +176,7 @@ CONFIG_SCHEMA = cv.Schema(
),
},
),
cv.Optional(CONF_SECTION_ASQ): cv.Schema(
cv.Optional(CONF_ASQ): cv.Schema(
{
cv.Optional(CONF_LEVEL_LOW): number.number_schema(
AsqLevelLowNumber,
@ -205,7 +204,7 @@ CONFIG_SCHEMA = cv.Schema(
),
}
),
cv.Optional(CONF_SECTION_RDS): cv.Schema(
cv.Optional(CONF_RDS): cv.Schema(
{
cv.Optional(CONF_DEVIATION): number.number_schema(
RdsDeviationNumber,
@ -234,30 +233,30 @@ async def new_number(p, config, id, setter, min_value, max_value, step, *args, *
async def to_code(config):
p = await cg.get_variable(config[CONF_SI4713_ID])
if tuner_config := config.get(CONF_SECTION_TUNER):
if tuner_config := config.get(CONF_TUNER):
await new_number(p, tuner_config, CONF_FREQUENCY, p.set_frequency_number, 76, 108, 0.05)
await new_number(p, tuner_config, CONF_DEVIATION, p.set_audio_deviation_number, 0, 90, 0.01)
await new_number(p, tuner_config, CONF_POWER, p.set_power_number, 88, 120, 1, mode = number.NumberMode.NUMBER_MODE_SLIDER)
await new_number(p, tuner_config, CONF_ANTCAP, p.set_antcap_number, 0, 191, 1, mode = number.NumberMode.NUMBER_MODE_SLIDER)
if analog_config := config.get(CONF_SECTION_ANALOG):
if analog_config := config.get(CONF_ANALOG):
await new_number(p, analog_config, CONF_LEVEL, p.set_analog_level_number, 0, 1023, 1, mode = number.NumberMode.NUMBER_MODE_SLIDER)
if digital_config := config.get(CONF_SECTION_DIGITAL):
if digital_config := config.get(CONF_DIGITAL):
await new_number(p, digital_config, CONF_SAMPLE_RATE, p.set_digital_sample_rate_number, 32000, 48000, 1)
if pilot_config := config.get(CONF_SECTION_PILOT):
if pilot_config := config.get(CONF_PILOT):
await new_number(p, pilot_config, CONF_FREQUENCY, p.set_pilot_frequency_number, 0, 19, 0.001)
await new_number(p, pilot_config, CONF_DEVIATION, p.set_pilot_deviation_number, 0, 90, 0.001)
if refclk_config := config.get(CONF_SECTION_REFCLK):
if refclk_config := config.get(CONF_REFCLK):
await new_number(p, refclk_config, CONF_FREQUENCY, p.set_refclk_frequency_number, 31130, 34406, 1)
await new_number(p, refclk_config, CONF_PRESCALER, p.set_refclk_prescaler_number, 0, 4095, 1)
if compressor_config := config.get(CONF_SECTION_COMPRESSOR):
if compressor_config := config.get(CONF_COMPRESSOR):
await new_number(p, compressor_config, CONF_THRESHOLD, p.set_acomp_threshold_number, -40, 0, 1)
await new_number(p, compressor_config, CONF_GAIN, p.set_acomp_gain_number, 0, 20, 1)
if limiter_config := config.get(CONF_SECTION_LIMITER):
if limiter_config := config.get(CONF_LIMITER):
await new_number(p, limiter_config, CONF_RELEASE_TIME, p.set_limiter_release_time_number, 0.25, 102.4, 0.01, mode = number.NumberMode.NUMBER_MODE_SLIDER)
if asq_config := config.get(CONF_SECTION_ASQ):
if asq_config := config.get(CONF_ASQ):
await new_number(p, asq_config, CONF_LEVEL_LOW, p.set_asq_level_low_number, -70, 0, 1)
await new_number(p, asq_config, CONF_DURATION_LOW, p.set_asq_duration_low_number, 0, 65535, 1)
await new_number(p, asq_config, CONF_LEVEL_HIGH, p.set_asq_level_high_number, -70, 0, 1)
await new_number(p, asq_config, CONF_DURATION_HIGH, p.set_asq_duration_high_number, 0, 65535, 1)
if rds_config := config.get(CONF_SECTION_RDS):
if rds_config := config.get(CONF_RDS):
await new_number(p, rds_config, CONF_DEVIATION, p.set_rds_deviation_number, 0, 7.5, 0.01)

View file

@ -2,6 +2,12 @@ import esphome.codegen as cg
from esphome.components import select
import esphome.config_validation as cv
from esphome.const import (
CONF_ANALOG,
CONF_ATTENUATION,
CONF_CHANNELS,
CONF_MODE,
CONF_SOURCE,
CONF_PRESET,
ENTITY_CATEGORY_CONFIG,
ICON_PULSE,
)
@ -9,20 +15,14 @@ from .. import (
CONF_SI4713_ID,
Si4713Component,
si4713_ns,
CONF_SECTION_ANALOG,
CONF_SECTION_DIGITAL,
CONF_SECTION_REFCLK,
CONF_SECTION_COMPRESSOR,
CONF_DIGITAL,
CONF_REFCLK,
CONF_COMPRESSOR,
CONF_PRE_EMPHASIS,
CONF_ATTENUATION,
CONF_SAMPLE_BITS,
CONF_CHANNELS,
CONF_MODE,
CONF_CLOCK_EDGE,
CONF_SOURCE,
CONF_ATTACK,
CONF_RELEASE,
CONF_PRESET,
ICON_SINE_WAVE,
ICON_RESISTOR,
ICON_EAR_HEARING,
@ -57,7 +57,7 @@ CONFIG_SCHEMA = cv.Schema(
entity_category=ENTITY_CATEGORY_CONFIG,
icon=ICON_SINE_WAVE,
),
cv.Optional(CONF_SECTION_ANALOG): cv.Schema(
cv.Optional(CONF_ANALOG): cv.Schema(
{
cv.Optional(CONF_ATTENUATION): select.select_schema(
AnalogAttenuationSelect,
@ -66,7 +66,7 @@ CONFIG_SCHEMA = cv.Schema(
),
}
),
cv.Optional(CONF_SECTION_DIGITAL): cv.Schema(
cv.Optional(CONF_DIGITAL): cv.Schema(
{
cv.Optional(CONF_SAMPLE_BITS): select.select_schema(
DigitalSampleBitsSelect,
@ -90,7 +90,7 @@ CONFIG_SCHEMA = cv.Schema(
),
}
),
cv.Optional(CONF_SECTION_REFCLK): cv.Schema(
cv.Optional(CONF_REFCLK): cv.Schema(
{
cv.Optional(CONF_SOURCE): select.select_schema(
RefClkSourceSelect,
@ -99,7 +99,7 @@ CONFIG_SCHEMA = cv.Schema(
),
}
),
cv.Optional(CONF_SECTION_COMPRESSOR): cv.Schema(
cv.Optional(CONF_COMPRESSOR): cv.Schema(
{
cv.Optional(CONF_ATTACK): select.select_schema(
AcompAttackSelect,
@ -133,16 +133,16 @@ async def new_select(p, config, id, setter, options):
async def to_code(config):
p = await cg.get_variable(config[CONF_SI4713_ID])
await new_select(p, config, CONF_PRE_EMPHASIS, p.set_pre_emphasis_select, PRE_EMPHASIS)
if analog_config := config.get(CONF_SECTION_ANALOG):
if analog_config := config.get(CONF_ANALOG):
await new_select(p, analog_config, CONF_ATTENUATION, p.set_analog_attenuation_select, LINE_ATTENUATION)
if digital_config := config.get(CONF_SECTION_DIGITAL):
if digital_config := config.get(CONF_DIGITAL):
await new_select(p, digital_config, CONF_SAMPLE_BITS, p.set_digital_sample_bits_select, SAMPLE_BITS)
await new_select(p, digital_config, CONF_CHANNELS, p.set_digital_channels_select, SAMPLE_CHANNELS)
await new_select(p, digital_config, CONF_MODE, p.set_digital_mode_select, DIGITAL_MODE)
await new_select(p, digital_config, CONF_CLOCK_EDGE, p.set_digital_clock_edge_select, DIGITAL_CLOCK_EDGE)
if refclk_config := config.get(CONF_SECTION_REFCLK):
if refclk_config := config.get(CONF_REFCLK):
await new_select(p, refclk_config, CONF_SOURCE, p.set_refclk_source_select, REFCLK_SOURCE)
if compressor_config := config.get(CONF_SECTION_COMPRESSOR):
if compressor_config := config.get(CONF_COMPRESSOR):
await new_select(p, compressor_config, CONF_ATTACK, p.set_acomp_attack_select, ACOMP_ATTACK)
await new_select(p, compressor_config, CONF_RELEASE, p.set_acomp_release_select, ACOMP_RELEASE)
await new_select(p, compressor_config, CONF_PRESET, p.set_acomp_preset_select, ACOMP_PRESET)

View file

@ -326,26 +326,26 @@ template<typename T> T GET_ENUM_LAST(T value) { return T::LAST; }
#define CHECK_ENUM(value) \
if (value >= GET_ENUM_LAST(value)) { \
ESP_LOGE(TAG, "%s(%d) invalid", __func__, (int) value); \
ESP_LOGE(TAG, "%s(%d) invalid", __func__, (int) (value)); \
return; \
}
#define CHECK_FLOAT_RANGE(value, min_value, max_value) \
if (!(min_value <= value && value <= max_value)) { \
if (!((min_value) <= (value) && (value) <= (max_value))) { \
ESP_LOGE(TAG, "%s(%.2f) invalid (%.2f - %.2f)", __func__, value, min_value, max_value); \
return; \
}
#define CHECK_INT_RANGE(value, min_value, max_value) \
if (!(min_value <= value && value <= max_value)) { \
if (!((min_value) <= (value) && (value) <= (max_value))) { \
ESP_LOGE(TAG, "%s(%d) invalid (%d - %d)", __func__, value, min_value, max_value); \
return; \
}
#define CHECK_TEXT_RANGE(value, max_size) \
if (value.size() > max_size) { \
ESP_LOGW(TAG, "%s(%s) trimmed (max %d characters)", __func__, value.c_str(), max_size); \
value.resize(max_size); \
if ((value).size() > max_size) { \
ESP_LOGW(TAG, "%s(%s) trimmed (max %d characters)", __func__, (value).c_str(), max_size); \
(value).resize(max_size); \
}
void Si4713Component::set_reset_pin(InternalGPIOPin *pin) { this->reset_pin_ = pin; }

View file

@ -2,20 +2,19 @@ import esphome.codegen as cg
from esphome.components import switch
import esphome.config_validation as cv
from esphome.const import (
CONF_OUTPUT,
DEVICE_CLASS_SWITCH,
ENTITY_CATEGORY_CONFIG,
ICON_SECURITY,
)
from .. import (
CONF_SI4713_ID,
Si4713Component,
si4713_ns,
CONF_SECTION_PILOT,
CONF_SECTION_COMPRESSOR,
CONF_SECTION_LIMITER,
CONF_SECTION_ASQ,
CONF_SECTION_RDS,
CONF_SECTION_OUTPUT,
CONF_PILOT,
CONF_COMPRESSOR,
CONF_LIMITER,
CONF_ASQ,
CONF_RDS,
CONF_MUTE,
CONF_MONO,
CONF_ENABLE,
@ -148,12 +147,12 @@ CONFIG_SCHEMA = cv.Schema(
entity_category=ENTITY_CATEGORY_CONFIG,
icon=ICON_EAR_HEARING,
),
cv.Optional(CONF_SECTION_PILOT): PILOT_SCHEMA,
cv.Optional(CONF_SECTION_COMPRESSOR): COMPRESSOR_SCHEMA,
cv.Optional(CONF_SECTION_LIMITER): LIMITER_SCHEMA,
cv.Optional(CONF_SECTION_ASQ): ASQ_SCHEMA,
cv.Optional(CONF_SECTION_RDS): RDS_SCHEMA,
cv.Optional(CONF_SECTION_OUTPUT): OUTPUT_SCHEMA,
cv.Optional(CONF_PILOT): PILOT_SCHEMA,
cv.Optional(CONF_COMPRESSOR): COMPRESSOR_SCHEMA,
cv.Optional(CONF_LIMITER): LIMITER_SCHEMA,
cv.Optional(CONF_ASQ): ASQ_SCHEMA,
cv.Optional(CONF_RDS): RDS_SCHEMA,
cv.Optional(CONF_OUTPUT): OUTPUT_SCHEMA,
}
)
@ -170,19 +169,19 @@ async def to_code(config):
p = await cg.get_variable(config[CONF_SI4713_ID])
await new_switch(p, config, CONF_MUTE, p.set_mute_switch)
await new_switch(p, config, CONF_MONO, p.set_mono_switch)
if pilot_config := config.get(CONF_SECTION_PILOT):
if pilot_config := config.get(CONF_PILOT):
await new_switch(p, pilot_config, CONF_ENABLE, p.set_pilot_enable_switch)
if compressor_config := config.get(CONF_SECTION_COMPRESSOR):
if compressor_config := config.get(CONF_COMPRESSOR):
await new_switch(p, compressor_config, CONF_ENABLE, p.set_acomp_enable_switch)
if limiter_config := config.get(CONF_SECTION_LIMITER):
if limiter_config := config.get(CONF_LIMITER):
await new_switch(p, limiter_config, CONF_ENABLE, p.set_limiter_enable_switch)
if asq_config := config.get(CONF_SECTION_ASQ):
if asq_config := config.get(CONF_ASQ):
await new_switch(p, asq_config, CONF_IALL, p.set_asq_iall_enable_switch)
await new_switch(p, asq_config, CONF_IALH, p.set_asq_ialh_enable_switch)
await new_switch(p, asq_config, CONF_OVERMOD, p.set_asq_overmod_enable_switch)
if rds_config := config.get(CONF_SECTION_RDS):
if rds_config := config.get(CONF_RDS):
await new_switch(p, rds_config, CONF_ENABLE, p.set_rds_enable_switch)
if output_config := config.get(CONF_SECTION_OUTPUT):
if output_config := config.get(CONF_OUTPUT):
gpio1 = await new_switch(p, output_config, CONF_GPIO1, p.set_gpio1_switch)
gpio2 = await new_switch(p, output_config, CONF_GPIO2, p.set_gpio2_switch)
gpio3 = await new_switch(p, output_config, CONF_GPIO3, p.set_gpio3_switch)

View file

@ -5,6 +5,7 @@ from esphome.components import mqtt, web_server
import esphome.config_validation as cv
from esphome.const import (
CONF_ID,
CONF_TEXT,
CONF_ENTITY_CATEGORY,
CONF_ICON,
CONF_MQTT_ID,
@ -18,9 +19,8 @@ from .. import (
CONF_SI4713_ID,
Si4713Component,
si4713_ns,
CONF_SECTION_RDS,
CONF_RDS,
CONF_STATION,
CONF_TEXT,
ICON_FORMAT_TEXT,
)
@ -139,7 +139,7 @@ RDS_SCHEMA = cv.Schema(
CONFIG_SCHEMA = cv.Schema(
{
cv.GenerateID(CONF_SI4713_ID): cv.use_id(Si4713Component),
cv.Optional(CONF_SECTION_RDS): RDS_SCHEMA,
cv.Optional(CONF_RDS): RDS_SCHEMA,
}
)
@ -154,6 +154,6 @@ async def new_text_simple(p, config, id, setter, min_length, max_length, *args):
async def to_code(config):
p = await cg.get_variable(config[CONF_SI4713_ID])
if rds_config := config.get(CONF_SECTION_RDS):
if rds_config := config.get(CONF_RDS):
await new_text_simple(p, rds_config, CONF_STATION, p.set_rds_station_text, 0, 8)
await new_text_simple(p, rds_config, CONF_TEXT, p.set_rds_text_text, 0, 64)