mirror of
https://github.com/esphome/esphome.git
synced 2026-05-29 23:07:16 +08:00
[esp32] gpio type improvements (#14517)
This commit is contained in:
@@ -88,8 +88,8 @@ def _translate_pin(value):
|
|||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class ESP32ValidationFunctions:
|
class ESP32ValidationFunctions:
|
||||||
pin_validation: Callable[[Any], Any]
|
pin_validation: Callable[[int], int]
|
||||||
usage_validation: Callable[[Any], Any]
|
usage_validation: Callable[[dict[str, Any]], dict[str, Any]]
|
||||||
|
|
||||||
|
|
||||||
_esp32_validations = {
|
_esp32_validations = {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome.const import (
|
from esphome.const import (
|
||||||
@@ -22,7 +23,7 @@ _ESP32_STRAPPING_PINS = {0, 2, 5, 12, 15}
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def esp32_validate_gpio_pin(value):
|
def esp32_validate_gpio_pin(value: int) -> int:
|
||||||
if value < 0 or value > 39:
|
if value < 0 or value > 39:
|
||||||
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-39)")
|
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-39)")
|
||||||
if value in _ESP_SDIO_PINS:
|
if value in _ESP_SDIO_PINS:
|
||||||
@@ -41,7 +42,7 @@ def esp32_validate_gpio_pin(value):
|
|||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
def esp32_validate_supports(value):
|
def esp32_validate_supports(value: dict[str, Any]) -> dict[str, Any]:
|
||||||
num = value[CONF_NUMBER]
|
num = value[CONF_NUMBER]
|
||||||
mode = value[CONF_MODE]
|
mode = value[CONF_MODE]
|
||||||
is_input = mode[CONF_INPUT]
|
is_input = mode[CONF_INPUT]
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER
|
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER
|
||||||
@@ -9,14 +10,14 @@ _ESP32C2_STRAPPING_PINS = {8, 9}
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def esp32_c2_validate_gpio_pin(value):
|
def esp32_c2_validate_gpio_pin(value: int) -> int:
|
||||||
if value < 0 or value > 20:
|
if value < 0 or value > 20:
|
||||||
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-20)")
|
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-20)")
|
||||||
|
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
def esp32_c2_validate_supports(value):
|
def esp32_c2_validate_supports(value: dict[str, Any]) -> dict[str, Any]:
|
||||||
num = value[CONF_NUMBER]
|
num = value[CONF_NUMBER]
|
||||||
mode = value[CONF_MODE]
|
mode = value[CONF_MODE]
|
||||||
is_input = mode[CONF_INPUT]
|
is_input = mode[CONF_INPUT]
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER
|
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER
|
||||||
@@ -18,7 +19,7 @@ _ESP32C3_STRAPPING_PINS = {2, 8, 9}
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def esp32_c3_validate_gpio_pin(value):
|
def esp32_c3_validate_gpio_pin(value: int) -> int:
|
||||||
if value < 0 or value > 21:
|
if value < 0 or value > 21:
|
||||||
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-21)")
|
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-21)")
|
||||||
if value in _ESP32C3_SPI_PSRAM_PINS:
|
if value in _ESP32C3_SPI_PSRAM_PINS:
|
||||||
@@ -29,7 +30,7 @@ def esp32_c3_validate_gpio_pin(value):
|
|||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
def esp32_c3_validate_supports(value):
|
def esp32_c3_validate_supports(value: dict[str, Any]) -> dict[str, Any]:
|
||||||
num = value[CONF_NUMBER]
|
num = value[CONF_NUMBER]
|
||||||
mode = value[CONF_MODE]
|
mode = value[CONF_MODE]
|
||||||
is_input = mode[CONF_INPUT]
|
is_input = mode[CONF_INPUT]
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER, CONF_SCL, CONF_SDA
|
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER, CONF_SCL, CONF_SDA
|
||||||
@@ -22,7 +23,7 @@ _ESP32C5_STRAPPING_PINS = {2, 7, 27, 28}
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def esp32_c5_validate_gpio_pin(value):
|
def esp32_c5_validate_gpio_pin(value: int) -> int:
|
||||||
if value < 0 or value > 28:
|
if value < 0 or value > 28:
|
||||||
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-28)")
|
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-28)")
|
||||||
if value in _ESP32C5_SPI_PSRAM_PINS:
|
if value in _ESP32C5_SPI_PSRAM_PINS:
|
||||||
@@ -33,7 +34,7 @@ def esp32_c5_validate_gpio_pin(value):
|
|||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
def esp32_c5_validate_supports(value):
|
def esp32_c5_validate_supports(value: dict[str, Any]) -> dict[str, Any]:
|
||||||
num = value[CONF_NUMBER]
|
num = value[CONF_NUMBER]
|
||||||
mode = value[CONF_MODE]
|
mode = value[CONF_MODE]
|
||||||
is_input = mode[CONF_INPUT]
|
is_input = mode[CONF_INPUT]
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER, CONF_SCL, CONF_SDA
|
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER, CONF_SCL, CONF_SDA
|
||||||
@@ -22,7 +23,7 @@ _ESP32C6_STRAPPING_PINS = {8, 9, 15}
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def esp32_c6_validate_gpio_pin(value):
|
def esp32_c6_validate_gpio_pin(value: int) -> int:
|
||||||
if value < 0 or value > 23:
|
if value < 0 or value > 23:
|
||||||
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-23)")
|
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-23)")
|
||||||
if value in _ESP32C6_SPI_PSRAM_PINS:
|
if value in _ESP32C6_SPI_PSRAM_PINS:
|
||||||
@@ -33,7 +34,7 @@ def esp32_c6_validate_gpio_pin(value):
|
|||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
def esp32_c6_validate_supports(value):
|
def esp32_c6_validate_supports(value: dict[str, Any]) -> dict[str, Any]:
|
||||||
num = value[CONF_NUMBER]
|
num = value[CONF_NUMBER]
|
||||||
mode = value[CONF_MODE]
|
mode = value[CONF_MODE]
|
||||||
is_input = mode[CONF_INPUT]
|
is_input = mode[CONF_INPUT]
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER
|
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER
|
||||||
@@ -20,7 +21,7 @@ _ESP32C61_STRAPPING_PINS = {8, 9}
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def esp32_c61_validate_gpio_pin(value):
|
def esp32_c61_validate_gpio_pin(value: int) -> int:
|
||||||
if value < 0 or value > 29:
|
if value < 0 or value > 29:
|
||||||
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-29)")
|
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-29)")
|
||||||
if value in _ESP32C61_SPI_PSRAM_PINS:
|
if value in _ESP32C61_SPI_PSRAM_PINS:
|
||||||
@@ -31,7 +32,7 @@ def esp32_c61_validate_gpio_pin(value):
|
|||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
def esp32_c61_validate_supports(value):
|
def esp32_c61_validate_supports(value: dict[str, Any]) -> dict[str, Any]:
|
||||||
num = value[CONF_NUMBER]
|
num = value[CONF_NUMBER]
|
||||||
mode = value[CONF_MODE]
|
mode = value[CONF_MODE]
|
||||||
is_input = mode[CONF_INPUT]
|
is_input = mode[CONF_INPUT]
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER
|
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER
|
||||||
@@ -13,7 +14,7 @@ _ESP32H2_STRAPPING_PINS = {2, 3, 8, 9, 25}
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def esp32_h2_validate_gpio_pin(value):
|
def esp32_h2_validate_gpio_pin(value: int) -> int:
|
||||||
if value < 0 or value > 27:
|
if value < 0 or value > 27:
|
||||||
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-27)")
|
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-27)")
|
||||||
if value in _ESP32H2_SPI_FLASH_PINS:
|
if value in _ESP32H2_SPI_FLASH_PINS:
|
||||||
@@ -33,7 +34,7 @@ def esp32_h2_validate_gpio_pin(value):
|
|||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
def esp32_h2_validate_supports(value):
|
def esp32_h2_validate_supports(value: dict[str, Any]) -> dict[str, Any]:
|
||||||
num = value[CONF_NUMBER]
|
num = value[CONF_NUMBER]
|
||||||
mode = value[CONF_MODE]
|
mode = value[CONF_MODE]
|
||||||
is_input = mode[CONF_INPUT]
|
is_input = mode[CONF_INPUT]
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER, CONF_SCL, CONF_SDA
|
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER, CONF_SCL, CONF_SDA
|
||||||
@@ -14,7 +15,7 @@ _ESP32P4_STRAPPING_PINS = {34, 35, 36, 37, 38}
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def esp32_p4_validate_gpio_pin(value):
|
def esp32_p4_validate_gpio_pin(value: int) -> int:
|
||||||
if value < 0 or value > 54:
|
if value < 0 or value > 54:
|
||||||
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-54)")
|
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-54)")
|
||||||
if value in _ESP32P4_USB_JTAG_PINS:
|
if value in _ESP32P4_USB_JTAG_PINS:
|
||||||
@@ -27,7 +28,7 @@ def esp32_p4_validate_gpio_pin(value):
|
|||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
def esp32_p4_validate_supports(value):
|
def esp32_p4_validate_supports(value: dict[str, Any]) -> dict[str, Any]:
|
||||||
num = value[CONF_NUMBER]
|
num = value[CONF_NUMBER]
|
||||||
mode = value[CONF_MODE]
|
mode = value[CONF_MODE]
|
||||||
is_input = mode[CONF_INPUT]
|
is_input = mode[CONF_INPUT]
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome.const import (
|
from esphome.const import (
|
||||||
@@ -26,7 +27,7 @@ _ESP32S2_STRAPPING_PINS = {0, 45, 46}
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def esp32_s2_validate_gpio_pin(value):
|
def esp32_s2_validate_gpio_pin(value: int) -> int:
|
||||||
if value < 0 or value > 46:
|
if value < 0 or value > 46:
|
||||||
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-46)")
|
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-46)")
|
||||||
|
|
||||||
@@ -43,7 +44,7 @@ def esp32_s2_validate_gpio_pin(value):
|
|||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
def esp32_s2_validate_supports(value):
|
def esp32_s2_validate_supports(value: dict[str, Any]) -> dict[str, Any]:
|
||||||
num = value[CONF_NUMBER]
|
num = value[CONF_NUMBER]
|
||||||
mode = value[CONF_MODE]
|
mode = value[CONF_MODE]
|
||||||
is_input = mode[CONF_INPUT]
|
is_input = mode[CONF_INPUT]
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER
|
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER
|
||||||
@@ -27,7 +28,7 @@ _ESP_32S3_STRAPPING_PINS = {0, 3, 45, 46}
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def esp32_s3_validate_gpio_pin(value):
|
def esp32_s3_validate_gpio_pin(value: int) -> int:
|
||||||
if value < 0 or value > 48:
|
if value < 0 or value > 48:
|
||||||
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-48)")
|
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-48)")
|
||||||
|
|
||||||
@@ -49,7 +50,7 @@ def esp32_s3_validate_gpio_pin(value):
|
|||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
def esp32_s3_validate_supports(value):
|
def esp32_s3_validate_supports(value: dict[str, Any]) -> dict[str, Any]:
|
||||||
num = value[CONF_NUMBER]
|
num = value[CONF_NUMBER]
|
||||||
mode = value[CONF_MODE]
|
mode = value[CONF_MODE]
|
||||||
is_input = mode[CONF_INPUT]
|
is_input = mode[CONF_INPUT]
|
||||||
|
|||||||
Reference in New Issue
Block a user