mirror of
https://github.com/dalathegreat/Battery-Emulator.git
synced 2025-10-03 17:59:27 +02:00
Move WIFI out from the core task (#346)
* Initial commit Moved wifi_monitor to the mqtt task, renamed it to 'connectivity task' * Missed a spot * Might be the last spot! Who knows! * Nope, last spot wasn't last spot, better luck this time!
This commit is contained in:
parent
ebacf17715
commit
fe6ea4ead8
3 changed files with 34 additions and 22 deletions
|
@ -86,8 +86,8 @@ float charger_stat_LVvol = 0;
|
||||||
int64_t core_task_time_us;
|
int64_t core_task_time_us;
|
||||||
MyTimer core_task_timer_10s(INTERVAL_10_S);
|
MyTimer core_task_timer_10s(INTERVAL_10_S);
|
||||||
|
|
||||||
int64_t mqtt_task_time_us;
|
int64_t connectivity_task_time_us;
|
||||||
MyTimer mqtt_task_timer_10s(INTERVAL_10_S);
|
MyTimer connectivity_task_timer_10s(INTERVAL_10_S);
|
||||||
|
|
||||||
MyTimer loop_task_timer_10s(INTERVAL_10_S);
|
MyTimer loop_task_timer_10s(INTERVAL_10_S);
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ unsigned long timeSpentInFaultedMode = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TaskHandle_t main_loop_task;
|
TaskHandle_t main_loop_task;
|
||||||
TaskHandle_t mqtt_loop_task;
|
TaskHandle_t connectivity_loop_task;
|
||||||
|
|
||||||
// Initialization
|
// Initialization
|
||||||
void setup() {
|
void setup() {
|
||||||
|
@ -125,11 +125,9 @@ void setup() {
|
||||||
init_stored_settings();
|
init_stored_settings();
|
||||||
|
|
||||||
#ifdef WEBSERVER
|
#ifdef WEBSERVER
|
||||||
init_webserver();
|
|
||||||
init_mDNS();
|
|
||||||
#ifdef MQTT
|
#ifdef MQTT
|
||||||
xTaskCreatePinnedToCore((TaskFunction_t)&mqtt_loop, "mqtt_loop", 4096, &mqtt_task_time_us, TASK_CONNECTIVITY_PRIO,
|
xTaskCreatePinnedToCore((TaskFunction_t)&connectivity_loop, "connectivity_loop", 4096, &connectivity_task_time_us,
|
||||||
&mqtt_loop_task, WIFI_CORE);
|
TASK_CONNECTIVITY_PRIO, &connectivity_loop_task, WIFI_CORE);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -170,25 +168,33 @@ void loop() {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef WEBSERVER
|
||||||
#ifdef MQTT
|
#ifdef MQTT
|
||||||
void mqtt_loop(void* task_time_us) {
|
void connectivity_loop(void* task_time_us) {
|
||||||
// Init MQTT
|
// Init
|
||||||
|
init_webserver();
|
||||||
|
init_mDNS();
|
||||||
init_mqtt();
|
init_mqtt();
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
START_TIME_MEASUREMENT(wifi);
|
||||||
|
wifi_monitor();
|
||||||
|
END_TIME_MEASUREMENT_MAX(wifi, datalayer.system.status.wifi_task_10s_max_us);
|
||||||
START_TIME_MEASUREMENT(mqtt);
|
START_TIME_MEASUREMENT(mqtt);
|
||||||
mqtt_loop();
|
mqtt_loop();
|
||||||
END_TIME_MEASUREMENT_MAX(mqtt, datalayer.system.status.mqtt_task_10s_max_us);
|
END_TIME_MEASUREMENT_MAX(mqtt, datalayer.system.status.mqtt_task_10s_max_us);
|
||||||
|
|
||||||
#ifdef FUNCTION_TIME_MEASUREMENT
|
#ifdef FUNCTION_TIME_MEASUREMENT
|
||||||
if (mqtt_task_timer_10s.elapsed()) {
|
if (connectivity_task_timer_10s.elapsed()) {
|
||||||
datalayer.system.status.mqtt_task_10s_max_us = 0;
|
datalayer.system.status.mqtt_task_10s_max_us = 0;
|
||||||
|
datalayer.system.status.wifi_task_10s_max_us = 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
delay(1);
|
delay(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
void core_loop(void* task_time_us) {
|
void core_loop(void* task_time_us) {
|
||||||
TickType_t xLastWakeTime = xTaskGetTickCount();
|
TickType_t xLastWakeTime = xTaskGetTickCount();
|
||||||
|
@ -211,10 +217,9 @@ void core_loop(void* task_time_us) {
|
||||||
#endif
|
#endif
|
||||||
END_TIME_MEASUREMENT_MAX(comm, datalayer.system.status.time_comm_us);
|
END_TIME_MEASUREMENT_MAX(comm, datalayer.system.status.time_comm_us);
|
||||||
#ifdef WEBSERVER
|
#ifdef WEBSERVER
|
||||||
START_TIME_MEASUREMENT(wifi_ota);
|
START_TIME_MEASUREMENT(ota);
|
||||||
wifi_monitor();
|
|
||||||
ElegantOTA.loop();
|
ElegantOTA.loop();
|
||||||
END_TIME_MEASUREMENT_MAX(wifi_ota, datalayer.system.status.time_wifi_us);
|
END_TIME_MEASUREMENT_MAX(ota, datalayer.system.status.time_ota_us);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
START_TIME_MEASUREMENT(time_10ms);
|
START_TIME_MEASUREMENT(time_10ms);
|
||||||
|
@ -262,13 +267,13 @@ void core_loop(void* task_time_us) {
|
||||||
datalayer.system.status.time_snap_10ms_us = datalayer.system.status.time_10ms_us;
|
datalayer.system.status.time_snap_10ms_us = datalayer.system.status.time_10ms_us;
|
||||||
datalayer.system.status.time_snap_5s_us = datalayer.system.status.time_5s_us;
|
datalayer.system.status.time_snap_5s_us = datalayer.system.status.time_5s_us;
|
||||||
datalayer.system.status.time_snap_cantx_us = datalayer.system.status.time_cantx_us;
|
datalayer.system.status.time_snap_cantx_us = datalayer.system.status.time_cantx_us;
|
||||||
datalayer.system.status.time_snap_wifi_us = datalayer.system.status.time_wifi_us;
|
datalayer.system.status.time_snap_ota_us = datalayer.system.status.time_ota_us;
|
||||||
}
|
}
|
||||||
|
|
||||||
datalayer.system.status.core_task_max_us =
|
datalayer.system.status.core_task_max_us =
|
||||||
MAX(datalayer.system.status.core_task_10s_max_us, datalayer.system.status.core_task_max_us);
|
MAX(datalayer.system.status.core_task_10s_max_us, datalayer.system.status.core_task_max_us);
|
||||||
if (core_task_timer_10s.elapsed()) {
|
if (core_task_timer_10s.elapsed()) {
|
||||||
datalayer.system.status.time_wifi_us = 0;
|
datalayer.system.status.time_ota_us = 0;
|
||||||
datalayer.system.status.time_comm_us = 0;
|
datalayer.system.status.time_comm_us = 0;
|
||||||
datalayer.system.status.time_10ms_us = 0;
|
datalayer.system.status.time_10ms_us = 0;
|
||||||
datalayer.system.status.time_5s_us = 0;
|
datalayer.system.status.time_5s_us = 0;
|
||||||
|
|
|
@ -113,13 +113,15 @@ typedef struct {
|
||||||
int64_t core_task_max_us = 0;
|
int64_t core_task_max_us = 0;
|
||||||
/** Core task measurement variable, reset each 10 seconds */
|
/** Core task measurement variable, reset each 10 seconds */
|
||||||
int64_t core_task_10s_max_us = 0;
|
int64_t core_task_10s_max_us = 0;
|
||||||
/** MQTT task measurement variable, reset each 10 seconds */
|
/** MQTT sub-task measurement variable, reset each 10 seconds */
|
||||||
int64_t mqtt_task_10s_max_us = 0;
|
int64_t mqtt_task_10s_max_us = 0;
|
||||||
|
/** Wifi sub-task measurement variable, reset each 10 seconds */
|
||||||
|
int64_t wifi_task_10s_max_us = 0;
|
||||||
/** loop() task measurement variable, reset each 10 seconds */
|
/** loop() task measurement variable, reset each 10 seconds */
|
||||||
int64_t loop_task_10s_max_us = 0;
|
int64_t loop_task_10s_max_us = 0;
|
||||||
|
|
||||||
/** OTA/Wifi handling function measurement variable */
|
/** OTA handling function measurement variable */
|
||||||
int64_t time_wifi_us = 0;
|
int64_t time_ota_us = 0;
|
||||||
/** CAN RX or serial link function measurement variable */
|
/** CAN RX or serial link function measurement variable */
|
||||||
int64_t time_comm_us = 0;
|
int64_t time_comm_us = 0;
|
||||||
/** 10 ms function measurement variable */
|
/** 10 ms function measurement variable */
|
||||||
|
@ -130,9 +132,9 @@ typedef struct {
|
||||||
int64_t time_cantx_us = 0;
|
int64_t time_cantx_us = 0;
|
||||||
|
|
||||||
/** Function measurement snapshot variable.
|
/** Function measurement snapshot variable.
|
||||||
* This will show the performance of OTA/Wifi handling when the total time reached a new worst case
|
* This will show the performance of OTA handling when the total time reached a new worst case
|
||||||
*/
|
*/
|
||||||
int64_t time_snap_wifi_us = 0;
|
int64_t time_snap_ota_us = 0;
|
||||||
/** Function measurement snapshot variable.
|
/** Function measurement snapshot variable.
|
||||||
* This will show the performance of CAN RX or serial link when the total time reached a new worst case
|
* This will show the performance of CAN RX or serial link when the total time reached a new worst case
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -386,7 +386,12 @@ String processor(const String& var) {
|
||||||
// Load information
|
// Load information
|
||||||
content += "<h4>Core task max load: " + String(datalayer.system.status.core_task_max_us) + " us</h4>";
|
content += "<h4>Core task max load: " + String(datalayer.system.status.core_task_max_us) + " us</h4>";
|
||||||
content += "<h4>Core task max load last 10 s: " + String(datalayer.system.status.core_task_10s_max_us) + " us</h4>";
|
content += "<h4>Core task max load last 10 s: " + String(datalayer.system.status.core_task_10s_max_us) + " us</h4>";
|
||||||
content += "<h4>MQTT task max load last 10 s: " + String(datalayer.system.status.mqtt_task_10s_max_us) + " us</h4>";
|
content +=
|
||||||
|
"<h4>MQTT function (MQTT task) max load last 10 s: " + String(datalayer.system.status.mqtt_task_10s_max_us) +
|
||||||
|
" us</h4>";
|
||||||
|
content +=
|
||||||
|
"<h4>WIFI function (MQTT task) max load last 10 s: " + String(datalayer.system.status.wifi_task_10s_max_us) +
|
||||||
|
" us</h4>";
|
||||||
content +=
|
content +=
|
||||||
"<h4>loop() task max load last 10 s: " + String(datalayer.system.status.loop_task_10s_max_us) + " us</h4>";
|
"<h4>loop() task max load last 10 s: " + String(datalayer.system.status.loop_task_10s_max_us) + " us</h4>";
|
||||||
content += "<h4>Max load @ worst case execution of core task:</h4>";
|
content += "<h4>Max load @ worst case execution of core task:</h4>";
|
||||||
|
@ -394,7 +399,7 @@ String processor(const String& var) {
|
||||||
content += "<h4>5s function timing: " + String(datalayer.system.status.time_snap_5s_us) + " us</h4>";
|
content += "<h4>5s function timing: " + String(datalayer.system.status.time_snap_5s_us) + " us</h4>";
|
||||||
content += "<h4>CAN/serial RX function timing: " + String(datalayer.system.status.time_snap_comm_us) + " us</h4>";
|
content += "<h4>CAN/serial RX function timing: " + String(datalayer.system.status.time_snap_comm_us) + " us</h4>";
|
||||||
content += "<h4>CAN TX function timing: " + String(datalayer.system.status.time_snap_cantx_us) + " us</h4>";
|
content += "<h4>CAN TX function timing: " + String(datalayer.system.status.time_snap_cantx_us) + " us</h4>";
|
||||||
content += "<h4>Wifi and OTA function timing: " + String(datalayer.system.status.time_snap_wifi_us) + " us</h4>";
|
content += "<h4>OTA function timing: " + String(datalayer.system.status.time_snap_ota_us) + " us</h4>";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
wl_status_t status = WiFi.status();
|
wl_status_t status = WiFi.status();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue