]> git.zerfleddert.de Git - fnordlicht-mini/blobdiff - firmware/fnordlicht-firmware/static_programs.c
fix config show thingy
[fnordlicht-mini] / firmware / fnordlicht-firmware / static_programs.c
index d5a79e086090f829b151c74fa3d8981d9760c4f6..5dc7c2d9136403faa5fb1270ac3f5844da5aa2f4 100644 (file)
@@ -29,6 +29,7 @@
 #include "remote.h"
 #include "../common/common.h"
 #include "storage.h"
+#include "script.h"
 
 #if CONFIG_SCRIPT
 
@@ -40,53 +41,41 @@ PROGMEM program_handler static_programs[] = {
     program_showcfg,
 };
 
+#define DEBUG_COLORLEVEL 32u
+
 PT_THREAD(program_showcfg(struct process_t *process))
 {
     static uint16_t sleep;
-    struct rgb_color_t c, d;
+    static struct rgb_color_t c, d;
+    static uint8_t i;
 
     PT_BEGIN(&process->pt);
 
-    c.red = (remote_address() & 0x01u) * 128u;
-    c.green = (remote_address() & 0x02u) * 128u;
-    c.blue = (remote_address() & 0x04u) * 128u;
-
-    d.red = d.green = d.blue = 128u;
+    c.red = (remote_address() & 0x01u) ? DEBUG_COLORLEVEL : 0;
+    c.green = (remote_address() & 0x02u) ? DEBUG_COLORLEVEL : 0;
+    c.blue = (remote_address() & 0x04u) ? DEBUG_COLORLEVEL : 0;
 
-    pwm_fade_rgb(&d, 0xffu, 0);
+    d.red = d.green = d.blue = 0;
 
-    PT_WAIT_UNTIL(&process->pt, pwm_target_reached());
-
-    /* sleep .5s (remember: we are called every 100ms) */
-    sleep = 5;
-    while (sleep--)
-           PT_YIELD(&process->pt);
+    global_pwm.target.rgb = c;
 
-    pwm_fade_rgb(&c, 0xffu, 0);
-
-    PT_WAIT_UNTIL(&process->pt, pwm_target_reached());
-
-    /* sleep 1s (remember: we are called every 100ms) */
-    sleep = 10;
-    while (sleep--)
+    for (i = 0; i < 3u; i++)
+    {
+        /* sleep 1s (remember: we are called every 100ms) */
+        sleep = 10;
+        while (sleep--)
            PT_YIELD(&process->pt);
-    pwm_fade_rgb(&d, 0xffu, 0);
 
-    PT_WAIT_UNTIL(&process->pt, pwm_target_reached());
+        global_pwm.target.rgb = c;
 
-    /* sleep .5s (remember: we are called every 100ms) */
-    sleep = 5;
-    while (sleep--)
-           PT_YIELD(&process->pt);
-
-    pwm_fade_rgb(&c, 0xffu, 0);
+        sleep = 5;
+        while (sleep--)
+            PT_YIELD(&process->pt);
 
-    PT_WAIT_UNTIL(&process->pt, pwm_target_reached());
+        global_pwm.target.rgb = d;
+    }
 
-    /* sleep 1s (remember: we are called every 100ms) */
-    sleep = 10;
-    while (sleep--)
-           PT_YIELD(&process->pt);
+    script_stop();
 
     /* now start default script */
     if (storage_valid_config() && (startup_config.params.mode == STARTUP_PROGRAM)) {
@@ -95,6 +84,10 @@ PT_THREAD(program_showcfg(struct process_t *process))
         script_start_default();
     }
 
+    /* hack: script_start() stuff above will reinitialize PT structures, so we
+       can't call any PT stuff any more and quit directly */
+    return 0;
+
     PT_END(&process->pt);
 }
 
Impressum, Datenschutz