Skip to content
Snippets Groups Projects
Commit 8f82cbc3 authored by iggy's avatar iggy Committed by q3k
Browse files

new captouch in event.py and some cleanup

parent 9286291f
No related branches found
No related tags found
No related merge requests found
...@@ -28,16 +28,24 @@ class Engine(): ...@@ -28,16 +28,24 @@ class Engine():
def add_timed(self,event): def add_timed(self,event):
self.events_timed.append(event) self.events_timed.append(event)
self._sort_timed() self._sort_timed()
def add_input(self,event):
self.events_input.append(event)
def remove(self,group_id):
self.remove_input(group_id)
self.remove_timed(group_id)
def remove_timed(self,group_id): def remove_timed(self,group_id):
self.events_timed = [event for event in self.events_timed if event.group_id==group_id] self.events_timed = [event for event in self.events_timed if event.group_id!=group_id]
self._sort_timed() self._sort_timed()
def remove_input(self,group_id):
self.events_input = [event for event in self.events_input if event.group_id!=group_id]
def _sort_timed(self): def _sort_timed(self):
self.events_timed = sorted(self.events_timed, key = lambda event: event.deadline) self.events_timed = sorted(self.events_timed, key = lambda event: event.deadline)
def add_input(self,event):
self.events_input.append(event)
def _handle_timed(self): def _handle_timed(self):
if not self.next_timed and self.events_timed: if not self.next_timed and self.events_timed:
...@@ -52,48 +60,53 @@ class Engine(): ...@@ -52,48 +60,53 @@ class Engine():
self.next_timed = None self.next_timed = None
def _handle_input(self): def _handle_input(self):
input_state={ input_state = []
"b0":(hardware.get_button(0),"button",0),
"b1":(hardware.get_button(1),"button",1) #buttons
} for i in [0,1]:
input_state.append({
"type" : "button",
"index" : i,
"value" : hardware.get_button(i)
})
#captouch
for i in range(0,10): for i in range(0,10):
input_state["c"+str(i)]=(hardware.get_captouch(i),"captouch",i) input_state.append({
"type" : "captouch",
"index" : i,
"value" : hardware.get_captouch(i),
"radius" : hardware.captouch_get_petal_rad(i),
"angle" : hardware.captouch_get_petal_phi(i)/10000
})
if not self.last_input_state: if not self.last_input_state:
self.last_input_state=input_state self.last_input_state=input_state
#tprint (input_state)
return return
diff=[] for i in range(len(input_state)):
for key in input_state: entry = input_state[i]
if input_state[key][0] != self.last_input_state[key][0]: last_entry = self.last_input_state[i]
diff.append({
"type" : input_state[key][1], #update for all
"index" : input_state[key][2], entry["ticks_ms"] = time.ticks_ms()
"value" : input_state[key][0],
"from" : self.last_input_state[key][0], if entry["value"] != last_entry["value"]:
"ticks_ms": time.ticks_ms(), #update only when value changed
"change": True entry["change"] = True
}) entry["from"] = last_entry["value"]
else: else:
diff.append({ #update only when value did not change
"type" : input_state[key][1], entry["change"] = False
"index" : input_state[key][2],
"value" : input_state[key][0], #find and trigger the events q
"ticks_ms": time.ticks_ms(), triggered_events = list(filter(lambda e: e.condition(entry),self.events_input))
"change": False #print (triggered_events)
}) #map(lambda e: e.trigger(d), triggered_events)
for e in triggered_events:
if diff: e.trigger(entry)
#print(diff)
for d in diff:
triggered_events = list(filter(lambda e: e.condition(d),self.events_input))
#print (triggered_events)
#map(lambda e: e.trigger(d), triggered_events)
for e in triggered_events:
e.trigger(d)
self.last_input_state=input_state self.last_input_state=input_state
...@@ -105,6 +118,7 @@ class Engine(): ...@@ -105,6 +118,7 @@ class Engine():
self._handle_timed() self._handle_timed()
self._handle_input() self._handle_input()
self._handle_userloop() self._handle_userloop()
hardware.display_update()
def eventloop(self): def eventloop(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment