|  | @@ -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];
 | 
	
		
			
				|  |  | +		if (gain[i] < 0) *p++ = '-';
 | 
	
		
			
				|  |  | +		*p++ = (gain[i] / 10) + 0x30;
 | 
	
		
			
				|  |  | +		*p++ = (gain[i] % 10) + 0x30;
 | 
	
		
			
				|  |  | +		if (i < EQ_BANDS - 1) *p++ = ',';
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  	
 | 
	
		
			
				|  |  | -	for (int i = 0; i < EQ_BANDS; i++) equalizer.gain[i] = gain[i];
 | 
	
		
			
				|  |  | +	config_set_value(NVS_TYPE_STR, "equalizer", config);					
 | 
	
		
			
				|  |  |  	equalizer.update = true;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |