From 7f83c84210024f37751e02ce9cf333f9f40b7a74 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 24 Sep 2024 20:57:59 -0400 Subject: [PATCH] track multiple buttons --- opendbc/car/__init__.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/opendbc/car/__init__.py b/opendbc/car/__init__.py index 4beba0334..f97b1ff1d 100644 --- a/opendbc/car/__init__.py +++ b/opendbc/car/__init__.py @@ -35,22 +35,23 @@ def apply_hysteresis(val: float, val_steady: float, hyst_gap: float) -> float: class ButtonTracker: def __init__(self): - self.prev_btn: int = 0 + self.prev_buttons: dict = {} def create_button_events(self, cur_btn: int, buttons_dict: dict[int, structs.CarState.ButtonEvent.Type], unpressed_btn: int = 0) -> list[structs.CarState.ButtonEvent]: events: list[structs.CarState.ButtonEvent] = [] - if cur_btn == self.prev_btn: - return events + button = id(buttons_dict) + prev_btn = self.prev_buttons.get(button, unpressed_btn) - # Add events for button presses, multiple when a button switches without going to unpressed - for pressed, btn in ((False, self.prev_btn), (True, cur_btn)): - if btn != unpressed_btn: - events.append(structs.CarState.ButtonEvent(pressed=pressed, - type=buttons_dict.get(btn, ButtonType.unknown))) + if cur_btn != prev_btn: + # Add events for button presses, multiple when a button switches without going to unpressed + for pressed, btn in ((False, prev_btn), (True, cur_btn)): + if btn != unpressed_btn: + events.append(structs.CarState.ButtonEvent(pressed=pressed, + type=buttons_dict.get(btn, ButtonType.unknown))) - self.prev_btn = cur_btn + self.prev_buttons[button] = cur_btn return events