diff options
| author | Selene ToyKeeper | 2017-08-26 03:06:12 -0600 |
|---|---|---|
| committer | Selene ToyKeeper | 2017-08-26 03:06:12 -0600 |
| commit | 674259407ace91bef354059c842b4114e95eb23c (patch) | |
| tree | b11ad32041fb0ca5cc9b9744b21bdc99af02ab87 /spaghetti-monster/fsm-events.c | |
| parent | Removed ancient unfinished version of DarkHorse. (diff) | |
| download | anduril-674259407ace91bef354059c842b4114e95eb23c.tar.gz anduril-674259407ace91bef354059c842b4114e95eb23c.tar.bz2 anduril-674259407ace91bef354059c842b4114e95eb23c.zip | |
Added beacons/strobes to DarkHorse.
Added a way to explicitly cancel the current "nice" delay without changing state.
Diffstat (limited to 'spaghetti-monster/fsm-events.c')
| -rw-r--r-- | spaghetti-monster/fsm-events.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/spaghetti-monster/fsm-events.c b/spaghetti-monster/fsm-events.c index 29ef415..90d0ffa 100644 --- a/spaghetti-monster/fsm-events.c +++ b/spaghetti-monster/fsm-events.c @@ -106,6 +106,10 @@ void process_emissions() { } } +// explicitly interrupt these "nice" delays +volatile uint8_t nice_delay_interrupt = 0; +inline void interrupt_nice_delays() { nice_delay_interrupt = 1; } + // like delay_ms, except it aborts on state change // return value: // 0: state changed @@ -115,7 +119,8 @@ uint8_t nice_delay_ms(uint16_t ms) { while(ms-- > 0) { _delay_loop_2(BOGOMIPS*98/100); process_emissions(); - if (old_state != current_state) { + if ((nice_delay_interrupt) || (old_state != current_state)) { + nice_delay_interrupt = 0; return 0; // state changed; abort } } |
