From a7ba2d3fafd8d47b3f83111628ad3ebc277dddf7 Mon Sep 17 00:00:00 2001 From: Lucas Hartmann Date: Sat, 11 Sep 2021 23:07:02 -0300 Subject: [PATCH] Fixed long sleep, over 1s. --- webserver/core/glueVars.cpp | 5 +++-- webserver/core/ladder.h | 2 +- webserver/core/main.cpp | 5 +++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/webserver/core/glueVars.cpp b/webserver/core/glueVars.cpp index ba8c44f..e1daf57 100755 --- a/webserver/core/glueVars.cpp +++ b/webserver/core/glueVars.cpp @@ -62,11 +62,12 @@ void glueVars() void updateTime() { - __CURRENT_TIME.tv_nsec += common_ticktime__; + __CURRENT_TIME.tv_sec += common_ticktime__ / 1000000000; + __CURRENT_TIME.tv_nsec += common_ticktime__ % 1000000000; if (__CURRENT_TIME.tv_nsec >= 1000000000) { __CURRENT_TIME.tv_nsec -= 1000000000; __CURRENT_TIME.tv_sec += 1; } -} \ No newline at end of file +} diff --git a/webserver/core/ladder.h b/webserver/core/ladder.h index d92ce92..f646f96 100644 --- a/webserver/core/ladder.h +++ b/webserver/core/ladder.h @@ -111,7 +111,7 @@ extern int ignored_int_inputs[]; extern int ignored_int_outputs[]; //main.cpp -void sleep_until(struct timespec *ts, int delay); +void sleep_until(struct timespec *ts, long long delay); void sleepms(int milliseconds); void log(unsigned char *logmsg); bool pinNotPresent(int *ignored_vector, int vector_size, int pinNumber); diff --git a/webserver/core/main.cpp b/webserver/core/main.cpp index 469d7e1..97ef94f 100644 --- a/webserver/core/main.cpp +++ b/webserver/core/main.cpp @@ -53,9 +53,10 @@ int log_counter = 0; // Helper function - Makes the running thread sleep for the ammount of time // in milliseconds //----------------------------------------------------------------------------- -void sleep_until(struct timespec *ts, int delay) +void sleep_until(struct timespec *ts, long long delay) { - ts->tv_nsec += delay; + ts->tv_sec += delay / (1000*1000*1000); + ts->tv_nsec += delay % (1000*1000*1000); if(ts->tv_nsec >= 1000*1000*1000) { ts->tv_nsec -= 1000*1000*1000;