]> git.zerfleddert.de Git - fnordlicht-mini/blobdiff - firmware/fnordlicht-firmware/static_programs.c
add showcfg program
[fnordlicht-mini] / firmware / fnordlicht-firmware / static_programs.c
index c437fe7ad2ceda58e4cf58e560d8aa902d850093..d5a79e086090f829b151c74fa3d8981d9760c4f6 100644 (file)
@@ -37,8 +37,67 @@ PROGMEM program_handler static_programs[] = {
     program_colorwheel,
     program_random,
     program_replay,
+    program_showcfg,
 };
 
+PT_THREAD(program_showcfg(struct process_t *process))
+{
+    static uint16_t sleep;
+    struct rgb_color_t c, d;
+
+    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;
+
+    pwm_fade_rgb(&d, 0xffu, 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);
+
+    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--)
+           PT_YIELD(&process->pt);
+    pwm_fade_rgb(&d, 0xffu, 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);
+
+    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--)
+           PT_YIELD(&process->pt);
+
+    /* now start default script */
+    if (storage_valid_config() && (startup_config.params.mode == STARTUP_PROGRAM)) {
+        script_start(0, startup_config.params.program, (union program_params_t *)startup_config.params.program_parameters);
+    } else {
+        script_start_default();
+    }
+
+    PT_END(&process->pt);
+}
+
 PT_THREAD(program_colorwheel(struct process_t *process))
 {
     static uint16_t sleep;
Impressum, Datenschutz