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