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