Fehler #333
Touch: Clean statemachine
0%
Beschreibung
Der TSC2007 loest beim Druecken und Loslassen des Displays Interrupts aus.
Das Auslesen der Koordinaten loest selbst Interrupts aus.
Diese muessen waerend dem Auslesen gesperrt sein.
Ueber die Z-Werte kann Druecken oder Loslassen ermittelt werden. Bei leichter Beruehrung koennen einige Events verloren gehen (zittern der Interrupts).
Es sollen nur Aenderungen beim Auslesen bewertet werden (Filterung beim Auslesen vs. Interrupts?).
State machine¶
High-Interrupt setzt statemachine in "hit", sofern im idle. Gehe nach pressed wenn im release (avoid strange peep).
Low-Interrupt setzt statemachine in "release", sofern im pressed status. Im "Hit"-Fall wird nichts gemacht.
Event-Loop prueft, ob touch gedrueckt wurde, aber kein Interrupt ausgeloest wurde: Diagnose. Wenn im idle oder release, gehe nach hit.
Event-Loop prueft, ob losgelassen wurde, aber kein Interrupt ausgeloest wurde: Diagnose. Wenn im pressed, gehe nach release.
Idle: .
Hit: Event-Loop liest im "hit" die koordinate aus (Weitere interrupts sollten nicht stoeren). Initiiere Pieps. Es wird nach "pressed" gewechselt.
Pressed: Lese Koordinaten. De-/Selektiere das (alte) Widget. Gehe zu pressedWait
pressedWait: nach 100ms gehe nach "pressed"
Release: Schicke event an Widget. Gehe nach idle.
Die Touch-Klasse hat 3 Signale; pressed, released, clicked.
Ophio kann diese entsprechend verdrahten.
CBringup kann sie auch verdrahten und wartet auch ein clicked mit entsprechenden koordinaten.
Die Signale werden in der Main-Event-Loop ausgefuehrt, ein CRing/Event-Speicher ist nicht notwendig.
Historie
Von Maximilian Seesslen vor etwa 2 Jahren aktualisiert
- Status wurde von Neu zu Erledigt geändert
- Zugewiesen an wurde auf Maximilian Seesslen gesetzt