mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-08 04:27:12 +03:00
make equalizer a string + make sure output-i2s is exited
- Can't really use BLOB (creates issue with HTTP visualizer) - Player was stuck after WiFi loss b/c with some race conditions, BT deinit crashes and creates the reboot wanted after 5*5 failures. But when BT does not crash, reboot was not happening and player was stuck with slimproto not exited and player not rebooted
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "nvs_utilities.h"
|
#include "platform_config.h"
|
||||||
#include "squeezelite.h"
|
#include "squeezelite.h"
|
||||||
#include "equalizer.h"
|
#include "equalizer.h"
|
||||||
#include "esp_equalizer.h"
|
#include "esp_equalizer.h"
|
||||||
@@ -27,13 +27,18 @@ static struct {
|
|||||||
* initialize equalizer
|
* initialize equalizer
|
||||||
*/
|
*/
|
||||||
void equalizer_init(void) {
|
void equalizer_init(void) {
|
||||||
s8_t *gain = get_nvs_value_alloc(NVS_TYPE_BLOB, "equalizer");
|
s8_t gain[EQ_BANDS] = { };
|
||||||
|
char *config = config_alloc_get(NVS_TYPE_STR, "equalizer");
|
||||||
if (!gain) gain = calloc(EQ_BANDS, sizeof(*gain));
|
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);
|
equalizer_update(gain);
|
||||||
free(gain);
|
|
||||||
|
|
||||||
LOG_INFO("initializing equalizer");
|
LOG_INFO("initializing equalizer");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,9 +88,18 @@ void equalizer_close(void) {
|
|||||||
* update equalizer gain
|
* update equalizer gain
|
||||||
*/
|
*/
|
||||||
void equalizer_update(s8_t *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;
|
equalizer.update = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -573,10 +573,11 @@ static void output_thread_i2s(void *arg) {
|
|||||||
SET_MIN_MAX( TIME_MEASUREMENT_GET(timer_start),i2s_time);
|
SET_MIN_MAX( TIME_MEASUREMENT_GET(timer_start),i2s_time);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vTaskDelete(NULL);
|
|
||||||
if (spdif.enabled) free(spdif.buf);
|
if (spdif.enabled) free(spdif.buf);
|
||||||
ended = true;
|
ended = true;
|
||||||
|
|
||||||
|
vTaskDelete(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************************
|
/****************************************************************************************
|
||||||
|
|||||||
@@ -326,6 +326,9 @@ void register_default_nvs(){
|
|||||||
ESP_LOGD(TAG,"Registering default value for key %s, value %s", "bypass_wm", "0");
|
ESP_LOGD(TAG,"Registering default value for key %s, value %s", "bypass_wm", "0");
|
||||||
config_set_default(NVS_TYPE_STR, "bypass_wm", "0", 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");
|
ESP_LOGD(TAG,"Registering default Audio control board type %s, value ","actrls_config");
|
||||||
config_set_default(NVS_TYPE_STR, "actrls_config", "", 0);
|
config_set_default(NVS_TYPE_STR, "actrls_config", "", 0);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user