Compare commits

...

2 Commits

Author SHA1 Message Date
c6f67ed21a Add delays for stability. 2023-08-28 01:27:37 +02:00
16cd90d11d Hotfix, refactoring. 2023-08-27 18:00:29 +02:00
2 changed files with 10 additions and 27 deletions

View File

@@ -128,7 +128,7 @@ private:
bool _allowdrop = false;
bool _tetrisGameOver = false;
int _gameStatet = GAME_STATE_INIT;
int _gameState = GAME_STATE_INIT;
int _score = 0;
unsigned int _speedtetris = 80;
unsigned long _brickSpeed = 0;

View File

@@ -46,9 +46,6 @@
#include "wordclock_constants.h"
#include "render_functions.h"
// DEBUG
uint32_t dbg_counter = 0; // TODO RM
const String state_names[] = {"Clock", "DiClock", "Spiral", "Tetris", "Snake", "PingPong", "Hearts"};
// PERIODS for each state (different for stateAutoChange or Manual mode)
const uint16_t PERIODS[2][NUM_STATES] = {{PERIOD_TIME_VISU_UPDATE, // stateAutoChange = 0
@@ -110,6 +107,8 @@ NightModeTimes_st night_mode_times = {
NIGHTMODE_END_HR,
NIGHTMODE_END_MIN};
uint32_t heartbeat_counter = 0; // for heartbeat on-time in seconds
// ----------------------------------------------------------------------------------
// SETUP
// ----------------------------------------------------------------------------------
@@ -292,65 +291,48 @@ void loop()
static unsigned long last_state_change = 0; // time of last state change
handleOTA(); // handle OTA
yield();
webserver.handleClient(); // handle webserver
yield();
// send regularly heartbeat messages via UDP multicast
if ((current_time_ms - last_heartbeat) > PERIOD_HEARTBEAT)
{
Serial.printf("a");
Serial.println();
send_heartbeat(); // send heartbeat update
last_heartbeat = CURRENT_TIME_MS;
yield();
Serial.printf("A");
}
if (!night_mode && ((current_time_ms - last_animation_step) > PERIODS[state_auto_change][current_state]) && ((current_time_ms - last_led_direct) > TIMEOUT_LEDDIRECT))
{
Serial.printf("b");
handle_current_state(); // handle current state
last_animation_step = CURRENT_TIME_MS;
yield();
Serial.printf("B");
delay(10);
}
if ((current_time_ms - last_matrix_update) > PERIOD_MATRIX_UPDATE)
{
Serial.printf("c");
update_matrix(); // update matrix
last_matrix_update = CURRENT_TIME_MS;
yield();
Serial.printf("C");
delay(10);
}
handle_button(); // handle button press
if (!night_mode && state_auto_change && (current_time_ms - last_state_change > PERIOD_STATE_CHANGE))
{
Serial.printf("d");
update_state_machine(); // handle state changes
last_state_change = CURRENT_TIME_MS;
yield();
Serial.printf("D");
}
if ((current_time_ms - last_ntp_update) > PERIOD_NTP_UPDATE)
{
Serial.printf("e");
ntp_time_update(&last_ntp_update); // ntp time update
yield();
Serial.printf("E");
delay(10);
}
if ((current_time_ms - last_nightmode_check) > PERIOD_NIGHTMODE_CHECK)
{
Serial.printf("f");
check_night_mode(); // check night mode
last_nightmode_check = CURRENT_TIME_MS;
Serial.printf("F");
}
}
@@ -468,8 +450,10 @@ void update_matrix()
void send_heartbeat()
{
logger.log_string("Heartbeat, state: " + state_names[current_state] + ", FreeHeap: " + ESP.getFreeHeap() +
", HeapFrag: " + ESP.getHeapFragmentation() + ", MaxFreeBlock: " + ESP.getMaxFreeBlockSize() + "\nCounter: " +
dbg_counter + " , Hours: " + (float)(dbg_counter) / 3600.0 + "\n"); // TODO CHANGE
", HeapFrag: " + ESP.getHeapFragmentation() + ", MaxFreeBlock: " + ESP.getMaxFreeBlockSize() +
"\nCounter: " + heartbeat_counter + ", Hours: " + (float)(heartbeat_counter) / 3600.0 + "\n");
heartbeat_counter++;
// Check wifi status
if (WiFi.status() != WL_CONNECTED)
{
@@ -477,7 +461,6 @@ void send_heartbeat()
led_matrix.grid_add_pixel(0, 5, colors_24bit[1]);
led_matrix.draw_on_matrix_instant();
}
dbg_counter++; // TODO RM
}
/**