优化无线/有线CAN,以及控制指令解析

This commit is contained in:
minghanchen
2026-08-26 20:11:09 +08:00
parent 9ac8fdface
commit 4a0570706f
49 changed files with 8409 additions and 1289 deletions
+34 -1
View File
@@ -8,6 +8,16 @@ import sys
from pathlib import Path
from typing import Any
from generate_can_semantic_protocol import (
DEFAULT_CPP as CAN_PROTOCOL_CPP,
DEFAULT_PYTHON as CAN_PROTOCOL_PYTHON,
DEFAULT_SOURCE as CAN_PROTOCOL_SOURCE,
ProtocolError as CanProtocolError,
load_and_validate as load_can_protocol,
render_cpp as render_can_protocol_cpp,
render_python as render_can_protocol_python,
)
try:
import yaml
from jsonschema import Draft202012Validator, FormatChecker, RefResolver
@@ -248,6 +258,27 @@ def validate_platform_resources(errors: list[str], warnings: list[str]) -> int:
return count
def validate_generated_can_protocol(errors: list[str]) -> int:
try:
document = load_can_protocol(CAN_PROTOCOL_SOURCE)
expected = {
CAN_PROTOCOL_PYTHON: render_can_protocol_python(document),
CAN_PROTOCOL_CPP: render_can_protocol_cpp(document),
}
except CanProtocolError as exc:
errors.append(f"{relative(CAN_PROTOCOL_SOURCE)}: {exc}")
return 0
for path, content in expected.items():
if not path.is_file():
errors.append(f"{relative(path)}: generated CAN protocol view is missing")
elif path.read_text(encoding="utf-8") != content:
errors.append(
f"{relative(path)}: stale generated CAN protocol view; "
"run make can-protocol-generate"
)
return len(document["rules"])
def main() -> int:
errors: list[str] = []
warnings: list[str] = []
@@ -255,6 +286,7 @@ def main() -> int:
document_count = validate_documents(schemas, schema_store, errors)
domain_count = validate_domains(errors)
platform_count = validate_platform_resources(errors, warnings)
protocol_rule_count = validate_generated_can_protocol(errors)
for warning in warnings:
print(f"WARNING: {warning}")
@@ -267,7 +299,8 @@ def main() -> int:
print(
"Repository validation passed: "
f"{len(schemas)} schemas, {document_count} documents, "
f"{domain_count} domains, {platform_count} platform(s)."
f"{domain_count} domains, {platform_count} platform(s), "
f"{protocol_rule_count} generated CAN protocol rule(s)."
)
return 0