aboutsummaryrefslogtreecommitdiff
path: root/spaghetti-monster/fsm-events.c
diff options
context:
space:
mode:
authorSelene ToyKeeper2018-08-22 23:28:35 -0600
committerSelene ToyKeeper2018-08-22 23:28:35 -0600
commit0499082b50b00d942e00d2d272a0c74b4c5ca1cd (patch)
tree95d10d2cdce1b62c2288bb28064bf519b0dfabf3 /spaghetti-monster/fsm-events.c
parentRearranged strobe group mode order, fixed party strobe. (diff)
downloadanduril-0499082b50b00d942e00d2d272a0c74b4c5ca1cd.tar.gz
anduril-0499082b50b00d942e00d2d272a0c74b4c5ca1cd.tar.bz2
anduril-0499082b50b00d942e00d2d272a0c74b4c5ca1cd.zip
Reduced ROM size by making successive nice_delay_ms calls collapse any time the user completes an input sequence.
All nice delays then get aborted until the next trip through the main() loop. Eliminates the need to wrap nice_delay_ms() calls and handle the exit condition. Also eliminates the risk of getting the UI out of sync with button events.
Diffstat (limited to 'spaghetti-monster/fsm-events.c')
-rw-r--r--spaghetti-monster/fsm-events.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/spaghetti-monster/fsm-events.c b/spaghetti-monster/fsm-events.c
index b8e9018..aa5c3d6 100644
--- a/spaghetti-monster/fsm-events.c
+++ b/spaghetti-monster/fsm-events.c
@@ -39,6 +39,12 @@ uint8_t compare_event_sequences(uint8_t *a, const uint8_t *b) {
void empty_event_sequence() {
for(uint8_t i=0; i<EV_MAX_LEN; i++) current_event[i] = 0;
+ // when the user completes an input sequence, interrupt any running timers
+ // to cancel any delays currently in progress
+ // This eliminates a whole bunch of extra code:
+ // before: if (! nice_delay_ms(ms)) {break;}
+ // after: nice_delay_ms(ms);
+ interrupt_nice_delays();
}
uint8_t push_event(uint8_t ev_type) {
@@ -156,7 +162,7 @@ uint8_t nice_delay_ms(uint16_t ms) {
process_emissions();
if ((nice_delay_interrupt) || (old_state != current_state)) {
- nice_delay_interrupt = 0;
+ //nice_delay_interrupt = 0;
return 0; // state changed; abort
}
}