diff --git a/.cproject b/.cproject index cfd41452..3fd2bc8c 100644 --- a/.cproject +++ b/.cproject @@ -239,7 +239,7 @@ - + diff --git a/components/cmd_system/cmd_system.c b/components/cmd_system/cmd_system.c index 4373bd64..803fda67 100644 --- a/components/cmd_system/cmd_system.c +++ b/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(){ diff --git a/components/driver_bt/bt_app_source.c b/components/driver_bt/bt_app_source.c index 5f48a78c..86c83a34 100644 --- a/components/driver_bt/bt_app_source.c +++ b/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); diff --git a/components/tools/trace.h b/components/tools/trace.h index d62dcd71..ae24c70a 100644 --- a/components/tools/trace.h +++ b/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) diff --git a/components/wifi-manager/http_server.c b/components/wifi-manager/http_server.c index d5f5715a..4ee4f862 100644 --- a/components/wifi-manager/http_server.c +++ b/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); diff --git a/components/wifi-manager/wifi_manager.c b/components/wifi-manager/wifi_manager.c index 9033bb02..64ac9267 100644 --- a/components/wifi-manager/wifi_manager.c +++ b/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; } diff --git a/main/esp_app_main.c b/main/esp_app_main.c index b45e33f5..b6140049 100644 --- a/main/esp_app_main.c +++ b/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); diff --git a/main/platform_esp32.h b/main/platform_esp32.h index 554ce79f..3443e069 100644 --- a/main/platform_esp32.h +++ b/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);