Files
EMS-ESP32/lib/uuid-common/src/get_uptime_ms.cpp
T
2026-10-04 09:56:34 +02:00

54 lines
1.4 KiB
C++

/*
* uuid-common - Microcontroller common utilities
* Copyright 2019 Simon Arlott
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <uuid/common.h>
#include <Arduino.h>
#include <sys/time.h>
namespace uuid {
static uint64_t now_millis = 0;
// returns system uptime in seconds
uint32_t get_uptime_sec() {
return (uint32_t)(now_millis / 1000ULL);
}
uint64_t get_uptime_ms() {
return now_millis;
}
void set_uptime() {
now_millis = esp_timer_get_time() / 1000ULL;
}
uint32_t get_uptime() {
return (uint32_t)now_millis;
}
// both clocks are read live and subtracted in us, rounding each to ms or s first makes the offset jitter
int64_t get_wall_offset_ms() {
struct timeval tv;
gettimeofday(&tv, nullptr);
return ((int64_t)tv.tv_sec * 1000000 + tv.tv_usec - esp_timer_get_time()) / 1000;
}
} // namespace uuid