STM32 RTC Scheduler
RTC-based scheduler for ultra-low power applications
scheduler.h
Go to the documentation of this file.
1 
15 #ifndef SCHEDULER_H
16 #define SCHEDULER_H
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 
22 /* Includes ------------------------------------------------------------------*/
23 #include "stm32l4xx_hal.h"
24 
25 /* Defines -------------------------------------------------------------------*/
27 #define MAX_NUM_OF_JOBS 10U
28 
29 /* Typedefs ------------------------------------------------------------------*/
31 typedef void (*Callback_t)(void);
32 
33 /* Structures ----------------------------------------------------------------*/
35 typedef struct
36 {
38  uint32_t period;
40  uint32_t remainingTime;
42  uint8_t isPending;
45 } Job_t;
46 
48 typedef struct
49 {
52  uint32_t startTime;
54  uint8_t isRunning;
56  uint8_t numOfJobs;
59 } Scheduler_t;
60 
61 /* Functions -----------------------------------------------------------------*/
62 void SchedulerInit(void);
63 uint8_t SchedulerAddJob(const uint32_t period, const Callback_t callback);
64 void SchedulerProcess(void);
66 void SchedulerStop(void);
67 
68 #ifdef __cplusplus
69 }
70 #endif
71 
72 #endif /* SCHEDULER_H */
SchedulerAddJob
uint8_t SchedulerAddJob(const uint32_t period, const Callback_t callback)
Add a new job to the scheduler.
Definition: scheduler.c:43
Scheduler_t
Definition: scheduler.h:48
Job_t::period
uint32_t period
Definition: scheduler.h:38
SchedulerExecutePendingJobs
void SchedulerExecutePendingJobs(void)
Execute the pending jobs.
Definition: scheduler.c:159
Scheduler_t::startTime
uint32_t startTime
Definition: scheduler.h:52
Scheduler_t::numOfJobs
uint8_t numOfJobs
Definition: scheduler.h:56
Scheduler_t::isRunning
uint8_t isRunning
Definition: scheduler.h:54
SchedulerStop
void SchedulerStop(void)
Stop the scheduler.
Definition: scheduler.c:188
Job_t::isPending
uint8_t isPending
Definition: scheduler.h:42
Job_t::remainingTime
uint32_t remainingTime
Definition: scheduler.h:40
Job_t::callback
Callback_t callback
Definition: scheduler.h:44
SchedulerInit
void SchedulerInit(void)
Initialize the scheduler by setting its structure values to zero.
Definition: scheduler.c:28
SchedulerProcess
void SchedulerProcess(void)
Process the scheduler.
Definition: scheduler.c:85
MAX_NUM_OF_JOBS
#define MAX_NUM_OF_JOBS
Definition: scheduler.h:27
Job_t
Definition: scheduler.h:35
Callback_t
void(* Callback_t)(void)
Definition: scheduler.h:31