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()
else:
name = re.sub(
r"([a-zA-Z])([A-Z][a-z])",
r"\1_\2",
r"(([a-z])([A-Z]))|(([a-zA-Z])([A-Z][a-z]))",
r"\2\5_\3\6",
name
).lower()

View file

@ -61,15 +61,22 @@ class MultipinLedConfig(LedConfig, led_type=LedType.MULTIPIN):
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
class UWBConfig(StructType):
"""
configuration for the connection to the UWB module
"""
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_irq: 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')})
@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
class BoardType(EnumSchemaByNameMixin, IntEnum):
CUSTOM = 0x00
@ -110,33 +128,39 @@ class BoardConfig(StructType, union_type_field="board"):
@dataclass
class CustomBoardConfig(BoardConfig, board=BoardType.CUSTOM):
spi: BoardSPIConfig = 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})
@dataclass
class DevkitMBoardConfig(BoardConfig, board=BoardType.ESP32_C3_DEVKIT_M_1):
spi: BoardSPIConfig = field(metadata={"as_definition": True})
uwb: UWBConfig = field(metadata={"as_definition": True})
eth: UplinkEthConfig = field(metadata={"as_definition": True})
@dataclass
class Esp32SBoardConfig(BoardConfig, board=BoardType.ESP32_C3_32S):
spi: BoardSPIConfig = field(metadata={"as_definition": True})
uwb: UWBConfig = field(metadata={"as_definition": True})
eth: UplinkEthConfig = field(metadata={"as_definition": True})
@dataclass
class UwbBoardConfig(BoardConfig, board=BoardType.C3NAV_UWB_BOARD):
pass
eth: UplinkEthConfig = field(metadata={"as_definition": True})
@dataclass
class LocationPCBRev0Dot1BoardConfig(BoardConfig, board=BoardType.C3NAV_LOCATION_PCB_REV_0_1):
pass
eth: UplinkEthConfig = field(metadata={"as_definition": True})
@dataclass
class LocationPCBRev0Dot2BoardConfig(BoardConfig, board=BoardType.C3NAV_LOCATION_PCB_REV_0_2):
pass
eth: UplinkEthConfig = field(metadata={"as_definition": True})
@dataclass