mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-06 11:36:59 +03:00
Reworking BT output
This commit is contained in:
@@ -1,15 +1,11 @@
|
|||||||
cmake_minimum_required(VERSION 3.5)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
set(EXTRA_COMPONENT_DIRS components/platform_console/app_recovery components/platform_console/app_squeezelite )
|
set(EXTRA_COMPONENT_DIRS components/platform_console/app_recovery components/platform_console/app_squeezelite )
|
||||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
add_definitions(-DbSqueezeESP32)
|
add_definitions(-DMODEL_NAME=SqueezeESP32)
|
||||||
message(STATUS "Building RECOVERY")
|
message(STATUS "Building RECOVERY")
|
||||||
project(recovery)
|
project(recovery)
|
||||||
set_property(TARGET recovery.elf PROPERTY RECOVERY_PREFIX app_recovery )
|
set_property(TARGET recovery.elf PROPERTY RECOVERY_PREFIX app_recovery )
|
||||||
|
|
||||||
include(squeezelite.cmake)
|
include(squeezelite.cmake)
|
||||||
|
|
||||||
|
|
||||||
set(PROJECT_VER $ENV{PROJECT_VER})
|
set(PROJECT_VER $ENV{PROJECT_VER})
|
||||||
|
#target_compile_definitions(__idf_squeezelite-ota PRIVATE -DLOG_LOCAL_LEVEL=ESP_LOG_VERBOSE)
|
||||||
#target_compile_definitions(__idf_squeezelite-ota PRIVATE DLOG_LOCAL_LEVEL=ESP_LOG_VERBOSE)
|
#target_compile_definitions(__idf_driver_bt PRIVATE -DLOG_LOCAL_LEVEL=ESP_LOG_DEBUG)
|
||||||
#target_compile_definitions(__idf_driver_bt PRIVATE DLOG_LOCAL_LEVEL=ESP_LOG_VERBOSE)
|
|
||||||
|
|||||||
@@ -180,13 +180,9 @@ CONFIG_BT_A2DP_ENABLE=y
|
|||||||
# CONFIG_BT_SPP_ENABLED is not set
|
# CONFIG_BT_SPP_ENABLED is not set
|
||||||
# CONFIG_BT_HFP_ENABLE is not set
|
# CONFIG_BT_HFP_ENABLE is not set
|
||||||
CONFIG_BT_SSP_ENABLED=y
|
CONFIG_BT_SSP_ENABLED=y
|
||||||
<<<<<<< HEAD
|
|
||||||
# CONFIG_BT_BLE_ENABLED is not set
|
|
||||||
CONFIG_BT_STACK_NO_LOG=y
|
|
||||||
=======
|
|
||||||
CONFIG_BT_BLE_ENABLED=n
|
CONFIG_BT_BLE_ENABLED=n
|
||||||
CONFIG_BT_BLE_SMP_ENABLE=y
|
CONFIG_BT_BLE_SMP_ENABLE=y
|
||||||
|
CONFIG_BT_STACK_NO_LOG=n
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -356,7 +352,6 @@ CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_WARNING=y
|
|||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL=2
|
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL=2
|
||||||
>>>>>>> refs/remotes/origin/master
|
|
||||||
CONFIG_BT_ACL_CONNECTIONS=4
|
CONFIG_BT_ACL_CONNECTIONS=4
|
||||||
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y
|
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y
|
||||||
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=y
|
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=y
|
||||||
@@ -630,19 +625,7 @@ CONFIG_LWIP_MAX_SOCKETS=16
|
|||||||
# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
|
# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
|
||||||
CONFIG_LWIP_SO_REUSE=y
|
CONFIG_LWIP_SO_REUSE=y
|
||||||
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
||||||
<<<<<<< HEAD
|
#CONFIG_LWIP_IP_REASSEMBLY is not set
|
||||||
# CONFIG_LWIP_SO_RCVBUF is not set
|
|
||||||
# CONFIG_LWIP_IP_REASSEMBLY is not set
|
|
||||||
# CONFIG_LWIP_IP_FRAG is not set
|
|
||||||
# CONFIG_LWIP_STATS is not set
|
|
||||||
# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
|
|
||||||
=======
|
|
||||||
CONFIG_LWIP_IP_REASSEMBLY=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
>>>>>>> refs/remotes/origin/master
|
|
||||||
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
||||||
CONFIG_LWIP_GARP_TMR_INTERVAL=60
|
CONFIG_LWIP_GARP_TMR_INTERVAL=60
|
||||||
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
||||||
|
|||||||
@@ -179,183 +179,10 @@ CONFIG_BT_A2DP_ENABLE=y
|
|||||||
# CONFIG_BT_SPP_ENABLED is not set
|
# CONFIG_BT_SPP_ENABLED is not set
|
||||||
# CONFIG_BT_HFP_ENABLE is not set
|
# CONFIG_BT_HFP_ENABLE is not set
|
||||||
CONFIG_BT_SSP_ENABLED=y
|
CONFIG_BT_SSP_ENABLED=y
|
||||||
<<<<<<< HEAD
|
|
||||||
# CONFIG_BT_BLE_ENABLED is not set
|
# CONFIG_BT_BLE_ENABLED is not set
|
||||||
CONFIG_BT_STACK_NO_LOG=y
|
|
||||||
=======
|
|
||||||
CONFIG_BT_BLE_ENABLED=n
|
CONFIG_BT_BLE_ENABLED=n
|
||||||
CONFIG_BT_BLE_SMP_ENABLE=y
|
CONFIG_BT_BLE_SMP_ENABLE=y
|
||||||
|
CONFIG_BT_STACK_NO_LOG=n
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_HCI_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_HCI_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BTM_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BTM_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_L2CAP_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_SDP_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_SDP_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_GAP_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_GAP_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BNEP_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BNEP_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_PAN_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_PAN_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_A2D_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_A2D_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_AVDT_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_AVDT_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_AVCT_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_AVCT_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_AVRC_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_AVRC_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_MCA_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_MCA_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_HID_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_HID_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_APPL_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_APPL_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_GATT_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_GATT_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_SMP_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_SMP_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BTIF_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BTIF_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BTC_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BTC_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_OSI_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_OSI_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL=2
|
|
||||||
>>>>>>> refs/remotes/origin/master
|
|
||||||
CONFIG_BT_ACL_CONNECTIONS=4
|
CONFIG_BT_ACL_CONNECTIONS=4
|
||||||
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y
|
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y
|
||||||
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=y
|
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=y
|
||||||
@@ -507,11 +334,6 @@ CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=40
|
|||||||
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER=y
|
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER=y
|
||||||
CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=0
|
CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=0
|
||||||
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=12
|
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=12
|
||||||
# CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED is not set
|
|
||||||
# CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED is not set
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_ESP32_WIFI_NVS_ENABLED=y
|
CONFIG_ESP32_WIFI_NVS_ENABLED=y
|
||||||
CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y
|
CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y
|
||||||
@@ -633,19 +455,11 @@ CONFIG_LWIP_MAX_SOCKETS=16
|
|||||||
# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
|
# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
|
||||||
CONFIG_LWIP_SO_REUSE=y
|
CONFIG_LWIP_SO_REUSE=y
|
||||||
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
||||||
<<<<<<< HEAD
|
|
||||||
# CONFIG_LWIP_SO_RCVBUF is not set
|
# CONFIG_LWIP_SO_RCVBUF is not set
|
||||||
# CONFIG_LWIP_IP_FRAG is not set
|
# CONFIG_LWIP_IP_FRAG is not set
|
||||||
# CONFIG_LWIP_IP_REASSEMBLY is not set
|
#CONFIG_LWIP_IP_REASSEMBLY is not set
|
||||||
# CONFIG_LWIP_STATS is not set
|
# CONFIG_LWIP_STATS is not set
|
||||||
# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
|
# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
|
||||||
=======
|
|
||||||
CONFIG_LWIP_IP_REASSEMBLY=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
>>>>>>> refs/remotes/origin/master
|
|
||||||
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
||||||
CONFIG_LWIP_GARP_TMR_INTERVAL=60
|
CONFIG_LWIP_GARP_TMR_INTERVAL=60
|
||||||
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
||||||
|
|||||||
@@ -180,183 +180,10 @@ CONFIG_BT_A2DP_ENABLE=y
|
|||||||
# CONFIG_BT_SPP_ENABLED is not set
|
# CONFIG_BT_SPP_ENABLED is not set
|
||||||
# CONFIG_BT_HFP_ENABLE is not set
|
# CONFIG_BT_HFP_ENABLE is not set
|
||||||
CONFIG_BT_SSP_ENABLED=y
|
CONFIG_BT_SSP_ENABLED=y
|
||||||
<<<<<<< HEAD
|
|
||||||
# CONFIG_BT_BLE_ENABLED is not set
|
# CONFIG_BT_BLE_ENABLED is not set
|
||||||
CONFIG_BT_STACK_NO_LOG=y
|
CONFIG_BT_STACK_NO_LOG=n
|
||||||
=======
|
|
||||||
CONFIG_BT_BLE_ENABLED=n
|
CONFIG_BT_BLE_ENABLED=n
|
||||||
CONFIG_BT_BLE_SMP_ENABLE=y
|
CONFIG_BT_BLE_SMP_ENABLE=y
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_HCI_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_HCI_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BTM_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BTM_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_L2CAP_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_SDP_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_SDP_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_GAP_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_GAP_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BNEP_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BNEP_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_PAN_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_PAN_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_A2D_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_A2D_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_AVDT_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_AVDT_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_AVCT_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_AVCT_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_AVRC_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_AVRC_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_MCA_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_MCA_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_HID_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_HID_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_APPL_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_APPL_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_GATT_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_GATT_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_SMP_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_SMP_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BTIF_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BTIF_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BTC_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BTC_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_OSI_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_OSI_TRACE_LEVEL=2
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_WARNING=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL=2
|
|
||||||
>>>>>>> refs/remotes/origin/master
|
|
||||||
CONFIG_BT_ACL_CONNECTIONS=4
|
CONFIG_BT_ACL_CONNECTIONS=4
|
||||||
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y
|
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y
|
||||||
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=y
|
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=y
|
||||||
@@ -630,19 +457,7 @@ CONFIG_LWIP_MAX_SOCKETS=16
|
|||||||
# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
|
# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
|
||||||
CONFIG_LWIP_SO_REUSE=y
|
CONFIG_LWIP_SO_REUSE=y
|
||||||
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
||||||
<<<<<<< HEAD
|
#CONFIG_LWIP_IP_REASSEMBLY is not set
|
||||||
# CONFIG_LWIP_SO_RCVBUF is not set
|
|
||||||
# CONFIG_LWIP_IP_FRAG is not set
|
|
||||||
# CONFIG_LWIP_IP_REASSEMBLY is not set
|
|
||||||
# CONFIG_LWIP_STATS is not set
|
|
||||||
# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
|
|
||||||
=======
|
|
||||||
CONFIG_LWIP_IP_REASSEMBLY=y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
>>>>>>> refs/remotes/origin/master
|
|
||||||
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
||||||
CONFIG_LWIP_GARP_TMR_INTERVAL=60
|
CONFIG_LWIP_GARP_TMR_INTERVAL=60
|
||||||
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "bt_app_core.h"
|
#include "bt_app_core.h"
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "esp_system.h"
|
#include "esp_system.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|||||||
@@ -15,9 +15,29 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#define BT_APP_CORE_TAG "BT_APP_CORE"
|
#define BT_APP_CORE_TAG "BT_APP_CORE"
|
||||||
|
|
||||||
#define BT_APP_SIG_WORK_DISPATCH (0x01)
|
#define BT_APP_SIG_WORK_DISPATCH (0x01)
|
||||||
|
|
||||||
|
/* A2DP global state */
|
||||||
|
enum {
|
||||||
|
APP_AV_STATE_IDLE,
|
||||||
|
APP_AV_STATE_DISCOVERING,
|
||||||
|
APP_AV_STATE_DISCOVERED,
|
||||||
|
APP_AV_STATE_UNCONNECTED,
|
||||||
|
APP_AV_STATE_CONNECTING,
|
||||||
|
APP_AV_STATE_CONNECTED,
|
||||||
|
APP_AV_STATE_DISCONNECTING,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* sub states of APP_AV_STATE_CONNECTED */
|
||||||
|
enum {
|
||||||
|
APP_AV_MEDIA_STATE_IDLE,
|
||||||
|
APP_AV_MEDIA_STATE_STARTING,
|
||||||
|
APP_AV_MEDIA_STATE_STARTED,
|
||||||
|
APP_AV_MEDIA_STATE_STOPPING,
|
||||||
|
APP_AV_MEDIA_STATE_WAIT_DISCONNECT
|
||||||
|
};
|
||||||
|
extern int bt_app_source_get_a2d_state();
|
||||||
|
extern int bt_app_source_get_media_state();
|
||||||
/**
|
/**
|
||||||
* @brief handler for the dispatched work
|
* @brief handler for the dispatched work
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ static void bt_av_hdl_avrc_ct_evt(uint16_t event, void *p_param);
|
|||||||
/* avrc TG event handler */
|
/* avrc TG event handler */
|
||||||
static void bt_av_hdl_avrc_tg_evt(uint16_t event, void *p_param);
|
static void bt_av_hdl_avrc_tg_evt(uint16_t event, void *p_param);
|
||||||
static void volume_set_by_local_host(uint8_t volume);
|
static void volume_set_by_local_host(uint8_t volume);
|
||||||
|
static void bt_av_notify_evt_handler(uint8_t event_id, esp_avrc_rn_param_t *event_parameter);
|
||||||
|
|
||||||
static const char *s_a2d_conn_state_str[] = {"Disconnected", "Connecting", "Connected", "Disconnecting"};
|
static const char *s_a2d_conn_state_str[] = {"Disconnected", "Connecting", "Connected", "Disconnecting"};
|
||||||
static const char *s_a2d_audio_state_str[] = {"Suspended", "Stopped", "Started"};
|
static const char *s_a2d_audio_state_str[] = {"Suspended", "Stopped", "Started"};
|
||||||
@@ -378,7 +379,7 @@ static void bt_av_play_pos_changed(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void bt_av_notify_evt_handler(uint8_t event_id, esp_avrc_rn_param_t *event_parameter)
|
static void bt_av_notify_evt_handler(uint8_t event_id, esp_avrc_rn_param_t *event_parameter)
|
||||||
{
|
{
|
||||||
switch (event_id) {
|
switch (event_id) {
|
||||||
case ESP_AVRC_RN_TRACK_CHANGE:
|
case ESP_AVRC_RN_TRACK_CHANGE:
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -23,6 +23,7 @@ const char * desc_squeezelite ="Squeezelite Options";
|
|||||||
const char * desc_dac= "DAC Options";
|
const char * desc_dac= "DAC Options";
|
||||||
const char * desc_spdif= "SPDIF Options";
|
const char * desc_spdif= "SPDIF Options";
|
||||||
const char * desc_audio= "General Audio Options";
|
const char * desc_audio= "General Audio Options";
|
||||||
|
const char * desc_bt_source= "Bluetooth Audio Output Options";
|
||||||
|
|
||||||
|
|
||||||
#define CODECS_BASE "flac|pcm|mp3|ogg"
|
#define CODECS_BASE "flac|pcm|mp3|ogg"
|
||||||
@@ -59,7 +60,14 @@ const char * desc_audio= "General Audio Options";
|
|||||||
#define CODECS CODECS_BASE CODECS_AAC CODECS_FF CODECS_DSD CODECS_MP3
|
#define CODECS CODECS_BASE CODECS_AAC CODECS_FF CODECS_DSD CODECS_MP3
|
||||||
#define NOT_OUTPUT "has input capabilities only"
|
#define NOT_OUTPUT "has input capabilities only"
|
||||||
#define NOT_GPIO "is not a GPIO"
|
#define NOT_GPIO "is not a GPIO"
|
||||||
|
typedef enum {
|
||||||
|
SEARCHING_FOR_BT,
|
||||||
|
SEARCHING_FOR_NAME,
|
||||||
|
SEARCHING_FOR_NAME_START,
|
||||||
|
SEARCHING_FOR_NAME_END,
|
||||||
|
SEARCHING_FOR_BT_CMD_END,
|
||||||
|
FINISHING
|
||||||
|
} parse_state_t;
|
||||||
static const char *TAG = "cmd_config";
|
static const char *TAG = "cmd_config";
|
||||||
extern struct arg_end *getParmsEnd(struct arg_hdr * * argtable);
|
extern struct arg_end *getParmsEnd(struct arg_hdr * * argtable);
|
||||||
//bck=<gpio>,ws=<gpio>,do=<gpio>[,mute=<gpio>[:0|1][,model=TAS57xx|TAS5713|AC101|I2S][,sda=<gpio>,scl=gpio[,i2c=<addr>]]
|
//bck=<gpio>,ws=<gpio>,do=<gpio>[,mute=<gpio>[:0|1][,model=TAS57xx|TAS5713|AC101|I2S][,sda=<gpio>,scl=gpio[,i2c=<addr>]]
|
||||||
@@ -76,6 +84,15 @@ static struct {
|
|||||||
struct arg_lit *clear;
|
struct arg_lit *clear;
|
||||||
struct arg_end *end;
|
struct arg_end *end;
|
||||||
} i2s_args;
|
} i2s_args;
|
||||||
|
|
||||||
|
static struct{
|
||||||
|
struct arg_str *sink_name;
|
||||||
|
struct arg_str *pin_code;
|
||||||
|
// struct arg_dbl *connect_timeout_delay;
|
||||||
|
// struct arg_dbl *control_delay;
|
||||||
|
struct arg_end *end;
|
||||||
|
} bt_source_args;
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
struct arg_int *clock;
|
struct arg_int *clock;
|
||||||
struct arg_int *wordselect;
|
struct arg_int *wordselect;
|
||||||
@@ -155,7 +172,224 @@ int check_missing_parm(struct arg_int * int_parm, FILE * f){
|
|||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
char * strip_bt_name(char * opt_str)
|
||||||
|
{
|
||||||
|
char *result = malloc(strlen(opt_str)+1);
|
||||||
|
memset(result, 0x00, strlen(opt_str)+1);
|
||||||
|
char *str = strdup(opt_str);
|
||||||
|
const char * output_marker=" -o";
|
||||||
|
|
||||||
|
if(!result ){
|
||||||
|
ESP_LOGE(TAG,"Error allocating memory for result.");
|
||||||
|
return opt_str;
|
||||||
|
}
|
||||||
|
if(!str){
|
||||||
|
ESP_LOGE(TAG,"Error duplicating command line string.");
|
||||||
|
return opt_str;
|
||||||
|
}
|
||||||
|
bool quoted=false;
|
||||||
|
parse_state_t state = SEARCHING_FOR_BT;
|
||||||
|
char *start = strstr(str, output_marker);
|
||||||
|
if (start)
|
||||||
|
{
|
||||||
|
ESP_LOGV(TAG,"Found output option : %s\n",start);
|
||||||
|
start+=strlen(output_marker);
|
||||||
|
strncpy(result, str, (size_t)(start - str));
|
||||||
|
char * pch=strtok(start," ");
|
||||||
|
while(pch){
|
||||||
|
ESP_LOGV(TAG,"Current output: %s\n[%s]",result,pch);
|
||||||
|
switch (state)
|
||||||
|
{
|
||||||
|
case SEARCHING_FOR_BT:
|
||||||
|
if (strcasestr(pch, "BT") )
|
||||||
|
{
|
||||||
|
state = SEARCHING_FOR_NAME;
|
||||||
|
quoted=strcasestr(pch, "BT")!=NULL;
|
||||||
|
ESP_LOGV(TAG," - fount BT Start %s", quoted?"quoted":"");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ESP_LOGV(TAG," - Searching for BT, Ignoring");
|
||||||
|
}
|
||||||
|
strcat(result, " ");
|
||||||
|
strcat(result, pch);
|
||||||
|
break;
|
||||||
|
case SEARCHING_FOR_NAME:
|
||||||
|
if (strcasestr(pch, "name") || strcasestr(pch, "n"))
|
||||||
|
{
|
||||||
|
ESP_LOGV(TAG," - Found name tag");
|
||||||
|
state = SEARCHING_FOR_NAME_START;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strcat(result, " ");
|
||||||
|
strcat(result, pch);
|
||||||
|
ESP_LOGV(TAG," - Searching for name - added ");;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SEARCHING_FOR_NAME_START:
|
||||||
|
ESP_LOGV(TAG," - Name start");
|
||||||
|
state = SEARCHING_FOR_NAME_END;
|
||||||
|
break;
|
||||||
|
case SEARCHING_FOR_NAME_END:
|
||||||
|
if (strcasestr(pch, "\"")){
|
||||||
|
ESP_LOGV(TAG," - got quoted string");
|
||||||
|
state = FINISHING;
|
||||||
|
}
|
||||||
|
else if(pch[0]== '-'){
|
||||||
|
strcat(result, " ");
|
||||||
|
strcat(result, pch);
|
||||||
|
ESP_LOGV(TAG," - got parameter marker");
|
||||||
|
state = quoted?SEARCHING_FOR_BT_CMD_END:FINISHING;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ESP_LOGV(TAG," - name continued");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SEARCHING_FOR_BT_CMD_END:
|
||||||
|
ESP_LOGV(TAG," - looking for quoted BT cmd end");
|
||||||
|
if (strcasestr(pch, "\"")){
|
||||||
|
ESP_LOGV(TAG," - got quote termination");
|
||||||
|
state = FINISHING;
|
||||||
|
}
|
||||||
|
strcat(result, " ");
|
||||||
|
strcat(result, pch);
|
||||||
|
break;
|
||||||
|
case FINISHING:
|
||||||
|
strcat(result, " ");
|
||||||
|
strcat(result, pch);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pch = strtok(NULL, " ");
|
||||||
|
ESP_LOGV(TAG,"\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG,"output option not found in %s\n",str);
|
||||||
|
strcpy(result,str);
|
||||||
|
}
|
||||||
|
|
||||||
|
ESP_LOGV(TAG,"Result commmand : %s\n", result);
|
||||||
|
free(str);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int do_bt_source_cmd(int argc, char **argv){
|
||||||
|
esp_err_t err=ESP_OK;
|
||||||
|
int nerrors = arg_parse(argc, argv,(void **)&bt_source_args);
|
||||||
|
char *buf = NULL;
|
||||||
|
size_t buf_size = 0;
|
||||||
|
// char value[100] ={0};
|
||||||
|
FILE *f = open_memstream(&buf, &buf_size);
|
||||||
|
if (f == NULL) {
|
||||||
|
cmd_send_messaging(argv[0],MESSAGING_ERROR,"Unable to open memory stream.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if(nerrors >0){
|
||||||
|
arg_print_errors(f,bt_source_args.end,desc_bt_source);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(bt_source_args.sink_name->count >0){
|
||||||
|
err = config_set_value(NVS_TYPE_STR, "a2dp_sink_name", bt_source_args.sink_name->sval[0]);
|
||||||
|
if(err!=ESP_OK){
|
||||||
|
nerrors++;
|
||||||
|
fprintf(f,"Error setting Bluetooth audio device name %s. %s\n",bt_source_args.sink_name->sval[0], esp_err_to_name(err));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fprintf(f,"Bluetooth audio device name changed to %s\n",bt_source_args.sink_name->sval[0]);
|
||||||
|
}
|
||||||
|
char * squeezelite_cmd = config_alloc_get_default(NVS_TYPE_STR, "autoexec1", NULL, 0);
|
||||||
|
if( squeezelite_cmd && strstr(squeezelite_cmd," -o ") ){
|
||||||
|
char * new_cmd = strip_bt_name(squeezelite_cmd);
|
||||||
|
if(strcmp(new_cmd,squeezelite_cmd)!=0){
|
||||||
|
fprintf(f,"Replacing old squeezelite command [%s] with [%s].\n",squeezelite_cmd,new_cmd);
|
||||||
|
config_set_value(NVS_TYPE_STR, "autoexec1", new_cmd);
|
||||||
|
if(err!=ESP_OK){
|
||||||
|
nerrors++;
|
||||||
|
fprintf(f,"Error updating squeezelite command line options . %s\n", esp_err_to_name(err));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(squeezelite_cmd);
|
||||||
|
free(new_cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if(bt_source_args.pin_code->count >0){
|
||||||
|
const char * v=bt_source_args.pin_code->sval[0];
|
||||||
|
bool bInvalid=false;
|
||||||
|
for(int i=0;i<strlen(v) && !bInvalid;i++){
|
||||||
|
if(v[i]<'0' || v[i]>'9'){
|
||||||
|
bInvalid=true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(bInvalid || strlen(bt_source_args.pin_code->sval[0])>16 || strlen(bt_source_args.pin_code->sval[0])<4){
|
||||||
|
nerrors++;
|
||||||
|
fprintf(f,"Pin code %s invalid. Should be numbers only with length between 4 and 16 characters. \n",bt_source_args.pin_code->sval[0]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
err = config_set_value(NVS_TYPE_STR, "a2dp_spin", bt_source_args.pin_code->sval[0]);
|
||||||
|
if(err!=ESP_OK){
|
||||||
|
nerrors++;
|
||||||
|
fprintf(f,"Error setting Bluetooth source pin to %s. %s\n",bt_source_args.pin_code->sval[0], esp_err_to_name(err));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fprintf(f,"Bluetooth source pin changed to %s\n",bt_source_args.pin_code->sval[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// if(bt_source_args.connect_timeout_delay->count >0){
|
||||||
|
|
||||||
|
// snprintf(value,sizeof(value),"%d",(int)(bt_source_args.connect_timeout_delay->dval[0]*1000.0));
|
||||||
|
// if(bt_source_args.connect_timeout_delay->dval[0] <0.5 || bt_source_args.connect_timeout_delay->dval[0] >5.0){
|
||||||
|
// nerrors++;
|
||||||
|
// fprintf(f,"Invalid connection timeout %0.0f (%s milliseconds). Value must be between 0.5 sec and 5 sec.\n", bt_source_args.connect_timeout_delay->dval[0], value );
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// err = config_set_value(NVS_TYPE_STR, "a2dp_ctmt", value);
|
||||||
|
// if(err!=ESP_OK){
|
||||||
|
// nerrors++;
|
||||||
|
// fprintf(f,"Error setting connection timeout %0.0f sec (%s milliseconds). %s\n", bt_source_args.connect_timeout_delay->dval[0],value, esp_err_to_name(err));
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// fprintf(f,"Connection timeout changed to %0.0f sec (%s milliseconds)\n",bt_source_args.connect_timeout_delay->dval[0],value);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if(bt_source_args.control_delay->count >0){
|
||||||
|
// snprintf(value,sizeof(value),"%d",(int)(bt_source_args.control_delay->dval[0]*1000.0));
|
||||||
|
// if(bt_source_args.control_delay->dval[0] <0.1 || bt_source_args.control_delay->dval[0] >2.0){
|
||||||
|
// nerrors++;
|
||||||
|
// fprintf(f,"Invalid control delay %0.0f (%s milliseconds). Value must be between 0.1s and 2s.\n", bt_source_args.control_delay->dval[0], value );
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// err = config_set_value(NVS_TYPE_STR, "a2dp_ctrld", value);
|
||||||
|
// if(err!=ESP_OK){
|
||||||
|
// nerrors++;
|
||||||
|
// fprintf(f,"Error setting control delay to %0.0f sec (%s milliseconds). %s\n",bt_source_args.control_delay->dval[0],value, esp_err_to_name(err));
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// fprintf(f,"Control delay changed to %0.0f sec (%s milliseconds)\n",bt_source_args.control_delay->dval[0],value);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
if(!nerrors ){
|
||||||
|
fprintf(f,"Done.\n");
|
||||||
|
}
|
||||||
|
fflush (f);
|
||||||
|
cmd_send_messaging(argv[0],nerrors>0?MESSAGING_ERROR:MESSAGING_INFO,"%s", buf);
|
||||||
|
fclose(f);
|
||||||
|
FREE_AND_NULL(buf);
|
||||||
|
return (nerrors==0 && err==ESP_OK)?0:1;
|
||||||
|
|
||||||
|
}
|
||||||
static int do_audio_cmd(int argc, char **argv){
|
static int do_audio_cmd(int argc, char **argv){
|
||||||
esp_err_t err=ESP_OK;
|
esp_err_t err=ESP_OK;
|
||||||
int nerrors = arg_parse(argc, argv,(void **)&audio_args);
|
int nerrors = arg_parse(argc, argv,(void **)&audio_args);
|
||||||
@@ -399,6 +633,30 @@ cJSON * audio_cb(){
|
|||||||
FREE_AND_NULL(p);
|
FREE_AND_NULL(p);
|
||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
cJSON * bt_source_cb(){
|
||||||
|
cJSON * values = cJSON_CreateObject();
|
||||||
|
char * p = config_alloc_get_default(NVS_TYPE_STR, "a2dp_sink_name", NULL, 0);
|
||||||
|
if(p){
|
||||||
|
cJSON_AddStringToObject(values,"sink_name",p);
|
||||||
|
}
|
||||||
|
FREE_AND_NULL(p);
|
||||||
|
// p = config_alloc_get_default(NVS_TYPE_STR, "a2dp_ctmt", NULL, 0);
|
||||||
|
// if(p){
|
||||||
|
// cJSON_AddNumberToObject(values,"connect_timeout_delay",((double)atoi(p)/1000.0));
|
||||||
|
// }
|
||||||
|
// FREE_AND_NULL(p);
|
||||||
|
p = config_alloc_get_default(NVS_TYPE_STR, "a2dp_spin", "0000", 0);
|
||||||
|
if(p){
|
||||||
|
cJSON_AddStringToObject(values,"pin_code",p);
|
||||||
|
}
|
||||||
|
FREE_AND_NULL(p);
|
||||||
|
// p = config_alloc_get_default(NVS_TYPE_STR, "a2dp_ctrld", NULL, 0);
|
||||||
|
// if(p){
|
||||||
|
// cJSON_AddNumberToObject(values,"control_delay",((double)atoi(p)/1000.0));
|
||||||
|
// }
|
||||||
|
// FREE_AND_NULL(p);
|
||||||
|
return values;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void get_str_parm_json(struct arg_str * parm, cJSON * entry){
|
void get_str_parm_json(struct arg_str * parm, cJSON * entry){
|
||||||
@@ -541,6 +799,24 @@ static void register_i2s_config(void){
|
|||||||
ESP_ERROR_CHECK(esp_console_cmd_register(&cmd));
|
ESP_ERROR_CHECK(esp_console_cmd_register(&cmd));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void register_bt_source_config(void){
|
||||||
|
|
||||||
|
bt_source_args.sink_name= arg_str1("n","sink_name", "name","Bluetooth audio device name. This applies when output mode is Bluetooth");
|
||||||
|
bt_source_args.pin_code= arg_str1("p","pin_code", "pin","Bluetooth security/pin code. Usually 0000. This applies when output mode is Bluetooth");
|
||||||
|
// bt_source_args.control_delay= arg_dbl0("d","control_delay","seconds","Control response delay, in seconds. This determines the response time of the system Bluetooth events. The default value should work for the majority of cases and changing this could lead to instabilities.");
|
||||||
|
// bt_source_args.connect_timeout_delay= arg_dbl0("t","connect_timeout_delay","seconds","Connection timeout. Determines the maximum amount of time, in seconds, that the system will wait when connecting to a bluetooth device. Beyond this delay, a new connect attempt will be made.");
|
||||||
|
bt_source_args.end= arg_end(1);
|
||||||
|
const esp_console_cmd_t cmd = {
|
||||||
|
.command = CFG_TYPE_AUDIO("bt_source"),
|
||||||
|
.help = desc_bt_source,
|
||||||
|
.hint = NULL,
|
||||||
|
.func = &do_bt_source_cmd,
|
||||||
|
.argtable = &bt_source_args
|
||||||
|
};
|
||||||
|
cmd_to_json_with_cb(&cmd,&bt_source_cb);
|
||||||
|
ESP_ERROR_CHECK(esp_console_cmd_register(&cmd));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void register_audio_config(void){
|
static void register_audio_config(void){
|
||||||
audio_args.jack_behavior = arg_str0("j", "jack_behavior","Headphones|Subwoofer","On supported DAC, determines the audio jack behavior. Selecting headphones will cause the external amp to be muted on insert, while selecting Subwoofer will keep the amp active all the time.");
|
audio_args.jack_behavior = arg_str0("j", "jack_behavior","Headphones|Subwoofer","On supported DAC, determines the audio jack behavior. Selecting headphones will cause the external amp to be muted on insert, while selecting Subwoofer will keep the amp active all the time.");
|
||||||
@@ -616,6 +892,7 @@ static void register_squeezelite_config(void){
|
|||||||
void register_config_cmd(void){
|
void register_config_cmd(void){
|
||||||
register_audio_config();
|
register_audio_config();
|
||||||
// register_squeezelite_config();
|
// register_squeezelite_config();
|
||||||
|
register_bt_source_config();
|
||||||
register_i2s_config();
|
register_i2s_config();
|
||||||
register_spdif_config();
|
register_spdif_config();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,10 @@
|
|||||||
#include "platform_console.h"
|
#include "platform_console.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
#ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS
|
#ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS
|
||||||
|
#pragma message("Runtime stats enabled")
|
||||||
#define WITH_TASKS_INFO 1
|
#define WITH_TASKS_INFO 1
|
||||||
|
#else
|
||||||
|
#pragma message("Runtime stats disabled")
|
||||||
#endif
|
#endif
|
||||||
static struct {
|
static struct {
|
||||||
struct arg_str *scanmode;
|
struct arg_str *scanmode;
|
||||||
|
|||||||
@@ -40,6 +40,8 @@ static struct {
|
|||||||
.cells = 2,
|
.cells = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern void wifi_manager_update_status();
|
||||||
|
|
||||||
/****************************************************************************************
|
/****************************************************************************************
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -64,6 +66,7 @@ static void battery_callback(TimerHandle_t xTimer) {
|
|||||||
battery.avg = battery.sum / battery.count;
|
battery.avg = battery.sum / battery.count;
|
||||||
battery.sum = battery.count = 0;
|
battery.sum = battery.count = 0;
|
||||||
ESP_LOGI(TAG, "Voltage %.2fV", battery.avg);
|
ESP_LOGI(TAG, "Voltage %.2fV", battery.avg);
|
||||||
|
wifi_manager_update_status();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,8 @@ typedef enum {
|
|||||||
MESSAGING_CLASS_OTA,
|
MESSAGING_CLASS_OTA,
|
||||||
MESSAGING_CLASS_SYSTEM,
|
MESSAGING_CLASS_SYSTEM,
|
||||||
MESSAGING_CLASS_STATS,
|
MESSAGING_CLASS_STATS,
|
||||||
MESSAGING_CLASS_CFGCMD
|
MESSAGING_CLASS_CFGCMD,
|
||||||
|
MESSAGING_CLASS_BT
|
||||||
} messaging_classes;
|
} messaging_classes;
|
||||||
|
|
||||||
typedef struct messaging_list_t *messaging_handle_t;
|
typedef struct messaging_list_t *messaging_handle_t;
|
||||||
|
|||||||
@@ -41,11 +41,14 @@ bool jack_inserted_svc(void);
|
|||||||
void (*spkfault_handler_svc)(bool inserted);
|
void (*spkfault_handler_svc)(bool inserted);
|
||||||
bool spkfault_svc(void);
|
bool spkfault_svc(void);
|
||||||
|
|
||||||
|
extern void wifi_manager_update_status();
|
||||||
|
|
||||||
/****************************************************************************************
|
/****************************************************************************************
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static void task_stats( cJSON* top ) {
|
static void task_stats( cJSON* top ) {
|
||||||
#ifdef CONFIG_FREERTOS_USE_TRACE_FACILITY
|
#ifdef CONFIG_FREERTOS_USE_TRACE_FACILITY
|
||||||
|
#pragma message("Compiled with trace facility")
|
||||||
static struct {
|
static struct {
|
||||||
TaskStatus_t *tasks;
|
TaskStatus_t *tasks;
|
||||||
uint32_t total, n;
|
uint32_t total, n;
|
||||||
@@ -60,6 +63,7 @@ static void task_stats( cJSON* top ) {
|
|||||||
*scratch = '\0';
|
*scratch = '\0';
|
||||||
|
|
||||||
#ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS
|
#ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS
|
||||||
|
#pragma message("Compiled with runtime stats")
|
||||||
uint32_t elapsed = current.total - previous.total;
|
uint32_t elapsed = current.total - previous.total;
|
||||||
|
|
||||||
for(int i = 0, n = 0; i < current.n; i++ ) {
|
for(int i = 0, n = 0; i < current.n; i++ ) {
|
||||||
@@ -87,6 +91,8 @@ static void task_stats( cJSON* top ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
#pragma message("Compiled WITHOUT runtime stats")
|
||||||
|
|
||||||
for (int i = 0, n = 0; i < current.n; i ++) {
|
for (int i = 0, n = 0; i < current.n; i ++) {
|
||||||
n += sprintf(scratch + n, "%16s s:%5u\t", current.tasks[i].pcTaskName, current.tasks[i].usStackHighWaterMark);
|
n += sprintf(scratch + n, "%16s s:%5u\t", current.tasks[i].pcTaskName, current.tasks[i].usStackHighWaterMark);
|
||||||
cJSON * t=cJSON_CreateObject();
|
cJSON * t=cJSON_CreateObject();
|
||||||
@@ -106,6 +112,8 @@ static void task_stats( cJSON* top ) {
|
|||||||
cJSON_AddItemToObject(top,"tasks",tlist);
|
cJSON_AddItemToObject(top,"tasks",tlist);
|
||||||
if (previous.tasks) free(previous.tasks);
|
if (previous.tasks) free(previous.tasks);
|
||||||
previous = current;
|
previous = current;
|
||||||
|
#else
|
||||||
|
#pragma message("Compiled WITHOUT trace facility")
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,6 +148,7 @@ static void monitor_callback(TimerHandle_t xTimer) {
|
|||||||
static void jack_handler_default(void *id, button_event_e event, button_press_e mode, bool long_press) {
|
static void jack_handler_default(void *id, button_event_e event, button_press_e mode, bool long_press) {
|
||||||
ESP_LOGD(TAG, "Jack %s", event == BUTTON_PRESSED ? "inserted" : "removed");
|
ESP_LOGD(TAG, "Jack %s", event == BUTTON_PRESSED ? "inserted" : "removed");
|
||||||
messaging_post_message(MESSAGING_INFO, MESSAGING_CLASS_SYSTEM,"jack is %s",BUTTON_PRESSED ? "inserted" : "removed");
|
messaging_post_message(MESSAGING_INFO, MESSAGING_CLASS_SYSTEM,"jack is %s",BUTTON_PRESSED ? "inserted" : "removed");
|
||||||
|
wifi_manager_update_status();
|
||||||
if (jack_handler_svc) (*jack_handler_svc)(event == BUTTON_PRESSED);
|
if (jack_handler_svc) (*jack_handler_svc)(event == BUTTON_PRESSED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ void output_init_embedded(log_level level, char *device, unsigned output_buf_siz
|
|||||||
output.start_frames = FRAME_BLOCK;
|
output.start_frames = FRAME_BLOCK;
|
||||||
output.rate_delay = rate_delay;
|
output.rate_delay = rate_delay;
|
||||||
|
|
||||||
if (strcasestr(device, "BT ")) {
|
if (strcasestr(device, "BT ") || !strcasecmp(device, "BT")) {
|
||||||
LOG_INFO("init Bluetooth");
|
LOG_INFO("init Bluetooth");
|
||||||
close_cb = &output_close_bt;
|
close_cb = &output_close_bt;
|
||||||
output_init_bt(level, device, output_buf_size, params, rates, rate_delay, idle);
|
output_init_bt(level, device, output_buf_size, params, rates, rate_delay, idle);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
idf_component_register( SRC_DIRS .
|
idf_component_register( SRC_DIRS .
|
||||||
INCLUDE_DIRS . ${IDF_PATH}/components/esp_http_server/src ${IDF_PATH}/components/esp_http_server/src/port/esp32 ${IDF_PATH}/components/esp_http_server/src/util ${IDF_PATH}/components/esp_http_server/src/
|
INCLUDE_DIRS . ${IDF_PATH}/components/esp_http_server/src ${IDF_PATH}/components/esp_http_server/src/port/esp32 ${IDF_PATH}/components/esp_http_server/src/util ${IDF_PATH}/components/esp_http_server/src/
|
||||||
REQUIRES squeezelite-ota json mdns
|
REQUIRES squeezelite-ota json mdns
|
||||||
PRIV_REQUIRES tools services platform_config esp_common json newlib freertos spi_flash nvs_flash mdns pthread wpa_supplicant platform_console esp_http_server console
|
PRIV_REQUIRES tools services platform_config esp_common json newlib freertos spi_flash nvs_flash mdns pthread wpa_supplicant platform_console esp_http_server console driver_bt
|
||||||
EMBED_FILES res/style.css.gz res/code.js.gz index.html res/bootstrap.css.gz res/yeti/bootstrap.css.gz res/jquery.js.gz res/bootstrap.js.gz res/favicon.ico
|
EMBED_FILES res/style.css.gz res/code.js.gz index.html res/bootstrap.css.gz res/yeti/bootstrap.css.gz res/jquery.js.gz res/bootstrap.js.gz res/favicon.ico
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -548,7 +548,7 @@ esp_err_t ap_get_handler(httpd_req_t *req){
|
|||||||
}
|
}
|
||||||
/* if we can get the mutex, write the last version of the AP list */
|
/* if we can get the mutex, write the last version of the AP list */
|
||||||
esp_err_t err = set_content_type_from_req(req);
|
esp_err_t err = set_content_type_from_req(req);
|
||||||
if( err == ESP_OK && wifi_manager_lock_json_buffer(( TickType_t ) 10)){
|
if( err == ESP_OK && wifi_manager_lock_json_buffer(( TickType_t ) 200/portTICK_PERIOD_MS)){
|
||||||
char *buff = wifi_manager_alloc_get_ap_list_json();
|
char *buff = wifi_manager_alloc_get_ap_list_json();
|
||||||
wifi_manager_unlock_json_buffer();
|
wifi_manager_unlock_json_buffer();
|
||||||
if(buff!=NULL){
|
if(buff!=NULL){
|
||||||
@@ -1168,7 +1168,7 @@ esp_err_t status_get_handler(httpd_req_t *req){
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(wifi_manager_lock_json_buffer(( TickType_t ) 10)) {
|
if(wifi_manager_lock_json_buffer(( TickType_t ) 200/portTICK_PERIOD_MS)) {
|
||||||
char *buff = wifi_manager_alloc_get_ip_info_json();
|
char *buff = wifi_manager_alloc_get_ip_info_json();
|
||||||
wifi_manager_unlock_json_buffer();
|
wifi_manager_unlock_json_buffer();
|
||||||
if(buff) {
|
if(buff) {
|
||||||
|
|||||||
@@ -20,21 +20,18 @@
|
|||||||
<path d="m 16.074253,15.636738 v -1.05413 h 5.893274 c 1.16249,0 2.108261,-0.855111 2.108261,-1.906183 0,-1.051073 -0.945771,-1.906236 -2.108261,-1.906236 H 16.074253 V 9.7160604 c 0,-0.5812492 -0.472879,-1.0541321 -1.054131,-1.0541321 H 6.7847349 c -1.256731,0 -2.301908,0.9212057 -2.496867,2.1237027 h -0.451896 c -0.540407,0 -1.001317,0.349129 -1.173459,0.835611 H 0.47312787 c -0.23285,0 -0.42164599,0.188794 -0.42164599,0.421651 v 1.251779 c 0,0.232857 0.18879599,0.421652 0.42164599,0.421652 H 2.6550809 c 0.165919,0.497866 0.632365,0.857588 1.180831,0.857588 h 0.45312 c 0.19781,1.199177 1.241345,2.116956 2.495659,2.116956 h 8.2353861 c 0.581297,0 1.054176,-0.472883 1.054176,-1.05413 z m 5.060935,-4.023245 v 2.125811 h -0.844935 v -2.125811 z m 2.097293,1.062932 c 0,0.582933 -0.561524,1.057661 -1.253986,1.062668 v -2.125337 c 0.692462,0.0049 1.253986,0.47963 1.253986,1.062669 z m -3.785535,-1.062932 v 2.125811 h -3.372693 v -2.125811 z m -18.55215712,0.851 H 2.5901939 v 0.408475 H 0.89478888 Z m 2.94118302,1.266114 c -0.221897,0 -0.40247,-0.185737 -0.40247,-0.414062 v -1.273547 c 0,-0.228271 0.180573,-0.41401 0.40247,-0.41401 h 0.418855 v 2.101671 h -0.418855 z m 2.948763,2.116956 c -0.929997,0 -1.6866,-0.756601 -1.6866,-1.686608 v -0.0087 -2.944976 -0.01545 c 0,-0.930006 0.756603,-1.6866072 1.6866,-1.6866072 h 8.2353871 c 0.114313,0 0.210838,0.096554 0.210838,0.2108266 v 5.9206786 c 0,0.114268 -0.09656,0.210824 -0.210838,0.210824 z" />
|
<path d="m 16.074253,15.636738 v -1.05413 h 5.893274 c 1.16249,0 2.108261,-0.855111 2.108261,-1.906183 0,-1.051073 -0.945771,-1.906236 -2.108261,-1.906236 H 16.074253 V 9.7160604 c 0,-0.5812492 -0.472879,-1.0541321 -1.054131,-1.0541321 H 6.7847349 c -1.256731,0 -2.301908,0.9212057 -2.496867,2.1237027 h -0.451896 c -0.540407,0 -1.001317,0.349129 -1.173459,0.835611 H 0.47312787 c -0.23285,0 -0.42164599,0.188794 -0.42164599,0.421651 v 1.251779 c 0,0.232857 0.18879599,0.421652 0.42164599,0.421652 H 2.6550809 c 0.165919,0.497866 0.632365,0.857588 1.180831,0.857588 h 0.45312 c 0.19781,1.199177 1.241345,2.116956 2.495659,2.116956 h 8.2353861 c 0.581297,0 1.054176,-0.472883 1.054176,-1.05413 z m 5.060935,-4.023245 v 2.125811 h -0.844935 v -2.125811 z m 2.097293,1.062932 c 0,0.582933 -0.561524,1.057661 -1.253986,1.062668 v -2.125337 c 0.692462,0.0049 1.253986,0.47963 1.253986,1.062669 z m -3.785535,-1.062932 v 2.125811 h -3.372693 v -2.125811 z m -18.55215712,0.851 H 2.5901939 v 0.408475 H 0.89478888 Z m 2.94118302,1.266114 c -0.221897,0 -0.40247,-0.185737 -0.40247,-0.414062 v -1.273547 c 0,-0.228271 0.180573,-0.41401 0.40247,-0.41401 h 0.418855 v 2.101671 h -0.418855 z m 2.948763,2.116956 c -0.929997,0 -1.6866,-0.756601 -1.6866,-1.686608 v -0.0087 -2.944976 -0.01545 c 0,-0.930006 0.756603,-1.6866072 1.6866,-1.6866072 h 8.2353871 c 0.114313,0 0.210838,0.096554 0.210838,0.2108266 v 5.9206786 c 0,0.114268 -0.09656,0.210824 -0.210838,0.210824 z" />
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" id="output" width="24" height="24" viewBox="0 0 24 24">
|
<span data-toggle="tooltip" id="o_type" data-placement="top" title=""><svg xmlns="http://www.w3.org/2000/svg" id="output" width="24" height="24" viewBox="0 0 24 24">
|
||||||
<g id="o_i2s" display="none">
|
<g id="o_i2s" display="none">
|
||||||
<path d="M2 7L2 8L2 9L2 10L2 11L2 12L2 13L2 14L2 15L2 16L2 17L3 17L3 16L3 15L3 14L3 13L3 12L3 11L3 10L3 9L3 8L2 7M6 7L6 8L6 9L7 9L7 8L8 8L9 8L10 8L10 9L11 9L11 10L11 11L10 11L10 12L9 12L9 13L8 13L8 14L7 14L7 15L6 15L6 16L6 17L7 17L8 17L9 17L10 17L11 17L12 17L12 16L11 16L10 16L9 16L8 16L8 15L9 15L9 14L10 14L10 13L11 13L11 12L12 12L12 11L12 10L12 9L12 8L11 8L11 7L10 7L9 7L8 7L6 7M16 7L16 8L15 8L15 9L15 10L15 11L16 11L16 12L17 12L18 12L18 13L19 13L20 13L21 13L21 14L21 15L20 15L20 16L19 16L18 16L17 16L16 16L16 15L15 15L15 16L15 17L16 17L17 17L18 17L19 17L20 17L21 17L21 16L22 16L22 15L22 14L22 13L21 13L21 12L20 12L20 11L19 11L18 11L17 11L16 11L16 10L16 9L17 9L17 8L18 8L19 8L20 8L21 8L21 9L22 9L22 8L22 7L21 7L20 7L19 7L18 7L16 7z"/>
|
<path d="M2 7L2 8L2 9L2 10L2 11L2 12L2 13L2 14L2 15L2 16L2 17L3 17L3 16L3 15L3 14L3 13L3 12L3 11L3 10L3 9L3 8L2 7M6 7L6 8L6 9L7 9L7 8L8 8L9 8L10 8L10 9L11 9L11 10L11 11L10 11L10 12L9 12L9 13L8 13L8 14L7 14L7 15L6 15L6 16L6 17L7 17L8 17L9 17L10 17L11 17L12 17L12 16L11 16L10 16L9 16L8 16L8 15L9 15L9 14L10 14L10 13L11 13L11 12L12 12L12 11L12 10L12 9L12 8L11 8L11 7L10 7L9 7L8 7L6 7M16 7L16 8L15 8L15 9L15 10L15 11L16 11L16 12L17 12L18 12L18 13L19 13L20 13L21 13L21 14L21 15L20 15L20 16L19 16L18 16L17 16L16 16L16 15L15 15L15 16L15 17L16 17L17 17L18 17L19 17L20 17L21 17L21 16L22 16L22 15L22 14L22 13L21 13L21 12L20 12L20 11L19 11L18 11L17 11L16 11L16 10L16 9L17 9L17 8L18 8L19 8L20 8L21 8L21 9L22 9L22 8L22 7L21 7L20 7L19 7L18 7L16 7z"/>
|
||||||
</g>
|
</g>
|
||||||
<g id="o_bt" display="none">
|
<g id="o_bt" stroke="currentColor" stroke-width="1" fill="none" fill-rule="evenodd" display="none"></g>
|
||||||
<path d="M3 7L3 8L3 9L3 10L3 11L3 12L3 13L3 14L3 15L3 16L3 17L4 17L5 17L6 17L7 17L8 17L9 17L9 16L10 16L10 15L10 14L10 13L10 12L9 12L9 11L10 11L10 10L10 9L10 8L9 8L9 7L8 7L7 7L6 7L5 7L3 7M12 7L12 8L13 8L14 8L15 8L16 8L16 9L16 10L16 11L16 12L16 13L16 14L16 15L16 16L16 17L17 17L17 16L17 15L17 14L17 13L17 12L17 11L17 10L17 9L17 8L18 8L19 8L20 8L21 8L21 7L20 7L19 7L18 7L17 7L16 7L15 7L14 7L12 7z"/>
|
|
||||||
<path style="fill:#272B30;" d="M4 8L4 9L4 10L4 11L5 11L6 11L7 11L8 11L8 10L9 10L9 9L9 8L8 8L7 8L6 8L4 8M4 12L4 13L4 14L4 15L4 16L5 16L6 16L7 16L8 16L8 15L9 15L9 14L9 13L8 13L8 12L7 12L6 12L4 12z"/>
|
|
||||||
</g>
|
|
||||||
<g id="o_spdif" display="none">
|
<g id="o_spdif" display="none">
|
||||||
<path d="M3 1L3 2L2 2L2 3L2 4L2 5L3 5L3 6L4 6L5 6L5 7L6 7L7 7L8 7L8 8L8 9L7 9L7 10L6 10L5 10L4 10L3 10L3 9L2 9L2 10L2 11L3 11L4 11L5 11L6 11L7 11L8 11L8 10L9 10L9 9L9 8L9 7L8 7L8 6L7 6L7 5L6 5L5 5L4 5L3 5L3 4L3 3L4 3L4 2L5 2L6 2L7 2L8 2L8 3L9 3L9 2L9 1L8 1L7 1L6 1L5 1L3 1M13 1L13 2L13 3L13 4L12 4L12 5L12 6L12 7L12 8L11 8L11 9L11 10L11 11L10 11L10 12L10 13L11 13L11 12L11 11L12 11L12 10L12 9L12 8L13 8L13 7L13 6L13 5L14 5L14 4L14 3L14 2L15 2L15 1L13 1M16 1L16 2L16 3L16 4L16 5L16 6L16 7L16 8L16 9L16 10L16 11L17 11L17 10L17 9L17 8L17 7L18 7L19 7L20 7L21 7L21 6L22 6L22 5L22 4L22 3L22 2L21 2L21 1L20 1L19 1L18 1L16 1z"/>
|
<path d="M3 1L3 2L2 2L2 3L2 4L2 5L3 5L3 6L4 6L5 6L5 7L6 7L7 7L8 7L8 8L8 9L7 9L7 10L6 10L5 10L4 10L3 10L3 9L2 9L2 10L2 11L3 11L4 11L5 11L6 11L7 11L8 11L8 10L9 10L9 9L9 8L9 7L8 7L8 6L7 6L7 5L6 5L5 5L4 5L3 5L3 4L3 3L4 3L4 2L5 2L6 2L7 2L8 2L8 3L9 3L9 2L9 1L8 1L7 1L6 1L5 1L3 1M13 1L13 2L13 3L13 4L12 4L12 5L12 6L12 7L12 8L11 8L11 9L11 10L11 11L10 11L10 12L10 13L11 13L11 12L11 11L12 11L12 10L12 9L12 8L13 8L13 7L13 6L13 5L14 5L14 4L14 3L14 2L15 2L15 1L13 1M16 1L16 2L16 3L16 4L16 5L16 6L16 7L16 8L16 9L16 10L16 11L17 11L17 10L17 9L17 8L17 7L18 7L19 7L20 7L21 7L21 6L22 6L22 5L22 4L22 3L22 2L21 2L21 1L20 1L19 1L18 1L16 1z"/>
|
||||||
<path style="fill:#272B30;" d="M17 2L17 3L17 4L17 5L17 6L18 6L19 6L20 6L20 5L21 5L21 4L21 3L20 3L20 2L19 2L17 2z"/>
|
<path style="fill:#272B30;" d="M17 2L17 3L17 4L17 5L17 6L18 6L19 6L20 6L20 5L21 5L21 4L21 3L20 3L20 2L19 2L17 2z"/>
|
||||||
<path d="M2 13L2 14L2 15L2 16L2 17L2 18L2 19L2 20L2 21L2 22L2 23L3 23L4 23L5 23L6 23L7 23L8 23L8 22L9 22L9 21L10 21L10 20L10 19L10 18L10 17L10 16L10 15L9 15L9 14L8 14L7 14L7 13L6 13L5 13L4 13L2 13M13 13L13 14L13 15L13 16L13 17L13 18L13 19L13 20L13 21L13 22L13 23L14 23L14 22L14 21L14 20L14 19L14 18L14 17L14 16L14 15L14 14L13 13M17 13L17 14L17 15L17 16L17 17L17 18L17 19L17 20L17 21L17 22L17 23L18 23L18 22L18 21L18 20L18 19L18 18L19 18L20 18L21 18L22 18L22 17L21 17L20 17L19 17L18 17L18 16L18 15L18 14L19 14L20 14L21 14L22 14L22 13L21 13L20 13L19 13L17 13z"/>
|
<path d="M2 13L2 14L2 15L2 16L2 17L2 18L2 19L2 20L2 21L2 22L2 23L3 23L4 23L5 23L6 23L7 23L8 23L8 22L9 22L9 21L10 21L10 20L10 19L10 18L10 17L10 16L10 15L9 15L9 14L8 14L7 14L7 13L6 13L5 13L4 13L2 13M13 13L13 14L13 15L13 16L13 17L13 18L13 19L13 20L13 21L13 22L13 23L14 23L14 22L14 21L14 20L14 19L14 18L14 17L14 16L14 15L14 14L13 13M17 13L17 14L17 15L17 16L17 17L17 18L17 19L17 20L17 21L17 22L17 23L18 23L18 22L18 21L18 20L18 19L18 18L19 18L20 18L21 18L22 18L22 17L21 17L20 17L19 17L18 17L18 16L18 15L18 14L19 14L20 14L21 14L22 14L22 13L21 13L20 13L19 13L17 13z"/>
|
||||||
<path style="fill:#272B30;" d="M3 14L3 15L3 16L3 17L3 18L3 19L3 20L3 21L3 22L4 22L5 22L6 22L7 22L7 21L8 21L8 20L9 20L9 19L9 18L9 17L9 16L8 16L8 15L7 15L7 14L6 14L5 14L3 14z"/>
|
<path style="fill:#272B30;" d="M3 14L3 15L3 16L3 17L3 18L3 19L3 20L3 21L3 22L4 22L5 22L6 22L7 22L7 21L8 21L8 20L9 20L9 19L9 18L9 17L9 16L8 16L8 15L7 15L7 14L6 14L5 14L3 14z"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg></span>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" id="battery" width="24" height="24" viewBox="0 0 24 24">
|
<svg xmlns="http://www.w3.org/2000/svg" id="battery" width="24" height="24" viewBox="0 0 24 24">
|
||||||
<g id="bat0" display="none">
|
<g id="bat0" display="none">
|
||||||
<path d="M19 8v8h-17v-8h17zm2-2h-21v12h21v-12zm1 9h.75c.69 0 1.25-.56 1.25-1.25v-3.5c0-.69-.56-1.25-1.25-1.25h-.75v6z"/>
|
<path d="M19 8v8h-17v-8h17zm2-2h-21v12h21v-12zm1 9h.75c.69 0 1.25-.56 1.25-1.25v-3.5c0-.69-.56-1.25-1.25-1.25h-.75v6z"/>
|
||||||
@@ -322,7 +319,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<div class="form-group"><label for="player">Player Name</label><input type="text" class="form-control " placeholder="Squeezelite" id="player" ></div>
|
<div class="form-group"><label for="player">Player Name</label><input type="text" class="form-control " placeholder="Squeezelite" id="player" ></div>
|
||||||
<div class="form-group" style="display: none;"><label for="btsinkdiv">Bluetooth Speaker Name To Connect To</label><input type="text" class="form-control" id="btsinkdiv" ></div>
|
|
||||||
<div class="form-group"><label for="optional">Optional setting (e.g. for LMS IP address)</label><input type="text" class="form-control" id="optional" ></div>
|
<div class="form-group"><label for="optional">Optional setting (e.g. for LMS IP address)</label><input type="text" class="form-control" id="optional" ></div>
|
||||||
<div class="form-group"><div class="form-check">
|
<div class="form-group"><div class="form-check">
|
||||||
<label class="form-check-label">
|
<label class="form-check-label">
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -41,6 +41,31 @@ var nvs_type_t = {
|
|||||||
/*!< Type blob */
|
/*!< Type blob */
|
||||||
NVS_TYPE_ANY: 0xff /*!< Must be last */
|
NVS_TYPE_ANY: 0xff /*!< Must be last */
|
||||||
};
|
};
|
||||||
|
var bt_icons = {
|
||||||
|
'bt_playing':'<path d="M15.98,10.28 L14.6,11.66 C14.4,11.86 14.4,12.17 14.6,12.37 L15.98,13.75 C16.26,14.03 16.73,13.9 16.83,13.52 C16.94,13.02 17,12.52 17,12 C17,11.49 16.94,10.99 16.82,10.52 C16.73,10.14 16.26,10 15.98,10.28 Z M20.1,7.78 C19.85,7.23 19.12,7.11 18.7,7.54 C18.44,7.8 18.39,8.18 18.53,8.52 C18.99,9.59 19.25,10.76 19.25,11.99 C19.25,13.23 18.99,14.41 18.52,15.48 C18.38,15.8 18.43,16.17 18.68,16.42 C19.09,16.83 19.78,16.71 20.03,16.19 C20.66,14.89 21.01,13.43 21.01,11.89 C21,10.44 20.68,9.04 20.1,7.78 Z M11.39,12 L14.98,8.42 C15.37,8.03 15.37,7.4 14.98,7 L10.69,2.71 C10.06,2.08 8.98,2.53 8.98,3.42 L8.98,9.6 L5.09,5.7 C4.7,5.31 4.07,5.31 3.68,5.7 C3.29,6.09 3.29,6.72 3.68,7.11 L8.57,12 L3.68,16.89 C3.29,17.28 3.29,17.91 3.68,18.3 C4.07,18.69 4.7,18.69 5.09,18.3 L8.98,14.41 L8.98,20.59 C8.98,21.48 10.06,21.93 10.69,21.3 L14.99,17 C15.38,16.61 15.38,15.98 14.99,15.58 L11.39,12 Z M10.98,5.83 L12.86,7.71 L10.98,9.59 L10.98,5.83 Z M10.98,18.17 L10.98,14.41 L12.86,16.29 L10.98,18.17 Z" id="🔹-Icon-Color" fill="#1D1D1D"></path>',
|
||||||
|
'bt_disconnected':'<path d="M13.41,12l3.8-3.79a1,1,0,0,0,0-1.42l-4.5-4.5a1,1,0,0,0-.33-.21,1,1,0,0,0-.76,0,1,1,0,0,0-.54.54A1,1,0,0,0,11,3V9.59L8.21,6.79A1,1,0,1,0,6.79,8.21L10.59,12l-3.8,3.79a1,1,0,1,0,1.42,1.42L11,14.41V21a1,1,0,0,0,.08.38,1,1,0,0,0,.54.54.94.94,0,0,0,.76,0,1,1,0,0,0,.33-.21l4.5-4.5a1,1,0,0,0,0-1.42ZM13,5.41,15.09,7.5,13,9.59Zm0,13.18V14.41l2.09,2.09Z"/>',
|
||||||
|
'bt_neutral':'<path d="M17.71 7.71L12 2h-1v7.59L6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 11 14.41V22h1l5.71-5.71-4.3-4.29 4.3-4.29zM13 5.83l1.88 1.88L13 9.59V5.83zm1.88 10.46L13 18.17v-3.76l1.88 1.88z"/>',
|
||||||
|
'bt_connected':'<path d="M7 12l-2-2-2 2 2 2 2-2zm10.71-4.29L12 2h-1v7.59L6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 11 14.41V22h1l5.71-5.71-4.3-4.29 4.3-4.29zM13 5.83l1.88 1.88L13 9.59V5.83zm1.88 10.46L13 18.17v-3.76l1.88 1.88zM19 10l-2 2 2 2 2-2-2-2z"/>',
|
||||||
|
'bt_disabled':'<path d="M13 5.83l1.88 1.88-1.6 1.6 1.41 1.41 3.02-3.02L12 2h-1v5.03l2 2v-3.2zM5.41 4L4 5.41 10.59 12 5 17.59 6.41 19 11 14.41V22h1l4.29-4.29 2.3 2.29L20 18.59 5.41 4zM13 18.17v-3.76l1.88 1.88L13 18.17z"/>',
|
||||||
|
'bt_searching':'<path d="M14.24 12.01l2.32 2.32c.28-.72.44-1.51.44-2.33 0-.82-.16-1.59-.43-2.31l-2.33 2.32zm5.29-5.3l-1.26 1.26c.63 1.21.98 2.57.98 4.02s-.36 2.82-.98 4.02l1.2 1.2c.97-1.54 1.54-3.36 1.54-5.31-.01-1.89-.55-3.67-1.48-5.19zm-3.82 1L10 2H9v7.59L4.41 5 3 6.41 8.59 12 3 17.59 4.41 19 9 14.41V22h1l5.71-5.71-4.3-4.29 4.3-4.29zM11 5.83l1.88 1.88L11 9.59V5.83zm1.88 10.46L11 18.17v-3.76l1.88 1.88z"/>',
|
||||||
|
'play_circle_outline':'<path d="M10 16.5l6-4.5-6-4.5v9zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>',
|
||||||
|
'play_circle_filled':'<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 14.5v-9l6 4.5-6 4.5z"/>',
|
||||||
|
'play_arrow':'<path d="M0 0h24v24H0z" fill="none"/><path d="M8 5v14l11-7z"/>',
|
||||||
|
'pause':'<path d="M0 0h24v24H0z" fill="none"/><path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z"/>',
|
||||||
|
'stop':'<path d="M0 0h24v24H0z" fill="none"/><path d="M6 6h12v12H6z"/>',
|
||||||
|
'':''
|
||||||
|
};
|
||||||
|
|
||||||
|
var bt_state_icon = [
|
||||||
|
{"desc":"Idle", "sub":["bt_neutral"]},
|
||||||
|
{"desc":"Discovering","sub":["bt_searching"]},
|
||||||
|
{"desc":"Discovered","sub":["bt_searching"]},
|
||||||
|
{"desc":"Unconnected","sub":["bt_disabled"]},
|
||||||
|
{"desc":"Connecting","sub":["bt_disabled"]},
|
||||||
|
{"desc":"Connected","sub":["bt_connected", "play_circle_outline", "bt_playing", "pause", "stop"]},
|
||||||
|
{"desc":"Disconnecting","sub":["bt_neutral"]},
|
||||||
|
];
|
||||||
|
|
||||||
pillcolors = {
|
pillcolors = {
|
||||||
'MESSAGING_INFO' : 'badge-success',
|
'MESSAGING_INFO' : 'badge-success',
|
||||||
'MESSAGING_WARNING' : 'badge-warning',
|
'MESSAGING_WARNING' : 'badge-warning',
|
||||||
@@ -72,6 +97,24 @@ var escapeHTML = function(unsafe) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function handlebtstate(data){
|
||||||
|
var icon = '';
|
||||||
|
var tt='';
|
||||||
|
if (data['bt_status']!=undefined && data['bt_sub_status']!=undefined) {
|
||||||
|
var iconsvg=bt_state_icon[data['bt_status']]?.sub[data['bt_sub_status']];
|
||||||
|
if(iconsvg){
|
||||||
|
icon = bt_icons[iconsvg];
|
||||||
|
tt=bt_state_icon[data['bt_status']]?.desc;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
icon = bt_icons.bt_connected;
|
||||||
|
tt='Output status';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
o_type.title=tt;
|
||||||
|
$('#o_bt').html(icon);
|
||||||
|
}
|
||||||
function setNavColor(stylename){
|
function setNavColor(stylename){
|
||||||
$('[name=secnav]').removeClass('bg-secondary bg-warning');
|
$('[name=secnav]').removeClass('bg-secondary bg-warning');
|
||||||
$("footer.footer").removeClass('bg-secondary bg-warning');
|
$("footer.footer").removeClass('bg-secondary bg-warning');
|
||||||
@@ -84,24 +127,18 @@ function setNavColor(stylename){
|
|||||||
}
|
}
|
||||||
function handleTemplateTypeRadio(outtype){
|
function handleTemplateTypeRadio(outtype){
|
||||||
if (outtype == 'bt') {
|
if (outtype == 'bt') {
|
||||||
$("#btsinkdiv").parent().show(200);
|
|
||||||
$("#btsinkdiv").show();
|
|
||||||
$('#bt').prop('checked',true);
|
$('#bt').prop('checked',true);
|
||||||
o_bt.setAttribute("display", "inline");
|
o_bt.setAttribute("display", "inline");
|
||||||
o_spdif.setAttribute("display", "none");
|
o_spdif.setAttribute("display", "none");
|
||||||
o_i2s.setAttribute("display", "none");
|
o_i2s.setAttribute("display", "none");
|
||||||
output = 'bt';
|
output = 'bt';
|
||||||
} else if (outtype == 'spdif') {
|
} else if (outtype == 'spdif') {
|
||||||
$("#btsinkdiv").parent().hide(200);
|
|
||||||
$("#btsinkdiv").show();
|
|
||||||
$('#spdif').prop('checked',true);
|
$('#spdif').prop('checked',true);
|
||||||
o_bt.setAttribute("display", "none");
|
o_bt.setAttribute("display", "none");
|
||||||
o_spdif.setAttribute("display", "inline");
|
o_spdif.setAttribute("display", "inline");
|
||||||
o_i2s.setAttribute("display", "none");
|
o_i2s.setAttribute("display", "none");
|
||||||
output = 'spdif';
|
output = 'spdif';
|
||||||
} else {
|
} else {
|
||||||
$("#btsinkdiv").parent().hide(200);
|
|
||||||
$("#btsinkdiv").show();
|
|
||||||
$('#i2s').prop('checked',true);
|
$('#i2s').prop('checked',true);
|
||||||
o_bt.setAttribute("display", "none");
|
o_bt.setAttribute("display", "none");
|
||||||
o_spdif.setAttribute("display", "none");
|
o_spdif.setAttribute("display", "none");
|
||||||
@@ -326,13 +363,8 @@ function save_autoexec1(apply){
|
|||||||
showCmdMessage('cfg-audio-tmpl','MESSAGING_INFO',"Saving.\n",false);
|
showCmdMessage('cfg-audio-tmpl','MESSAGING_INFO',"Saving.\n",false);
|
||||||
var commandLine = commandHeader + ' -n "' + $("#player").val() + '"';
|
var commandLine = commandHeader + ' -n "' + $("#player").val() + '"';
|
||||||
if (output == 'bt') {
|
if (output == 'bt') {
|
||||||
if($("#btsinkdiv").val()?.length!=0){
|
commandLine += ' -o "BT" -R -Z 192000';
|
||||||
commandLine += ' -o "BT -n \'' + $("#btsinkdiv").val() + '\'" -Z 192000';
|
showCmdMessage('cfg-audio-tmpl','MESSAGING_INFO',"Remember to configure the Bluetooth audio device name.\n",true);
|
||||||
}
|
|
||||||
else {
|
|
||||||
showCmdMessage('cfg-audio-tmpl','MESSAGING_ERROR',"BT Sink Name required for output bluetooth.\n",true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else if (output == 'spdif') {
|
} else if (output == 'spdif') {
|
||||||
commandLine += ' -o SPDIF -Z 192000';
|
commandLine += ' -o SPDIF -Z 192000';
|
||||||
} else {
|
} else {
|
||||||
@@ -939,6 +971,8 @@ function handleRecoveryMode(data){
|
|||||||
setNavColor('bg-warning');
|
setNavColor('bg-warning');
|
||||||
$("#boot-button").html('Reboot');
|
$("#boot-button").html('Reboot');
|
||||||
$("#boot-form").attr('action', '/reboot_ota.json');
|
$("#boot-form").attr('action', '/reboot_ota.json');
|
||||||
|
$("flashfilename").show();
|
||||||
|
$("fwUpload").show();
|
||||||
} else {
|
} else {
|
||||||
recovery = false;
|
recovery = false;
|
||||||
$("#reboot_ota_nav").hide();
|
$("#reboot_ota_nav").hide();
|
||||||
@@ -949,6 +983,8 @@ function handleRecoveryMode(data){
|
|||||||
$("footer.footer").addClass('sl');
|
$("footer.footer").addClass('sl');
|
||||||
$("#boot-button").html('Recovery');
|
$("#boot-button").html('Recovery');
|
||||||
$("#boot-form").attr('action', '/recovery.json');
|
$("#boot-form").attr('action', '/recovery.json');
|
||||||
|
$("flashfilename").hide();
|
||||||
|
$("fwUpload").hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1029,6 +1065,7 @@ function checkStatus() {
|
|||||||
$.getJSON("/status.json", function(data) {
|
$.getJSON("/status.json", function(data) {
|
||||||
handleRecoveryMode(data);
|
handleRecoveryMode(data);
|
||||||
handleWifiStatus(data);
|
handleWifiStatus(data);
|
||||||
|
handlebtstate(data);
|
||||||
if (data.hasOwnProperty('project_name') && data['project_name'] != '') {
|
if (data.hasOwnProperty('project_name') && data['project_name'] != '') {
|
||||||
pname = data['project_name'];
|
pname = data['project_name'];
|
||||||
}
|
}
|
||||||
@@ -1066,7 +1103,7 @@ function checkStatus() {
|
|||||||
}
|
}
|
||||||
if (data.hasOwnProperty('Jack')) {
|
if (data.hasOwnProperty('Jack')) {
|
||||||
var jack = data['Jack'];
|
var jack = data['Jack'];
|
||||||
if (jack == '1') {
|
if (jack) {
|
||||||
o_jack.setAttribute("display", "inline");
|
o_jack.setAttribute("display", "inline");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1253,11 +1290,6 @@ function getConfig() {
|
|||||||
handleTemplateTypeRadio('spdif');
|
handleTemplateTypeRadio('spdif');
|
||||||
} else if (m[1].toUpperCase().startsWith('"BT')) {
|
} else if (m[1].toUpperCase().startsWith('"BT')) {
|
||||||
handleTemplateTypeRadio('bt');
|
handleTemplateTypeRadio('bt');
|
||||||
var re2=/["]BT\s*-n\s*'([^"]+)'/g;
|
|
||||||
var m2=re2.exec(m[1]);
|
|
||||||
if(m2.length>=2){
|
|
||||||
$("#btsinkdiv").val(m2[1]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else if (key == 'host_name') {
|
} else if (key == 'host_name') {
|
||||||
val = val.replaceAll('"', '');
|
val = val.replaceAll('"', '');
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1,16 @@
|
|||||||
{"project_name":"recovery","version":"custom.build","recovery":1,"Jack":"1","Voltage":0,"disconnect_count":0,"avg_conn_time":0,"is_i2c_locked":false,"urc":0,"ssid":"MyTestSSID","ip":"192.168.10.225","netmask":"255.255.255.0","gw":"192.168.10.1"}
|
{
|
||||||
|
"project_name": "recovery",
|
||||||
|
"version": "custom.build",
|
||||||
|
"recovery": 1,
|
||||||
|
"Jack": "1",
|
||||||
|
"Voltage": 0,
|
||||||
|
"disconnect_count": 0,
|
||||||
|
"avg_conn_time": 0,
|
||||||
|
"is_i2c_locked": false,
|
||||||
|
"urc": 0,
|
||||||
|
"bt_status": 0,
|
||||||
|
"ssid": "MyTestSSID",
|
||||||
|
"ip": "192.168.10.225",
|
||||||
|
"netmask": "255.255.255.0",
|
||||||
|
"gw": "192.168.10.1"
|
||||||
|
}
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
"avg_conn_time": 0,
|
"avg_conn_time": 0,
|
||||||
"is_i2c_locked": false,
|
"is_i2c_locked": false,
|
||||||
"urc": 0,
|
"urc": 0,
|
||||||
|
"bt_status": 0,
|
||||||
"ssid": "MyTestSSID",
|
"ssid": "MyTestSSID",
|
||||||
"ip": "192.168.10.225",
|
"ip": "192.168.10.225",
|
||||||
"netmask": "255.255.255.0",
|
"netmask": "255.255.255.0",
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ Contains the freeRTOS task and all necessary support
|
|||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
#include "cmd_system.h"
|
#include "cmd_system.h"
|
||||||
#include "messaging.h"
|
#include "messaging.h"
|
||||||
|
#include "bt_app_core.h"
|
||||||
|
|
||||||
#include "http_server_handlers.h"
|
#include "http_server_handlers.h"
|
||||||
#include "monitor.h"
|
#include "monitor.h"
|
||||||
@@ -188,6 +189,9 @@ char * get_disconnect_code_desc(uint8_t reason){
|
|||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
void wifi_manager_update_status(){
|
||||||
|
wifi_manager_send_message(ORDER_UPDATE_STATUS,NULL);
|
||||||
|
}
|
||||||
void set_host_name(){
|
void set_host_name(){
|
||||||
esp_err_t err;
|
esp_err_t err;
|
||||||
ESP_LOGD(TAG, "Retrieving host name from nvs");
|
ESP_LOGD(TAG, "Retrieving host name from nvs");
|
||||||
@@ -458,6 +462,38 @@ cJSON * wifi_manager_get_new_array_json(cJSON **old){
|
|||||||
ESP_LOGV(TAG, "wifi_manager_get_new_array_json done");
|
ESP_LOGV(TAG, "wifi_manager_get_new_array_json done");
|
||||||
return cJSON_CreateArray();
|
return cJSON_CreateArray();
|
||||||
}
|
}
|
||||||
|
void wifi_manager_update_basic_info(){
|
||||||
|
if(wifi_manager_lock_json_buffer( portMAX_DELAY )){
|
||||||
|
|
||||||
|
monitor_gpio_t *mgpio= get_jack_insertion_gpio();
|
||||||
|
|
||||||
|
cJSON * voltage = cJSON_GetObjectItemCaseSensitive(ip_info_cjson, "Voltage");
|
||||||
|
if(voltage){
|
||||||
|
cJSON_SetNumberValue(voltage, battery_value_svc());
|
||||||
|
}
|
||||||
|
cJSON * bt_status = cJSON_GetObjectItemCaseSensitive(ip_info_cjson, "bt_status");
|
||||||
|
if(bt_status){
|
||||||
|
cJSON_SetNumberValue(bt_status, bt_app_source_get_a2d_state());
|
||||||
|
}
|
||||||
|
cJSON * bt_sub_status = cJSON_GetObjectItemCaseSensitive(ip_info_cjson, "bt_sub_status");
|
||||||
|
if(bt_sub_status){
|
||||||
|
cJSON_SetNumberValue(bt_sub_status, bt_app_source_get_media_state());
|
||||||
|
}
|
||||||
|
cJSON * jack = cJSON_GetObjectItemCaseSensitive(ip_info_cjson, "Jack");
|
||||||
|
if(jack){
|
||||||
|
jack->type=mgpio->gpio>=0 && jack_inserted_svc()?cJSON_True:cJSON_False;
|
||||||
|
}
|
||||||
|
cJSON * disconnect_count = cJSON_GetObjectItemCaseSensitive(ip_info_cjson, "disconnect_count");
|
||||||
|
if(disconnect_count){
|
||||||
|
cJSON_SetNumberValue(disconnect_count, num_disconnect);
|
||||||
|
}
|
||||||
|
cJSON * avg_conn_time = cJSON_GetObjectItemCaseSensitive(ip_info_cjson, "avg_conn_time");
|
||||||
|
if(avg_conn_time){
|
||||||
|
cJSON_SetNumberValue(avg_conn_time, num_disconnect>0?(total_connected_time/num_disconnect):0);
|
||||||
|
}
|
||||||
|
wifi_manager_unlock_json_buffer();
|
||||||
|
}
|
||||||
|
}
|
||||||
cJSON * wifi_manager_get_basic_info(cJSON **old){
|
cJSON * wifi_manager_get_basic_info(cJSON **old){
|
||||||
monitor_gpio_t *mgpio= get_jack_insertion_gpio();
|
monitor_gpio_t *mgpio= get_jack_insertion_gpio();
|
||||||
const esp_app_desc_t* desc = esp_ota_get_app_description();
|
const esp_app_desc_t* desc = esp_ota_get_app_description();
|
||||||
@@ -467,10 +503,12 @@ cJSON * wifi_manager_get_basic_info(cJSON **old){
|
|||||||
cJSON_AddItemToObject(root, "version", cJSON_CreateString(desc->version));
|
cJSON_AddItemToObject(root, "version", cJSON_CreateString(desc->version));
|
||||||
if(release_url !=NULL) cJSON_AddItemToObject(root, "release_url", cJSON_CreateString(release_url));
|
if(release_url !=NULL) cJSON_AddItemToObject(root, "release_url", cJSON_CreateString(release_url));
|
||||||
cJSON_AddNumberToObject(root,"recovery", is_recovery_running?1:0);
|
cJSON_AddNumberToObject(root,"recovery", is_recovery_running?1:0);
|
||||||
cJSON_AddItemToObject(root, "Jack", cJSON_CreateString(mgpio->gpio>=0 && jack_inserted_svc() ? "1" : "0"));
|
cJSON_AddBoolToObject(root, "Jack", mgpio->gpio>=0 && jack_inserted_svc() );
|
||||||
cJSON_AddNumberToObject(root,"Voltage", battery_value_svc());
|
cJSON_AddNumberToObject(root,"Voltage", battery_value_svc());
|
||||||
cJSON_AddNumberToObject(root,"disconnect_count", num_disconnect );
|
cJSON_AddNumberToObject(root,"disconnect_count", num_disconnect );
|
||||||
cJSON_AddNumberToObject(root,"avg_conn_time", num_disconnect>0?(total_connected_time/num_disconnect):0 );
|
cJSON_AddNumberToObject(root,"avg_conn_time", num_disconnect>0?(total_connected_time/num_disconnect):0 );
|
||||||
|
cJSON_AddNumberToObject(root,"bt_status", bt_app_source_get_a2d_state());
|
||||||
|
cJSON_AddNumberToObject(root,"bt_sub_status", bt_app_source_get_media_state());
|
||||||
#if CONFIG_I2C_LOCKED
|
#if CONFIG_I2C_LOCKED
|
||||||
cJSON_AddTrueToObject(root, "is_i2c_locked");
|
cJSON_AddTrueToObject(root, "is_i2c_locked");
|
||||||
#else
|
#else
|
||||||
@@ -1537,6 +1575,9 @@ void wifi_manager( void * pvParameters ){
|
|||||||
ESP_LOGD(TAG, "Calling simple_restart.");
|
ESP_LOGD(TAG, "Calling simple_restart.");
|
||||||
simple_restart();
|
simple_restart();
|
||||||
break;
|
break;
|
||||||
|
case ORDER_UPDATE_STATUS:
|
||||||
|
wifi_manager_update_basic_info();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -191,7 +191,8 @@ typedef enum message_code_t {
|
|||||||
ORDER_RESTART_RECOVERY = 16,
|
ORDER_RESTART_RECOVERY = 16,
|
||||||
ORDER_RESTART_OTA_URL = 17,
|
ORDER_RESTART_OTA_URL = 17,
|
||||||
ORDER_RESTART = 18,
|
ORDER_RESTART = 18,
|
||||||
MESSAGE_CODE_COUNT = 19 /* important for the callback array */
|
ORDER_UPDATE_STATUS = 19,
|
||||||
|
MESSAGE_CODE_COUNT = 20 /* important for the callback array */
|
||||||
|
|
||||||
}message_code_t;
|
}message_code_t;
|
||||||
|
|
||||||
@@ -202,7 +203,7 @@ typedef enum reboot_type_t{
|
|||||||
} reboot_type_t;
|
} reboot_type_t;
|
||||||
void wifi_manager_reboot(reboot_type_t rtype);
|
void wifi_manager_reboot(reboot_type_t rtype);
|
||||||
void wifi_manager_reboot_ota(char * url);
|
void wifi_manager_reboot_ota(char * url);
|
||||||
|
void wifi_manager_update_status();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -437,6 +437,7 @@ void app_main()
|
|||||||
bypass_wifi_manager=(strcmp(bypass_wm,"1")==0 ||strcasecmp(bypass_wm,"y")==0);
|
bypass_wifi_manager=(strcmp(bypass_wm,"1")==0 ||strcasecmp(bypass_wm,"y")==0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!is_recovery_running){
|
||||||
ESP_LOGD(TAG,"Getting audio control mapping ");
|
ESP_LOGD(TAG,"Getting audio control mapping ");
|
||||||
char *actrls_config = config_alloc_get_default(NVS_TYPE_STR, "actrls_config", NULL, 0);
|
char *actrls_config = config_alloc_get_default(NVS_TYPE_STR, "actrls_config", NULL, 0);
|
||||||
if (actrls_init(actrls_config) == ESP_OK) {
|
if (actrls_init(actrls_config) == ESP_OK) {
|
||||||
@@ -445,6 +446,7 @@ void app_main()
|
|||||||
ESP_LOGD(TAG,"No audio control buttons");
|
ESP_LOGD(TAG,"No audio control buttons");
|
||||||
}
|
}
|
||||||
if (actrls_config) free(actrls_config);
|
if (actrls_config) free(actrls_config);
|
||||||
|
}
|
||||||
|
|
||||||
/* start the wifi manager */
|
/* start the wifi manager */
|
||||||
ESP_LOGD(TAG,"Blinking led");
|
ESP_LOGD(TAG,"Blinking led");
|
||||||
|
|||||||
@@ -609,7 +609,7 @@ CONFIG_LWIP_MAX_SOCKETS=16
|
|||||||
|
|
||||||
CONFIG_LWIP_SO_REUSE=y
|
CONFIG_LWIP_SO_REUSE=y
|
||||||
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
||||||
CONFIG_LWIP_IP_REASSEMBLY=y
|
#CONFIG_LWIP_IP_REASSEMBLY is not set
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -321,7 +321,7 @@ CONFIG_BT_A2DP_ENABLE=y
|
|||||||
# CONFIG_BT_HFP_ENABLE is not set
|
# CONFIG_BT_HFP_ENABLE is not set
|
||||||
CONFIG_BT_SSP_ENABLED=y
|
CONFIG_BT_SSP_ENABLED=y
|
||||||
# CONFIG_BT_BLE_ENABLED is not set
|
# CONFIG_BT_BLE_ENABLED is not set
|
||||||
CONFIG_BT_STACK_NO_LOG=y
|
CONFIG_BT_STACK_NO_LOG=n
|
||||||
CONFIG_BT_ACL_CONNECTIONS=4
|
CONFIG_BT_ACL_CONNECTIONS=4
|
||||||
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y
|
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y
|
||||||
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=y
|
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=y
|
||||||
@@ -773,8 +773,8 @@ CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0
|
|||||||
CONFIG_FREERTOS_USE_TRACE_FACILITY=y
|
CONFIG_FREERTOS_USE_TRACE_FACILITY=y
|
||||||
CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y
|
CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y
|
||||||
CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID=y
|
CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID=y
|
||||||
CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y
|
#CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y
|
||||||
CONFIG_FREERTOS_RUN_TIME_STATS_USING_ESP_TIMER=y
|
#CONFIG_FREERTOS_RUN_TIME_STATS_USING_ESP_TIMER=y
|
||||||
# CONFIG_FREERTOS_RUN_TIME_STATS_USING_CPU_CLK is not set
|
# CONFIG_FREERTOS_RUN_TIME_STATS_USING_CPU_CLK is not set
|
||||||
CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
|
CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
|
||||||
# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set
|
# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set
|
||||||
|
|||||||
Reference in New Issue
Block a user