diff --git a/.github/workflows/ci_weekly_report.yaml b/.github/workflows/ci_weekly_report.yaml index 22b8745872..9821283cb5 100644 --- a/.github/workflows/ci_weekly_report.yaml +++ b/.github/workflows/ci_weekly_report.yaml @@ -58,14 +58,14 @@ jobs: const jobName = job.name.split(" / ")[2]; const runRegex = /\((.*?)\)/; const run = job.name.match(runRegex)[1]; - report[jobName] = report[jobName] || { successes: [], failures: [], cancelled: [] }; + report[jobName] = report[jobName] || { successes: [], failures: [], canceled: [] }; switch (job.conclusion) { case "success": report[jobName].successes.push({ "run_number": run, "link": job.html_url}); break; case "failure": report[jobName].failures.push({ "run_number": run, "link": job.html_url }); break; - case "cancelled": - report[jobName].cancelled.push({ "run_number": run, "link": job.html_url }); break; + case "canceled": + report[jobName].canceled.push({ "run_number": run, "link": job.html_url }); break; } }); return JSON.stringify({"jobs": report}); diff --git a/opendbc_repo b/opendbc_repo index 1e9f853615..f4d077b832 160000 --- a/opendbc_repo +++ b/opendbc_repo @@ -1 +1 @@ -Subproject commit 1e9f8536151818f08af2ddd478f577f8461af31d +Subproject commit f4d077b832d46ac149c2b07dc37d777dc21237ea diff --git a/pyproject.toml b/pyproject.toml index 24ec80e787..b311a854dc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -167,7 +167,7 @@ testpaths = [ [tool.codespell] quiet-level = 3 # if you've got a short variable name that's getting flagged, add it here -ignore-words-list = "bu,ro,te,ue,alo,hda,ois,nam,nams,ned,som,parm,setts,inout,warmup,bumb,nd,sie,preints,whit,indexIn,ws,uint,grey,deque,stdio,amin,BA,LITE,atEnd,UIs,errorString,arange,FocusIn,od,tim,relA,hist,copyable" +ignore-words-list = "bu,ro,te,ue,alo,hda,ois,nam,nams,ned,som,parm,setts,inout,warmup,bumb,nd,sie,preints,whit,indexIn,ws,uint,grey,deque,stdio,amin,BA,LITE,atEnd,UIs,errorString,arange,FocusIn,od,tim,relA,hist,copyable,jupyter,thead" builtin = "clear,rare,informal,code,names,en-GB_to_en-US" skip = "./third_party/*, ./tinygrad/*, ./tinygrad_repo/*, ./msgq/*, ./panda/*, ./opendbc/*, ./opendbc_repo/*, ./rednose/*, ./rednose_repo/*, ./teleoprtc/*, ./teleoprtc_repo/*, ./selfdrive/ui/translations/*.ts, uv.lock, *.onnx, ./cereal/gen/*, */c_generated_code/*" diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 7776a47c64..fa69b75e9f 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -12,6 +12,8 @@ from panda.python.uds import SERVICE_TYPE from openpilot.selfdrive.car.docs_definitions import CarDocs from openpilot.selfdrive.car.helpers import clip, interp +CanMsgType = tuple[int, bytes, int] + # set up logging carlog = logging.getLogger('carlog') carlog.setLevel(logging.INFO) @@ -193,7 +195,7 @@ def get_friction(lateral_accel_error: float, lateral_accel_deadzone: float, fric return friction -def make_can_msg(addr: int, dat: bytes, bus: int) -> tuple[int, bytes, int]: +def make_can_msg(addr: int, dat: bytes, bus: int) -> CanMsgType: return addr, dat, bus diff --git a/selfdrive/car/card.py b/selfdrive/car/card.py index e1dfeaf6d5..e819d32bcc 100755 --- a/selfdrive/car/card.py +++ b/selfdrive/car/card.py @@ -13,7 +13,7 @@ from openpilot.common.params import Params from openpilot.common.realtime import config_realtime_process, Priority, Ratekeeper from openpilot.common.swaglog import cloudlog, ForwardingHandler -from openpilot.selfdrive.pandad import can_list_to_can_capnp, can_capnp_to_list +from openpilot.selfdrive.pandad import can_capnp_to_list, can_list_to_can_capnp from openpilot.selfdrive.car import DT_CTRL, carlog from openpilot.selfdrive.car.can_definitions import CanData, CanSendCallable from openpilot.selfdrive.car.fw_versions import ObdCallback diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index e076ee6e49..1b79844718 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -12,7 +12,8 @@ from functools import cache from cereal import car from openpilot.common.basedir import BASEDIR from openpilot.common.simple_kalman import KF1D, get_kalman_gain -from openpilot.selfdrive.car import DT_CTRL, apply_hysteresis, gen_empty_fingerprint, scale_rot_inertia, scale_tire_stiffness, get_friction, STD_CARGO_KG +from openpilot.selfdrive.car import CanMsgType, DT_CTRL, apply_hysteresis, gen_empty_fingerprint, scale_rot_inertia, scale_tire_stiffness, get_friction, \ + STD_CARGO_KG from openpilot.selfdrive.car.can_definitions import CanSendCallable from openpilot.selfdrive.car.conversions import Conversions as CV from openpilot.selfdrive.car.helpers import clip @@ -53,7 +54,6 @@ class LatControlInputs(NamedTuple): aego: float -SendCan = tuple[int, bytes, int] TorqueFromLateralAccelCallbackType = Callable[[LatControlInputs, car.CarParams.LateralTorqueTuning, float, float, bool, bool], float] @@ -110,7 +110,7 @@ class CarInterfaceBase(ABC): dbc_name = "" if self.cp is None else self.cp.dbc_name self.CC: CarControllerBase = CarController(dbc_name, CP) - def apply(self, c: car.CarControl, now_nanos: int) -> tuple[car.CarControl.Actuators, list[SendCan]]: + def apply(self, c: car.CarControl, now_nanos: int) -> tuple[car.CarControl.Actuators, list[CanMsgType]]: return self.CC.update(c, self.CS, now_nanos) @staticmethod @@ -230,7 +230,7 @@ class CarInterfaceBase(ABC): def _update(self, c: car.CarControl) -> car.CarState: pass - def update(self, c: car.CarControl, can_packets: list[int, list[int, bytes, int]]) -> car.CarState: + def update(self, c: car.CarControl, can_packets: list[tuple[int, list[CanMsgType]]]) -> car.CarState: # parse can for cp in self.can_parsers: if cp is not None: @@ -469,7 +469,7 @@ class CarControllerBase(ABC): self.frame = 0 @abstractmethod - def update(self, CC: car.CarControl.Actuators, CS: car.CarState, now_nanos: int) -> tuple[car.CarControl.Actuators, list[SendCan]]: + def update(self, CC: car.CarControl.Actuators, CS: car.CarState, now_nanos: int) -> tuple[car.CarControl.Actuators, list[CanMsgType]]: pass diff --git a/selfdrive/car/isotp_parallel_query.py b/selfdrive/car/isotp_parallel_query.py index 813c6067c2..0d2d1861bc 100644 --- a/selfdrive/car/isotp_parallel_query.py +++ b/selfdrive/car/isotp_parallel_query.py @@ -3,7 +3,7 @@ from collections import defaultdict from functools import partial from types import SimpleNamespace -from openpilot.selfdrive.car import carlog +from openpilot.selfdrive.car import carlog, CanMsgType from openpilot.selfdrive.car.can_definitions import CanSendCallable from openpilot.selfdrive.car.fw_query_definitions import AddrType from panda.python.uds import CanClient, IsoTpMessage, FUNCTIONAL_ADDRS, get_rx_addr_for_tx_addr @@ -27,7 +27,7 @@ class IsoTpParallelQuery: assert tx_addr not in FUNCTIONAL_ADDRS, f"Functional address should be defined in functional_addrs: {hex(tx_addr)}" self.msg_addrs = {tx_addr: get_rx_addr_for_tx_addr(tx_addr[0], rx_offset=response_offset) for tx_addr in real_addrs} - self.msg_buffer: dict[int, list[tuple[int, bytes, int]]] = defaultdict(list) + self.msg_buffer: dict[int, list[CanMsgType]] = defaultdict(list) def rx(self): """Drain can socket and sort messages into buffers based on address""" diff --git a/selfdrive/pandad/pandad_api_impl.pyx b/selfdrive/pandad/pandad_api_impl.pyx index 8a12e1c433..787968f53e 100644 --- a/selfdrive/pandad/pandad_api_impl.pyx +++ b/selfdrive/pandad/pandad_api_impl.pyx @@ -50,7 +50,7 @@ def can_capnp_to_list(strings, msgtype='can'): cdef vector[CanData].iterator it = data.begin() while it != data.end(): d = &deref(it) - frames = [[f.address, (&f.dat[0])[:f.dat.size()], f.src] for f in d.frames] - result.append([d.nanos, frames]) + frames = [(f.address, (&f.dat[0])[:f.dat.size()], f.src) for f in d.frames] + result.append((d.nanos, frames)) preinc(it) return result