fix ctypes for uwb / spi stuff

This commit is contained in:
Laura Klünder 2024-02-10 21:44:05 +01:00
parent e1647fe331
commit 69c33690af
2 changed files with 32 additions and 8 deletions

View file

@ -785,8 +785,8 @@ def normalize_name(name):
name = name.lower() name = name.lower()
else: else:
name = re.sub( name = re.sub(
r"([a-zA-Z])([A-Z][a-z])", r"(([a-z])([A-Z]))|(([a-zA-Z])([A-Z][a-z]))",
r"\1_\2", r"\2\5_\3\6",
name name
).lower() ).lower()

View file

@ -61,15 +61,22 @@ class MultipinLedConfig(LedConfig, led_type=LedType.MULTIPIN):
gpio_blue: int = field(metadata={"format": SimpleFormat('B')}) gpio_blue: int = field(metadata={"format": SimpleFormat('B')})
@dataclass
class BoardSPIConfig(StructType):
"""
configuration for spi bus used for ETH or UWB
"""
gpio_miso: int = field(metadata={"format": SimpleFormat('B')})
gpio_mosi: int = field(metadata={"format": SimpleFormat('B')})
gpio_clk: int = field(metadata={"format": SimpleFormat('B')})
@dataclass @dataclass
class UWBConfig(StructType): class UWBConfig(StructType):
""" """
configuration for the connection to the UWB module configuration for the connection to the UWB module
""" """
enable: bool = field(metadata={"format": BoolFormat()}) enable: bool = field(metadata={"format": BoolFormat()})
gpio_miso: int = field(metadata={"format": SimpleFormat('B')})
gpio_mosi: int = field(metadata={"format": SimpleFormat('B')})
gpio_clk: int = field(metadata={"format": SimpleFormat('B')})
gpio_cs: int = field(metadata={"format": SimpleFormat('B')}) gpio_cs: int = field(metadata={"format": SimpleFormat('B')})
gpio_irq: int = field(metadata={"format": SimpleFormat('B')}) gpio_irq: int = field(metadata={"format": SimpleFormat('B')})
gpio_rst: int = field(metadata={"format": SimpleFormat('B')}) gpio_rst: int = field(metadata={"format": SimpleFormat('B')})
@ -77,6 +84,17 @@ class UWBConfig(StructType):
gpio_exton: int = field(metadata={"format": SimpleFormat('B')}) gpio_exton: int = field(metadata={"format": SimpleFormat('B')})
@dataclass
class UplinkEthConfig(StructType):
"""
configuration for the connection to the ETH module
"""
enable: bool = field(metadata={"format": BoolFormat()})
gpio_cs: int = field(metadata={"format": SimpleFormat('B')})
gpio_int: int = field(metadata={"format": SimpleFormat('B')})
gpio_rst: int = field(metadata={"format": SimpleFormat('b')})
@unique @unique
class BoardType(EnumSchemaByNameMixin, IntEnum): class BoardType(EnumSchemaByNameMixin, IntEnum):
CUSTOM = 0x00 CUSTOM = 0x00
@ -110,33 +128,39 @@ class BoardConfig(StructType, union_type_field="board"):
@dataclass @dataclass
class CustomBoardConfig(BoardConfig, board=BoardType.CUSTOM): class CustomBoardConfig(BoardConfig, board=BoardType.CUSTOM):
spi: BoardSPIConfig = field(metadata={"as_definition": True})
uwb: UWBConfig = field(metadata={"as_definition": True}) uwb: UWBConfig = field(metadata={"as_definition": True})
eth: UplinkEthConfig = field(metadata={"as_definition": True})
led: LedConfig = field(metadata={"as_definition": True}) led: LedConfig = field(metadata={"as_definition": True})
@dataclass @dataclass
class DevkitMBoardConfig(BoardConfig, board=BoardType.ESP32_C3_DEVKIT_M_1): class DevkitMBoardConfig(BoardConfig, board=BoardType.ESP32_C3_DEVKIT_M_1):
spi: BoardSPIConfig = field(metadata={"as_definition": True})
uwb: UWBConfig = field(metadata={"as_definition": True}) uwb: UWBConfig = field(metadata={"as_definition": True})
eth: UplinkEthConfig = field(metadata={"as_definition": True})
@dataclass @dataclass
class Esp32SBoardConfig(BoardConfig, board=BoardType.ESP32_C3_32S): class Esp32SBoardConfig(BoardConfig, board=BoardType.ESP32_C3_32S):
spi: BoardSPIConfig = field(metadata={"as_definition": True})
uwb: UWBConfig = field(metadata={"as_definition": True}) uwb: UWBConfig = field(metadata={"as_definition": True})
eth: UplinkEthConfig = field(metadata={"as_definition": True})
@dataclass @dataclass
class UwbBoardConfig(BoardConfig, board=BoardType.C3NAV_UWB_BOARD): class UwbBoardConfig(BoardConfig, board=BoardType.C3NAV_UWB_BOARD):
pass eth: UplinkEthConfig = field(metadata={"as_definition": True})
@dataclass @dataclass
class LocationPCBRev0Dot1BoardConfig(BoardConfig, board=BoardType.C3NAV_LOCATION_PCB_REV_0_1): class LocationPCBRev0Dot1BoardConfig(BoardConfig, board=BoardType.C3NAV_LOCATION_PCB_REV_0_1):
pass eth: UplinkEthConfig = field(metadata={"as_definition": True})
@dataclass @dataclass
class LocationPCBRev0Dot2BoardConfig(BoardConfig, board=BoardType.C3NAV_LOCATION_PCB_REV_0_2): class LocationPCBRev0Dot2BoardConfig(BoardConfig, board=BoardType.C3NAV_LOCATION_PCB_REV_0_2):
pass eth: UplinkEthConfig = field(metadata={"as_definition": True})
@dataclass @dataclass