diff --git a/CMakeLists.txt b/CMakeLists.txt index cffff466..dcccbad9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,4 +11,5 @@ include(squeezelite.cmake) set(PROJECT_VER $ENV{PROJECT_VER}) -#target_compile_definitions(__idf_squeezelite-ota PRIVATE -DLOG_LOCAL_LEVEL=ESP_LOG_VERBOSE) \ No newline at end of file +#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_VERBOSE) \ No newline at end of file diff --git a/components/driver_bt/bt_app_source.c b/components/driver_bt/bt_app_source.c index 84f5bba1..25c059ab 100644 --- a/components/driver_bt/bt_app_source.c +++ b/components/driver_bt/bt_app_source.c @@ -50,7 +50,6 @@ static const char * art_a2dp_connecting[]= {"\n", static void bt_app_av_state_connecting(uint16_t event, void *param); -#define A2DP_TIMER_INIT connecting_timeout = esp_timer_get_time() +(CONFIG_A2DP_CONNECT_TIMEOUT_MS * 1000) #define IS_A2DP_TIMER_OVER esp_timer_get_time() >= connecting_timeout static void filter_inquiry_scan_result(esp_bt_gap_cb_param_t *param); @@ -542,7 +541,15 @@ static void bt_av_hdl_stack_evt(uint16_t event, void *p_param) /* create and start heart beat timer */ do { int tmr_id = 0; - s_tmr = xTimerCreate("connTmr", (CONFIG_A2DP_CONTROL_DELAY_MS / portTICK_RATE_MS), + uint16_t ctr_delay_ms=CONFIG_A2DP_CONTROL_DELAY_MS; + char * value = config_alloc_get_default(NVS_TYPE_STR, "a2dp_ctrld", STR(CONFIG_A2DP_CONNECT_TIMEOUT_MS), 0); + if(value!=NULL){ + ESP_LOGI(TAG, "A2DP ctrl delay: %s", value); + ctr_delay_ms=atoi(value); + } + FREE_AND_NULL(value); + + s_tmr = xTimerCreate("connTmr", ( ctr_delay_ms/ portTICK_RATE_MS), pdTRUE, (void *)tmr_id, a2d_app_heart_beat); xTimerStart(s_tmr, portMAX_DELAY); } while (0); @@ -672,8 +679,16 @@ static void bt_app_av_state_unconnected(uint16_t event, void *param) ESP_LOGI(TAG,"%s",art_a2dp_connecting[l]); } ESP_LOGI(TAG,"Device: %s", s_peer_bdname); + int64_t connecting_timeout_offset=CONFIG_A2DP_CONNECT_TIMEOUT_MS; if(esp_a2d_source_connect(s_peer_bda)==ESP_OK) { - A2DP_TIMER_INIT; + char * value = config_alloc_get_default(NVS_TYPE_STR, "a2dp_ctmt", STR(CONFIG_A2DP_CONNECT_TIMEOUT_MS), 0); + if(value!=NULL){ + ESP_LOGI(TAG, "A2DP pairing timeout: %s", value); + connecting_timeout_offset=atoi(value); + } + FREE_AND_NULL(value); + + connecting_timeout = esp_timer_get_time() +(connecting_timeout_offset * 1000); s_a2d_state = APP_AV_STATE_CONNECTING; } else { diff --git a/main/esp_app_main.c b/main/esp_app_main.c index 3b7d2a94..c62e56aa 100644 --- a/main/esp_app_main.c +++ b/main/esp_app_main.c @@ -293,6 +293,13 @@ void register_default_nvs(){ ESP_LOGD(TAG,"Registering default value for key %s, value %s", "a2dp_sink_name", CONFIG_A2DP_SINK_NAME); config_set_default(NVS_TYPE_STR, "a2dp_sink_name", CONFIG_A2DP_SINK_NAME, 0); ESP_LOGD(TAG,"Registering default value for key %s, value %s", "bt_sink_pin", STR(CONFIG_BT_SINK_PIN)); + config_set_default(NVS_TYPE_STR, "a2dp_ctmt", STR(CONFIG_A2DP_CONNECT_TIMEOUT_MS), 0); + ESP_LOGD(TAG,"Registering default value for key %s, value %s", "bt_sink_pin", STR(CONFIG_A2DP_CONNECT_TIMEOUT_MS)); + config_set_default(NVS_TYPE_STR, "a2dp_ctrld", STR(CONFIG_A2DP_CONTROL_DELAY_MS), 0); + ESP_LOGD(TAG,"Registering default value for key %s, value %s", "bt_sink_pin", STR(CONFIG_A2DP_CONTROL_DELAY_MS)); + + + config_set_default(NVS_TYPE_STR, "bt_sink_pin", STR(CONFIG_BT_SINK_PIN), 0); ESP_LOGD(TAG,"Registering default value for key %s, value %s", "release_url", SQUEEZELITE_ESP32_RELEASE_URL); config_set_default(NVS_TYPE_STR, "release_url", SQUEEZELITE_ESP32_RELEASE_URL, 0); @@ -355,6 +362,8 @@ void register_default_nvs(){ ESP_LOGD(TAG,"Registering default value for key %s", "dac_config"); config_set_default(NVS_TYPE_STR, "dac_config", "", 0); + //todo: add dac_config for known targets + ESP_LOGD(TAG,"Registering default value for key %s", "bat_config"); config_set_default(NVS_TYPE_STR, "bat_config", "", 0);