| 
						
						
						
					 | 
					 | 
					@ -1,4 +1,5 @@ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#!/usr/bin/env python3 | 
					 | 
					 | 
					 | 
					#!/usr/bin/env python3 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					import fcntl | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import os | 
					 | 
					 | 
					 | 
					import os | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import json | 
					 | 
					 | 
					 | 
					import json | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import queue | 
					 | 
					 | 
					 | 
					import queue | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -61,6 +62,8 @@ def set_offroad_alert_if_changed(offroad_alert: str, show_alert: bool, extra_tex | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  set_offroad_alert(offroad_alert, show_alert, extra_text) | 
					 | 
					 | 
					 | 
					  set_offroad_alert(offroad_alert, show_alert, extra_text) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					def touch_thread(end_event): | 
					 | 
					 | 
					 | 
					def touch_thread(end_event): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  count = 0 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  pm = messaging.PubMaster(["touch"]) | 
					 | 
					 | 
					 | 
					  pm = messaging.PubMaster(["touch"]) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  event_format = "llHHi" | 
					 | 
					 | 
					 | 
					  event_format = "llHHi" | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -68,23 +71,29 @@ def touch_thread(end_event): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  event_frame = [] | 
					 | 
					 | 
					 | 
					  event_frame = [] | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  with open("/dev/input/by-path/platform-894000.i2c-event", "rb") as event_file: | 
					 | 
					 | 
					 | 
					  with open("/dev/input/by-path/platform-894000.i2c-event", "rb") as event_file: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    fcntl.fcntl(event_file, fcntl.F_SETFL, os.O_NONBLOCK) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    while not end_event.is_set(): | 
					 | 
					 | 
					 | 
					    while not end_event.is_set(): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      event = event_file.read(event_size) | 
					 | 
					 | 
					 | 
					      if (count % int(1. / DT_HW)) == 0: | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if event: | 
					 | 
					 | 
					 | 
					        event = event_file.read(event_size) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        (sec, usec, etype, code, value) = struct.unpack(event_format, event) | 
					 | 
					 | 
					 | 
					        if event: | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if etype != 0 or code != 0 or value != 0: | 
					 | 
					 | 
					 | 
					          (sec, usec, etype, code, value) = struct.unpack(event_format, event) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          touch = log.Touch.new_message() | 
					 | 
					 | 
					 | 
					          if etype != 0 or code != 0 or value != 0: | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          touch.sec = sec | 
					 | 
					 | 
					 | 
					            touch = log.Touch.new_message() | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          touch.usec = usec | 
					 | 
					 | 
					 | 
					            touch.sec = sec | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          touch.type = etype | 
					 | 
					 | 
					 | 
					            touch.usec = usec | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          touch.code = code | 
					 | 
					 | 
					 | 
					            touch.type = etype | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          touch.value = value | 
					 | 
					 | 
					 | 
					            touch.code = code | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          event_frame.append(touch) | 
					 | 
					 | 
					 | 
					            touch.value = value | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        else: # end of frame, push new log | 
					 | 
					 | 
					 | 
					            event_frame.append(touch) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          msg = messaging.new_message('touch', len(event_frame), valid=True) | 
					 | 
					 | 
					 | 
					          else: # end of frame, push new log | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          msg.touch = event_frame | 
					 | 
					 | 
					 | 
					            msg = messaging.new_message('touch', len(event_frame), valid=True) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          pm.send('touch', msg) | 
					 | 
					 | 
					 | 
					            msg.touch = event_frame | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          event_frame = [] | 
					 | 
					 | 
					 | 
					            pm.send('touch', msg) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            event_frame = [] | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          continue | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      count += 1 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      time.sleep(DT_HW) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					def hw_state_thread(end_event, hw_queue): | 
					 | 
					 | 
					 | 
					def hw_state_thread(end_event, hw_queue): | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |