Move format_fingerprints.py to opendbc (#35532)
* mv * format fingerprints * fixx * no cereal * bumppull/35534/head
parent
3d987cb9b5
commit
1562b88f63
3 changed files with 2 additions and 83 deletions
@ -1 +1 @@ |
||||
Subproject commit e370a036073bf38856f3cd9936c0bd44ff349dea |
||||
Subproject commit f41a3c839fc26e762a482d85e14dc800e43a689a |
@ -1,81 +0,0 @@ |
||||
#!/usr/bin/env python3 |
||||
import jinja2 |
||||
import os |
||||
|
||||
from cereal import car |
||||
from openpilot.common.basedir import BASEDIR |
||||
from opendbc.car.interfaces import get_interface_attr |
||||
|
||||
Ecu = car.CarParams.Ecu |
||||
|
||||
CARS = get_interface_attr('CAR') |
||||
FW_VERSIONS = get_interface_attr('FW_VERSIONS') |
||||
FINGERPRINTS = get_interface_attr('FINGERPRINTS') |
||||
ECU_NAME = {v: k for k, v in Ecu.schema.enumerants.items()} |
||||
|
||||
FINGERPRINTS_PY_TEMPLATE = jinja2.Template(""" |
||||
{%- if FINGERPRINTS[brand] %} |
||||
# ruff: noqa: E501 |
||||
{% endif %} |
||||
{% if FW_VERSIONS[brand] %} |
||||
from opendbc.car.structs import CarParams |
||||
{% endif %} |
||||
from opendbc.car.{{brand}}.values import CAR |
||||
{% if FW_VERSIONS[brand] %} |
||||
|
||||
Ecu = CarParams.Ecu |
||||
{% endif %} |
||||
{% if comments +%} |
||||
{{ comments | join() }} |
||||
{% endif %} |
||||
{% if FINGERPRINTS[brand] %} |
||||
|
||||
FINGERPRINTS = { |
||||
{% for car, fingerprints in FINGERPRINTS[brand].items() %} |
||||
CAR.{{car.name}}: [{ |
||||
{% for fingerprint in fingerprints %} |
||||
{% if not loop.first %} |
||||
{{ "{" }} |
||||
{% endif %} |
||||
{% for key, value in fingerprint.items() %}{{key}}: {{value}}{% if not loop.last %}, {% endif %}{% endfor %} |
||||
|
||||
}{% if loop.last %}]{% endif %}, |
||||
{% endfor %} |
||||
{% endfor %} |
||||
} |
||||
{% endif %} |
||||
|
||||
FW_VERSIONS{% if not FW_VERSIONS[brand] %}: dict[str, dict[tuple, list[bytes]]]{% endif %} = { |
||||
{% for car, _ in FW_VERSIONS[brand].items() %} |
||||
CAR.{{car.name}}: { |
||||
{% for key, fw_versions in FW_VERSIONS[brand][car].items() %} |
||||
(Ecu.{{ECU_NAME[key[0]]}}, 0x{{"%0x" | format(key[1] | int)}}, \ |
||||
{% if key[2] %}0x{{"%0x" | format(key[2] | int)}}{% else %}{{key[2]}}{% endif %}): [ |
||||
{% for fw_version in (fw_versions + extra_fw_versions.get(car, {}).get(key, [])) | unique | sort %} |
||||
{{fw_version}}, |
||||
{% endfor %} |
||||
], |
||||
{% endfor %} |
||||
}, |
||||
{% endfor %} |
||||
} |
||||
|
||||
""", trim_blocks=True) |
||||
|
||||
|
||||
def format_brand_fw_versions(brand, extra_fw_versions: None | dict[str, dict[tuple, list[bytes]]] = None): |
||||
extra_fw_versions = extra_fw_versions or {} |
||||
|
||||
fingerprints_file = os.path.join(BASEDIR, f"opendbc/car/{brand}/fingerprints.py") |
||||
with open(fingerprints_file) as f: |
||||
comments = [line for line in f.readlines() if line.startswith("#") and "noqa" not in line] |
||||
|
||||
with open(fingerprints_file, "w") as f: |
||||
f.write(FINGERPRINTS_PY_TEMPLATE.render(brand=brand, comments=comments, ECU_NAME=ECU_NAME, |
||||
FINGERPRINTS=FINGERPRINTS, FW_VERSIONS=FW_VERSIONS, |
||||
extra_fw_versions=extra_fw_versions)) |
||||
|
||||
|
||||
if __name__ == "__main__": |
||||
for brand in FW_VERSIONS.keys(): |
||||
format_brand_fw_versions(brand) |
Loading…
Reference in new issue