mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-07 12:07:09 +03:00
Refactor configuration. needs new recovery image! -- release
In order to use this new release, it is recommended to erase the flash and replace the recovery partition with one that is at least at this level.
This commit is contained in:
@@ -143,4 +143,4 @@ CONFIG_DEFAULT_AP_PASSWORD="squeezelite"
|
|||||||
CONFIG_DEFAULT_AP_IP="192.168.4.1"
|
CONFIG_DEFAULT_AP_IP="192.168.4.1"
|
||||||
CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
||||||
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
||||||
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info -s %s"
|
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info "
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
|||||||
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
||||||
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
||||||
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
||||||
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info -s %s"
|
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info "
|
||||||
|
|
||||||
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
||||||
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
|||||||
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
||||||
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
||||||
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
||||||
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info -s %s"
|
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info "
|
||||||
|
|
||||||
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
||||||
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
||||||
|
|||||||
@@ -139,4 +139,4 @@ CONFIG_DEFAULT_AP_PASSWORD="squeezelite"
|
|||||||
CONFIG_DEFAULT_AP_IP="192.168.4.1"
|
CONFIG_DEFAULT_AP_IP="192.168.4.1"
|
||||||
CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
||||||
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
||||||
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info -s %s"
|
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info "
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
|||||||
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
||||||
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
||||||
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
||||||
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info -s %s"
|
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info "
|
||||||
|
|
||||||
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
||||||
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
|||||||
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
||||||
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
||||||
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
||||||
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info -s %s"
|
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info "
|
||||||
|
|
||||||
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
||||||
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
|||||||
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
||||||
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
||||||
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
||||||
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info -s %s"
|
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info "
|
||||||
|
|
||||||
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
||||||
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
|||||||
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
||||||
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
||||||
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
||||||
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info -s %s"
|
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info "
|
||||||
|
|
||||||
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
||||||
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
|||||||
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
||||||
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
||||||
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
||||||
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info -s %s"
|
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info "
|
||||||
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
||||||
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
||||||
CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y
|
CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y
|
||||||
|
|||||||
@@ -137,4 +137,4 @@ CONFIG_DEFAULT_AP_PASSWORD="squeezelite"
|
|||||||
CONFIG_DEFAULT_AP_IP="192.168.4.1"
|
CONFIG_DEFAULT_AP_IP="192.168.4.1"
|
||||||
CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
||||||
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
||||||
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info -s %s"
|
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info "
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
|||||||
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
||||||
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
||||||
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
||||||
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info -s %s"
|
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info "
|
||||||
|
|
||||||
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
||||||
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
|||||||
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
||||||
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
||||||
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
||||||
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info -s %s"
|
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info "
|
||||||
|
|
||||||
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
||||||
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
|||||||
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
||||||
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
||||||
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
||||||
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info -s %s"
|
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info "
|
||||||
|
|
||||||
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
||||||
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ CONFIG_DEFAULT_AP_GATEWAY="192.168.4.1"
|
|||||||
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
CONFIG_DEFAULT_AP_NETMASK="255.255.255.0"
|
||||||
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4
|
||||||
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
CONFIG_DEFAULT_AP_BEACON_INTERVAL=100
|
||||||
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info -s %s"
|
CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info "
|
||||||
|
|
||||||
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
|
||||||
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||||
CONDITIONS OF ANY KIND, either express or implied.
|
CONDITIONS OF ANY KIND, either express or implied.
|
||||||
*/
|
*/
|
||||||
|
//#define LOG_LOCAL_LEVEL ESP_LOG_VERBOSE
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
@@ -494,8 +494,7 @@ static int list_entries(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
void register_nvs()
|
void register_nvs()
|
||||||
{
|
{
|
||||||
esp_log_level_set(TAG, ESP_LOG_VERBOSE);
|
set_args.key = arg_str1(NULL, NULL, "<key>", "key of the value to be set");
|
||||||
set_args.key = arg_str1(NULL, NULL, "<key>", "key of the value to be set");
|
|
||||||
set_args.type = arg_str1(NULL, NULL, "<type>", ARG_TYPE_STR);
|
set_args.type = arg_str1(NULL, NULL, "<type>", ARG_TYPE_STR);
|
||||||
set_args.value = arg_str1("v", "value", "<value>", "value to be stored");
|
set_args.value = arg_str1("v", "value", "<value>", "value to be stored");
|
||||||
set_args.end = arg_end(2);
|
set_args.end = arg_end(2);
|
||||||
|
|||||||
@@ -247,7 +247,6 @@ void wifi_manager_init_wifi(){
|
|||||||
taskYIELD();
|
taskYIELD();
|
||||||
ESP_LOGD(TAG, "Initializing wifi. done");
|
ESP_LOGD(TAG, "Initializing wifi. done");
|
||||||
}
|
}
|
||||||
|
|
||||||
void wifi_manager_start(){
|
void wifi_manager_start(){
|
||||||
|
|
||||||
|
|
||||||
@@ -259,6 +258,7 @@ void wifi_manager_start(){
|
|||||||
wifi_manager_sta_ip_mutex = xSemaphoreCreateMutex();
|
wifi_manager_sta_ip_mutex = xSemaphoreCreateMutex();
|
||||||
|
|
||||||
ESP_LOGD(TAG, "wifi_manager_start. Creating access point json structure");
|
ESP_LOGD(TAG, "wifi_manager_start. Creating access point json structure");
|
||||||
|
|
||||||
accessp_cjson = NULL;
|
accessp_cjson = NULL;
|
||||||
accessp_cjson = wifi_manager_clear_ap_list_json(&accessp_cjson);
|
accessp_cjson = wifi_manager_clear_ap_list_json(&accessp_cjson);
|
||||||
ip_info_json = NULL;
|
ip_info_json = NULL;
|
||||||
|
|||||||
@@ -54,7 +54,6 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_COMMAND_LINE CONFIG_DEFAULT_COMMAND_LINE
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Defines the maximum size of a SSID name. 32 is IEEE standard.
|
* @brief Defines the maximum size of a SSID name. 32 is IEEE standard.
|
||||||
|
|||||||
@@ -6,7 +6,8 @@
|
|||||||
# lib(subdirectory_name).a in the build directory. This behaviour is entirely configurable,
|
# lib(subdirectory_name).a in the build directory. This behaviour is entirely configurable,
|
||||||
# please read the SDK documents if you need to do this.
|
# please read the SDK documents if you need to do this.
|
||||||
#
|
#
|
||||||
CFLAGS += -D LOG_LOCAL_LEVEL=ESP_LOG_DEBUG
|
#CFLAGS += -D LOG_LOCAL_LEVEL=ESP_LOG_DEBUG
|
||||||
|
CFLAGS += -D LOG_LOCAL_LEVEL=ESP_LOG_INFO
|
||||||
COMPONENT_ADD_INCLUDEDIRS += $(COMPONENT_PATH)/../tools
|
COMPONENT_ADD_INCLUDEDIRS += $(COMPONENT_PATH)/../tools
|
||||||
COMPONENT_EXTRA_INCLUDES += $(PROJECT_PATH)/components/tools/
|
COMPONENT_EXTRA_INCLUDES += $(PROJECT_PATH)/components/tools/
|
||||||
LDFLAGS += -s
|
LDFLAGS += -s
|
||||||
@@ -44,13 +44,13 @@
|
|||||||
#define CONFIG_COMMIT_DELAY 1000
|
#define CONFIG_COMMIT_DELAY 1000
|
||||||
#define LOCK_MAX_WAIT 20*CONFIG_COMMIT_DELAY
|
#define LOCK_MAX_WAIT 20*CONFIG_COMMIT_DELAY
|
||||||
static const char * TAG = "config";
|
static const char * TAG = "config";
|
||||||
cJSON * nvs_json=NULL;
|
static cJSON * nvs_json=NULL;
|
||||||
TimerHandle_t timer;
|
static TimerHandle_t timer;
|
||||||
SemaphoreHandle_t config_mutex = NULL;
|
static SemaphoreHandle_t config_mutex = NULL;
|
||||||
EventGroupHandle_t config_group;
|
static EventGroupHandle_t config_group;
|
||||||
/* @brief indicate that the ESP32 is currently connected. */
|
/* @brief indicate that the ESP32 is currently connected. */
|
||||||
const int CONFIG_PENDING_CHANGE_BIT = BIT0;
|
static const int CONFIG_PENDING_CHANGE_BIT = BIT0;
|
||||||
const int CONFIG_LOAD_BIT = BIT1;
|
static const int CONFIG_LOAD_BIT = BIT1;
|
||||||
|
|
||||||
bool config_lock(TickType_t xTicksToWait);
|
bool config_lock(TickType_t xTicksToWait);
|
||||||
void config_unlock();
|
void config_unlock();
|
||||||
@@ -62,12 +62,38 @@ cJSON * config_set_value_safe(nvs_type_t nvs_type, const char *key, void * value
|
|||||||
static void vCallbackFunction( TimerHandle_t xTimer );
|
static void vCallbackFunction( TimerHandle_t xTimer );
|
||||||
void config_set_entry_changed_flag(cJSON * entry, cJSON_bool flag);
|
void config_set_entry_changed_flag(cJSON * entry, cJSON_bool flag);
|
||||||
|
|
||||||
|
static void * malloc_fn(size_t sz){
|
||||||
|
void * ptr = heap_caps_malloc(sz, MALLOC_CAP_SPIRAM);
|
||||||
|
if(ptr==NULL){
|
||||||
|
ESP_LOGE(TAG,"malloc_fn: unable to allocate memory!");
|
||||||
|
}
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
static void * free_fn(void * ptr){
|
||||||
|
if(ptr!=NULL){
|
||||||
|
free(ptr);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ESP_LOGW(TAG,"free_fn: Cannot free null pointer!");
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
void init_cJSON(){
|
||||||
|
static cJSON_Hooks hooks;
|
||||||
|
// initialize cJSON hooks it uses SPIRAM memory
|
||||||
|
// as opposed to IRAM
|
||||||
|
hooks.malloc_fn=&malloc_fn;
|
||||||
|
hooks.free_fn=&free_fn;
|
||||||
|
cJSON_InitHooks(&hooks);
|
||||||
|
}
|
||||||
void config_init(){
|
void config_init(){
|
||||||
ESP_LOGD(TAG, "Creating mutex for Config");
|
ESP_LOGD(TAG, "Creating mutex for Config");
|
||||||
config_mutex = xSemaphoreCreateMutex();
|
config_mutex = xSemaphoreCreateMutex();
|
||||||
ESP_LOGD(TAG, "Creating event group");
|
ESP_LOGD(TAG, "Creating event group");
|
||||||
config_group = xEventGroupCreate();
|
config_group = xEventGroupCreate();
|
||||||
ESP_LOGD(TAG, "Loading config from nvs");
|
ESP_LOGD(TAG, "Loading config from nvs");
|
||||||
|
|
||||||
|
init_cJSON();
|
||||||
if(nvs_json !=NULL){
|
if(nvs_json !=NULL){
|
||||||
cJSON_Delete(nvs_json);
|
cJSON_Delete(nvs_json);
|
||||||
}
|
}
|
||||||
@@ -154,7 +180,6 @@ cJSON * config_set_value_safe(nvs_type_t nvs_type, const char *key, void * value
|
|||||||
else {
|
else {
|
||||||
ESP_LOGD(TAG,"Failed to print entry");
|
ESP_LOGD(TAG,"Failed to print entry");
|
||||||
}
|
}
|
||||||
cJSON_Delete(chg_flag);
|
|
||||||
ESP_LOGI(TAG, "Setting changed flag config [%s]", key);
|
ESP_LOGI(TAG, "Setting changed flag config [%s]", key);
|
||||||
config_set_entry_changed_flag(entry,true);
|
config_set_entry_changed_flag(entry,true);
|
||||||
ESP_LOGI(TAG, "Updating config [%s]", key);
|
ESP_LOGI(TAG, "Updating config [%s]", key);
|
||||||
@@ -195,28 +220,35 @@ nvs_type_t config_get_entry_type(cJSON * entry){
|
|||||||
return entry_type->valuedouble;
|
return entry_type->valuedouble;
|
||||||
}
|
}
|
||||||
void config_set_entry_changed_flag(cJSON * entry, cJSON_bool flag){
|
void config_set_entry_changed_flag(cJSON * entry, cJSON_bool flag){
|
||||||
|
ESP_LOGV(TAG, "config_set_entry_changed_flag: begin");
|
||||||
if(entry==NULL){
|
if(entry==NULL){
|
||||||
ESP_LOGE(TAG,"null pointer received!");
|
ESP_LOGE(TAG,"null pointer received!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
bool bIsConfigLoading=((xEventGroupGetBits(config_group) & CONFIG_LOAD_BIT)!=0);
|
bool bIsConfigLoading=((xEventGroupGetBits(config_group) & CONFIG_LOAD_BIT)!=0);
|
||||||
bool changedFlag=bIsConfigLoading?false:flag;
|
bool changedFlag=bIsConfigLoading?false:flag;
|
||||||
|
ESP_LOGV(TAG, "config_set_entry_changed_flag: retrieving chg flag from entry");
|
||||||
cJSON * changed = cJSON_GetObjectItemCaseSensitive(entry, "chg");
|
cJSON * changed = cJSON_GetObjectItemCaseSensitive(entry, "chg");
|
||||||
if(changed ==NULL ) {
|
if(changed ==NULL ) {
|
||||||
ESP_LOGV(TAG, "Adding change flag. ");
|
ESP_LOGV(TAG, "config_set_entry_changed_flag: chg flag not found. Adding. ");
|
||||||
cJSON_AddBoolToObject(entry,"chg",changedFlag);
|
cJSON_AddBoolToObject(entry,"chg",changedFlag);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
ESP_LOGV(TAG, "config_set_entry_changed_flag: Existing change flag found. ");
|
||||||
if(cJSON_IsTrue(changed) && changedFlag){
|
if(cJSON_IsTrue(changed) && changedFlag){
|
||||||
ESP_LOGW(TAG, "Commit flag not changed!");
|
ESP_LOGW(TAG, "Commit flag not changed!");
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
ESP_LOGV(TAG, "Updating change flag to %s",changedFlag?"TRUE":"FALSE");
|
ESP_LOGV(TAG, "config_set_entry_changed_flag: Updating change flag to %s",changedFlag?"TRUE":"FALSE");
|
||||||
cJSON_Delete(changed);
|
changed->type = changedFlag?cJSON_True:cJSON_False ;
|
||||||
cJSON_AddBoolToObject(entry,"chg",changedFlag);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(changedFlag) config_raise_change(true);
|
|
||||||
|
if(changedFlag) {
|
||||||
|
ESP_LOGV(TAG, "config_set_entry_changed_flag: Calling config_raise_change. ");
|
||||||
|
config_raise_change(true);
|
||||||
|
}
|
||||||
|
ESP_LOGV(TAG, "config_set_entry_changed_flag: done. ");
|
||||||
}
|
}
|
||||||
cJSON_bool config_is_entry_changed(cJSON * entry){
|
cJSON_bool config_is_entry_changed(cJSON * entry){
|
||||||
if(entry==NULL){
|
if(entry==NULL){
|
||||||
@@ -427,12 +459,16 @@ void config_unlock() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void vCallbackFunction( TimerHandle_t xTimer ) {
|
static void vCallbackFunction( TimerHandle_t xTimer ) {
|
||||||
|
static int cnt=0;
|
||||||
if(config_has_changes()){
|
if(config_has_changes()){
|
||||||
ESP_LOGI(TAG, "configuration has some uncommitted entries");
|
ESP_LOGI(TAG, "configuration has some uncommitted entries");
|
||||||
config_commit_to_nvs();
|
config_commit_to_nvs();
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
ESP_LOGV(TAG,"commit timer: commit flag not set");
|
if(++cnt>=15){
|
||||||
|
ESP_LOGV(TAG,"commit timer: commit flag not set");
|
||||||
|
cnt=0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
xTimerReset( xTimer, 10 );
|
xTimerReset( xTimer, 10 );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -258,7 +258,6 @@ static void * console_thread() {
|
|||||||
run_command(line);
|
run_command(line);
|
||||||
/* linenoise allocates line buffer on the heap, so need to free it */
|
/* linenoise allocates line buffer on the heap, so need to free it */
|
||||||
linenoiseFree(line);
|
linenoiseFree(line);
|
||||||
config_commit_to_nvs();
|
|
||||||
taskYIELD();
|
taskYIELD();
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
@@ -150,14 +150,10 @@ void register_default_nvs(){
|
|||||||
strcpy(default_host_name,DEFAULT_HOST_NAME);
|
strcpy(default_host_name,DEFAULT_HOST_NAME);
|
||||||
strcat(default_host_name,macStr);
|
strcat(default_host_name,macStr);
|
||||||
|
|
||||||
if(!strstr(CONFIG_DEFAULT_COMMAND_LINE, "-n %s")){
|
|
||||||
snprintf(default_command_line, sizeof(default_command_line)-1,CONFIG_DEFAULT_COMMAND_LINE,default_host_name);
|
strncpy(default_command_line, CONFIG_DEFAULT_COMMAND_LINE,sizeof(default_command_line)-1);
|
||||||
}
|
strncat(default_command_line, " -n ",sizeof(default_command_line)-1);
|
||||||
else{
|
strncat(default_command_line, default_host_name,sizeof(default_command_line)-1);
|
||||||
strncpy(default_command_line, CONFIG_DEFAULT_COMMAND_LINE,sizeof(default_command_line)-1);
|
|
||||||
strncat(default_command_line, "-n ",sizeof(default_command_line)-1);
|
|
||||||
strncat(default_command_line, default_host_name,sizeof(default_command_line)-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ESP_LOGD(TAG,"Registering default value for key %s, value %s", "autoexec", "1");
|
ESP_LOGD(TAG,"Registering default value for key %s, value %s", "autoexec", "1");
|
||||||
|
|||||||
@@ -5,4 +5,6 @@ otadata, data, ota, 0xD000, 0x2000,
|
|||||||
phy_init, data, phy, 0xF000, 0x1000,
|
phy_init, data, phy, 0xF000, 0x1000,
|
||||||
recovery, app, factory, 0x10000, 0x140000,
|
recovery, app, factory, 0x10000, 0x140000,
|
||||||
ota_0, app, ota_0, , 0x2A0000,
|
ota_0, app, ota_0, , 0x2A0000,
|
||||||
|
#ota_0, app, ota_0, 0x10000, 0x140000,
|
||||||
|
#recovery, app, factory, , 0x2A0000,
|
||||||
settings, data, nvs, , 0x10000,
|
settings, data, nvs, , 0x10000,
|
||||||
|
|||||||
|
Reference in New Issue
Block a user