SatCat5
hal_freertos/interrupts.h
1 // Copyright 2024-2025 The Aerospace Corporation.
3 // This file is a part of SatCat5, licensed under CERN-OHL-W v2 or later.
5 // FreeRTOS implementation of the "InterruptController" class.
6 
7 #pragma once
8 
9 #include <satcat5/interrupts.h>
10 #include <satcat5/timeref.h>
11 
12 extern "C"{
13  #include <FreeRTOS.h>
14  #include <task.h>
15 };
16 
17 namespace satcat5 {
18  namespace freertos {
50  public:
53 
55  void irq_start(satcat5::util::TimeRef* timer = 0);
56 
59 
60  protected:
61  // Hardware-abstraction overrides.
62  void irq_pause() override;
63  void irq_resume() override;
64  void irq_register(satcat5::irq::Handler* obj) override;
67  };
68  } // namespace freertos
69 } // namespace satcat5
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.
Parent object for receiving interrupt-handler callbacks.
The TimeRef API provides access to a monotonic time-counter.
Definition: timeref.h:142
Platform-agnostic API for interrupt management.
Provides a FreeRTOS task function and hooks for using SatCat5 as a task inside a larger FreeRTOS proj...
TimeRef and TimeVal define the API for monotonic timers.