Files
squeezelite-esp32/main/Kconfig.projbuild
2023-05-15 15:29:16 +02:00

445 lines
13 KiB
Plaintext

# This is a hack but it overrides some LWIP Kconfig
# parameters because we are first
config LWIP_MAX_SOCKETS
range 1 32
menu "Squeezelite-ESP32"
menu "Logging"
config LOGGING_SLIMPROTO
string "logging level for slimproto"
default "info"
help
Set logging level info|debug|sdebug
config LOGGING_STREAM
string "logging level for stream"
default "info"
help
Set logging level info|debug|sdebug
config LOGGING_DECODE
string "logging level for decode"
default "info"
help
Set logging level info|debug|sdebug
config LOGGING_OUTPUT
string "logging level for output"
default "info"
help
Set logging level info|debug|sdebug
endmenu
config AMP_LOCKED
bool
config JACK_LOCKED
bool
config BAT_LOCKED
bool
config I2C_LOCKED
bool
config SPDIF_LOCKED
bool
config LED_LOCKED
bool
config SPKFAULT_LOCKED
bool
config MUTE_GPIO_LEVEL
int
default 0
config TARGET_LOCKED
bool
default n
menu "Target"
choice OUTPUT_TYPE
prompt "Main system"
default BASIC_I2C_BT
help
Type of hardware platform
config SQUEEZEAMP
bool "SqueezeAMP"
select JACK_LOCKED
select BAT_LOCKED
select I2C_LOCKED
select LED_LOCKED
select SPKFAULT_LOCKED
select TARGET_LOCKED
config MUSE
bool "Muse"
select JACK_LOCKED
select BAT_LOCKED
select I2C_LOCKED
select AMP_LOCKED
select TARGET_LOCKED
config BASIC_I2C_BT
bool "Generic I2S & Bluetooth"
config TWATCH2020
bool "T-WATCH2020 by LilyGo"
select I2C_LOCKED
select TARGET_LOCKED
endchoice
config RELEASE_API
string "Software update URL"
default "https://api.github.com/repos/sle118/squeezelite-esp32/releases"
help
Set the URL of the API that the front-end UI will use to fetch software updates
config SQUEEZELITE_ESP32_RELEASE_URL
string "Release URL"
default "https://github.com/sle118/squeezelite-esp32/releases"
help
Set the URL where users can see a list of releases
# you can't change default values once they are set so changing "Target" will not reset
# project name if they are visible config - they have to be silent strings
config PROJECT_NAME
string
default "SqueezeAMP" if SQUEEZEAMP
default "Squeezelite-TWATCH" if TWATCH2020
default "Muse" if MUSE
default "Squeezelite-ESP32"
config FW_PLATFORM_NAME
string
default "SqueezeAmp" if SQUEEZEAMP
default "TWATCH" if TWATCH2020
default "Muse" if MUSE
default "ESP32"
# AGGREGATES - begin
# these parameters are "aggregates" that take precedence. They must have a default value
config DAC_CONFIG
string
default "model=TAS57xx,bck=33,ws=25,do=32,sda=27,scl=26,mute=14:0" if SQUEEZEAMP
default "model=I2S,bck=26,ws=25,do=33,i2c=53,sda=21,scl=22" if TWATCH2020
default "model=I2S,bck=5,ws=25,do=26,di=35,i2c=16,sda=18,scl=23,mck" if MUSE
default ""
config SPDIF_CONFIG
string
default "bck=33,ws=25,do=15" if SQUEEZEAMP
default ""
config GPIO_EXP_CONFIG
string
default ""
config SPI_CONFIG
string
default "dc=27,data=19,clk=18" if TWATCH2020
default "mosi=15,miso=2,clk=14" if MUSE
default ""
config DISPLAY_CONFIG
string
default "SPI,driver=ST7789,width=240,height=240,cs=5,back=12,speed=16000000,HFlip,VFlip" if TWATCH2020
default ""
config ETH_CONFIG
string
default ""
# AGGREGATES - end
config DAC_CONTROLSET
string
default "{ \"init\": [ {\"reg\":41, \"val\":128}, {\"reg\":18, \"val\":255} ], \"poweron\": [ {\"reg\":18, \"val\":64, \"mode\":\"or\"} ], \"poweroff\": [ {\"reg\":18, \"val\":191, \"mode\":\"and\"} ] }" if TWATCH2020
default "{\"init\":[ {\"reg\":0,\"val\":128}, {\"reg\":0,\"val\":0}, {\"reg\":25,\"val\":4}, {\"reg\":1,\"val\":80}, {\"reg\":2,\"val\":0}, {\"reg\":8,\"val\":0}, {\"reg\":4,\"val\":192}, {\"reg\":0,\"val\":18}, {\"reg\":1,\"val\":0}, {\"reg\":23,\"val\":24}, {\"reg\":24,\"val\":2}, {\"reg\":38,\"val\":9}, {\"reg\":39,\"val\":144}, {\"reg\":42,\"val\":144}, {\"reg\":43,\"val\":128}, {\"reg\":45,\"val\":128}, {\"reg\":27,\"val\":0}, {\"reg\":26,\"val\":0}, {\"reg\":2,\"val\":240}, {\"reg\":2,\"val\":0}, {\"reg\":29,\"val\":28}, {\"reg\":4,\"val\":48}, {\"reg\":25,\"val\":0}, {\"reg\":46,\"val\":33}, {\"reg\":47,\"val\":33} ]}" if MUSE
default ""
config AUDIO_CONTROLS
string
default "[{\"gpio\":32, \"pull\":true, \"long_press\":1000, \"normal\":{\"pressed\":\"ACTRLS_VOLDOWN\"}, \"longpress\":{\"pressed\":\"ACTRLS_PREV\"}}, {\"gpio\":19, \"pull\":true, \"long_press\":1000, \"normal\":{\"pressed\":\"ACTRLS_VOLUP\"}, \"longpress\":{\"pressed\":\"ACTRLS_NEXT\"}}, {\"gpio\":12, \"pull\":true, \"long_press\":1000, \"normal\":{\"pressed\":\"ACTRLS_TOGGLE\"},\"longpress\":{\"pressed\":\"ACTRLS_POWER\"}}]" if MUSE
default ""
config BAT_CONFIG
string
default "channel=7,scale=20.24,atten=0" if SQUEEZEAMP
default "channel=5,scale=7.00,atten=3,cells=1" if MUSE
default ""
config TARGET
string
default "muse" if MUSE
default ""
config AMP_GPIO
int
default 21 if MUSE
default -1
config JACK_GPIO
int
default 34 if SQUEEZEAMP || MUSE
default -1
config SPKFAULT_GPIO
int
default 2 if SQUEEZEAMP
default -1
config BAT_CHANNEL
int
default 7 if SQUEEZEAMP
default -1
config LED_GREEN_GPIO
int
default 12 if SQUEEZEAMP
default -1
config LED_RED_GPIO
int
default 13 if SQUEEZEAMP
default -1
config SET_GPIO
string
default "0=ir" if SQUEEZEAMP
endmenu
menu "Audio settings"
menu "DAC settings"
visible if BASIC_I2C_BT
menu "I2S settings"
config I2S_NUM
int "I2S channel (0 or 1)"
default 0
help
I2S dma channel to use.
config I2S_BCK_IO
int "I2S Bit clock GPIO number"
default -1
help
I2S Bit Clock gpio pin to use.
config I2S_WS_IO
int "I2S Word Select GPIO number"
default -1
help
I2S Word Select gpio pin to use.
config I2S_DO_IO
int "I2S Data Output GPIO number"
default -1
help
I2S data output gpio pin to use.
config I2S_DI_IO
int "I2S Data Input GPIO number"
default -1
help
I2S data input gpio pin to use (not used mostly, leave it to -1).
config I2S_MCK_IO
int "I2S Master Clock GPIO number"
default -1
help
I2S data output gpio pin to use (not used mostly, leave it to -1).
endmenu
menu "I2C settings"
config I2C_SDA
int "I2C SDA GPIO number for DAC control"
default -1
help
I2C data gpio pin to use with DAC (not used mostly, leave it to -1).
config I2C_SCL
int "I2C SCL GPIO number for DAC control"
default -1
help
I2C clock gpio pin to use with DAC (not used mostly, leave it to -1).
endmenu
config MUTE_GPIO
int "GPIO for muting DAC"
default -1
help
GPIO used to mute DAC (not used mostly, leave it to -1).
config MUTE_GPIO_LEVEL
int "Mute GPIO active level"
depends on MUTE_GPIO != -1
default 1
endmenu
menu "SPDIF settings"
visible if BASIC_I2C_BT
config SDIF_NUM
int "I2S channel for SDPIF (0 or 1)"
default 0
help
I2S dma channel to use.
config SPDIF_BCK_IO
int "SDPIF Bit clock GPIO number"
default I2S_BCK_IO
help
Must be set as SPDIF re-uses I2S but only needs DO (recommendation: set it to I2S Bit clock value)
config SPDIF_WS_IO
int "SPDIF Word Select GPIO number"
default I2S_WS_IO
help
Must be set as SPDIF re-uses I2S but only needs DO (recommendation: set it to I2S Word select value)
config SPDIF_DO_IO
int "SPDIF Data I/O GPIO number"
default -1
help
I2S data output IO use to simulate SPDIF
endmenu
menu "A2DP settings"
config A2DP_SINK_NAME
string "Name of Bluetooth A2DP device"
default "SMSL BT4.2"
help
This is the name of the bluetooth speaker that Squeezelite will try connecting to.
config A2DP_DEV_NAME
string "Name of Squeezelite device to use when connecting to A2DP device"
default "Squeezelite"
help
This is the name of the device that the Bluetooth speaker will see when it is connected to.
config A2DP_CONTROL_DELAY_MS
int "Control loop delay"
default 500
help
Decreasing this will lead to a more responsive BT control, but might lead to noisy log files if debug is enabled.
config A2DP_CONNECT_TIMEOUT_MS
int "Time out duration when trying to connect to an A2DP audio sink"
default 1000
help
Increasing this value will give more chance for less stable connections to be established.
endmenu
endmenu
menu "Audio Input"
config BT_SINK
bool "Bluetooth receiver"
default y
help
Enable bluetooth sink (Note that you obviously can't at the same time be a Bluetooth receiver and transmitter)
config BT_NAME
depends on BT_SINK
string "Name of Bluetooth A2DP device"
default "ESP32-BT"
help
This is the name of the bluetooth speaker that will be broadcasted
config BT_SINK_PIN
depends on BT_SINK
int "Bluetooth PIN code"
default 1234
config AIRPLAY_SINK
bool "AirPlay receiver"
default y
config AIRPLAY_NAME
depends on AIRPLAY_SINK
string "Name of AirPlay device"
default "ESP32-AirPlay"
help
This is the name of the AirPlay speaker that will be broadcasted
config AIRPLAY_PORT
depends on AIRPLAY_SINK
string "AirPlay listening port"
default "5000"
help
AirPlay service listening port
config CSPOT_SINK
bool "Spotify (cspot) receiver"
default y
help
Enable Spotify connect using CSpot
endmenu
menu "Controls"
depends on !MUSE
config AUDIO_CONTROLS
string "Audio buttons set (JSON)"
help
Configuration of buttons (see README for syntax)
endmenu
menu "Display Screen"
depends on !TWATCH2020
config DISPLAY_CONFIG
string "Screen configuraton"
help
Set parameters for display screen, leave empty for no screen
I2C,driver=<model>,width=<pixels>,height=<pixels>[address=<i2c_address>][,HFlip][,VFlip][,rotate]
SPI,driver=<model>,width=<pixels>,height=<pixels>,cs=<gpio>[,HFlip][,VFlip][,rotate]
endmenu
menu "Various I/O"
visible if !TWATCH2020
config I2C_CONFIG
string "I2C system configuration"
default ""
help
Set parameters of shared I2C interface
sda=<gpio>,scl=<gpio>[,speed=<num>][,port=<0|1>]
config SPI_CONFIG
string "SPI system configuration"
help
Set parameters of shared SPI interface
data=<gpio>,clk=<gpio>[,d/c=<num>][,host=<0|1|2>]
config SET_GPIO
string "Special GPIO configuration"
help
Set parameters of shared GPIO with special values.
<gpio_1>=Vcc|GND|amp[:0|1]|jack[:0|1][ir][spkfault[:0|1][,<gpio_n>=Vcc|GND|amp[:0|1]|jack[:0|1]]
'amp' => GPIO that is set when playback starts
'jack' => GPIO used for audio jack detection
'green', 'red' => GPIO for status LED
'spkfault' => GPIO used for speaker fault detection
'ir' => GPIO used for Infrared Receiver
[:0|1] means set the active value for that GPIO can be low or high
config ROTARY_ENCODER
string "Rotary Encoder configuration"
default ""
help
Set GPIO for rotary encoder (quadrature phase). See README on SqueezeESP32 project's GitHub for more details
A=<gpio>,B=<gpio>[,SW=gpio>[[,knobonly[=<ms>]|[,volume][,longpress]]
config GPIO_EXP_CONFIG
string "GPIO expander configuration"
help
Set parameters of GPIO extender
model=<model>[,addr=<addr>][,base=<100..N>][,count=<0..32>][,intr=<gpio>][,port=dac|system]
endmenu
menu "LED configuration"
visible if !SQUEEZEAMP && !TWATCH2020 && !MUSE
config LED_GREEN_GPIO
int "Green led GPIO"
help
Set to -1 for no LED
config LED_GREEN_GPIO_LEVEL
int "Green led ON level"
depends on LED_GREEN_GPIO != -1
config LED_RED_GPIO
int "Red led GPIO"
help
Set to -1 for no LED
config LED_RED_GPIO_LEVEL
int "Red led ON level"
depends on LED_RED_GPIO != -1
default 0 if SQUEEZEAMP
default 1
endmenu
menu "Audio JACK"
visible if !TARGET_LOCKED
config JACK_GPIO
int "Jack insertion GPIO"
help
GPIO to detect speaker jack insertion. Set to -1 for no detection.
config JACK_GPIO_LEVEL
depends on JACK_GPIO != -1
int "Level when inserted (0/1)"
default 0
endmenu
menu "Amplifier"
visible if !TARGET_LOCKED
config AMP_GPIO
int "Amplifier GPIO"
help
GPIO to switch on/off amplifier. Set to -1 for no amplifier.
config AMP_GPIO_LEVEL
depends on AMP_GPIO != -1
int "Active level(0/1)"
default 1
endmenu
menu "Speaker Fault"
visible if !TARGET_LOCKED
config SPKFAULT_GPIO
int "Speaker fault GPIO"
help
GPIO to detect speaker fault condition. Set to -1 for no detection.
config SPKFAULT_GPIO_LEVEL
depends on SPKFAULT_GPIO != -1
int "Level when fault (0/1)"
default 0
endmenu
menu "Battery measure"
visible if !TARGET_LOCKED
config BAT_CONFIG
string "Battery acquisition configuration"
help
Sets parameters for battery voltage measure
channel=<0..7>,scale=<ratio_to_4096>,atten=<adc_atten>,cells=<1..3>
endmenu
config DEFAULT_COMMAND_LINE
string "Default command line to execute"
default "squeezelite -o I2S -b 500:2000 -d all=info -C 30"
help
This is the command to run when starting the device
endmenu