mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-26 20:56:37 +00:00
Fix millis() overflow on 32-bit Linux
This commit is contained in:
parent
a7d900ed7b
commit
a0c8fd49d4
@ -248,11 +248,18 @@ long PosixDevice::get_uptime()
|
||||
|
||||
} // namespace dev
|
||||
|
||||
long PosixMillis()
|
||||
static time_t tv_sec_start = 0;
|
||||
|
||||
unsigned long PosixMillis()
|
||||
{
|
||||
struct timespec spec;
|
||||
clock_gettime(CLOCK_REALTIME, &spec);
|
||||
return (spec.tv_sec) * 1000 + (spec.tv_nsec) / 1e6;
|
||||
if (tv_sec_start == 0) {
|
||||
tv_sec_start = spec.tv_sec;
|
||||
}
|
||||
unsigned long msec1 = (spec.tv_sec - tv_sec_start) * 1000;
|
||||
unsigned long msec2 = spec.tv_nsec / 1e6;
|
||||
return msec1 + msec2;
|
||||
}
|
||||
|
||||
void msleep(unsigned long millis)
|
||||
|
@ -75,7 +75,7 @@ class PosixDevice : public BaseDevice {
|
||||
|
||||
} // namespace dev
|
||||
|
||||
extern long PosixMillis();
|
||||
extern unsigned long PosixMillis();
|
||||
extern void msleep(unsigned long millis);
|
||||
|
||||
using dev::PosixDevice;
|
||||
|
Loading…
x
Reference in New Issue
Block a user