diff --git a/components/squeezelite/equalizer.c b/components/squeezelite/equalizer.c index f1d7f477..384f707c 100644 --- a/components/squeezelite/equalizer.c +++ b/components/squeezelite/equalizer.c @@ -8,7 +8,7 @@ * */ -#include "nvs_utilities.h" +#include "platform_config.h" #include "squeezelite.h" #include "equalizer.h" #include "esp_equalizer.h" @@ -27,13 +27,18 @@ static struct { * initialize equalizer */ void equalizer_init(void) { - s8_t *gain = get_nvs_value_alloc(NVS_TYPE_BLOB, "equalizer"); - - if (!gain) gain = calloc(EQ_BANDS, sizeof(*gain)); + s8_t gain[EQ_BANDS] = { }; + char *config = config_alloc_get(NVS_TYPE_STR, "equalizer"); + char *p = strtok(config, ", !"); + for (int i = 0; p && i < EQ_BANDS; i++) { + gain[i] = atoi(p); + p = strtok(NULL, ", :"); + } + + free(config); equalizer_update(gain); - free(gain); - + LOG_INFO("initializing equalizer"); } @@ -83,9 +88,18 @@ void equalizer_close(void) { * update equalizer gain */ void equalizer_update(s8_t *gain) { - store_nvs_value_len(NVS_TYPE_BLOB, "equalizer", gain, EQ_BANDS * sizeof(*gain)); + char config[EQ_BANDS * 4 + 1] = { }; + char *p = config; - for (int i = 0; i < EQ_BANDS; i++) equalizer.gain[i] = gain[i]; + for (int i = 0; i < EQ_BANDS; i++) { + equalizer.gain[i] = gain[i]; + if (gain[i] < 0) *p++ = '-'; + *p++ = (gain[i] / 10) + 0x30; + *p++ = (gain[i] % 10) + 0x30; + if (i < EQ_BANDS - 1) *p++ = ','; + } + + config_set_value(NVS_TYPE_STR, "equalizer", config); equalizer.update = true; } diff --git a/components/squeezelite/output_i2s.c b/components/squeezelite/output_i2s.c index b07b227e..2809bc15 100644 --- a/components/squeezelite/output_i2s.c +++ b/components/squeezelite/output_i2s.c @@ -573,10 +573,11 @@ static void output_thread_i2s(void *arg) { SET_MIN_MAX( TIME_MEASUREMENT_GET(timer_start),i2s_time); } - - vTaskDelete(NULL); + if (spdif.enabled) free(spdif.buf); ended = true; + + vTaskDelete(NULL); } /**************************************************************************************** diff --git a/main/esp_app_main.c b/main/esp_app_main.c index da0f1f6c..4a4d95d7 100644 --- a/main/esp_app_main.c +++ b/main/esp_app_main.c @@ -326,6 +326,9 @@ void register_default_nvs(){ ESP_LOGD(TAG,"Registering default value for key %s, value %s", "bypass_wm", "0"); config_set_default(NVS_TYPE_STR, "bypass_wm", "0", 0); + ESP_LOGD(TAG,"Registering default value for equalizer"); + config_set_default(NVS_TYPE_STR, "equalizer", "", 0); + ESP_LOGD(TAG,"Registering default Audio control board type %s, value ","actrls_config"); config_set_default(NVS_TYPE_STR, "actrls_config", "", 0);