feat: add config loader for TPU/RPU/Jig register maps
This commit is contained in:
@@ -0,0 +1,51 @@
|
|||||||
|
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)
|
||||||
Reference in New Issue
Block a user