|
|
|
@ -3,6 +3,7 @@ import math |
|
|
|
|
import os |
|
|
|
|
from enum import IntEnum |
|
|
|
|
from collections.abc import Callable |
|
|
|
|
from sortedcontainers import SortedList |
|
|
|
|
|
|
|
|
|
from cereal import log, car |
|
|
|
|
import cereal.messaging as messaging |
|
|
|
@ -48,12 +49,12 @@ EVENT_NAME = {v: k for k, v in EventName.schema.enumerants.items()} |
|
|
|
|
|
|
|
|
|
class Events: |
|
|
|
|
def __init__(self): |
|
|
|
|
self.events: list[int] = [] |
|
|
|
|
self.static_events: list[int] = [] |
|
|
|
|
self.events: SortedList[int] = SortedList() |
|
|
|
|
self.static_events: SortedList[int] = SortedList() |
|
|
|
|
self.events_prev = dict.fromkeys(EVENTS.keys(), 0) |
|
|
|
|
|
|
|
|
|
@property |
|
|
|
|
def names(self) -> list[int]: |
|
|
|
|
def names(self) -> SortedList[int]: |
|
|
|
|
return self.events |
|
|
|
|
|
|
|
|
|
def __len__(self) -> int: |
|
|
|
@ -61,8 +62,8 @@ class Events: |
|
|
|
|
|
|
|
|
|
def add(self, event_name: int, static: bool=False) -> None: |
|
|
|
|
if static: |
|
|
|
|
self.static_events.append(event_name) |
|
|
|
|
self.events.append(event_name) |
|
|
|
|
self.static_events.add(event_name) |
|
|
|
|
self.events.add(event_name) |
|
|
|
|
|
|
|
|
|
def clear(self) -> None: |
|
|
|
|
self.events_prev = {k: (v + 1 if k in self.events else 0) for k, v in self.events_prev.items()} |
|
|
|
@ -92,7 +93,7 @@ class Events: |
|
|
|
|
|
|
|
|
|
def add_from_msg(self, events): |
|
|
|
|
for e in events: |
|
|
|
|
self.events.append(e.name.raw) |
|
|
|
|
self.events.add(e.name.raw) |
|
|
|
|
|
|
|
|
|
def to_msg(self): |
|
|
|
|
ret = [] |
|
|
|
|