csleeptimer/sleeptimer.c

22 lines
481 B
C

#include "actions.h"
#include "idle.h"
#include <stdbool.h>
#include <time.h>
#include <unistd.h>
bool sleeptimer(unsigned long seconds, actionCallback callback) {
unsigned long millis = seconds * 1000;
unsigned long idleTime = getIdleTime();
struct timespec sleepTime = {.tv_sec = 0, .tv_nsec = 100 * 1000000};
while (idleTime < millis) {
idleTime = getIdleTime();
nanosleep(&sleepTime, NULL);
}
if (!(*callback)()) {
return false;
}
return true;
}