aboutsummaryrefslogtreecommitdiffstats
path: root/users/dennytom/chording_engine/state_machine.dot
diff options
context:
space:
mode:
Diffstat (limited to 'users/dennytom/chording_engine/state_machine.dot')
-rw-r--r--users/dennytom/chording_engine/state_machine.dot49
1 files changed, 49 insertions, 0 deletions
diff --git a/users/dennytom/chording_engine/state_machine.dot b/users/dennytom/chording_engine/state_machine.dot
new file mode 100644
index 000000000..431e6f69b
--- /dev/null
+++ b/users/dennytom/chording_engine/state_machine.dot
@@ -0,0 +1,49 @@
+digraph {
+ IDLE
+ READY
+ ACTIVATED
+ DEACTIVATED
+ PRESS_FROM_ACTIVE
+ FINISHED_FROM_ACTIVE
+ IDLE_IN_DANCE
+ READY_IN_DANCE
+ FINISHED
+ LOCKED
+ READY_LOCKED
+ RESTART
+ IN_ONE_SHOT
+
+ // common
+ FINISHED -> RESTART;
+ RESTART -> IDLE;
+ DEACTIVATED -> IDLE_IN_DANCE;
+
+ // kill_one_shots()
+ IN_ONE_SHOT -> RESTART [label="non-one-shot key went through", color="blue"];
+
+ // process_finished_dances()
+ ACTIVATED -> PRESS_FROM_ACTIVE [label="dance timer", color="green"];
+ IDLE_IN_DANCE -> FINISHED [label="dance timer", color="green"];
+ PRESS_FROM_ACTIVE -> FINISHED_FROM_ACTIVE [label="dance timer", color="green"];
+
+ // remove_subchords()
+ READY -> IDLE [label="superchord active", color="red"];
+ READY_IN_DANCE -> IDLE_IN_DANCE [label="superchord active", color="red"];
+ READY_LOCKED -> LOCKED [label="superchord active", color="red"];
+
+ // process_ready_chords()
+ LOCKED -> READY_LOCKED [label="all keys pressed", color="orange"];
+ IDLE -> READY [label="all keys pressed", color="orange"];
+ IDLE_IN_DANCE -> READY_IN_DANCE [label="all keys pressed", color="orange"];
+
+ READY_LOCKED -> RESTART [label="chord timer", color="orange"];
+ READY -> ACTIVATED [label="chord timer", color="orange"];
+ READY_IN_DANCE -> ACTIVATED [label="chord timer", color="orange"];
+ ACTIVATED -> PRESS_FROM_ACTIVE [label="lock next", color="orange"];
+ PRESS_FROM_ACTIVE -> LOCKED [label="lock next", color="orange"];
+
+ // deactivate_active_chords()
+ ACTIVATED -> DEACTIVATED [label="a key lifted", color="purple"];
+ PRESS_FROM_ACTIVE -> RESTART [label="a key lifted", color="orange"];
+ FINISHED_FROM_ACTIVE -> DEACTIVATED [label="a key lifted", color="orange"];
+} \ No newline at end of file