From df7fdb56863c6efc69aa3efbe2b68d1e6f547803 Mon Sep 17 00:00:00 2001 From: Torsten Stauder Date: Tue, 16 Feb 2021 00:15:44 +0100 Subject: [PATCH] Compile-errors, fixes & docu --- src/main.cpp | 119 +++++++++++++++++++++++++++++++++---------------- src/settings.h | 47 ++++++++++++++----- src/values.h | 20 ++++----- 3 files changed, 126 insertions(+), 60 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 154ccd3..f4fdd51 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -316,22 +316,23 @@ QueueHandle_t rfidCardQueue; RingbufHandle_t explorerFileUploadRingBuffer; QueueHandle_t explorerFileUploadStatusQueue; -#if (NEXT_BUTTON > 0 && NEXT_BUTTON<50) +// Only enable those buttons that use GPIOs <= 39 +#if (NEXT_BUTTON >= 0 && NEXT_BUTTON <= 39) #define BUTTON_0_ENABLE #endif -#if (PREVIOUS_BUTTON > 0 && PREVIOUS_BUTTON<50) +#if (PREVIOUS_BUTTON >= 0 && PREVIOUS_BUTTON <= 39) #define BUTTON_1_ENABLE #endif -#if (PAUSEPLAY_BUTTON > 0 && PAUSEPLAY_BUTTON<50) +#if (PAUSEPLAY_BUTTON >= 0 && PAUSEPLAY_BUTTON <= 39) #define BUTTON_2_ENABLE #endif #ifdef USEROTARY_ENABLE #define BUTTON_3_ENABLE #endif -#if (BUTTON_4 > 0 && BUTTON_4<50) +#if (BUTTON_4 >= 0 && BUTTON_4 <= 39) #define BUTTON_4_ENABLE #endif -#if (BUTTON_5 > 0 && BUTTON_5<50) +#if (BUTTON_5 >= 0 && BUTTON_5 <= 39) #define BUTTON_5_ENABLE #endif @@ -607,14 +608,14 @@ void doButtonActions(void) { case 3: doCmdAction(BUTTON_3_LONG); buttons[i].isPressed = false; - break; + break; case 4: doCmdAction(BUTTON_4_LONG); buttons[i].isPressed = false; break; - case 5: + case 5: doCmdAction(BUTTON_5_LONG); buttons[i].isPressed = false; break; @@ -647,7 +648,7 @@ void doButtonActions(void) { buttons[i].isPressed = false; break; - case 5: + case 5: doCmdAction(BUTTON_5_SHORT); buttons[i].isPressed = false; break; @@ -2566,7 +2567,7 @@ void doRfidCardModifications(const uint32_t mod) { void doCmdAction(const uint32_t mod) { switch (mod) { - case LOCK_BUTTONS_MOD: // Locks/unlocks all buttons + case LOCK_BUTTONS_MOD: { // Locks/unlocks all buttons lockControls = !lockControls; if (lockControls) { loggerNl(serialDebug, (char *) FPSTR(modificatorAllButtonsLocked), LOGLEVEL_NOTICE); @@ -2582,8 +2583,9 @@ void doCmdAction(const uint32_t mod) { publishMqtt((char *) FPSTR(topicLockControlsState), "OFF", false); #endif } + } - case SLEEP_TIMER_MOD_15: // Enables/disables sleep after 15 minutes + case SLEEP_TIMER_MOD_15: { // Enables/disables sleep after 15 minutes if (sleepTimerStartTimestamp && sleepTimer == 15) { sleepTimerStartTimestamp = 0; #ifdef NEOPIXEL_ENABLE @@ -2615,8 +2617,9 @@ void doCmdAction(const uint32_t mod) { showLedOk = true; #endif break; + } - case SLEEP_TIMER_MOD_30: // Enables/disables sleep after 30 minutes + case SLEEP_TIMER_MOD_30: { // Enables/disables sleep after 30 minutes if (sleepTimerStartTimestamp && sleepTimer == 30) { sleepTimerStartTimestamp = 0; #ifdef NEOPIXEL_ENABLE @@ -2648,8 +2651,9 @@ void doCmdAction(const uint32_t mod) { showLedOk = true; #endif break; + } - case SLEEP_TIMER_MOD_60: // Enables/disables sleep after 60 minutes + case SLEEP_TIMER_MOD_60: { // Enables/disables sleep after 60 minutes if (sleepTimerStartTimestamp && sleepTimer == 60) { sleepTimerStartTimestamp = 0; #ifdef NEOPIXEL_ENABLE @@ -2681,8 +2685,9 @@ void doCmdAction(const uint32_t mod) { showLedOk = true; #endif break; + } - case SLEEP_TIMER_MOD_120: // Enables/disables sleep after 2 hrs + case SLEEP_TIMER_MOD_120: { // Enables/disables sleep after 2 hrs if (sleepTimerStartTimestamp && sleepTimer == 120) { sleepTimerStartTimestamp = 0; #ifdef NEOPIXEL_ENABLE @@ -2714,8 +2719,9 @@ void doCmdAction(const uint32_t mod) { showLedOk = true; #endif break; + } - case SLEEP_AFTER_END_OF_TRACK: // Puts uC to sleep after end of current track + case SLEEP_AFTER_END_OF_TRACK: { // Puts uC to sleep after end of current track if (playProperties.playMode == NO_PLAYLIST) { loggerNl(serialDebug, (char *) FPSTR(modificatorNotallowedWhenIdle), LOGLEVEL_NOTICE); #ifdef NEOPIXEL_ENABLE @@ -2753,8 +2759,9 @@ void doCmdAction(const uint32_t mod) { showLedOk = true; #endif break; + } - case SLEEP_AFTER_END_OF_PLAYLIST: // Puts uC to sleep after end of whole playlist (can take a while :->) + case SLEEP_AFTER_END_OF_PLAYLIST: { // Puts uC to sleep after end of whole playlist (can take a while :->) if (playProperties.playMode == NO_PLAYLIST) { loggerNl(serialDebug, (char *) FPSTR(modificatorNotallowedWhenIdle), LOGLEVEL_NOTICE); #ifdef NEOPIXEL_ENABLE @@ -2792,8 +2799,9 @@ void doCmdAction(const uint32_t mod) { showLedOk = true; #endif break; + } - case SLEEP_AFTER_5_TRACKS: + case SLEEP_AFTER_5_TRACKS:{ if (playProperties.playMode == NO_PLAYLIST) { loggerNl(serialDebug, (char *) FPSTR(modificatorNotallowedWhenIdle), LOGLEVEL_NOTICE); #ifdef NEOPIXEL_ENABLE @@ -2840,8 +2848,9 @@ void doCmdAction(const uint32_t mod) { showLedOk = true; #endif break; + } - case REPEAT_PLAYLIST: + case REPEAT_PLAYLIST: { if (playProperties.playMode == NO_PLAYLIST) { loggerNl(serialDebug, (char *) FPSTR(modificatorNotallowedWhenIdle), LOGLEVEL_NOTICE); #ifdef NEOPIXEL_ENABLE @@ -2864,8 +2873,9 @@ void doCmdAction(const uint32_t mod) { #endif } break; + } - case REPEAT_TRACK: // Introduces looping for track-mode + case REPEAT_TRACK: { // Introduces looping for track-mode if (playProperties.playMode == NO_PLAYLIST) { loggerNl(serialDebug, (char *) FPSTR(modificatorNotallowedWhenIdle), LOGLEVEL_NOTICE); #ifdef NEOPIXEL_ENABLE @@ -2888,8 +2898,9 @@ void doCmdAction(const uint32_t mod) { #endif } break; + } - case DIMM_LEDS_NIGHTMODE: + case DIMM_LEDS_NIGHTMODE: { #ifdef MQTT_ENABLE publishMqtt((char *) FPSTR(topicLedBrightnessState), ledBrightness, false); #endif @@ -2899,8 +2910,9 @@ void doCmdAction(const uint32_t mod) { showLedOk = true; #endif break; + } - case TOGGLE_WIFI_STATUS: + case TOGGLE_WIFI_STATUS: { if (writeWifiStatusToNVS(!getWifiEnableStatusFromNVS())) { #ifdef NEOPIXEL_ENABLE showLedOk = true; @@ -2911,8 +2923,9 @@ void doCmdAction(const uint32_t mod) { #endif } break; + } #ifdef BLUETOOTH_ENABLE - case TOGGLE_BLUETOOTH_MODE: + case TOGGLE_BLUETOOTH_MODE: { if (readOperationModeFromNVS() == OPMODE_NORMAL) { #ifdef NEOPIXEL_ENABLE showLedOk = true; @@ -2929,8 +2942,9 @@ void doCmdAction(const uint32_t mod) { #endif } break; + } #endif - case ENABLE_FTP_SERVER: + case ENABLE_FTP_SERVER: { if (wifiManager() == WL_CONNECTED && !ftpEnableLastStatus && !ftpEnableCurrentStatus) { ftpEnableLastStatus = true; #ifdef NEOPIXEL_ENABLE @@ -2943,32 +2957,41 @@ void doCmdAction(const uint32_t mod) { #endif } - break; - case CMD_PLAYPAUSE: + break; + } + case CMD_PLAYPAUSE: { trackControlToQueueSender(PAUSEPLAY); break; - case CMD_PREVTRACK: + } + case CMD_PREVTRACK: { trackControlToQueueSender(PREVIOUSTRACK); break; - case CMD_NEXTTRACK: + } + case CMD_NEXTTRACK: { trackControlToQueueSender(NEXTTRACK); break; - case CMD_FIRSTTRACK: + } + case CMD_FIRSTTRACK: { trackControlToQueueSender(FIRSTTRACK); break; - case CMD_LASTTRACK: + } + case CMD_LASTTRACK: { trackControlToQueueSender(LASTTRACK); break; - case CMD_VOLUMEINIT: + } + case CMD_VOLUMEINIT: { volumeToQueueSender(initVolume); break; - case CMD_VOLUMEUP: + } + case CMD_VOLUMEUP: { volumeToQueueSender(currentVolume + 2); break; - case CMD_VOLUMEDOWN: + } + case CMD_VOLUMEDOWN: { volumeToQueueSender(currentVolume - 2); break; - case CMD_MEASUREBATTERY: + } + case CMD_MEASUREBATTERY: { #ifdef MEASURE_BATTERY_VOLTAGE float voltage = measureBatteryVoltage(); snprintf(logBuf, serialLoglength, "%s: %.2f V", (char *) FPSTR(currentVoltageMsg), voltage); @@ -2983,15 +3006,18 @@ void doCmdAction(const uint32_t mod) { #endif #endif break; - case CMD_SLEEPMODE: + } + case CMD_SLEEPMODE: { gotoSleep = true; break; - default: + } + default: { snprintf(logBuf, serialLoglength, "%s %d !", (char *) FPSTR(modificatorDoesNotExist), mod); loggerNl(serialDebug, logBuf, LOGLEVEL_ERROR); #ifdef NEOPIXEL_ENABLE showLedError = true; #endif + } } } @@ -4582,11 +4608,26 @@ void setup() { 0 /* Core where the task should run */ ); - // Activate internal pullups for all buttons - pinMode(DREHENCODER_BUTTON, INPUT_PULLUP); - pinMode(PAUSEPLAY_BUTTON, INPUT_PULLUP); - pinMode(NEXT_BUTTON, INPUT_PULLUP); - pinMode(PREVIOUS_BUTTON, INPUT_PULLUP); + // Activate internal pullups for all enabled buttons + #ifdef BUTTON_0_ENABLE + pinMode(NEXT_BUTTON, INPUT_PULLUP); + #endif + #ifdef BUTTON_1_ENABLE + pinMode(PREVIOUS_BUTTON, INPUT_PULLUP); + #endif + #ifdef BUTTON_2_ENABLE + pinMode(PAUSEPLAY_BUTTON, INPUT_PULLUP); + #endif + #ifdef BUTTON_3_ENABLE + pinMode(DREHENCODER_BUTTON, INPUT_PULLUP); + #endif + #ifdef BUTTON_4_ENABLE + pinMode(BUTTON_4, INPUT_PULLUP); + #endif + #ifdef BUTTON_5_ENABLE + pinMode(BUTTON_5, INPUT_PULLUP); + #endif + unsigned long currentTimestamp = millis(); // Init rotary encoder encoder.attachHalfQuad(DREHENCODER_CLK, DREHENCODER_DT); diff --git a/src/settings.h b/src/settings.h index 975e5dd..d03e04d 100644 --- a/src/settings.h +++ b/src/settings.h @@ -30,6 +30,7 @@ #define MEASURE_BATTERY_VOLTAGE // Enables battery-measurement via GPIO (ADC) and voltage-divider //#define PLAY_LAST_RFID_AFTER_REBOOT // When restarting ESPuino, the last RFID that was active before, is recalled and played //#define USE_LAST_VOLUME_AFTER_REBOOT // Remembers the volume used at last shutdown after reboot +#define USEROTARY_ENABLE // If rotary-encoder is used #define BLUETOOTH_ENABLE // If enabled and bluetooth-mode is active, you can stream to your ESPuino via bluetooth (a2dp-sink). @@ -150,24 +151,48 @@ float voltageIndicatorHigh = 4.2; // Upper range for Neopixel- #define CHUNK_SIZE 1024 -// Button Layout +// Button-layout +/* Please note the following numbers as you need to know them in order to define actions for buttons. + Even if you don't use all of them, their numbers won't change + 0: NEXT_BUTTON + 1: PREVIOUS_BUTTON + 2: PAUSEPLAY_BUTTON + 3: DREHENCODER_BUTTON + 4: BUTTON_4 + 5: BUTTON_5 + + Don't forget to enable those buttons you want to use in your develboard-specific config (e.g. settings-custom.h) + + Multi-buttons (examples): + BUTTON_MULTI_01 => Buttons 0+1 (NEXT+PREVIOUS) pressed in parallel + BUTTON_MULTI_23 => Buttons 0+2 (NEXT+PAUSEPLAY_BUTTON) pressed in parallel + + Single-buttons (examples): + BUTTON_0_SHORT => Button 0 (NEXT) pressed shortly + BUTTON_3_SHORT => Button 3 (DREHENCODER) pressed shortly + + Actions: + To all of those buttons, an action can be assigned freely. + Please have a look at values.h to look up actions available (>100 can be used) +*/ +// *****BUTTON***** *****ACTION***** #define BUTTON_MULTI_01 TOGGLE_WIFI_STATUS #define BUTTON_MULTI_02 ENABLE_FTP_SERVER #define BUTTON_MULTI_03 CMD_NOTHING -#define BUTTON_MULTI_12 CMD_MEASUREBATTERY +#define BUTTON_MULTI_12 CMD_NOTHING #define BUTTON_MULTI_13 CMD_NOTHING #define BUTTON_MULTI_23 CMD_NOTHING -#define BUTTON_0_SHORT CMD_NEXTTRACK -#define BUTTON_1_SHORT CMD_PREVTRACK -#define BUTTON_2_SHORT CMD_PLAYPAUSE -#define BUTTON_3_SHORT CMD_MEASUREBATTERY -#define BUTTON_3_LONG CMD_SLEEPMODE +#define BUTTON_0_SHORT CMD_NEXTTRACK +#define BUTTON_1_SHORT CMD_PREVTRACK +#define BUTTON_2_SHORT CMD_PLAYPAUSE +#define BUTTON_3_SHORT CMD_MEASUREBATTERY +#define BUTTON_3_LONG CMD_SLEEPMODE -#define BUTTON_4_SHORT CMD_VOLUMEDOWN -#define BUTTON_4_LONG CMD_VOLUMEDOWN -#define BUTTON_5_SHORT CMD_VOLUMEUP -#define BUTTON_5_LONG CMD_VOLUMEUP +#define BUTTON_4_SHORT CMD_VOLUMEDOWN +#define BUTTON_4_LONG CMD_VOLUMEDOWN +#define BUTTON_5_SHORT CMD_VOLUMEUP +#define BUTTON_5_LONG CMD_VOLUMEUP #ifdef USEROTARY_ENABLE #define BUTTON_0_LONG CMD_LASTTRACK diff --git a/src/values.h b/src/values.h index 7e37b20..236de15 100644 --- a/src/values.h +++ b/src/values.h @@ -45,16 +45,16 @@ #define TOGGLE_BLUETOOTH_MODE 140 // Toggles Normal/Bluetooth Mode #define ENABLE_FTP_SERVER 150 // Enables FTP-server -#define CMD_PLAYPAUSE 170 // Admin-Cmd Play/Pause -#define CMD_PREVTRACK 171 // Admin-Cmd Prev Track -#define CMD_NEXTTRACK 172 // Admin-Cmd Next Track -#define CMD_FIRSTTRACK 173 // Admin-Cmd Prev Track -#define CMD_LASTTRACK 174 // Admin-Cmd Next Track -#define CMD_VOLUMEINIT 175 // Set Volume to Initial -#define CMD_VOLUMEUP 176 // Set Volume up -#define CMD_VOLUMEDOWN 177 // Set Volume down -#define CMD_MEASUREBATTERY 178 // Measure Battery Voltage -#define CMD_SLEEPMODE 179 // Goto Sleepmode +#define CMD_PLAYPAUSE 170 // Admin-cmd Play/Pause +#define CMD_PREVTRACK 171 // Admin-cmd Prev Track +#define CMD_NEXTTRACK 172 // Admin-cmd Next Track +#define CMD_FIRSTTRACK 173 // Admin-cmd Prev Track +#define CMD_LASTTRACK 174 // Admin-cmd Next Track +#define CMD_VOLUMEINIT 175 // Set volume to Initial +#define CMD_VOLUMEUP 176 // Set volume up +#define CMD_VOLUMEDOWN 177 // Set volume down +#define CMD_MEASUREBATTERY 178 // Measure battery-voltage +#define CMD_SLEEPMODE 179 // Goto deepsleep // Repeat-Modes #define NO_REPEAT 0 // No repeat