diff --git a/src/cmnds/cmd_main.c b/src/cmnds/cmd_main.c index ca6801c0a..76526a0f3 100644 --- a/src/cmnds/cmd_main.c +++ b/src/cmnds/cmd_main.c @@ -621,6 +621,19 @@ commandResult_t CMD_PWMFrequency(const void* context, const char* cmd, const cha g_pwmFrequency = Tokenizer_GetArgInteger(0); return CMD_RES_OK; } +commandResult_t CMD_IndexRefreshInterval(const void* context, const char* cmd, const char* args, int cmdFlags) { + Tokenizer_TokenizeString(args, 0); + // following check must be done after 'Tokenizer_TokenizeString', + // so we know arguments count in Tokenizer. 'cmd' argument is + // only for warning display + if (Tokenizer_CheckArgsCountAndPrintWarning(cmd, 1)) + { + return CMD_RES_NOT_ENOUGH_ARGUMENTS; + } + + g_indexAutoRefreshInterval = Tokenizer_GetArgInteger(0); + return CMD_RES_OK; +} commandResult_t CMD_DeepSleep_SetEdge(const void* context, const char* cmd, const char* args, int cmdFlags) { Tokenizer_TokenizeString(args, TOKENIZER_ALLOW_QUOTES | TOKENIZER_DONT_EXPAND); @@ -765,6 +778,9 @@ void CMD_Init_Early() { //cmddetail:"fn":"NULL);","file":"cmnds/cmd_main.c","requires":"", //cmddetail:"examples":""} CMD_RegisterCommand("PWMFrequency", CMD_PWMFrequency, NULL); + + CMD_RegisterCommand("IndexRefreshInterval", CMD_IndexRefreshInterval, NULL); + #if (defined WINDOWS) || (defined PLATFORM_BEKEN) || (defined PLATFORM_BL602) || (defined PLATFORM_LN882H) CMD_InitScripting(); diff --git a/src/driver/drv_charts.c b/src/driver/drv_charts.c index 576b8bc02..8ea729167 100644 --- a/src/driver/drv_charts.c +++ b/src/driver/drv_charts.c @@ -160,6 +160,9 @@ addRepeatingEvent 10 -1 chart_addNow $CH1*0.1 /* // Sample 8 // Random numbers + +IndexRefreshInterval 100000 + startDriver charts startDriver NTP //waitFor NTPState 1 @@ -208,15 +211,31 @@ void Chart_Free(chart_t *s) { if (!s) { return; } - for (int i = 0; i < s->numVars; i++) { - if (s->vars[i].title) { - free(s->vars[i].title); - } - if (s->vars[i].samples) { - free(s->vars[i].samples); + if (s->axes) { + for (int i = 0; i < s->numAxes; i++) { + if (s->axes[i].label) { + free(s->axes[i].label); + } + if (s->axes[i].name) { + free(s->axes[i].name); + } } + free(s->axes); + } + if (s->vars) { + for (int i = 0; i < s->numVars; i++) { + if (s->vars[i].title) { + free(s->vars[i].title); + } + if (s->vars[i].samples) { + free(s->vars[i].samples); + } + } + free(s->vars); + } + if (s->times) { + free(s->times); } - free(s->times); free(s); } chart_t *Chart_Create(int maxSamples, int numVars, int numAxes) { @@ -231,17 +250,22 @@ chart_t *Chart_Create(int maxSamples, int numVars, int numAxes) { } s->axes = (axis_t *)malloc(sizeof(axis_t) * numAxes); if (!s->axes) { + free(s->vars); free(s); return NULL; } s->times = (time_t *)malloc(sizeof(time_t) * maxSamples); if (!s->times) { + free(s->axes); free(s->vars); free(s); return NULL; } for (int i = 0; i < numVars; i++) { s->vars[i].samples = (float*)malloc(sizeof(float) * maxSamples); + if (s->vars[i].samples == 0) { + // TODO + } } s->numAxes = numAxes; s->numVars = numVars; diff --git a/src/httpserver/new_http.c b/src/httpserver/new_http.c index 03aa4475b..95e7786cb 100644 --- a/src/httpserver/new_http.c +++ b/src/httpserver/new_http.c @@ -63,6 +63,8 @@ const char* g_build_str = "Built on " __DATE__ " " __TIME__ " version " USER_SW_ const char httpCorsHeaders[] = "Access-Control-Allow-Origin: *\r\nAccess-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept"; // TEXT MIME type +int g_indexAutoRefreshInterval = 1000; // 1s + const char* methodNames[] = { "GET", "PUT", @@ -262,6 +264,12 @@ void http_html_start(http_request_t* request, const char* pagename) { poststr(request, htmlBodyStart2); } + +const char pageScriptPart1[] = ""; + + void http_html_end(http_request_t* request) { char upTimeStr[128]; unsigned char mac[32]; @@ -281,7 +289,11 @@ void http_html_end(http_request_t* request) { poststr(request, upTimeStr); poststr(request, htmlBodyEnd); - poststr(request, pageScript); + poststr(request, pageScriptPart1); + hprintf255(request, "%i", g_indexAutoRefreshInterval); + poststr(request, pageScriptPart2); + hprintf255(request, "%i", g_indexAutoRefreshInterval); + poststr(request, pageScriptPart3); } const char* http_checkArg(const char* p, const char* n) { @@ -795,10 +807,6 @@ See https://github.com/openshwprojects/OpenBK7231T_App/blob/main/BUILDING.md for const char htmlHeadStyle[] = ""; //region_end htmlHeadStyle -//region_start pageScript -const char pageScript[] = ""; -//region_end pageScript - //region_start ha_discovery_script const char ha_discovery_script[] = ""; //region_end ha_discovery_script diff --git a/src/httpserver/new_http.h b/src/httpserver/new_http.h index 0a661b3a5..24b17abbb 100644 --- a/src/httpserver/new_http.h +++ b/src/httpserver/new_http.h @@ -1,7 +1,7 @@ #ifndef _NEW_HTTP_H #define _NEW_HTTP_H - +extern int g_indexAutoRefreshInterval; extern const char httpHeader[]; // HTTP header extern const char httpMimeTypeHTML[]; // HTML MIME type extern const char httpMimeTypeText[]; // TEXT MIME type