From cc804b1232a60c14cd0486c4de79fe3aff4a2246 Mon Sep 17 00:00:00 2001 From: Davy39 Date: Sun, 3 Mar 2024 06:27:10 +0100 Subject: [PATCH 1/9] EEPROM -> Preferences for ESP32 --- edrumulus.ino | 12 ++++-------- edrumulus_hardware.cpp | 20 +++++++++++++++++--- edrumulus_hardware.h | 10 +++++----- 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/edrumulus.ino b/edrumulus.ino index 564fdd9..f7c3dd3 100644 --- a/edrumulus.ino +++ b/edrumulus.ino @@ -35,7 +35,7 @@ const int number_pads4 = 8; // example: do not use tom3 and shrink number of pad #ifdef USE_MIDI # ifdef ESP_PLATFORM # include -MIDI_CREATE_DEFAULT_INSTANCE(); + MIDI_CREATE_DEFAULT_INSTANCE(); # define MYMIDI MIDI # define MIDI_CONTROL_CHANGE_TYPE midi::ControlChange # define MIDI_SEND_AFTER_TOUCH sendAfterTouch @@ -64,9 +64,9 @@ void setup() int* analog_pins = analog_pins4; // initialize with the default setup int* analog_pins_rimshot = analog_pins_rimshot4; // initialize with the default setup const int prototype = Edrumulus_hardware::get_prototype_pins ( &analog_pins, - &analog_pins_rimshot, - &number_pads, - &status_LED_pin ); + &analog_pins_rimshot, + &number_pads, + &status_LED_pin ); // initialize GPIO port for status LED and set it to on during setup pinMode ( status_LED_pin, OUTPUT ); @@ -93,11 +93,7 @@ void setup() edrumulus.setup ( number_pads, analog_pins, analog_pins_rimshot ); digitalWrite ( status_LED_pin, LOW ); // set board LED to low right after setup is done -#ifdef ESP_PLATFORM - preset_settings(); // for ESP32, the load/save of settings is not supported, preset instead -#else read_settings(); -#endif } diff --git a/edrumulus_hardware.cpp b/edrumulus_hardware.cpp index 887a33c..07241ac 100644 --- a/edrumulus_hardware.cpp +++ b/edrumulus_hardware.cpp @@ -154,6 +154,21 @@ void Edrumulus_hardware::capture_samples ( const int number_pads, // ----------------------------------------------------------------------------- #ifdef ESP_PLATFORM +void Edrumulus_hardware::write_setting ( const int pad_index, + const int address, + const byte value ) +{ + const char* key = String(pad_index * MAX_NUM_SET_PER_PAD + address).c_str(); + preferences_settings.putUChar( key, value ); +} + +byte Edrumulus_hardware::read_setting ( const int pad_index, + const int address ) +{ + const char* key = String(pad_index * MAX_NUM_SET_PER_PAD + address).c_str(); + return preferences_settings.getUChar( key, 0 ); +} + int Edrumulus_hardware::get_prototype_pins ( int** analog_pins, int** analog_pins_rimshot, int* number_pins, @@ -207,7 +222,7 @@ int Edrumulus_hardware::get_prototype_pins ( int** analog_pins, *status_LED_pin = BOARD_LED_PIN; return 4; #else // CONFIG_IDF_TARGET_ESP32S3 - // analog pins setup: snare | kick | hi-hat | hi-hat-ctrl | crash | tom1 | ride | tom2 | tom3 +// analog pins setup: snare | kick | hi-hat | hi-hat-ctrl | crash | tom1 | ride | tom2 | tom3 static int analog_pins_s3[] = { 4, 6, 7, 9, 10, 12, 13, 15, 16 }; static int analog_pins_rimshot_s3[] = { 5, -1, 8, -1, 11, -1, 14, -1, -1 }; *analog_pins = analog_pins_s3; @@ -226,8 +241,7 @@ void Edrumulus_hardware::setup ( const int conf_Fs, { // set essential parameters Fs = conf_Fs; - eeprom_settings.begin ( ( number_pads + 1 ) * MAX_NUM_SET_PER_PAD ); // "+ 1" for pad-independent global settings - + preferences_settings.begin ( "Settings", false); // create linear vectors containing the pin/ADC information for each pad and pad-input bool input_is_used[MAX_NUM_PADS * MAX_NUM_PAD_INPUTS]; int input_adc[MAX_NUM_PADS * MAX_NUM_PAD_INPUTS]; diff --git a/edrumulus_hardware.h b/edrumulus_hardware.h index ee7cc40..0d2dbcc 100644 --- a/edrumulus_hardware.h +++ b/edrumulus_hardware.h @@ -18,8 +18,6 @@ #pragma once #include "Arduino.h" -#include "EEPROM.h" - // Global hardware enums and definitions --------------------------------------- enum Espikestate @@ -41,6 +39,7 @@ enum Espikestate // ----------------------------------------------------------------------------- #ifdef TEENSYDUINO +#include "EEPROM.h" #include #define BOARD_LED_PIN 13 // pin number of the LED on the Teensy 4.0 board @@ -110,6 +109,7 @@ class Edrumulus_hardware // ----------------------------------------------------------------------------- #ifdef ESP_PLATFORM +#include #include "soc/sens_reg.h" #include "driver/adc.h" #ifdef CONFIG_IDF_TARGET_ESP32 @@ -148,12 +148,12 @@ class Edrumulus_hardware const int input_channel_index, const int level ); - void write_setting ( const int, const int, const byte ) {}; // not supported - byte read_setting ( const int, const int ) { return 0; }; // not supported + void write_setting ( const int pad_index, const int address, const byte value ); + byte read_setting ( const int pad_index, const int address ); protected: int Fs; - EEPROMClass eeprom_settings; + Preferences preferences_settings; volatile SemaphoreHandle_t timer_semaphore; hw_timer_t* timer = nullptr; static void IRAM_ATTR on_timer(); From 0987de7ec43f963b0c54b572021f12b12f209561 Mon Sep 17 00:00:00 2001 From: Davy39 Date: Mon, 4 Mar 2024 13:42:23 +0100 Subject: [PATCH 2/9] preferences_settings -> settings --- edrumulus_hardware.cpp | 6 +++--- edrumulus_hardware.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/edrumulus_hardware.cpp b/edrumulus_hardware.cpp index 07241ac..a678358 100644 --- a/edrumulus_hardware.cpp +++ b/edrumulus_hardware.cpp @@ -159,14 +159,14 @@ void Edrumulus_hardware::write_setting ( const int pad_index, const byte value ) { const char* key = String(pad_index * MAX_NUM_SET_PER_PAD + address).c_str(); - preferences_settings.putUChar( key, value ); + settings.putUChar( key, value ); } byte Edrumulus_hardware::read_setting ( const int pad_index, const int address ) { const char* key = String(pad_index * MAX_NUM_SET_PER_PAD + address).c_str(); - return preferences_settings.getUChar( key, 0 ); + return settings.getUChar( key, 0 ); } int Edrumulus_hardware::get_prototype_pins ( int** analog_pins, @@ -241,7 +241,7 @@ void Edrumulus_hardware::setup ( const int conf_Fs, { // set essential parameters Fs = conf_Fs; - preferences_settings.begin ( "Settings", false); + settings.begin ( "Settings", false); // create linear vectors containing the pin/ADC information for each pad and pad-input bool input_is_used[MAX_NUM_PADS * MAX_NUM_PAD_INPUTS]; int input_adc[MAX_NUM_PADS * MAX_NUM_PAD_INPUTS]; diff --git a/edrumulus_hardware.h b/edrumulus_hardware.h index 0d2dbcc..e896509 100644 --- a/edrumulus_hardware.h +++ b/edrumulus_hardware.h @@ -153,7 +153,7 @@ class Edrumulus_hardware protected: int Fs; - Preferences preferences_settings; + Preferences settings; volatile SemaphoreHandle_t timer_semaphore; hw_timer_t* timer = nullptr; static void IRAM_ATTR on_timer(); From 4f73353c56228058ad069c9e45aa1c42b40e40b9 Mon Sep 17 00:00:00 2001 From: Davy39 Date: Mon, 4 Mar 2024 13:44:36 +0100 Subject: [PATCH 3/9] Define preferences namespace in a constant --- edrumulus_hardware.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/edrumulus_hardware.cpp b/edrumulus_hardware.cpp index a678358..533d029 100644 --- a/edrumulus_hardware.cpp +++ b/edrumulus_hardware.cpp @@ -241,7 +241,8 @@ void Edrumulus_hardware::setup ( const int conf_Fs, { // set essential parameters Fs = conf_Fs; - settings.begin ( "Settings", false); + char preferences_namespace[16] = "Edrumulus"; + settings.begin (preferences_namespace, false); // create linear vectors containing the pin/ADC information for each pad and pad-input bool input_is_used[MAX_NUM_PADS * MAX_NUM_PAD_INPUTS]; int input_adc[MAX_NUM_PADS * MAX_NUM_PAD_INPUTS]; From 802d5a6cbfa5f198f2d760888012db47e46740c5 Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Fri, 7 Jun 2024 15:53:26 +0200 Subject: [PATCH 4/9] code style fixes --- edrumulus.ino | 6 +++--- edrumulus_hardware.cpp | 15 ++++++++------- edrumulus_hardware.h | 1 - 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/edrumulus.ino b/edrumulus.ino index d9aa118..0fc6396 100644 --- a/edrumulus.ino +++ b/edrumulus.ino @@ -70,9 +70,9 @@ void setup() int* analog_pins = analog_pins4; // initialize with the default setup int* analog_pins_rimshot = analog_pins_rimshot4; // initialize with the default setup const int prototype = Edrumulus_hardware::get_prototype_pins ( &analog_pins, - &analog_pins_rimshot, - &number_pads, - &status_LED_pin ); + &analog_pins_rimshot, + &number_pads, + &status_LED_pin ); // initialize GPIO port for status LED and set it to on during setup pinMode ( status_LED_pin, OUTPUT ); diff --git a/edrumulus_hardware.cpp b/edrumulus_hardware.cpp index 533d029..d97fb87 100644 --- a/edrumulus_hardware.cpp +++ b/edrumulus_hardware.cpp @@ -158,15 +158,15 @@ void Edrumulus_hardware::write_setting ( const int pad_index, const int address, const byte value ) { - const char* key = String(pad_index * MAX_NUM_SET_PER_PAD + address).c_str(); - settings.putUChar( key, value ); + const char* key = String ( pad_index * MAX_NUM_SET_PER_PAD + address ).c_str(); + settings.putUChar ( key, value ); } byte Edrumulus_hardware::read_setting ( const int pad_index, const int address ) { - const char* key = String(pad_index * MAX_NUM_SET_PER_PAD + address).c_str(); - return settings.getUChar( key, 0 ); + const char* key = String ( pad_index * MAX_NUM_SET_PER_PAD + address ).c_str(); + return settings.getUChar ( key, 0 ); } int Edrumulus_hardware::get_prototype_pins ( int** analog_pins, @@ -222,7 +222,7 @@ int Edrumulus_hardware::get_prototype_pins ( int** analog_pins, *status_LED_pin = BOARD_LED_PIN; return 4; #else // CONFIG_IDF_TARGET_ESP32S3 -// analog pins setup: snare | kick | hi-hat | hi-hat-ctrl | crash | tom1 | ride | tom2 | tom3 + // analog pins setup: snare | kick | hi-hat | hi-hat-ctrl | crash | tom1 | ride | tom2 | tom3 static int analog_pins_s3[] = { 4, 6, 7, 9, 10, 12, 13, 15, 16 }; static int analog_pins_rimshot_s3[] = { 5, -1, 8, -1, 11, -1, 14, -1, -1 }; *analog_pins = analog_pins_s3; @@ -240,9 +240,10 @@ void Edrumulus_hardware::setup ( const int conf_Fs, int analog_pin[][MAX_NUM_PAD_INPUTS] ) { // set essential parameters - Fs = conf_Fs; + Fs = conf_Fs; char preferences_namespace[16] = "Edrumulus"; - settings.begin (preferences_namespace, false); + settings.begin ( preferences_namespace, false ); + // create linear vectors containing the pin/ADC information for each pad and pad-input bool input_is_used[MAX_NUM_PADS * MAX_NUM_PAD_INPUTS]; int input_adc[MAX_NUM_PADS * MAX_NUM_PAD_INPUTS]; diff --git a/edrumulus_hardware.h b/edrumulus_hardware.h index e896509..973a616 100644 --- a/edrumulus_hardware.h +++ b/edrumulus_hardware.h @@ -39,7 +39,6 @@ enum Espikestate // ----------------------------------------------------------------------------- #ifdef TEENSYDUINO -#include "EEPROM.h" #include #define BOARD_LED_PIN 13 // pin number of the LED on the Teensy 4.0 board From 692f2f2df6dcb1194f3686e4b5a8b670cac00d40 Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Fri, 7 Jun 2024 16:03:08 +0200 Subject: [PATCH 5/9] small fix --- edrumulus.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/edrumulus.ino b/edrumulus.ino index 0fc6396..22dff26 100644 --- a/edrumulus.ino +++ b/edrumulus.ino @@ -101,8 +101,8 @@ void setup() #endif edrumulus.setup ( number_pads, analog_pins, analog_pins_rimshot ); - digitalWrite ( status_LED_pin, LOW ); // set board LED to low right after setup is done read_settings(); + digitalWrite ( status_LED_pin, LOW ); // set board LED to low right after setup is done } From fd9d13139497be29841a9b3a6a5910a288202812 Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Sat, 8 Jun 2024 14:50:40 +0200 Subject: [PATCH 6/9] bug fix --- edrumulus_hardware.h | 1 + 1 file changed, 1 insertion(+) diff --git a/edrumulus_hardware.h b/edrumulus_hardware.h index 973a616..e896509 100644 --- a/edrumulus_hardware.h +++ b/edrumulus_hardware.h @@ -39,6 +39,7 @@ enum Espikestate // ----------------------------------------------------------------------------- #ifdef TEENSYDUINO +#include "EEPROM.h" #include #define BOARD_LED_PIN 13 // pin number of the LED on the Teensy 4.0 board From 159ffb7194f0095439bceb379198a9684eb5144a Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Sat, 15 Jun 2024 09:48:39 +0200 Subject: [PATCH 7/9] prepare for merge from main --- edrumulus_hardware.cpp => hardware.cpp | 0 edrumulus_hardware.h => hardware.h | 0 edrumulus_parameters.cpp => parameters.cpp | 0 edrumulus_teensy_usbname.c => teensy_name.c | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename edrumulus_hardware.cpp => hardware.cpp (100%) rename edrumulus_hardware.h => hardware.h (100%) rename edrumulus_parameters.cpp => parameters.cpp (100%) rename edrumulus_teensy_usbname.c => teensy_name.c (100%) diff --git a/edrumulus_hardware.cpp b/hardware.cpp similarity index 100% rename from edrumulus_hardware.cpp rename to hardware.cpp diff --git a/edrumulus_hardware.h b/hardware.h similarity index 100% rename from edrumulus_hardware.h rename to hardware.h diff --git a/edrumulus_parameters.cpp b/parameters.cpp similarity index 100% rename from edrumulus_parameters.cpp rename to parameters.cpp diff --git a/edrumulus_teensy_usbname.c b/teensy_name.c similarity index 100% rename from edrumulus_teensy_usbname.c rename to teensy_name.c From 89ab06eee566ac2c63ee317aa1b4820e09327fc6 Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Sat, 15 Jun 2024 09:59:08 +0200 Subject: [PATCH 8/9] fix compilation errors --- edrumulus.h | 2 +- hardware.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/edrumulus.h b/edrumulus.h index 33d0a3d..ae11b89 100644 --- a/edrumulus.h +++ b/edrumulus.h @@ -23,7 +23,7 @@ //#define USE_SERIAL_DEBUG_PLOTTING #include "Arduino.h" -#include "edrumulus_hardware.h" +#include "hardware.h" // Utility functions ----------------------------------------------------------------- diff --git a/hardware.cpp b/hardware.cpp index d97fb87..d1632e1 100644 --- a/hardware.cpp +++ b/hardware.cpp @@ -15,7 +15,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA \******************************************************************************/ -#include "edrumulus_hardware.h" +#include "hardware.h" Edrumulus_hardware* edrumulus_hardware_pointer = nullptr; From 20ee7ef15f690f6ed864a2124187813a3ee0611b Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Sat, 15 Jun 2024 11:16:26 +0200 Subject: [PATCH 9/9] clang format --- hardware.cpp | 20 ++++++++++---------- hardware.h | 12 +++++++----- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/hardware.cpp b/hardware.cpp index 9569d19..d140b4b 100644 --- a/hardware.cpp +++ b/hardware.cpp @@ -223,19 +223,19 @@ int Edrumulus_hardware::get_prototype_pins(int** analog_pins, # endif } -void Edrumulus_hardware::write_setting ( const int pad_index, - const int address, - const byte value ) +void Edrumulus_hardware::write_setting(const int pad_index, + const int address, + const byte value) { - const char* key = String ( pad_index * MAX_NUM_SET_PER_PAD + address ).c_str(); - settings.putUChar ( key, value ); + const char* key = String(pad_index * MAX_NUM_SET_PER_PAD + address).c_str(); + settings.putUChar(key, value); } -byte Edrumulus_hardware::read_setting ( const int pad_index, - const int address ) +byte Edrumulus_hardware::read_setting(const int pad_index, + const int address) { - const char* key = String ( pad_index * MAX_NUM_SET_PER_PAD + address ).c_str(); - return settings.getUChar ( key, 0 ); + const char* key = String(pad_index * MAX_NUM_SET_PER_PAD + address).c_str(); + return settings.getUChar(key, 0); } void Edrumulus_hardware::setup(const int conf_Fs, @@ -246,7 +246,7 @@ void Edrumulus_hardware::setup(const int conf_Fs, // set essential parameters Fs = conf_Fs; char preferences_namespace[16] = "Edrumulus"; - settings.begin ( preferences_namespace, false ); + settings.begin(preferences_namespace, false); // create linear vectors containing the pin/ADC information for each pad and pad-input bool input_is_used[MAX_NUM_PADS * MAX_NUM_PAD_INPUTS]; diff --git a/hardware.h b/hardware.h index 7814421..d5a540f 100644 --- a/hardware.h +++ b/hardware.h @@ -29,7 +29,8 @@ #ifdef TEENSYDUINO # include -#include "EEPROM.h" + +# include "EEPROM.h" # define BOARD_LED_PIN 13 // pin number of the LED on the Teensy 4.0 board # define ADC_MAX_RANGE 4096 // Teensy 4.0/4.1 ADC has 12 bits -> 0..4095 @@ -77,7 +78,8 @@ class Edrumulus_hardware // ----------------------------------------------------------------------------- #ifdef ESP_PLATFORM -#include +# include + # include "driver/adc.h" # include "soc/sens_reg.h" # ifdef CONFIG_IDF_TARGET_ESP32 @@ -110,12 +112,12 @@ class Edrumulus_hardware int analog_pin[][MAX_NUM_PAD_INPUTS], int sample_org[][MAX_NUM_PAD_INPUTS]); - void write_setting ( const int pad_index, const int address, const byte value ); - byte read_setting ( const int pad_index, const int address ); + void write_setting(const int pad_index, const int address, const byte value); + byte read_setting(const int pad_index, const int address); protected: int Fs; - Preferences settings; + Preferences settings; volatile SemaphoreHandle_t timer_semaphore; hw_timer_t* timer = nullptr; static void IRAM_ATTR on_timer();