#include "ledctl.h" #include #include "state.h" #include "gui.h" const char *mode_string[] = { [MODE_SOLID_WARM] = "#70200A", [MODE_SOLID_RED] = "#FF0000", [MODE_SOLID_GREEN] = "#00FF00", [MODE_SOLID_BLUE] = "#0000FF", [MODE_SOLID_YELLOW] = "#FFFF00", [MODE_RAINBOW] = "rainbow", }; int current_brightness = 0; void update_brightness() { if (!enabled) current_brightness = 0; else current_brightness = brightness >= brightness_max ? 100 : (1 << (brightness - 1)); bc_radio_pub_int("led/brightness/set", ¤t_brightness); } void update_mode() { if (mode == MODE_RAINBOW) bc_radio_pub_string("led/effect/set", mode_string[mode]); else bc_radio_pub_string("led/color/set", mode_string[mode]); } void click_left() { switch (state) { case STATE_DEFAULT: enabled = 1; update_mode(); // just to make sure that all is in sync update_brightness(); break; case STATE_BRIGHTNESS_SELECT: if (brightness < brightness_max) brightness++; update_brightness(); break; case STATE_COLOR_SELECT: if (mode >= MODE_RAINBOW) mode = MODE_SOLID_WARM; else mode++; update_mode(); break; default: break; } } void click_right() { switch (state) { case STATE_DEFAULT: enabled = 0; update_brightness(); break; case STATE_BRIGHTNESS_SELECT: if (brightness > 1) brightness--; update_brightness(); break; case STATE_COLOR_SELECT: if (mode <= MODE_SOLID_WARM) mode = MODE_RAINBOW; else mode--; update_mode(); break; default: break; } } void hold_left() { switch (state) { case STATE_DEFAULT: state = STATE_BRIGHTNESS_SELECT; break; case STATE_COLOR_SELECT: state = STATE_COLOR_SELECT; break; case STATE_BRIGHTNESS_SELECT: state = STATE_DEFAULT; break; default: break; } } void hold_right() { switch (state) { case STATE_DEFAULT: state = STATE_COLOR_SELECT; break; case STATE_COLOR_SELECT: state = STATE_DEFAULT; break; case STATE_BRIGHTNESS_SELECT: state = STATE_BRIGHTNESS_SELECT; break; default: break; } }