aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xspaghetti-monster/anduril/anduril.c14
-rw-r--r--spaghetti-monster/fsm-events.c8
-rw-r--r--spaghetti-monster/fsm-main.c2
-rw-r--r--spaghetti-monster/fsm-misc.c10
4 files changed, 20 insertions, 14 deletions
diff --git a/spaghetti-monster/anduril/anduril.c b/spaghetti-monster/anduril/anduril.c
index 3637c3d..bf16da5 100755
--- a/spaghetti-monster/anduril/anduril.c
+++ b/spaghetti-monster/anduril/anduril.c
@@ -809,7 +809,7 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) {
#ifdef USE_CANDLE_MODE
candle_mode_timer = 0; // in case any time was left over from earlier
#endif
- interrupt_nice_delays();
+ //interrupt_nice_delays();
save_config();
return MISCHIEF_MANAGED;
}
@@ -1832,13 +1832,13 @@ void loop() {
brightness += pseudo_rand() % brightness; // 2 to 159 now (w/ low bias)
if (brightness > MAX_LEVEL) brightness = MAX_LEVEL;
set_level(brightness);
- if (! nice_delay_ms(rand_time)) return;
+ nice_delay_ms(rand_time);
// decrease the brightness somewhat more gradually, like lightning
uint8_t stepdown = brightness >> 3;
if (stepdown < 1) stepdown = 1;
while(brightness > 1) {
- if (! nice_delay_ms(rand_time)) return;
+ nice_delay_ms(rand_time);
brightness -= stepdown;
if (brightness < 0) brightness = 0;
set_level(brightness);
@@ -1849,7 +1849,7 @@ void loop() {
}
*/
if (! (pseudo_rand() & 3)) {
- if (! nice_delay_ms(rand_time)) return;
+ nice_delay_ms(rand_time);
set_level(brightness>>1);
}
}
@@ -1877,9 +1877,9 @@ void loop() {
if (burst > MAX_LEVEL) burst = MAX_LEVEL;
for(uint8_t i=0; i<4; i++) {
set_level(burst);
- if (! nice_delay_ms(5)) return;
+ nice_delay_ms(5);
set_level(bike_flasher_brightness);
- if (! nice_delay_ms(65)) return;
+ nice_delay_ms(65);
}
nice_delay_ms(720); // no return check necessary on final delay
}
@@ -1903,7 +1903,7 @@ void loop() {
else if (state == beacon_state) {
set_level(memorized_level);
- if (! nice_delay_ms(500)) return;
+ nice_delay_ms(500);
set_level(0);
nice_delay_ms(((beacon_seconds) * 1000) - 500);
}
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
}
}
diff --git a/spaghetti-monster/fsm-main.c b/spaghetti-monster/fsm-main.c
index b0b44fb..6f74e9b 100644
--- a/spaghetti-monster/fsm-main.c
+++ b/spaghetti-monster/fsm-main.c
@@ -132,6 +132,8 @@ int main() {
// give the recipe some time slices
loop();
+ // in case we fell through, turn delays back on
+ nice_delay_interrupt = 0;
}
}
diff --git a/spaghetti-monster/fsm-misc.c b/spaghetti-monster/fsm-misc.c
index acef28c..e60909e 100644
--- a/spaghetti-monster/fsm-misc.c
+++ b/spaghetti-monster/fsm-misc.c
@@ -49,11 +49,9 @@ uint8_t blink_digit(uint8_t num) {
for (; num>0; num--) {
set_level(BLINK_BRIGHTNESS);
- if (! nice_delay_ms(ontime)) { return 0; }
+ nice_delay_ms(ontime);
set_level(0);
- //if (current_state != old_state) return 0;
- if (! nice_delay_ms(400)) return 0;
- //if (current_state != old_state) return 0;
+ nice_delay_ms(400);
}
return nice_delay_ms(600);
}
@@ -77,7 +75,7 @@ uint8_t blink_num(uint8_t num) {
#if 0
// wait a moment in the dark before starting
set_level(0);
- if (! nice_delay_ms(200)) return 0;
+ nice_delay_ms(200);
#endif
#if 0
@@ -102,7 +100,7 @@ uint8_t blink_num(uint8_t num) {
volts = voltage / 10;
tenths = voltage % 10;
if (! blink(volts)) return;
- if (! nice_delay_ms(200)) return;
+ nice_delay_ms(200);
if (! blink(tenths)) return;
nice_delay_ms(200);
*/