瀏覽代碼

misc changes (see PR) (#340)

* misc changes (see PR)

* macro only parsing
philippe44 1 年之前
父節點
當前提交
d03678ea81

+ 2 - 2
components/metrics/Batch.cpp

@@ -77,7 +77,7 @@ void Batch::push() {
 
     char* json_str = to_json_str();
     ESP_LOGV(TAG, "Metrics payload: %s", json_str);
-    time_t start_time = millis();
+    uint32_t start_time = gettime_ms();
 
     status_code = metrics_http_post_request(json_str, _url);
 
@@ -85,7 +85,7 @@ void Batch::push() {
         _events.clear();
     }
     FREE_AND_NULL(json_str)
-    ESP_LOGD(TAG, "Total duration for metrics call: %lu. ", millis() - start_time);
+    ESP_LOGD(TAG, "Total duration for metrics call: %lu. ", gettime_ms() - start_time);
 }
 
 void Batch::build_guid() {

+ 1 - 1
components/metrics/Events.h

@@ -45,7 +45,7 @@ class Event {
     }
   private:
     char* _name = nullptr;
-    time_t _time;
+    uint32_t _time;
     cJSON* _json = nullptr;    
 };
 

+ 3 - 3
components/metrics/Metrics.cpp

@@ -31,7 +31,7 @@ extern bool is_network_connected();
 #define MAX_HTTP_RECV_BUFFER 512
 
 static bool metrics_usage_gen = false;
-static time_t metrics_usage_gen_time = 0;
+static uint32_t metrics_usage_gen_time = 0;
 #ifndef METRICS_API_KEY
     #pragma message "Metrics API key needs to be passed from the environment"
     #define METRICS_API_KEY "ZZZ"
@@ -56,7 +56,7 @@ static void metrics_timer_cb(void* timer_id) {
             batch.push();
         }
     }
-    if (millis() > metrics_usage_gen_time && !metrics_usage_gen) {
+    if (gettime_ms() > metrics_usage_gen_time && !metrics_usage_gen) {
         metrics_usage_gen = true;
         ESP_LOGV(TAG, "Generate command list to pull features");
         cJSON* cmdlist = get_cmd_list();
@@ -75,7 +75,7 @@ void metrics_init() {
     }
     // set a 20 seconds delay before generating the
     // features so the system has time to boot
-    metrics_usage_gen_time = millis() + 20000;
+    metrics_usage_gen_time = gettime_ms() + 20000;
 }
 
 void metrics_event_playback(const char* source) {

+ 1 - 38
components/platform_config/platform_config.c

@@ -538,7 +538,7 @@ bool config_set_group_bit(int bit_num,bool flag){
 	return result;
 }
 
-void config_set_default(nvs_type_t type, const char *key, void * default_value, size_t blob_size) {
+void config_set_default(nvs_type_t type, const char *key, const void * default_value, size_t blob_size) {
 	if(!config_lock(LOCK_MAX_WAIT/portTICK_PERIOD_MS)){
 		ESP_LOGE(TAG, "Unable to lock config");
 		return;
@@ -791,43 +791,6 @@ cJSON* cjson_update_number(cJSON** root, const char* key, int value) {
 	}
     return *root;
 }
-bool config_parse_param_int(const char * config,const char * param, char delimiter,int * value){
-	const char *p;
-	if(!value){
-		return false;
-	}	
-	if ((p = strcasestr(config, param)) && (p = strchr(p, delimiter))) {
-		*value = atoi(p+1);
-		return true;
-	}
-	return false;
-}
-bool config_parse_param_float(const char * config,const char * param, char delimiter,double * value){
-	const  char *p;
-	if(!value){
-		return false;
-	}	
-	if ((p = strcasestr(config, param)) && (p = strchr(p, delimiter))) {
-		*value = atof(p+1);
-		return true;
-	}
-	return false;
-}
-bool config_parse_param_str(const char *source, const char *param, char delimiter, char *value, size_t value_size) {
-    char *p;
-    if ((p = strstr(source, param)) && (p = strchr(p, delimiter))) {
-        while (*++p == ' ');  // Skip spaces
-        // Read the value into the buffer, making sure not to overflow
-        snprintf(value, value_size, "%s", p);
-        char *end = strchr(value, ',');
-        if (end) {
-            *end = '\0';  // Null-terminate at the comma, if found
-        }
-        return true;
-    }
-    return false;
-}
-												
 
 IMPLEMENT_SET_DEFAULT(uint8_t,NVS_TYPE_U8);
 IMPLEMENT_SET_DEFAULT(int8_t,NVS_TYPE_I8);

+ 2 - 10
components/platform_config/platform_config.h

@@ -9,11 +9,6 @@
 extern "C" {
 #endif
 
-#ifdef PARSE_WITH_FUNC
-#define PARSE_PARAM(S,P,C,V) config_parse_param_int(S,P,C,(int*)&V)
-#define PARSE_PARAM_STR(S,P,C,V,I) config_parse_param_str(S,P,C,V,I)
-#define PARSE_PARAM_FLOAT(S,P,C,V) config_parse_param_float(S,P,C,&V)
-#else
 #define PARSE_PARAM(S,P,C,V)   do {		                      	    			\
  	char *__p;																	\
  	if ((__p = strcasestr(S, P)) && (__p = strchr(__p, C))) V = atoi(__p+1); 	\
@@ -31,7 +26,7 @@ extern "C" {
  		sscanf(__p,"%" #I "[^,]", V);					                        \
  	}   												                        \
  } while (0)
-#endif
+
 #define DECLARE_SET_DEFAULT(t) void config_set_default_## t (const char *key, t  value);
 #define DECLARE_GET_NUM(t) esp_err_t config_get_## t (const char *key, t *  value);
 #ifndef FREE_RESET
@@ -55,9 +50,6 @@ bool config_has_changes();
 void config_commit_to_nvs();
 void config_start_timer();
 void config_init();
-bool config_parse_param_int(const char * config,const char * param,  char  delimiter,int * value);
-bool config_parse_param_float(const char * config,const char * param,  char  delimiter,double * value);
-bool config_parse_param_str(const char *source, const char *param, char delimiter, char *value, size_t value_size);
 void * config_alloc_get_default(nvs_type_t type, const char *key, void * default_value, size_t blob_size);
 void * config_alloc_get_str(const char *key, char *lead, char *fallback);
 cJSON * config_alloc_get_cjson(const char *key);
@@ -65,7 +57,7 @@ esp_err_t config_set_cjson_str_and_free(const char *key, cJSON *value);
 esp_err_t config_set_cjson(const char *key, cJSON *value, bool free_cjson);
 void config_get_uint16t_from_str(const char *key, uint16_t *value, uint16_t default_value);
 void config_delete_key(const char *key);
-void config_set_default(nvs_type_t type, const char *key, void * default_value, size_t blob_size);
+void config_set_default(nvs_type_t type, const char *key, const void * default_value, size_t blob_size);
 void * config_alloc_get(nvs_type_t nvs_type, const char *key) ;
 bool wait_for_commit();
 char * config_alloc_get_json(bool bFormatted);

+ 19 - 6
components/platform_console/cmd_i2ctools.c

@@ -61,11 +61,13 @@ static struct {
     struct arg_end* end;
 } i2cset_args;
 
+#if CONFIG_WITH_CONFIG_UI
 static struct {
     struct arg_int* chip_address;
     struct arg_int* size;
     struct arg_end* end;
 } i2cdump_args;
+#endif    
 
 static struct {
     struct arg_int* port;
@@ -559,13 +561,14 @@ static int do_i2cconfig_cmd(int argc, char** argv) {
 
     nerrors += is_output_gpio(i2cconfig_args.sda, f, &conf.sda_io_num, true);
     nerrors += is_output_gpio(i2cconfig_args.scl, f, &conf.scl_io_num, true);
-
-#ifdef CONFIG_SQUEEZEAMP
+    
+#ifdef CONFIG_I2C_LOCKED
     if (i2c_port == I2C_NUM_0) {
         i2c_port = I2C_NUM_1;
-        fprintf(f, "can't use i2c port 0 on SqueezeAMP. Changing to port 1.\n");
+        fprintf(f, "can't use i2c port 0 when locked by config. Changing to port 1.\n");
     }
 #endif
+
     if (!nerrors) {
         fprintf(f, "Uninstalling i2c driver from port %u if needed\n", i2c_port);
         if (is_i2c_started(i2c_port)) {
@@ -601,6 +604,7 @@ static int do_i2cconfig_cmd(int argc, char** argv) {
     return nerrors;
 }
 
+#if CONFIG_WITH_CONFIG_UI
 static int do_i2cdump_cmd(int argc, char** argv) {
     int nerrors = arg_parse_msg(argc, argv, (struct arg_hdr**)&i2cdump_args);
     if (nerrors != 0) {
@@ -690,7 +694,7 @@ static int do_i2cdump_cmd(int argc, char** argv) {
     FREE_AND_NULL(buf);
     return 0;
 }
-#if CONFIG_WITH_CONFIG_UI
+
 static int do_i2cset_cmd(int argc, char** argv) {
     int nerrors = arg_parse_msg(argc, argv, (struct arg_hdr**)&i2cset_args);
     if (nerrors != 0) {
@@ -738,6 +742,7 @@ static int do_i2cset_cmd(int argc, char** argv) {
     return 0;
 }
 #endif
+
 static int do_i2cget_cmd(int argc, char** argv) {
     int nerrors = arg_parse_msg(argc, argv, (struct arg_hdr**)&i2cget_args);
     if (nerrors != 0) {
@@ -811,7 +816,9 @@ static int do_i2cget_cmd(int argc, char** argv) {
     return 0;
 }
 esp_err_t cmd_i2ctools_scan_bus(FILE* f, int sda, int scl) {
+#ifdef CONFIG_WITH_CONFIG_UI    
     uint8_t matches[128] = {};
+#endif    
     int last_match = 0;
     esp_err_t ret = ESP_OK;
 
@@ -861,8 +868,9 @@ esp_err_t cmd_i2ctools_scan_bus(FILE* f, int sda, int scl) {
         if (ret == ESP_OK) {
 #ifndef CONFIG_WITH_CONFIG_UI
             fprintf(f, "%02x ", i);
-#endif
+#else            
             matches[++last_match - 1] = i;
+#endif            
         }
 #ifndef CONFIG_WITH_CONFIG_UI
         else if (ret == ESP_ERR_TIMEOUT) {
@@ -888,8 +896,10 @@ esp_err_t cmd_i2ctools_scan_bus(FILE* f, int sda, int scl) {
     return 0;
 }
 static int do_i2cdetect_cmd(int argc, char** argv) {
+#ifdef CONFIG_WITH_CONFIG_UI
     uint8_t matches[128] = {};
     int last_match = 0;
+#endif
     esp_err_t ret = ESP_OK;
     i2c_port_t loc_i2c_port = i2c_port;
     // if (i2cset_args.port->count && i2c_get_port(i2cset_args.port->ival[0], &loc_i2c_port) !=
@@ -925,7 +935,9 @@ static int do_i2cdetect_cmd(int argc, char** argv) {
                 i2c_cmd_link_delete(cmd);
                 if (ret == ESP_OK) {
                     fprintf(f, "%02x ", address);
+#ifdef CONFIG_WITH_CONFIG_UI                    
                     matches[++last_match - 1] = address;
+#endif
                 } else if (ret == ESP_ERR_TIMEOUT) {
                     fprintf(f, "UU ");
                 } else {
@@ -1082,7 +1094,7 @@ static void register_i2cset(void) {
     cmd_to_json(&i2cset_cmd);
     ESP_ERROR_CHECK(esp_console_cmd_register(&i2cset_cmd));
 }
-#endif
+
 static void register_i2cdump(void) {
     i2cdump_args.chip_address =
         arg_int1("c", "chip", "<chip_addr>", "Specify the address of the chip on that bus");
@@ -1096,6 +1108,7 @@ static void register_i2cdump(void) {
     cmd_to_json(&i2cdump_cmd);
     ESP_ERROR_CHECK(esp_console_cmd_register(&i2cdump_cmd));
 }
+#endif
 
 cJSON* i2config_cb() {
     cJSON* values = cJSON_CreateObject();

+ 8 - 1
components/platform_console/cmd_system.c

@@ -67,8 +67,10 @@ static void register_heap();
 static void register_dump_heap();
 static void register_version();
 static void register_restart();
+#if CONFIG_WITH_CONFIG_UI
 static void register_deep_sleep();
 static void register_light_sleep();
+#endif
 static void register_factory_boot();
 static void register_restart_ota();
 static void register_set_services();
@@ -556,6 +558,7 @@ static void register_tasks()
 
 /** 'deep_sleep' command puts the chip into deep sleep mode */
 
+#if CONFIG_WITH_CONFIG_UI
 static struct {
     struct arg_int *wakeup_time;
     struct arg_int *wakeup_gpio_num;
@@ -619,6 +622,8 @@ static void register_deep_sleep()
     };
     ESP_ERROR_CHECK( esp_console_cmd_register(&cmd) );
 }
+#endif
+
 static int enable_disable(FILE * f,char * nvs_name, struct arg_lit *arg){
 	esp_err_t err = config_set_value(NVS_TYPE_STR, nvs_name, arg->count>0?"Y":"N");
 	const char * name = arg->hdr.longopts?arg->hdr.longopts:arg->hdr.glossary;
@@ -737,6 +742,8 @@ static void register_set_services(){
 	cmd_to_json_with_cb(&cmd,&set_services_cb);
     ESP_ERROR_CHECK( esp_console_cmd_register(&cmd) );
 }
+
+#if CONFIG_WITH_CONFIG_UI
 static struct {
     struct arg_int *wakeup_time;
     struct arg_int *wakeup_gpio_num;
@@ -828,4 +835,4 @@ static void register_light_sleep()
     };
     ESP_ERROR_CHECK( esp_console_cmd_register(&cmd) );
 }
-
+#endif

+ 0 - 10
components/tools/tools.c

@@ -11,8 +11,6 @@
 #include <stdint.h>
 #include <string.h>
 #include <ctype.h>
-#include "freertos/FreeRTOS.h"
-#include "freertos/task.h"
 #include "esp_task.h"
 #include "esp_tls.h"
 #include "esp_http_client.h"
@@ -24,7 +22,6 @@
 #error CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS must be at least 2
 #endif
 
-#include "cJSON.h"
 const static char TAG[] = "tools";
 
 /****************************************************************************************
@@ -328,13 +325,6 @@ static esp_err_t http_event_handler(esp_http_client_event_t *evt) {
 	return ESP_OK;
 }
 
- 
-time_t millis() {
-    struct timeval tv;
-    gettimeofday(&tv, NULL);
-    return (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
-}
-
 void dump_json_content(const char* prefix, cJSON* json, int level) {
 	if (!json) {
 		ESP_LOG_LEVEL(level,TAG, "%s: empty!", prefix);

+ 8 - 5
components/tools/tools.h

@@ -9,10 +9,9 @@
  */
  
 #pragma once
-#include "cJSON.h"
-#include "time.h"
 #include "freertos/FreeRTOS.h"
 #include "freertos/task.h"
+#include "cJSON.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -56,6 +55,13 @@ void* 		clone_obj_psram(void * source, size_t source_sz);
 char* 		strdup_psram(const char * source);
 const char* str_or_unknown(const char * str);
 const char* str_or_null(const char * str);
+void        dump_json_content(const char* prefix, cJSON* json, int level);
+
+#ifndef gettime_ms
+// body is provided somewhere else...
+uint32_t _gettime_ms_(void);
+#define gettime_ms _gettime_ms_
+#endif
 
 typedef void (*http_download_cb_t)(uint8_t* data, size_t len, void *context);
 void		http_download(char *url, size_t max, http_download_cb_t callback, void *context);
@@ -74,9 +80,6 @@ void vTaskDeleteEXTRAM(TaskHandle_t xTask);
 
 extern const char unknown_string_placeholder[];
 
-time_t millis();
-void dump_json_content(const char* prefix, cJSON* json, int level);
-
 #ifdef __cplusplus
 }
 #endif

+ 2 - 2
main/esp_app_main.c

@@ -233,8 +233,8 @@ void register_default_string_val(const char * key, const char * value){
 	char * existing =(char *)config_alloc_get(NVS_TYPE_STR,key );
 	ESP_LOGD(TAG,"Register default called with:  %s= %s",key,value );
 	if(!existing) {
-		ESP_LOGI(TAG,"Registering default value for key %s, value %s",key,value );
-		config_set_default(NVS_TYPE_STR, key,value, 0);
+		ESP_LOGI(TAG,"Registering default value for key %s, value %s", key, value );
+		config_set_default(NVS_TYPE_STR, key, value, 0);
 	}
 	else {
 		ESP_LOGD(TAG,"Value found for %s: %s",key,existing );