SatCat5
hal_freertos/interrupts.cc
1 // Copyright 2024-2025 The Aerospace Corporation.
3 // This file is a part of SatCat5, licensed under CERN-OHL-W v2 or later.
5 
7 // Includes
9 
10 // SatCat HAL
11 #include <hal_freertos/interrupts.h>
12 
14 // Namespace
16 
20 
22 
23 ControllerFreeRTOS::ControllerFreeRTOS() {
24  // Nothing
25 }
26 
28  // Initialize SatCat5 interrupt system.
29  init(timer);
30 
31  // Enable interrupts globally
32  taskENABLE_INTERRUPTS();
33 }
34 
36  Controller::interrupt_static(obj);
37 }
38 
39 __attribute__((weak)) void ControllerFreeRTOS::irq_pause() {
40  taskDISABLE_INTERRUPTS();
41 }
42 
43 __attribute__((weak)) void ControllerFreeRTOS::irq_resume() {
44  taskENABLE_INTERRUPTS();
45 }
46 
47 __attribute__((weak)) void ControllerFreeRTOS::irq_register(Handler* obj) {
48  // Nothing
49 }
50 
51 __attribute__((weak)) void ControllerFreeRTOS::irq_unregister(Handler* obj) {
52  // Nothing
53 }
54 
55 __attribute__((weak)) void ControllerFreeRTOS::irq_acknowledge(Handler* obj) {
56  // Nothing
57 }
58 
FreeRTOS implementation of the "InterruptController" class.
void irq_resume() override
Disable hardware interrupts.
void irq_pause() override
Prevent preemption from "pause" until "resume".
void irq_start(satcat5::util::TimeRef *timer=0)
Initialize FreeRTOS controller and start SatCat5 interrupts.
void irq_handler(satcat5::irq::Handler *obj)
IRQ Handler method calls Handler::interrupt_static.
void irq_register(satcat5::irq::Handler *obj) override
Re-enable hardware interrupts.
void irq_unregister(satcat5::irq::Handler *obj) override
Un-register the callback for an interrupt handler.
void irq_acknowledge(satcat5::irq::Handler *obj) override
Post-handler acknowledgement, notification, and cleanup.
Platform-agnostic interrupt controller.
void init(satcat5::util::TimeRef *timer=0)
Start the interrupt controller.
Parent object for receiving interrupt-handler callbacks.
The TimeRef API provides access to a monotonic time-counter.
Definition: timeref.h:142