Files
phoenix-regression-test/common/config_loader.py
T

52 lines
1.5 KiB
Python

import json
from dataclasses import dataclass
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parent.parent
FENGHUANG_CONFIG = REPO_ROOT / "configs" / "config-fenghuang" / "config.json"
GARUDA_CONFIG = REPO_ROOT / "configs" / "config-garuda" / "config.json"
JIG_CONFIG = REPO_ROOT / "configs" / "config-jig" / "config.json"
@dataclass(frozen=True)
class Register:
label: str
address: int
data_type: str
object_type: str
show_as_hex: bool = False
def load_data_sets(config_path):
with open(config_path, encoding="utf-8") as f:
raw = json.load(f)
return {ds["name"]: ds["data"] for ds in raw["data_sets"]}
def load_registers(config_path, dataset_names=None):
data_sets = load_data_sets(config_path)
names = dataset_names or data_sets.keys()
registers = {}
for name in names:
for entry in data_sets[name]:
registers[entry["label"]] = Register(
label=entry["label"],
address=entry["address"],
data_type=entry["data_type"],
object_type=entry["object_type"],
show_as_hex=entry.get("show_as_hex", False),
)
return registers
def load_fenghuang_registers(dataset_names=None):
return load_registers(FENGHUANG_CONFIG, dataset_names)
def load_garuda_registers(dataset_names=None):
return load_registers(GARUDA_CONFIG, dataset_names)
def load_jig_registers(dataset_names=None):
return load_registers(JIG_CONFIG, dataset_names)