+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);
+}
+