SatCat5
hal_samv71/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 // Microchip SAM V71 implementation of the "InterruptController" API.
6 
7 #pragma once
8 
9 // SAMV71 "Advanced Software Framework"
10 extern "C" {
11  #include <samv71.h>
12 };
13 
14 // SatCat
15 #include <satcat5/interrupts.h>
16 #include <hal_samv71/interrupt_handler.h>
17 
18 namespace satcat5 {
19  namespace sam {
54  public:
57 
59  void irq_start(satcat5::util::TimeRef* timer = 0);
60 
63 
64  protected:
65  // Hardware-abstraction overrides.
66  void irq_pause() override;
67  void irq_resume() override;
68  void irq_register(satcat5::irq::Handler* obj) override;
69  void irq_unregister(satcat5::irq::Handler* obj) override;
70  void irq_acknowledge(satcat5::irq::Handler* obj) override;
71  };
72  } // namespace sam
73 } // namespace satcat5
Platform-agnostic interrupt controller.
Parent object for receiving interrupt-handler callbacks.
Microchip SAM V71 implementation of the "InterruptController" API.
void irq_pause() override
Prevent preemption from "pause" until "resume".
void irq_unregister(satcat5::irq::Handler *obj) override
Un-register the callback for an interrupt handler.
void irq_start(satcat5::util::TimeRef *timer=0)
Initialize SAMV71 controller and start SatCat5 interrupts.
void irq_resume() override
Disable hardware interrupts.
void irq_acknowledge(satcat5::irq::Handler *obj) override
Post-handler acknowledgement, notification, and cleanup.
void irq_register(satcat5::irq::Handler *obj) override
Re-enable hardware interrupts.
void irq_handler(satcat5::irq::Handler *obj)
IRQ Handler.
The TimeRef API provides access to a monotonic time-counter.
Definition: timeref.h:142
Platform-agnostic API for interrupt management.