97 lines
1.8 KiB
C
97 lines
1.8 KiB
C
#pragma once
|
|
|
|
#include <Arduino.h>
|
|
|
|
enum SettingType {
|
|
TYPE_UINT8,
|
|
TYPE_UINT16,
|
|
TYPE_BOOL
|
|
};
|
|
|
|
typedef struct {
|
|
const char* name;
|
|
uint16_t* value;
|
|
SettingType type;
|
|
} Setting;
|
|
|
|
struct Settings {
|
|
uint16_t fps = 50;
|
|
|
|
struct /* effects */ {
|
|
struct /* cycle */ {
|
|
uint16_t time = 300;
|
|
uint16_t random = 1;
|
|
} cycle ;
|
|
|
|
struct /* matrix */ {
|
|
uint16_t length_min = 4;
|
|
uint16_t length_max = 20;
|
|
uint16_t speed_min = 3;
|
|
uint16_t speed_max = 7;
|
|
uint16_t count = 16;
|
|
uint16_t random_count = 32;
|
|
} matrix;
|
|
|
|
struct /* big_clock */ {
|
|
uint16_t spacing = 5;
|
|
} big_clock;
|
|
|
|
struct /* confetti */ {
|
|
uint16_t pixels_per_loop = 2;
|
|
} confetti;
|
|
|
|
struct /* dvd */ {
|
|
uint16_t width = 3;
|
|
uint16_t height = 2;
|
|
uint16_t speed = 50;
|
|
} dvd;
|
|
|
|
struct /* dynamic */ {
|
|
uint16_t single_loop_time = 40;
|
|
uint16_t multi_loop_time = 1400;
|
|
uint16_t big_loop_time = 50;
|
|
uint16_t big_size = 3;
|
|
} dynamic;
|
|
|
|
struct /* fire */ {
|
|
uint16_t cooldown = 192;
|
|
uint16_t spark_chance = 5;
|
|
} fire;
|
|
|
|
struct /* firework */ {
|
|
uint16_t drag = 255;
|
|
uint16_t bounce = 200;
|
|
uint16_t gravity = 10;
|
|
uint16_t sparks = 12;
|
|
} firework;
|
|
|
|
struct /* gol */ {
|
|
uint16_t start_percentage = 90;
|
|
uint16_t blend_speed = 10;
|
|
uint16_t restart_after_steps = 100;
|
|
} gol;
|
|
|
|
struct /* sines */ {
|
|
uint16_t count = 5;
|
|
} sines;
|
|
|
|
struct /* snake */ {
|
|
uint16_t direction_change = 5;
|
|
uint16_t slowdown = 2;
|
|
} snake;
|
|
|
|
struct /* tv_static */ {
|
|
uint16_t black_bar_speed = 12;
|
|
} tv_static;
|
|
} effects;
|
|
};
|
|
|
|
extern Settings settings;
|
|
extern Setting all_settings[];
|
|
extern const uint8_t all_settings_size;
|
|
|
|
bool change_setting(const char* key, uint16_t new_value);
|
|
uint16_t setting_default(Setting* s);
|
|
bool save_settings();
|
|
bool load_settings();
|