linux: Rework timer_check_periodic() to use ticks
Avoid using a 'struct timespec' to simplify the code. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
e0aba590f9
commit
8f9e497d69
|
@ -2,7 +2,7 @@
|
||||||
#define __LINUX_INTERNAL_H
|
#define __LINUX_INTERNAL_H
|
||||||
// Local definitions for micro-controllers running on linux
|
// Local definitions for micro-controllers running on linux
|
||||||
|
|
||||||
#include <time.h> // struct timespec
|
#include <stdint.h> // uint32_t
|
||||||
#include "autoconf.h" // CONFIG_CLOCK_FREQ
|
#include "autoconf.h" // CONFIG_CLOCK_FREQ
|
||||||
|
|
||||||
#define MAX_GPIO_LINES 256
|
#define MAX_GPIO_LINES 256
|
||||||
|
@ -22,7 +22,7 @@ int console_setup(char *name);
|
||||||
void console_sleep(struct timespec ts);
|
void console_sleep(struct timespec ts);
|
||||||
|
|
||||||
// timer.c
|
// timer.c
|
||||||
int timer_check_periodic(struct timespec *ts);
|
int timer_check_periodic(uint32_t *ts);
|
||||||
|
|
||||||
// watchdog.c
|
// watchdog.c
|
||||||
int watchdog_setup(void);
|
int watchdog_setup(void);
|
||||||
|
|
|
@ -75,17 +75,6 @@ timespec_read(void)
|
||||||
return ts;
|
return ts;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if a given time has past
|
|
||||||
int
|
|
||||||
timer_check_periodic(struct timespec *ts)
|
|
||||||
{
|
|
||||||
if (timespec_is_before(TimerInfo.next_wake, *ts))
|
|
||||||
return 0;
|
|
||||||
*ts = TimerInfo.next_wake;
|
|
||||||
ts->tv_sec += 2;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************
|
/****************************************************************
|
||||||
* Timers
|
* Timers
|
||||||
|
@ -93,6 +82,17 @@ timer_check_periodic(struct timespec *ts)
|
||||||
|
|
||||||
DECL_CONSTANT("CLOCK_FREQ", CONFIG_CLOCK_FREQ);
|
DECL_CONSTANT("CLOCK_FREQ", CONFIG_CLOCK_FREQ);
|
||||||
|
|
||||||
|
// Check if a given time has past
|
||||||
|
int
|
||||||
|
timer_check_periodic(uint32_t *ts)
|
||||||
|
{
|
||||||
|
uint32_t lrt = TimerInfo.last_read_time;
|
||||||
|
if (timer_is_before(lrt, *ts))
|
||||||
|
return 0;
|
||||||
|
*ts = lrt + timer_from_us(2000000);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
// Return the number of clock ticks for a given number of microseconds
|
// Return the number of clock ticks for a given number of microseconds
|
||||||
uint32_t
|
uint32_t
|
||||||
timer_from_us(uint32_t us)
|
timer_from_us(uint32_t us)
|
||||||
|
|
|
@ -26,7 +26,7 @@ watchdog_setup(void)
|
||||||
void
|
void
|
||||||
watchdog_task(void)
|
watchdog_task(void)
|
||||||
{
|
{
|
||||||
static struct timespec next_watchdog_time;
|
static uint32_t next_watchdog_time;
|
||||||
if (watchdog_fd < 0 || !timer_check_periodic(&next_watchdog_time))
|
if (watchdog_fd < 0 || !timer_check_periodic(&next_watchdog_time))
|
||||||
return;
|
return;
|
||||||
int ret = write(watchdog_fd, ".", 1);
|
int ret = write(watchdog_fd, ".", 1);
|
||||||
|
|
Loading…
Reference in New Issue