added system timer for utime

added template of main application page
This commit is contained in:
Bogdan Pilyugin 2022-08-28 16:13:02 +02:00
parent 34be6b7dab
commit ee9c573032
6 changed files with 238 additions and 172 deletions

View File

@ -111,4 +111,7 @@ void StartTimeGet(void);
esp_err_t StartOTA(void); esp_err_t StartOTA(void);
void StartSystemTimer(void);
uint32_t GetUpTime(void);
#endif /* MAIN_INCLUDE_NETTRANSPORT_H_ */ #endif /* MAIN_INCLUDE_NETTRANSPORT_H_ */

View File

@ -115,7 +115,7 @@
struct struct
{ {
int TimeZone; int TimeZone;
uint8_t SntpServerAdr[33]; char SntpServerAdr[33];
struct struct
{ {
char bIsWifiEnabled :1; char bIsWifiEnabled :1;

View File

@ -303,7 +303,6 @@ static HTTP_IO_RESULT HTTPPostServicesSettings(httpd_req_t *req, char *PostData)
httpd_query_key_value(PostData, "clnm2", GetSysConf()->mqttStation[1].UserName, httpd_query_key_value(PostData, "clnm2", GetSysConf()->mqttStation[1].UserName,
sizeof(GetSysConf()->mqttStation[1].UserName)); sizeof(GetSysConf()->mqttStation[1].UserName));
if (httpd_query_key_value(PostData, "mqttenb2", tmp, sizeof(tmp)) == ESP_OK) if (httpd_query_key_value(PostData, "mqttenb2", tmp, sizeof(tmp)) == ESP_OK)
{ {
if (!strcmp((const char*) tmp, (const char*) "1")) if (!strcmp((const char*) tmp, (const char*) "1"))
@ -326,14 +325,39 @@ static HTTP_IO_RESULT HTTPPostServicesSettings(httpd_req_t *req, char *PostData)
#endif #endif
if (httpd_query_key_value(PostData, "sav", tmp, 4) == ESP_OK) /*SNTP*/
bool TempIsSNTPEnabled = false;
if (httpd_query_key_value(PostData, "sntpen", tmp, sizeof(tmp)) == ESP_OK)
{ {
if (!strcmp(tmp, (const char*) "prs")) if (!strcmp((const char*) tmp, (const char*) "1"))
TempIsSNTPEnabled = true;
}
httpd_query_key_value(PostData, "tsr", GetSysConf()->sntpClient.SntpServerAdr,
sizeof(GetSysConf()->sntpClient.SntpServerAdr));
if (httpd_query_key_value(PostData, "save", tmp, 5) == ESP_OK ||
httpd_query_key_value(PostData, "apply", tmp, 5) == ESP_OK)
{
if (!strcmp(tmp, (const char*) "mqtt"))
{ {
GetSysConf()->mqttStation[0].Flags1.bIsGlobalEnabled = TempIsMQTT1Enabled; GetSysConf()->mqttStation[0].Flags1.bIsGlobalEnabled = TempIsMQTT1Enabled;
#if CONFIG_MQTT_CLIENTS_NUM == 2 #if CONFIG_MQTT_CLIENTS_NUM == 2
GetSysConf()->mqttStation[1].Flags1.bIsGlobalEnabled = TempIsMQTT2Enabled; GetSysConf()->mqttStation[1].Flags1.bIsGlobalEnabled = TempIsMQTT2Enabled;
#endif #endif
}
else if (!strcmp(tmp, (const char*) "sntp"))
{
GetSysConf()->sntpClient.Flags1.bIsGlobalEnabled = TempIsSNTPEnabled;
}
if (httpd_query_key_value(PostData, "save", tmp, 5) == ESP_OK)
{
WriteNVSSysConfig(GetSysConf());
return HTTP_IO_DONE;
}
else if (httpd_query_key_value(PostData, "apply", tmp, 5) == ESP_OK)
{
WriteNVSSysConfig(GetSysConf()); WriteNVSSysConfig(GetSysConf());
memcpy(PostData, "/reboot.html", sizeof "/reboot.html"); memcpy(PostData, "/reboot.html", sizeof "/reboot.html");
return HTTP_IO_REDIRECT; return HTTP_IO_REDIRECT;
@ -346,8 +370,6 @@ static HTTP_IO_RESULT HTTPPostServicesSettings(httpd_req_t *req, char *PostData)
static HTTP_IO_RESULT HTTPPostSystemSettings(httpd_req_t *req, char *PostData) static HTTP_IO_RESULT HTTPPostSystemSettings(httpd_req_t *req, char *PostData)
{ {
char tmp[64]; char tmp[64];
bool TempIsTCPConfirm = false;
bool TempIsLoRaConfirm = false;
bool TempIsOTAEnabled = false; bool TempIsOTAEnabled = false;
if (httpd_query_key_value(PostData, "nam", tmp, sizeof(tmp)) == ESP_OK) if (httpd_query_key_value(PostData, "nam", tmp, sizeof(tmp)) == ESP_OK)
@ -355,11 +377,6 @@ static HTTP_IO_RESULT HTTPPostSystemSettings(httpd_req_t *req, char *PostData)
UnencodeURL(tmp); UnencodeURL(tmp);
strcpy(GetSysConf()->NetBIOSName, tmp); strcpy(GetSysConf()->NetBIOSName, tmp);
} }
if (httpd_query_key_value(PostData, "otaurl", tmp, sizeof(tmp)) == ESP_OK)
{
UnencodeURL(tmp);
strcpy(GetSysConf()->OTAURL, tmp);
}
httpd_query_key_value(PostData, "lgn", GetSysConf()->SysName, sizeof(GetSysConf()->SysName)); httpd_query_key_value(PostData, "lgn", GetSysConf()->SysName, sizeof(GetSysConf()->SysName));
@ -369,24 +386,18 @@ static HTTP_IO_RESULT HTTPPostSystemSettings(httpd_req_t *req, char *PostData)
strcpy(GetSysConf()->SysPass, tmp); strcpy(GetSysConf()->SysPass, tmp);
} }
if (httpd_query_key_value(PostData, "lrdel", tmp, sizeof(tmp)) == ESP_OK)
{
if (!strcmp((const char*) tmp, (const char*) "1"))
TempIsLoRaConfirm = true;
}
if (httpd_query_key_value(PostData, "tcpdel", tmp, sizeof(tmp)) == ESP_OK)
{
if (!strcmp((const char*) tmp, (const char*) "1"))
TempIsTCPConfirm = true;
}
if (httpd_query_key_value(PostData, "ota", tmp, sizeof(tmp)) == ESP_OK) if (httpd_query_key_value(PostData, "ota", tmp, sizeof(tmp)) == ESP_OK)
{ {
if (!strcmp((const char*) tmp, (const char*) "1")) if (!strcmp((const char*) tmp, (const char*) "1"))
TempIsOTAEnabled = true; TempIsOTAEnabled = true;
} }
if (httpd_query_key_value(PostData, "otaurl", tmp, sizeof(tmp)) == ESP_OK)
{
UnencodeURL(tmp);
strcpy(GetSysConf()->OTAURL, tmp);
}
if (httpd_query_key_value(PostData, "upd", tmp, sizeof(tmp)) == ESP_OK) if (httpd_query_key_value(PostData, "upd", tmp, sizeof(tmp)) == ESP_OK)
{ {
@ -398,26 +409,35 @@ static HTTP_IO_RESULT HTTPPostSystemSettings(httpd_req_t *req, char *PostData)
} }
if (httpd_query_key_value(PostData, "rst", tmp, sizeof(tmp)) == ESP_OK) if (httpd_query_key_value(PostData, "rst", tmp, sizeof(tmp)) == ESP_OK)
{ {
if (!strcmp(tmp, (const char*) "prs")) if (!strcmp(tmp, (const char*) "prs"))
{ {
memcpy(PostData, "/reboot.html", sizeof "/reboot.html"); memcpy(PostData, "/reboot.html", sizeof "/reboot.html");
return HTTP_IO_REDIRECT; return HTTP_IO_REDIRECT;
} }
} }
if (httpd_query_key_value(PostData, "sav", tmp, sizeof(tmp)) == ESP_OK)
{
if (!strcmp(tmp, (const char*) "prs"))
{
GetSysConf()->Flags1.bIsTCPConfirm = TempIsTCPConfirm;
GetSysConf()->Flags1.bIsLoRaConfirm = TempIsLoRaConfirm;
GetSysConf()->Flags1.bIsOTAEnabled = TempIsOTAEnabled;
if (httpd_query_key_value(PostData, "save", tmp, sizeof(tmp)) == ESP_OK ||
httpd_query_key_value(PostData, "apply", tmp, sizeof(tmp)) == ESP_OK)
{
if (!strcmp(tmp, (const char*) "syst"))
{
GetSysConf()->Flags1.bIsOTAEnabled = TempIsOTAEnabled;
}
if (httpd_query_key_value(PostData, "save", tmp, 5) == ESP_OK)
{
WriteNVSSysConfig(GetSysConf());
return HTTP_IO_DONE;
}
else if (httpd_query_key_value(PostData, "apply", tmp, 5) == ESP_OK)
{
WriteNVSSysConfig(GetSysConf()); WriteNVSSysConfig(GetSysConf());
memcpy(PostData, "/reboot.html", sizeof "/reboot.html"); memcpy(PostData, "/reboot.html", sizeof "/reboot.html");
return HTTP_IO_REDIRECT; return HTTP_IO_REDIRECT;
} }
} }
return HTTP_IO_DONE; return HTTP_IO_DONE;
} }

View File

@ -120,7 +120,7 @@ static void HTTPPrint_time(char *VarData, void *arg)
} }
static void HTTPPrint_uptime(char *VarData, void *arg) static void HTTPPrint_uptime(char *VarData, void *arg)
{ {
snprintf(VarData, MAX_DYNVAR_LENGTH, "%s", "-"); snprintf(VarData, MAX_DYNVAR_LENGTH, "%d", GetUpTime());
} }
static void HTTPPrint_status_fail(char *VarData, void *arg) static void HTTPPrint_status_fail(char *VarData, void *arg)
@ -192,7 +192,6 @@ static void HTTPPrint_otaurl(char *VarData, void *arg)
snprintf(VarData, MAX_DYNVAR_LENGTH, "%s", GetSysConf()->OTAURL); snprintf(VarData, MAX_DYNVAR_LENGTH, "%s", GetSysConf()->OTAURL);
} }
static void HTTPPrint_tshift(char *VarData, void *arg) static void HTTPPrint_tshift(char *VarData, void *arg)
{ {
snprintf(VarData, MAX_DYNVAR_LENGTH, "7200"); snprintf(VarData, MAX_DYNVAR_LENGTH, "7200");
@ -217,7 +216,6 @@ static void HTTPPrint_defadp(char *VarData, void *arg)
GetDefaultNetIFName(VarData); GetDefaultNetIFName(VarData);
} }
#if CONFIG_WEBGUIAPP_WIFI_ENABLE #if CONFIG_WEBGUIAPP_WIFI_ENABLE
static void HTTPPrint_wfen(char *VarData, void *arg) static void HTTPPrint_wfen(char *VarData, void *arg)
@ -399,13 +397,11 @@ static void HTTPPrint_emacadr(char *VarData, void *arg)
#endif #endif
void HTTPPrint_gsmstat(char *VarData, void *arg) void HTTPPrint_gsmstat(char *VarData, void *arg)
{ {
PrintInterfaceState(VarData, arg, GetPPPNetifAdapter()); PrintInterfaceState(VarData, arg, GetPPPNetifAdapter());
} }
#if CONFIG_WEBGUIAPP_GPRS_ENABLE #if CONFIG_WEBGUIAPP_GPRS_ENABLE
/*GSM MODEM*/ /*GSM MODEM*/
void HTTPPrint_gsmen(char *VarData, void *arg) void HTTPPrint_gsmen(char *VarData, void *arg)
@ -561,13 +557,32 @@ static void HTTPPrint_mqtt2st(char *VarData, void *arg)
} }
/* Pass build configuration to web interface*/
static void HTTPPrint_ifc_gprs(char *VarData, void *arg)
{
#if CONFIG_WEBGUIAPP_GPRS_ENABLE
snprintf(VarData, MAX_DYNVAR_LENGTH, "1");
#else
snprintf(VarData, MAX_DYNVAR_LENGTH, "0");
#endif
}
static void HTTPPrint_ifc_mq2(char *VarData, void *arg)
{
#if CONFIG_MQTT_CLIENTS_NUM == 2
snprintf(VarData, MAX_DYNVAR_LENGTH, "1");
#else
snprintf(VarData, MAX_DYNVAR_LENGTH, "0");
#endif
}
//Default string if not found handler //Default string if not found handler
static void HTTPPrint_DEF(char *VarData, void *arg) static void HTTPPrint_DEF(char *VarData, void *arg)
{ {
snprintf(VarData, MAX_DYNVAR_LENGTH, "#DEF"); snprintf(VarData, MAX_DYNVAR_LENGTH, "#DEF");
} }
dyn_var_handler_t HANDLERS_ARRAY[] = { dyn_var_handler_t HANDLERS_ARRAY[] = {
/*Ststem settings*/ /*Ststem settings*/
{ "dname", sizeof("dname") - 1, &HTTPPrint_dname }, { "dname", sizeof("dname") - 1, &HTTPPrint_dname },
@ -675,15 +690,18 @@ dyn_var_handler_t HANDLERS_ARRAY[] = {
/*ERROR report*/ /*ERROR report*/
{ "status_fail", sizeof("status_fail") - 1, &HTTPPrint_status_fail }, { "status_fail", sizeof("status_fail") - 1, &HTTPPrint_status_fail },
{ "ifc_gprs", sizeof("ifc_gprs") - 1, &HTTPPrint_ifc_gprs },
{ "ifc_mq2", sizeof("ifc_mq2") - 1, &HTTPPrint_ifc_mq2 },
}; };
int HTTPPrint(httpd_req_t *req, char *buf, char *var) int HTTPPrint(httpd_req_t *req, char *buf, char *var)
{ {
char VarData[MAX_DYNVAR_LENGTH]; char VarData[MAX_DYNVAR_LENGTH];
const char incPat[] = "inc:"; const char incPat[] = "inc:";
const int incPatLen = sizeof(incPat) - 1; const int incPatLen = sizeof(incPat) - 1;
if (!memcmp(var, incPat, incPatLen)) if (!memcmp(var, incPat, incPatLen))
{ {
const char rootFS[] = "/"; const char rootFS[] = "/";
char filename[32]; char filename[32];
filename[0] = 0x00; filename[0] = 0x00;
@ -699,14 +717,14 @@ int HTTPPrint(httpd_req_t *req, char *buf, char *var)
espfs_fclose(file); espfs_fclose(file);
return readBytes; return readBytes;
} }
} }
bool fnd = false; bool fnd = false;
char *p2 = var + strlen(var) - 1; //last var symbol char *p2 = var + strlen(var) - 1; //last var symbol
int arg = 0; int arg = 0;
//searching for tag in handles array //searching for tag in handles array
for (int i = 0; i < (sizeof(HANDLERS_ARRAY) / sizeof(HANDLERS_ARRAY[0])); ++i) for (int i = 0; i < (sizeof(HANDLERS_ARRAY) / sizeof(HANDLERS_ARRAY[0])); ++i)
{ {
if (*p2 == ')') if (*p2 == ')')
{ //found close brace { //found close brace
char *p1 = p2; char *p1 = p2;
@ -727,17 +745,17 @@ int HTTPPrint(httpd_req_t *req, char *buf, char *var)
fnd = true; fnd = true;
break; break;
} }
} }
if (!fnd) if (!fnd)
{ {
if (HTTPPrintCust != NULL) if (HTTPPrintCust != NULL)
return HTTPPrintCust(req, buf, var); return HTTPPrintCust(req, buf, var);
else else
HTTPPrint_DEF(VarData, NULL); HTTPPrint_DEF(VarData, NULL);
} }
int dLen = strlen(VarData); int dLen = strlen(VarData);
memcpy(buf, VarData, dLen); memcpy(buf, VarData, dLen);
return dLen; return dLen;
} }

View File

@ -20,12 +20,22 @@
*/ */
#include "esp_sntp.h" #include "esp_sntp.h"
#include "esp_timer.h"
#include "NetTransport.h" #include "NetTransport.h"
#define YEAR_BASE (1900) //tm structure base year #define YEAR_BASE (1900) //tm structure base year
static uint32_t UpTime = 0;
static void initialize_sntp(void); static void initialize_sntp(void);
void SecondTickSystem(void *arg);
esp_timer_handle_t system_seconds_timer;
const esp_timer_create_args_t system_seconds_timer_args = {
.callback = &SecondTickSystem,
.name = "secondsTimer"
};
static void obtain_time(void *pvParameter) static void obtain_time(void *pvParameter)
{ {
initialize_sntp(); initialize_sntp();
@ -74,4 +84,18 @@ void GetRFC3339Time(char *t)
timeinfo.tm_sec); timeinfo.tm_sec);
} }
void StartSystemTimer(void)
{
ESP_ERROR_CHECK(esp_timer_create(&system_seconds_timer_args, &system_seconds_timer));
ESP_ERROR_CHECK(esp_timer_start_periodic(system_seconds_timer, 1000000));
}
void SecondTickSystem(void *param)
{
++UpTime;
}
uint32_t GetUpTime(void)
{
return UpTime;
}

View File

@ -48,6 +48,7 @@
static SYS_CONFIG SysConfig; static SYS_CONFIG SysConfig;
#define SPI_LOCK_TIMEOUT_MS (1000) #define SPI_LOCK_TIMEOUT_MS (1000)
SemaphoreHandle_t xSemaphoreSPIHandle = NULL; SemaphoreHandle_t xSemaphoreSPIHandle = NULL;
@ -60,6 +61,7 @@ static void InitSysI2C(void);
esp_err_t WebGuiAppInit(void) esp_err_t WebGuiAppInit(void)
{ {
InitSysIO(); InitSysIO();
StartSystemTimer();
#if CONFIG_WEBGUIAPP_SPI_ENABLE #if CONFIG_WEBGUIAPP_SPI_ENABLE
InitSysSPI(); InitSysSPI();
#endif #endif
@ -418,7 +420,6 @@ esp_err_t ResetInitSysConfig(void)
return WriteNVSSysConfig(&SysConfig); return WriteNVSSysConfig(&SysConfig);
} }
void DelayedRestartTask(void *pvParameter) void DelayedRestartTask(void *pvParameter)
{ {
vTaskDelay(pdMS_TO_TICKS(3000)); vTaskDelay(pdMS_TO_TICKS(3000));