aboutsummaryrefslogtreecommitdiff
path: root/spaghetti-monster/fsm-events.c
diff options
context:
space:
mode:
authorSelene ToyKeeper2017-08-26 03:06:12 -0600
committerSelene ToyKeeper2017-08-26 03:06:12 -0600
commit674259407ace91bef354059c842b4114e95eb23c (patch)
treeb11ad32041fb0ca5cc9b9744b21bdc99af02ab87 /spaghetti-monster/fsm-events.c
parentRemoved ancient unfinished version of DarkHorse. (diff)
downloadanduril-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 '')
-rw-r--r--spaghetti-monster/fsm-events.c7
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
}
}