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
|
} // namespace dev
|
||||||
|
|
||||||
long PosixMillis()
|
static time_t tv_sec_start = 0;
|
||||||
|
|
||||||
|
unsigned long PosixMillis()
|
||||||
{
|
{
|
||||||
struct timespec spec;
|
struct timespec spec;
|
||||||
clock_gettime(CLOCK_REALTIME, &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)
|
void msleep(unsigned long millis)
|
||||||
|
@ -75,7 +75,7 @@ class PosixDevice : public BaseDevice {
|
|||||||
|
|
||||||
} // namespace dev
|
} // namespace dev
|
||||||
|
|
||||||
extern long PosixMillis();
|
extern unsigned long PosixMillis();
|
||||||
extern void msleep(unsigned long millis);
|
extern void msleep(unsigned long millis);
|
||||||
|
|
||||||
using dev::PosixDevice;
|
using dev::PosixDevice;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user