Procházet zdrojové kódy

bluetooth fixup wip

Sebastien před 4 roky
rodič
revize
8100c090fa
3 změnil soubory, kde provedl 29 přidání a 4 odebrání
  1. 2 1
      CMakeLists.txt
  2. 18 3
      components/driver_bt/bt_app_source.c
  3. 9 0
      main/esp_app_main.c

+ 2 - 1
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)
+#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)

+ 18 - 3
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 {

+ 9 - 0
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);