From 674259407ace91bef354059c842b4114e95eb23c Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Sat, 26 Aug 2017 03:06:12 -0600 Subject: Added beacons/strobes to DarkHorse. Added a way to explicitly cancel the current "nice" delay without changing state. --- spaghetti-monster/fsm-events.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'spaghetti-monster/fsm-events.c') 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 } } -- cgit v1.2.3