From 69c33690af6e91fabb2121d5d86a583fa77d87e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sat, 10 Feb 2024 21:44:05 +0100 Subject: [PATCH] fix ctypes for uwb / spi stuff --- src/c3nav/mesh/baseformats.py | 4 ++-- src/c3nav/mesh/dataformats.py | 36 +++++++++++++++++++++++++++++------ 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/c3nav/mesh/baseformats.py b/src/c3nav/mesh/baseformats.py index 6ed88de4..6742b8de 100644 --- a/src/c3nav/mesh/baseformats.py +++ b/src/c3nav/mesh/baseformats.py @@ -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() diff --git a/src/c3nav/mesh/dataformats.py b/src/c3nav/mesh/dataformats.py index 8e236e08..a2611254 100644 --- a/src/c3nav/mesh/dataformats.py +++ b/src/c3nav/mesh/dataformats.py @@ -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