#include #include #include "input_read.h" #include "connect.h" #include "color.h" #include "encoder.h" #include "led.h" #include "main.h" #include "mapping.h" #include "network.h" #include "osc.h" #include "spinner.h" #include "util.h" State state = State::Connecting; ChainMenu chain_menu = ChainMenu::Master; ChainMode chain_mode = ChainMode::Meter; float meter_value = 0.0; float level_value = 0.0; bool level_value_up_to_date = false; void setup() { Serial.begin(9600); vSetErrorSerial(&Serial); setup_input_read(); setup_connect(); setup_encoder(); setup_led(); setup_osc(); setup_spinner(); vTaskStartScheduler(); Serial.println("Start scheduler failed"); } void loop() { for(;;) {} } void connection_established() { state = State::ChainMenu; stop_spinner(); update_meter(); update_leds(); } void connection_lost() { state = State::Connecting; start_spinner(); } State get_state() { State current_state = state; return current_state; } void toggle_chain_mode() { if(ChainMode::Meter == chain_mode) { chain_mode = ChainMode::Level; } else { chain_mode = ChainMode::Meter; } update_leds(); } ChainMode get_chain_mode() { ChainMode current_chain_mode = chain_mode; return current_chain_mode; } void previous_chain_menu_item() { switch (chain_menu) { case ChainMenu::Gain: break; case ChainMenu::Fader: chain_menu = ChainMenu::Gain; level_value_up_to_date = false; update_value(); break; case ChainMenu::Master: chain_menu = ChainMenu::Fader; level_value_up_to_date = false; update_value(); break; } update_leds(); } void next_chain_menu_item() { switch (chain_menu) { case ChainMenu::Gain: chain_menu = ChainMenu::Fader; level_value_up_to_date = false; update_value(); break; case ChainMenu::Fader: chain_menu = ChainMenu::Master; level_value_up_to_date = false; update_value(); break; case ChainMenu::Master: break; } update_leds(); } ChainMenu get_chain_menu_item() { ChainMenu current_chain_menu = chain_menu; return current_chain_menu; } void increment_level(float value) { if(level_value_up_to_date) { level_value += value; if(state == State::ChainMenu && chain_menu == ChainMenu::Gain) { set_gain(level_value); } else if(state == State::ChainMenu && chain_menu == ChainMenu::Fader) { set_fader(level_value); } else if(state == State::ChainMenu && chain_menu == ChainMenu::Master) { set_master(level_value); } } update_leds(); } void set_level(float value) { level_value = value; level_value_up_to_date = true; update_leds(); } float get_level() { float current_level_value = level_value; return current_level_value; } void set_meter(float value) { meter_value = value; update_leds(); } float get_meter() { float current_meter_value = meter_value; return current_meter_value; }