mirror of
https://github.com/esphome/esphome.git
synced 2025-07-28 14:16:40 +00:00
[core/pins] improve pins types (#8848)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
parent
f467c79a20
commit
a59e1c7011
@ -50,7 +50,7 @@ MCP23016_PIN_SCHEMA = pins.gpio_base_schema(
|
|||||||
cv.int_range(min=0, max=15),
|
cv.int_range(min=0, max=15),
|
||||||
modes=[CONF_INPUT, CONF_OUTPUT],
|
modes=[CONF_INPUT, CONF_OUTPUT],
|
||||||
mode_validator=validate_mode,
|
mode_validator=validate_mode,
|
||||||
invertable=True,
|
invertible=True,
|
||||||
).extend(
|
).extend(
|
||||||
{
|
{
|
||||||
cv.Required(CONF_MCP23016): cv.use_id(MCP23016),
|
cv.Required(CONF_MCP23016): cv.use_id(MCP23016),
|
||||||
|
@ -60,7 +60,7 @@ MCP23XXX_PIN_SCHEMA = pins.gpio_base_schema(
|
|||||||
cv.int_range(min=0, max=15),
|
cv.int_range(min=0, max=15),
|
||||||
modes=[CONF_INPUT, CONF_OUTPUT, CONF_PULLUP],
|
modes=[CONF_INPUT, CONF_OUTPUT, CONF_PULLUP],
|
||||||
mode_validator=validate_mode,
|
mode_validator=validate_mode,
|
||||||
invertable=True,
|
invertible=True,
|
||||||
).extend(
|
).extend(
|
||||||
{
|
{
|
||||||
cv.Required(CONF_MCP23XXX): cv.use_id(MCP23XXXBase),
|
cv.Required(CONF_MCP23XXX): cv.use_id(MCP23XXXBase),
|
||||||
|
@ -53,7 +53,7 @@ PCF8574_PIN_SCHEMA = pins.gpio_base_schema(
|
|||||||
cv.int_range(min=0, max=17),
|
cv.int_range(min=0, max=17),
|
||||||
modes=[CONF_INPUT, CONF_OUTPUT],
|
modes=[CONF_INPUT, CONF_OUTPUT],
|
||||||
mode_validator=validate_mode,
|
mode_validator=validate_mode,
|
||||||
invertable=True,
|
invertible=True,
|
||||||
).extend(
|
).extend(
|
||||||
{
|
{
|
||||||
cv.Required(CONF_PCF8574): cv.use_id(PCF8574Component),
|
cv.Required(CONF_PCF8574): cv.use_id(PCF8574Component),
|
||||||
|
@ -95,7 +95,7 @@ SN74HC595_PIN_SCHEMA = pins.gpio_base_schema(
|
|||||||
cv.int_range(min=0, max=2047),
|
cv.int_range(min=0, max=2047),
|
||||||
modes=[CONF_OUTPUT],
|
modes=[CONF_OUTPUT],
|
||||||
mode_validator=_validate_output_mode,
|
mode_validator=_validate_output_mode,
|
||||||
invertable=True,
|
invertible=True,
|
||||||
).extend(
|
).extend(
|
||||||
{
|
{
|
||||||
cv.Required(CONF_SN74HC595): cv.use_id(SN74HC595Component),
|
cv.Required(CONF_SN74HC595): cv.use_id(SN74HC595Component),
|
||||||
|
@ -53,7 +53,7 @@ TCA9555_PIN_SCHEMA = pins.gpio_base_schema(
|
|||||||
cv.int_range(min=0, max=15),
|
cv.int_range(min=0, max=15),
|
||||||
modes=[CONF_INPUT, CONF_OUTPUT],
|
modes=[CONF_INPUT, CONF_OUTPUT],
|
||||||
mode_validator=validate_mode,
|
mode_validator=validate_mode,
|
||||||
invertable=True,
|
invertible=True,
|
||||||
).extend(
|
).extend(
|
||||||
{
|
{
|
||||||
cv.Required(CONF_TCA9555): cv.use_id(TCA9555Component),
|
cv.Required(CONF_TCA9555): cv.use_id(TCA9555Component),
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
|
from collections.abc import Callable
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
|
from logging import Logger
|
||||||
import operator
|
import operator
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome.const import (
|
from esphome.const import (
|
||||||
@ -15,6 +18,7 @@ from esphome.const import (
|
|||||||
CONF_PULLUP,
|
CONF_PULLUP,
|
||||||
)
|
)
|
||||||
from esphome.core import CORE
|
from esphome.core import CORE
|
||||||
|
from esphome.cpp_generator import MockObjClass
|
||||||
|
|
||||||
|
|
||||||
class PinRegistry(dict):
|
class PinRegistry(dict):
|
||||||
@ -262,7 +266,7 @@ internal_gpio_input_pullup_pin_number = _internal_number_creator(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def check_strapping_pin(conf, strapping_pin_list, logger):
|
def check_strapping_pin(conf, strapping_pin_list: set[int], logger: Logger):
|
||||||
num = conf[CONF_NUMBER]
|
num = conf[CONF_NUMBER]
|
||||||
if num in strapping_pin_list and not conf.get(CONF_IGNORE_STRAPPING_WARNING):
|
if num in strapping_pin_list and not conf.get(CONF_IGNORE_STRAPPING_WARNING):
|
||||||
logger.warning(
|
logger.warning(
|
||||||
@ -291,11 +295,11 @@ def gpio_validate_modes(value):
|
|||||||
|
|
||||||
|
|
||||||
def gpio_base_schema(
|
def gpio_base_schema(
|
||||||
pin_type,
|
pin_type: MockObjClass,
|
||||||
number_validator,
|
number_validator: Callable[[Any], Any],
|
||||||
modes=GPIO_STANDARD_MODES,
|
modes=GPIO_STANDARD_MODES,
|
||||||
mode_validator=gpio_validate_modes,
|
mode_validator: Callable[[Any], Any] = gpio_validate_modes,
|
||||||
invertable=True,
|
invertible: bool = True,
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Generate a base gpio pin schema
|
Generate a base gpio pin schema
|
||||||
@ -303,7 +307,7 @@ def gpio_base_schema(
|
|||||||
:param number_validator: A validator for the pin number
|
:param number_validator: A validator for the pin number
|
||||||
:param modes: The available modes, default is all standard modes
|
:param modes: The available modes, default is all standard modes
|
||||||
:param mode_validator: A validator function for the pin mode
|
:param mode_validator: A validator function for the pin mode
|
||||||
:param invertable: If the pin supports hardware inversion
|
:param invertible: If the pin supports hardware inversion
|
||||||
:return: A schema for the pin
|
:return: A schema for the pin
|
||||||
"""
|
"""
|
||||||
mode_default = len(modes) == 1
|
mode_default = len(modes) == 1
|
||||||
@ -328,7 +332,7 @@ def gpio_base_schema(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
if invertable:
|
if invertible:
|
||||||
return schema.extend({cv.Optional(CONF_INVERTED, default=False): cv.boolean})
|
return schema.extend({cv.Optional(CONF_INVERTED, default=False): cv.boolean})
|
||||||
|
|
||||||
return schema
|
return schema
|
||||||
|
Loading…
x
Reference in New Issue
Block a user