From 6c0da0a22fc028fd0ba96cf93e82182bb5a1f0a6 Mon Sep 17 00:00:00 2001 From: Martin Girard Date: Thu, 24 Sep 2026 10:41:14 +0200 Subject: [PATCH] Config implementation Implementation of a JSON file that save all the Signal descriptor --- .../src/bench_data_connector/__init__.py | 16 +++++-- .../src/bench_data_connector/config.py | 45 +++++++++++++++++++ 2 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 bench-data-connector/src/bench_data_connector/config.py diff --git a/bench-data-connector/src/bench_data_connector/__init__.py b/bench-data-connector/src/bench_data_connector/__init__.py index e830f45..b323c49 100644 --- a/bench-data-connector/src/bench_data_connector/__init__.py +++ b/bench-data-connector/src/bench_data_connector/__init__.py @@ -13,6 +13,8 @@ from time import monotonic import threading import asyncio import logging +from bench_data_connector.config import Config, read_config, DEFAULT_CONFIG +from pydantic import BaseModel, Field from uuid import uuid4 from queue import Queue @@ -38,7 +40,7 @@ async def perform_handshake( protocol_version=PROTOCOL_VERSION, connector_name="Test connector", connector_version="V1", - signals=[signal_1, signal_2], + signals=[config.rpmhz_sig, config.lambda_sig], ) try: @@ -177,7 +179,6 @@ async def receive_messages( def threadmain() -> None: asyncio.run(jsonhandler()) - DATA_STRUCT = struct.Struct(" None: + try: + config = read_config("~/.config/dynalab/connectors/bench_v1.json") + except FileNotFoundError: + config = DEFAULT_CONFIG + config.write("~/.config/dynalab/connectors/bench_v1.json") + print("No config found, default config written") + JSONthread.start() try: @@ -257,7 +267,7 @@ def main() -> None: packet = SensorData.from_bytes(payload) data_queue.put( JsonValueDescriptor( - signal_id=(signal_1.id if packet.data_type == 0 else signal_2.id), + signal_id=(config.rpmhz_sig.id if packet.data_type == 0 else config.lambda_sig.id), value=packet.value, timestamp=sync.convert_timestamp(packet.timestamp * 1000), ) diff --git a/bench-data-connector/src/bench_data_connector/config.py b/bench-data-connector/src/bench_data_connector/config.py new file mode 100644 index 0000000..9f2d5f3 --- /dev/null +++ b/bench-data-connector/src/bench_data_connector/config.py @@ -0,0 +1,45 @@ +from pydantic import BaseModel, Field +from dynalab_core.protocols.packets.handshake import JsonSignalDescriptor +from pathlib import Path +from typing import Self +from uuid import uuid4 + + + +class Config(BaseModel): + rpmhz_sig: JsonSignalDescriptor | None = None + lambda_sig: JsonSignalDescriptor | None = None + comments: str = "" + + def write(self, file: str | Path) -> None: + output_path = Path(file).expanduser() + + output_path.parent.mkdir(parents=True, exist_ok=True) + + output_path.write_text( + self.model_dump_json(indent=4), + encoding="utf-8", + ) + +def read_config(file: str | Path) -> Config: + input_path = Path(file).expanduser() + if input_path.exists(): + return Config.model_validate_json(input_path.read_text(encoding="utf-8")) + raise FileNotFoundError + + +DEFAULT_CONFIG = Config( + rpmhz_sig=JsonSignalDescriptor( + id=uuid4(), + name="Rpmhz", + type="number", + timeout_ms=5000, + ), + lambda_sig=JsonSignalDescriptor( + id=uuid4(), + name="Lambda", + type="number", + timeout_ms=5000, + ), + comments="Mon test", +)