|  |  |  | @ -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 = [] | 
			
		
	
	
		
			
				
					|  |  |  | 
 |