Midnight Sun Firmware
Loading...
Searching...
No Matches
software_timer.h
1#pragma once
2
3/************************************************************************************************
4 * @file software_timer.h
5 *
6 * @brief Header file for the software timer library
7 *
8 * @date 2025-11-06
9 * @author Midnight Sun Team #24 - MSXVI
10 ************************************************************************************************/
11
12/* Standard library Headers */
13#include <stdbool.h>
14#include <stdint.h>
15
16/* Inter-component Headers */
17
18/* Intra-component Headers */
19#include "FreeRTOS.h"
20#include "status.h"
21#include "timers.h"
22
30typedef TimerHandle_t SoftTimerId;
31
33typedef void (*SoftTimerCallback)(SoftTimerId id);
34
38typedef struct {
39 StaticTimer_t buffer;
40 SoftTimerId id;
41} SoftTimer;
42
47typedef struct {
49 uint32_t period_ms;
52
54typedef void (*SoftTimerCallback)(SoftTimerId id);
55
63StatusCode software_timer_init(uint32_t duration_ms, SoftTimerCallback callback, SoftTimer *timer);
64
71
79StatusCode software_timer_init_and_start(uint32_t duration_ms, SoftTimerCallback callback, SoftTimer *timer);
80
87
94
101
108
116StatusCode software_watchdog_init(SoftwareWatchdog *watchdog, uint32_t period_ms, SoftTimerCallback fault_callback);
117
124
131
StatusCode software_timer_start(SoftTimer *timer)
Starts an initialized software timer.
Definition: software_timer.c:28
TimerHandle_t SoftTimerId
Redefine FreeRTOS TimerHandle_t to SoftTimerId.
Definition: software_timer.h:30
StatusCode software_watchdog_init(SoftwareWatchdog *watchdog, uint32_t period_ms, SoftTimerCallback fault_callback)
Initializes the software watchdog timer.
Definition: software_timer.c:72
void(* SoftTimerCallback)(SoftTimerId id)
Software timer callback function.
Definition: software_timer.h:33
uint32_t software_timer_remaining_time(SoftTimer *timer)
Gets the remaining time on a software timer.
Definition: software_timer.c:63
StatusCode software_timer_cancel(SoftTimer *timer)
Cancels a running software timer.
Definition: software_timer.c:43
StatusCode software_watchdog_stop(SoftwareWatchdog *watchdog)
Stops and disables the watchdog timer.
Definition: software_timer.c:92
StatusCode software_watchdog_kick(SoftwareWatchdog *watchdog)
"Kicks" (resets) the watchdog timer to prevent timeout
Definition: software_timer.c:84
StatusCode software_timer_reset(SoftTimer *timer)
Restarts a software timer.
Definition: software_timer.c:51
StatusCode software_timer_init_and_start(uint32_t duration_ms, SoftTimerCallback callback, SoftTimer *timer)
Initializes and starts a software timer.
Definition: software_timer.c:38
StatusCode software_timer_init(uint32_t duration_ms, SoftTimerCallback callback, SoftTimer *timer)
Creates a new software timer without starting it.
Definition: software_timer.c:17
bool software_timer_inuse(SoftTimer *timer)
Checks if a software timer is currently active.
Definition: software_timer.c:59
StatusCode
StatusCodes for various errors.
Definition: status.h:27
Soft timer storage.
Definition: software_timer.h:38
Software Watchdog Timer structure Uses a SoftTimer internally to track timeouts.
Definition: software_timer.h:47
SoftTimerCallback fault_callback
Definition: software_timer.h:50
SoftTimer timer
Definition: software_timer.h:48
uint32_t period_ms
Definition: software_timer.h:49