From 548745d1f04fa327516ab125c66b1e7049abfdba Mon Sep 17 00:00:00 2001 From: Mike Black W9MDB Date: Sat, 28 Sep 2024 22:48:11 -0500 Subject: [PATCH] Clean up sleep.c --- src/sleep.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/sleep.c b/src/sleep.c index 347962dce..37b873e02 100644 --- a/src/sleep.c +++ b/src/sleep.c @@ -50,19 +50,16 @@ extern double monotonic_seconds(); int hl_usleep(rig_useconds_t usec) { double sleep_time = usec / 1e6; - struct timespec tv1, tv2; + struct timespec tv1; double start_at = monotonic_seconds(); double end_at = start_at + sleep_time; double delay = sleep_time; - double lasterr = 0; if (sleep_time > .001) { delay -= .0001; } else if (sleep_time > .0001) { delay -= .00005; } tv1.tv_sec = (time_t) delay; tv1.tv_nsec = (long)((delay - tv1.tv_sec) * 1e+9); - tv2.tv_sec = 0; - tv2.tv_nsec = 1000000; // rig_debug(RIG_DEBUG_CACHE,"usec=%ld, sleep_time=%f, tv1=%ld,%ld\n", usec, sleep_time, (long)tv1.tv_sec, // (long)tv1.tv_nsec); @@ -74,26 +71,30 @@ int hl_usleep(rig_useconds_t usec) double elapsed; QueryPerformanceFrequency(&frequency); QueryPerformanceCounter(&start); - long long loops=0; do { struct timespec startc; clock_gettime(CLOCK_REALTIME, &startc); QueryPerformanceCounter(&end); elapsed = (double)(end.QuadPart - start.QuadPart) / frequency.QuadPart; - ++loops; } while (elapsed < sleep_time); } else { // Use Sleep for larger durations >= 3 milliseconds //Sleep((DWORD)(seconds * 1000 - 1)); // Convert seconds to milliseconds - usleep(sleep_time*1e6-400); + usleep(sleep_time*1e6-400); } #else + { + struct timespec tv2; + double lasterr = 0; + tv2.tv_sec = 0; + tv2.tv_nsec = 1000000; nanosleep(&tv1, NULL); while (((lasterr = end_at - monotonic_seconds()) > 0)) { nanosleep(&tv2, NULL); } + } #endif return 0;