mirror of
https://github.com/esphome/esphome.git
synced 2025-07-29 06:36:45 +00:00
[esp32] improve gpio
(#8709)
This commit is contained in:
parent
410b6353fe
commit
c5654b4cb2
@ -1,6 +1,6 @@
|
|||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
import logging
|
import logging
|
||||||
from typing import Any
|
from typing import Any, Callable
|
||||||
|
|
||||||
from esphome import pins
|
from esphome import pins
|
||||||
import esphome.codegen as cg
|
import esphome.codegen as cg
|
||||||
@ -64,8 +64,7 @@ def _lookup_pin(value):
|
|||||||
def _translate_pin(value):
|
def _translate_pin(value):
|
||||||
if isinstance(value, dict) or value is None:
|
if isinstance(value, dict) or value is None:
|
||||||
raise cv.Invalid(
|
raise cv.Invalid(
|
||||||
"This variable only supports pin numbers, not full pin schemas "
|
"This variable only supports pin numbers, not full pin schemas (with inverted and mode)."
|
||||||
"(with inverted and mode)."
|
|
||||||
)
|
)
|
||||||
if isinstance(value, int) and not isinstance(value, bool):
|
if isinstance(value, int) and not isinstance(value, bool):
|
||||||
return value
|
return value
|
||||||
@ -82,30 +81,22 @@ def _translate_pin(value):
|
|||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class ESP32ValidationFunctions:
|
class ESP32ValidationFunctions:
|
||||||
pin_validation: Any
|
pin_validation: Callable[[Any], Any]
|
||||||
usage_validation: Any
|
usage_validation: Callable[[Any], Any]
|
||||||
|
|
||||||
|
|
||||||
_esp32_validations = {
|
_esp32_validations = {
|
||||||
VARIANT_ESP32: ESP32ValidationFunctions(
|
VARIANT_ESP32: ESP32ValidationFunctions(
|
||||||
pin_validation=esp32_validate_gpio_pin, usage_validation=esp32_validate_supports
|
pin_validation=esp32_validate_gpio_pin, usage_validation=esp32_validate_supports
|
||||||
),
|
),
|
||||||
VARIANT_ESP32S2: ESP32ValidationFunctions(
|
VARIANT_ESP32C2: ESP32ValidationFunctions(
|
||||||
pin_validation=esp32_s2_validate_gpio_pin,
|
pin_validation=esp32_c2_validate_gpio_pin,
|
||||||
usage_validation=esp32_s2_validate_supports,
|
usage_validation=esp32_c2_validate_supports,
|
||||||
),
|
),
|
||||||
VARIANT_ESP32C3: ESP32ValidationFunctions(
|
VARIANT_ESP32C3: ESP32ValidationFunctions(
|
||||||
pin_validation=esp32_c3_validate_gpio_pin,
|
pin_validation=esp32_c3_validate_gpio_pin,
|
||||||
usage_validation=esp32_c3_validate_supports,
|
usage_validation=esp32_c3_validate_supports,
|
||||||
),
|
),
|
||||||
VARIANT_ESP32S3: ESP32ValidationFunctions(
|
|
||||||
pin_validation=esp32_s3_validate_gpio_pin,
|
|
||||||
usage_validation=esp32_s3_validate_supports,
|
|
||||||
),
|
|
||||||
VARIANT_ESP32C2: ESP32ValidationFunctions(
|
|
||||||
pin_validation=esp32_c2_validate_gpio_pin,
|
|
||||||
usage_validation=esp32_c2_validate_supports,
|
|
||||||
),
|
|
||||||
VARIANT_ESP32C6: ESP32ValidationFunctions(
|
VARIANT_ESP32C6: ESP32ValidationFunctions(
|
||||||
pin_validation=esp32_c6_validate_gpio_pin,
|
pin_validation=esp32_c6_validate_gpio_pin,
|
||||||
usage_validation=esp32_c6_validate_supports,
|
usage_validation=esp32_c6_validate_supports,
|
||||||
@ -114,6 +105,14 @@ _esp32_validations = {
|
|||||||
pin_validation=esp32_h2_validate_gpio_pin,
|
pin_validation=esp32_h2_validate_gpio_pin,
|
||||||
usage_validation=esp32_h2_validate_supports,
|
usage_validation=esp32_h2_validate_supports,
|
||||||
),
|
),
|
||||||
|
VARIANT_ESP32S2: ESP32ValidationFunctions(
|
||||||
|
pin_validation=esp32_s2_validate_gpio_pin,
|
||||||
|
usage_validation=esp32_s2_validate_supports,
|
||||||
|
),
|
||||||
|
VARIANT_ESP32S3: ESP32ValidationFunctions(
|
||||||
|
pin_validation=esp32_s3_validate_gpio_pin,
|
||||||
|
usage_validation=esp32_s3_validate_supports,
|
||||||
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,8 +31,7 @@ def esp32_validate_gpio_pin(value):
|
|||||||
)
|
)
|
||||||
if 9 <= value <= 10:
|
if 9 <= value <= 10:
|
||||||
_LOGGER.warning(
|
_LOGGER.warning(
|
||||||
"Pin %s (9-10) might already be used by the "
|
"Pin %s (9-10) might already be used by the flash interface in QUAD IO flash mode.",
|
||||||
"flash interface in QUAD IO flash mode.",
|
|
||||||
value,
|
value,
|
||||||
)
|
)
|
||||||
if value in (24, 28, 29, 30, 31):
|
if value in (24, 28, 29, 30, 31):
|
||||||
|
@ -22,7 +22,7 @@ def esp32_c2_validate_supports(value):
|
|||||||
is_input = mode[CONF_INPUT]
|
is_input = mode[CONF_INPUT]
|
||||||
|
|
||||||
if num < 0 or num > 20:
|
if num < 0 or num > 20:
|
||||||
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-20)")
|
raise cv.Invalid(f"Invalid pin number: {num} (must be 0-20)")
|
||||||
|
|
||||||
if is_input:
|
if is_input:
|
||||||
# All ESP32 pins support input mode
|
# All ESP32 pins support input mode
|
||||||
|
@ -35,7 +35,7 @@ def esp32_c3_validate_supports(value):
|
|||||||
is_input = mode[CONF_INPUT]
|
is_input = mode[CONF_INPUT]
|
||||||
|
|
||||||
if num < 0 or num > 21:
|
if num < 0 or num > 21:
|
||||||
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-21)")
|
raise cv.Invalid(f"Invalid pin number: {num} (must be 0-21)")
|
||||||
|
|
||||||
if is_input:
|
if is_input:
|
||||||
# All ESP32 pins support input mode
|
# All ESP32 pins support input mode
|
||||||
|
@ -36,7 +36,7 @@ def esp32_c6_validate_supports(value):
|
|||||||
is_input = mode[CONF_INPUT]
|
is_input = mode[CONF_INPUT]
|
||||||
|
|
||||||
if num < 0 or num > 23:
|
if num < 0 or num > 23:
|
||||||
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-23)")
|
raise cv.Invalid(f"Invalid pin number: {num} (must be 0-23)")
|
||||||
if is_input:
|
if is_input:
|
||||||
# All ESP32 pins support input mode
|
# All ESP32 pins support input mode
|
||||||
pass
|
pass
|
||||||
|
@ -45,7 +45,7 @@ def esp32_h2_validate_supports(value):
|
|||||||
is_input = mode[CONF_INPUT]
|
is_input = mode[CONF_INPUT]
|
||||||
|
|
||||||
if num < 0 or num > 27:
|
if num < 0 or num > 27:
|
||||||
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-27)")
|
raise cv.Invalid(f"Invalid pin number: {num} (must be 0-27)")
|
||||||
if is_input:
|
if is_input:
|
||||||
# All ESP32 pins support input mode
|
# All ESP32 pins support input mode
|
||||||
pass
|
pass
|
||||||
|
Loading…
x
Reference in New Issue
Block a user