From 413ebcb912d6742512afad172ad449c2dc337e15 Mon Sep 17 00:00:00 2001 From: Philippe G Date: Wed, 19 Jan 2022 12:52:44 -0800 Subject: [PATCH] more muse (battery) --- build-scripts/I2S-4MFlash-sdkconfig.defaults | 3 +- build-scripts/SqueezeAmp-sdkconfig.defaults | 3 +- components/platform_config/platform_config.h | 5 + components/services/accessors.c | 9 +- components/services/battery.c | 28 ++--- main/Kconfig.projbuild | 104 +++++-------------- 6 files changed, 49 insertions(+), 103 deletions(-) diff --git a/build-scripts/I2S-4MFlash-sdkconfig.defaults b/build-scripts/I2S-4MFlash-sdkconfig.defaults index 34fcd85a..43eadb52 100644 --- a/build-scripts/I2S-4MFlash-sdkconfig.defaults +++ b/build-scripts/I2S-4MFlash-sdkconfig.defaults @@ -22,8 +22,7 @@ CONFIG_JACK_GPIO=-1 CONFIG_JACK_GPIO_LEVEL=0 CONFIG_SPKFAULT_GPIO=-1 CONFIG_SPKFAULT_GPIO_LEVEL=0 -CONFIG_BAT_CHANNEL=-1 -CONFIG_BAT_SCALE="0" +CONFIG_BAT_CONFIG="" CONFIG_I2S_NUM=0 CONFIG_I2S_BCK_IO=-1 CONFIG_I2S_WS_IO=-1 diff --git a/build-scripts/SqueezeAmp-sdkconfig.defaults b/build-scripts/SqueezeAmp-sdkconfig.defaults index 76071911..a9cdcd0d 100644 --- a/build-scripts/SqueezeAmp-sdkconfig.defaults +++ b/build-scripts/SqueezeAmp-sdkconfig.defaults @@ -26,8 +26,7 @@ CONFIG_JACK_GPIO=34 CONFIG_JACK_GPIO_LEVEL=0 CONFIG_SPKFAULT_GPIO=2 CONFIG_SPKFAULT_GPIO_LEVEL=0 -CONFIG_BAT_CHANNEL=7 -CONFIG_BAT_SCALE="20.24" +CONFIG_BAT_CONFIG="channel=7,scale=20.24,atten=0" CONFIG_I2S_NUM=0 CONFIG_SPDIF_NUM=0 CONFIG_SPDIF_CONFIG="bck=33,ws=25,do=15" diff --git a/components/platform_config/platform_config.h b/components/platform_config/platform_config.h index cda90644..2df78a36 100644 --- a/components/platform_config/platform_config.h +++ b/components/platform_config/platform_config.h @@ -14,6 +14,11 @@ extern "C" { if ((__p = strcasestr(S, P)) && (__p = strchr(__p, C))) V = atoi(__p+1); \ } while (0) +#define PARSE_PARAM_FLOAT(S,P,C,V) do { \ + char *__p; \ + if ((__p = strcasestr(S, P)) && (__p = strchr(__p, C))) V = atof(__p+1); \ +} while (0) + #define PARSE_PARAM_STR(S,P,C,V,I) do { \ char *__p; \ if ((__p = strstr(S, P)) && (__p = strchr(__p, C))) { \ diff --git a/components/services/accessors.c b/components/services/accessors.c index 8f9183ec..2f88abff 100644 --- a/components/services/accessors.c +++ b/components/services/accessors.c @@ -974,11 +974,10 @@ cJSON * get_gpio_list(bool refresh) { } gpio_list= cJSON_CreateArray(); -#ifndef CONFIG_BAT_LOCKED char *bat_config = config_alloc_get_default(NVS_TYPE_STR, "bat_config", NULL, 0); if (bat_config) { int channel = -1; - PARSE_PARAM(bat_config, "channem", '=', channel); + PARSE_PARAM(bat_config, "channel", '=', channel); if(channel != -1){ if(adc1_pad_get_io_num(channel,&gpio_num )==ESP_OK){ cJSON_AddItemToArray(gpio_list,get_gpio_entry("bat","other",gpio_num,false)); @@ -986,11 +985,7 @@ cJSON * get_gpio_list(bool refresh) { } free(bat_config); } -#else - if(adc1_pad_get_io_num(CONFIG_BAT_CHANNEL,&gpio_num )==ESP_OK){ - cJSON_AddItemToArray(gpio_list,get_gpio_entry("bat","other",gpio_num,true)); - } -#endif + gpio_list=get_GPIO_nvs_list(gpio_list); gpio_list=get_SPDIF_GPIO(gpio_list,is_spdif_config_locked()); gpio_list=get_Rotary_GPIO(gpio_list); diff --git a/components/services/battery.c b/components/services/battery.c index 2b356106..09efe79e 100644 --- a/components/services/battery.c +++ b/components/services/battery.c @@ -35,10 +35,9 @@ static struct { int count; int cells, attenuation; TimerHandle_t timer; -} battery = { - .channel = CONFIG_BAT_CHANNEL, +} battery = { + .channel = -1, .cells = 2, - .attenuation = ADC_ATTEN_DB_0, }; void (*battery_handler_svc)(float value); @@ -76,17 +75,18 @@ static void battery_callback(TimerHandle_t xTimer) { * */ void battery_svc_init(void) { -#ifdef CONFIG_BAT_SCALE - battery.scale = atof(CONFIG_BAT_SCALE); -#endif - - char *nvs_item = config_alloc_get_default(NVS_TYPE_STR, "bat_config", "n", 0); - if (nvs_item) { -#ifndef CONFIG_BAT_LOCKED - PARSE_PARAM(nvs_item, "channel", '=', battery.channel); - PARSE_PARAM(nvs_item, "scale", '=', battery.scale); - PARSE_PARAM(nvs_item, "atten", '=', battery.attenuation); + char *nvs_item = config_alloc_get_default(NVS_TYPE_STR, "bat_config", "", 0); + +#ifdef CONFIG_BAT_LOCKED + char *p = nvs_item; + asprintf(&nvs_item, CONFIG_BAT_CONFIG ",%s", p); + free(p); #endif + + if (nvs_item) { + PARSE_PARAM(nvs_item, "channel", '=', battery.channel); + PARSE_PARAM_FLOAT(nvs_item, "scale", '=', battery.scale); + PARSE_PARAM(nvs_item, "atten", '=', battery.attenuation); PARSE_PARAM(nvs_item, "cells", '=', battery.cells); free(nvs_item); } @@ -99,7 +99,7 @@ void battery_svc_init(void) { battery.timer = xTimerCreate("battery", BATTERY_TIMER / portTICK_RATE_MS, pdTRUE, NULL, battery_callback); xTimerStart(battery.timer, portMAX_DELAY); - ESP_LOGI(TAG, "Battery measure channel: %u, scale %f, cells %u, avg %.2fV", battery.channel, battery.scale, battery.cells, battery.avg); + ESP_LOGI(TAG, "Battery measure channel: %u, scale %f, atten %d, cells %u, avg %.2fV", battery.channel, battery.scale, battery.attenuation, battery.cells, battery.avg); } else { ESP_LOGI(TAG, "No battery"); } diff --git a/main/Kconfig.projbuild b/main/Kconfig.projbuild index 8fe1275d..4cf29dfa 100644 --- a/main/Kconfig.projbuild +++ b/main/Kconfig.projbuild @@ -38,6 +38,9 @@ menu "Squeezelite-ESP32" config MUTE_GPIO_LEVEL int default 0 + config WELL_KNOWN + bool + default n menu "Target" choice OUTPUT_TYPE prompt "Main system" @@ -51,17 +54,20 @@ menu "Squeezelite-ESP32" select I2C_LOCKED select LED_LOCKED select SPKFAULT_LOCKED - config BASIC_I2C_BT - bool "Generic I2S & Bluetooth" - config TWATCH2020 - bool "T-WATCH2020 by LilyGo" - select I2C_LOCKED + select WELL_KNOWN config MUSE bool "Muse" select JACK_LOCKED select BAT_LOCKED select I2C_LOCKED - select AMP_LOCKED + select AMP_LOCKED + select WELL_KNOWN + config BASIC_I2C_BT + bool "Generic I2S & Bluetooth" + config TWATCH2020 + bool "T-WATCH2020 by LilyGo" + select I2C_LOCKED + select WELL_KNOWN endchoice config RELEASE_API string "Software update URL" @@ -124,62 +130,12 @@ menu "Squeezelite-ESP32" string default "[{\"gpio\":32, \"pull\":true, \"debounce\":10, \"normal\":{\"pressed\":\"ACTRLS_VOLDOWN\"}}, {\"gpio\":19, \"pull\":true, \"debounce\":40, \"normal\":{\"pressed\":\"ACTRLS_VOLUP\"}}, {\"gpio\":12, \"pull\":true, \"debounce\":40, \"longpress\":1000, \"normal\":{\"pressed\":\"ACTRLS_TOGGLE\"},\"longpress\":{\"pressed\":\"ACTRLS_POWER\"}}]" if MUSE default "" + config BAT_CONFIG + default "channel=7,scale=20.24,atten=0" if SQUEEZEAMP + default "channel=5,scale=1,atten=3,cells=1" if MUSE + default "" endmenu - menu "Ethernet Options" - visible if BASIC_I2C_BT && (ETH_USE_ESP32_EMAC || ETH_USE_SPI_ETHERNET) - choice - prompt "Ethernet Chipset" - default ETH_NODRIVER - config ETH_NODRIVER - bool "Defined in NVS" - config ETH_LAN8720 - bool "Microchip LAN8720 (RMII)" - config ETH_DM9051 - bool "Davicom 9051 (SPI)" - endchoice - config ETH_PHY_RST_IO - int "PHY Reset GPIO number" if !ETH_NODRIVER - default -1 - help - Set the GPIO number used to reset PHY chip. - Set to -1 to disable PHY chip hardware reset. - config ETH_MDC_IO - int "SMI MDC GPIO number" if ETH_LAN8720 - default -1 - help - Set the GPIO number used by SMI MDC. - config ETH_MDIO_IO - int "SMI MDIO GPIO number" if ETH_LAN8720 - default -1 - help - Set the GPIO number used by SMI MDIO. - config ETH_SPI_HOST - int "SPI host number (-1,1 or 2)" if ETH_DM9051 - default -1 - help - Set to -1 to use system's SPI config (see Various I/O) - Set to 2 or 3 to use a dedicated bus - config ETH_SPI_INTR_IO - int "interrupt" if ETH_DM9051 - default -1 - config ETH_SPI_CS_IO - int "Chip Select" if ETH_DM9051 - default -1 - config ETH_SPI_CLK_IO - int "SPI clock" if ETH_SPI_HOST != -1 && ETH_DM9051 - default -1 - config ETH_SPI_MOSI_IO - int "Data Out" if ETH_SPI_HOST != -1 && ETH_DM9051 - default -1 - config ETH_SPI_MISO_IO - int "Data In" if ETH_SPI_HOST != -1 && ETH_DM9051 - default -1 - config ETH_SPI_SPEED - int "SPI speed (Hz)" if ETH_SPI_HOST != -1 && ETH_DM9051 - default 20000000 - endmenu - menu "Audio settings" menu "DAC settings" visible if BASIC_I2C_BT @@ -369,7 +325,7 @@ menu "Squeezelite-ESP32" endmenu menu "LED configuration" - visible if !SQUEEZEAMP && !TWATCH2020 && !MUSE + visible if !WELL_KNOWN config LED_GREEN_GPIO int "Green led GPIO" default 12 if SQUEEZEAMP @@ -396,7 +352,7 @@ menu "Squeezelite-ESP32" endmenu menu "Audio JACK" - visible if !SQUEEZEAMP && !TWATCH2020 && !MUSE + visible if !WELL_KNOWN config JACK_GPIO int "Jack insertion GPIO" default 34 if SQUEEZEAMP || MUSE @@ -410,7 +366,7 @@ menu "Squeezelite-ESP32" endmenu menu "Amplifier" - visible if !SQUEEZEAMP && !TWATCH2020 && !MUSE + visible if !WELL_KNOWN config AMP_GPIO int "Amplifier GPIO" default 21 if MUSE @@ -424,7 +380,7 @@ menu "Squeezelite-ESP32" endmenu menu "Speaker Fault" - visible if !SQUEEZEAMP && !TWATCH2020 && !MUSE + visible if !WELL_KNOWN config SPKFAULT_GPIO int "Speaker fault GPIO" default 2 if SQUEEZEAMP @@ -437,21 +393,13 @@ menu "Squeezelite-ESP32" default 0 endmenu - menu "Battery measure" - visible if !SQUEEZEAMP && !TWATCH2020 - config BAT_CHANNEL - int "Set channel (0..7)" - default 7 if SQUEEZEAMP - default -1 + menu "Battery measure" + visible if !WELL_KNOWN + config BAT_CONFIG + string "Battery acquisitiong configuration" help - Read a value every 10s on ADC1 on set Channel - config BAT_SCALE - string "Set scaling factor" - depends on BAT_CHANNEL != -1 - default "20.24" if SQUEEZEAMP - default "" - help - Set the scaling factor for this 12 bits ADC + Sets parameters for battery voltage measure + channel=<0..7>,scale=,atten=,cells=<1..3> endmenu endmenu \ No newline at end of file