소스 검색

bug fixes

Sebastien 5 년 전
부모
커밋
24c473588a

+ 1 - 1
.cproject

@@ -239,7 +239,7 @@
                             							
                             <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.1831977109" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
                             							
-                            <builder arguments="&quot;C:/msys32/opt/esp-idf/tools/windows/eclipse_make.py&quot; -j8 EXTRA_CPPFLAGS=&quot;-DRECOVERY_APPLICATION=1&quot;" command="python" id="cdt.managedbuild.builder.gnu.cross.1069921467" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.builder.gnu.cross"/>
+                            <builder arguments="&quot;C:/msys32/opt/esp-idf/tools/windows/eclipse_make.py&quot; -j8 EXTRA_CPPFLAGS=&quot;-DRECOVERY_APPLICATION=1 -DSQUEEZELITE_ESP32_RELEASE_URL=\&quot;https://github.com/sle118/squeezelite-esp32/releases\&quot; &quot;" command="python" id="cdt.managedbuild.builder.gnu.cross.1069921467" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.builder.gnu.cross"/>
                             							
                             <tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.1302011176" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
                                 								

+ 3 - 3
components/cmd_system/cmd_system.c

@@ -104,7 +104,7 @@ esp_err_t guided_boot(esp_partition_subtype_t partition_subtype)
 		ESP_LOGW(TAG,"RECOVERY application is already active");
 		return ESP_OK;
 	}
-#else
+#endif
 	bool bFound=false;
     ESP_LOGI(TAG, "Looking for partition type %u",partition_subtype);
     const esp_partition_t *partition;
@@ -116,7 +116,6 @@ esp_err_t guided_boot(esp_partition_subtype_t partition_subtype)
 	else
 	{
 		partition = (esp_partition_t *) esp_partition_get(it);
-
 		if(partition != NULL){
 			ESP_LOGI(TAG, "Found partition type %u",partition_subtype);
 			esp_ota_set_boot_partition(partition);
@@ -132,7 +131,6 @@ esp_err_t guided_boot(esp_partition_subtype_t partition_subtype)
 			esp_restart();
 		}
 	}
-#endif
 	return ESP_OK;
 }
 
@@ -140,6 +138,8 @@ static int restart(int argc, char **argv)
 {
     ESP_LOGI(TAG, "Restarting");
     guided_boot(ESP_PARTITION_SUBTYPE_APP_OTA_0);
+    // If we're still alive, then there may not be an ota partition to boot from
+    guided_boot(ESP_PARTITION_SUBTYPE_APP_FACTORY);
 	return 0; // return fail.  This should never return... we're rebooting!
 }
 esp_err_t guided_factory(){

+ 21 - 9
components/driver_bt/bt_app_source.c

@@ -15,7 +15,7 @@
 #include "esp_wifi.h"
 #include "freertos/timers.h"
 #include "argtable3/argtable3.h"
-
+#include "nvs_utilities.h"
 #include "bt_app_core.h"
 #include "trace.h"
 
@@ -119,13 +119,12 @@ static uint8_t s_peer_bdname[ESP_BT_GAP_MAX_BDNAME_LEN + 1];
 static int s_a2d_state = APP_AV_STATE_IDLE;
 static int s_media_state = APP_AV_MEDIA_STATE_IDLE;
 static uint32_t s_pkt_cnt = 0;
-
 static TimerHandle_t s_tmr;
 
 static struct {
 	int control_delay;
 	int connect_timeout_delay;
-	char sink_name[32];
+	char * sink_name;
 } squeezelite_conf;	
 
 void hal_bluetooth_init(const char * options)
@@ -167,10 +166,13 @@ void hal_bluetooth_init(const char * options)
 	}
 	if(squeezelite_args.sink_name->count == 0)
 	{
-		ESP_LOGD(TAG,"Using default sink name : %s",CONFIG_A2DP_SINK_NAME);
-		strncpy(squeezelite_conf.sink_name, CONFIG_A2DP_SINK_NAME, 32);
+		squeezelite_conf.sink_name = get_nvs_value_alloc_default(NVS_TYPE_STR, "a2dp_sink_name", CONFIG_A2DP_SINK_NAME, 0);
+    	if(squeezelite_conf.sink_name  == NULL){
+    		ESP_LOGW(TAG,"Unable to retrieve the a2dp sink name from nvs");
+    		squeezelite_conf.sink_name = strdup(CONFIG_A2DP_SINK_NAME);
+    	}
 	} else {
-		strncpy(squeezelite_conf.sink_name, squeezelite_args.sink_name->sval[0], 32);
+		squeezelite_conf.sink_name=strdup(squeezelite_args.sink_name->sval[0]);
 	}
 	if(squeezelite_args.connect_timeout_delay->count == 0)
 	{
@@ -507,9 +509,19 @@ static void bt_av_hdl_stack_evt(uint16_t event, void *p_param)
     case BT_APP_EVT_STACK_UP: {
     	ESP_LOGI(TAG,"BT Stack going up.");
         /* set up device name */
-        char *dev_name = CONFIG_A2DP_DEV_NAME;
-        esp_bt_dev_set_device_name(dev_name);
-        ESP_LOGI(TAG,"Preparing to connect to device: %s",CONFIG_A2DP_SINK_NAME);
+
+
+        char * a2dp_dev_name = 	get_nvs_value_alloc_default(NVS_TYPE_STR, "a2dp_dev_name", CONFIG_A2DP_DEV_NAME, 0);
+    	if(a2dp_dev_name  == NULL){
+    		ESP_LOGW(TAG,"Unable to retrieve the a2dp device name from nvs");
+    		esp_bt_dev_set_device_name(CONFIG_A2DP_DEV_NAME);
+    	}
+    	else {
+    		esp_bt_dev_set_device_name(a2dp_dev_name);
+    		free(a2dp_dev_name);
+    	}
+
+        ESP_LOGI(TAG,"Preparing to connect");
 
         /* register GAP callback function */
         esp_bt_gap_register_callback(bt_app_gap_cb);

+ 3 - 1
components/tools/trace.h

@@ -24,7 +24,9 @@
 #ifndef QUOTE
 #define QUOTE(name) #name
 #endif
-
+#ifndef STR
+#define STR(macro)  QUOTE(macro)
+#endif
 #define ESP_LOG_DEBUG_EVENT(tag,e) ESP_LOGD(tag,"evt: " e)
 
 

+ 1 - 2
components/wifi-manager/http_server.c

@@ -475,12 +475,11 @@ void http_server_netconn_serve(struct netconn *conn) {
 						if(buff){
 							netconn_write(conn, http_ok_json_no_cache_hdr, sizeof(http_ok_json_no_cache_hdr) - 1, NETCONN_NOCOPY);
 							netconn_write(conn, buff, strlen(buff), NETCONN_NOCOPY);
-
-							wifi_manager_unlock_json_buffer();
 						}
 						else{
 							netconn_write(conn, http_503_hdr, sizeof(http_503_hdr) - 1, NETCONN_NOCOPY);
 						}
+						wifi_manager_unlock_json_buffer();
 					}
 					else{
 						netconn_write(conn, http_503_hdr, sizeof(http_503_hdr) - 1, NETCONN_NOCOPY);

+ 2 - 2
components/wifi-manager/wifi_manager.c

@@ -66,7 +66,7 @@ Contains the freeRTOS task and all necessary support
 #endif
 
 #ifndef SQUEEZELITE_ESP32_RELEASE_URL
-#define SQUEEZELITE_ESP32_RELEASE_URL https://github.com/sle118/squeezelite-esp32/releases
+#define SQUEEZELITE_ESP32_RELEASE_URL "https://github.com/sle118/squeezelite-esp32/releases"
 #endif
 #ifdef TAS575x
 #define JACK_GPIO	34
@@ -329,7 +329,7 @@ cJSON * wifi_manager_get_new_json(cJSON **old){
 }
 cJSON * wifi_manager_clear_ip_info_json(cJSON **old){
 	 cJSON *root = wifi_manager_get_new_json(old);
- 	 cJSON_AddItemToObject(root, "message", cJSON_CreateString("Initializing"));
+// 	 cJSON_AddItemToObject(root, "message", cJSON_CreateString("Initializing"));
  	 return root;
 }
 

+ 6 - 6
main/esp_app_main.c

@@ -148,24 +148,24 @@ char * process_ota_url(){
 
 void register_default_nvs(){
 	nvs_value_set_default(NVS_TYPE_STR, "bt_sink_name", CONFIG_BT_NAME, 0);
-	nvs_value_set_default(NVS_TYPE_STR, "bt_sink_pin", QUOTE(CONFIG_BT_SINK_PIN), 0);
+	nvs_value_set_default(NVS_TYPE_STR, "bt_sink_pin", STR(CONFIG_BT_SINK_PIN), 0);
 	nvs_value_set_default(NVS_TYPE_STR, "host_name", "squeezelite-esp32", 0);
-	nvs_value_set_default(NVS_TYPE_STR, "release_url", QUOTE(SQUEEZELITE_ESP32_RELEASE_URL), 0);
+	nvs_value_set_default(NVS_TYPE_STR, "release_url", SQUEEZELITE_ESP32_RELEASE_URL, 0);
 	nvs_value_set_default(NVS_TYPE_STR, "ap_ip_address",CONFIG_DEFAULT_AP_IP , 0);
 	nvs_value_set_default(NVS_TYPE_STR, "ap_ip_gateway",CONFIG_DEFAULT_AP_GATEWAY , 0);
 	nvs_value_set_default(NVS_TYPE_STR, "ap_ip_netmask",CONFIG_DEFAULT_AP_NETMASK , 0);
-	nvs_value_set_default(NVS_TYPE_STR, "ap_channel",QUOTE(CONFIG_DEFAULT_AP_CHANNEL) , 0);
+	nvs_value_set_default(NVS_TYPE_STR, "ap_channel",STR(CONFIG_DEFAULT_AP_CHANNEL) , 0);
 	nvs_value_set_default(NVS_TYPE_STR, "ap_ssid",CONFIG_DEFAULT_AP_SSID , 0);
 	nvs_value_set_default(NVS_TYPE_STR, "ap_password", CONFIG_DEFAULT_AP_PASSWORD, 0);
 	nvs_value_set_default(NVS_TYPE_STR, "airplay_name",CONFIG_AIRPLAY_NAME , 0);
 	nvs_value_set_default(NVS_TYPE_STR, "airplay_port", CONFIG_AIRPLAY_PORT, 0);
 	nvs_value_set_default(NVS_TYPE_STR, "a2dp_sink_name", CONFIG_A2DP_SINK_NAME, 0);
-	nvs_value_set_default(NVS_TYPE_STR, "a2dp_device_name", CONFIG_A2DP_DEV_NAME, 0);
+	nvs_value_set_default(NVS_TYPE_STR, "a2dp_dev_name", CONFIG_A2DP_DEV_NAME, 0);
 
-	char * flag = get_nvs_value_alloc_default(NVS_TYPE_STR, "enable_bt_sink", QUOTE(CONFIG_BT_SINK), 0);
+	char * flag = get_nvs_value_alloc_default(NVS_TYPE_STR, "enable_bt_sink", STR(CONFIG_BT_SINK), 0);
 	enable_bt_sink= (strcmp(flag,"1")==0 ||strcasecmp(flag,"y")==0);
 	free(flag);
-	flag = get_nvs_value_alloc_default(NVS_TYPE_STR, "enable_airplay", QUOTE(CONFIG_AIRPLAY_SINK), 0);
+	flag = get_nvs_value_alloc_default(NVS_TYPE_STR, "enable_airplay", STR(CONFIG_AIRPLAY_SINK), 0);
 	enable_airplay= (strcmp(flag,"1")==0 ||strcasecmp(flag,"y")==0);
 	free(flag);
 

+ 1 - 1
main/platform_esp32.h

@@ -23,7 +23,7 @@
 
 #include "esp_pthread.h"
 #ifndef SQUEEZELITE_ESP32_RELEASE_URL
-#define SQUEEZELITE_ESP32_RELEASE_URL https://github.com/sle118/squeezelite-esp32/releases
+#define SQUEEZELITE_ESP32_RELEASE_URL "https://github.com/sle118/squeezelite-esp32/releases"
 #endif
 
 extern void run_command(char * line);