#ifndef OS_RTEMS_INTERRUPT_H_ #define OS_RTEMS_INTERRUPT_H_ #include "../../returnvalues/HasReturnvaluesIF.h" #include #include typedef rtems_isr_entry IsrHandler_t; typedef rtems_isr IsrReturn_t; typedef rtems_vector_number InterruptNumber_t; class Interrupt { public: virtual ~Interrupt(){}; /** * Establishes a new interrupt service routine. * @param handler The service routine to establish * @param interrupt The interrupt (NOT trap type) the routine shall react to. * @return RETURN_OK on success. Otherwise, the OS failure code is returned. */ static ReturnValue_t setInterruptServiceRoutine(IsrHandler_t handler, InterruptNumber_t interrupt, IsrHandler_t *oldHandler = NULL); static ReturnValue_t enableInterrupt(InterruptNumber_t interruptNumber); static ReturnValue_t disableInterrupt(InterruptNumber_t interruptNumber); /** * Enables the interrupt given. * The function tests, if the InterruptMask register was written successfully. * @param interrupt The interrupt to enable. * @return RETURN_OK if the interrupt was set successfully. RETURN_FAILED else. */ static ReturnValue_t enableGpioInterrupt(InterruptNumber_t interrupt); /** * Disables the interrupt given. * @param interrupt The interrupt to disable. * @return RETURN_OK if the interrupt was set successfully. RETURN_FAILED else. */ static ReturnValue_t disableGpioInterrupt(InterruptNumber_t interrupt); /** * Checks if the current executing context is an ISR. * @return true if handling an interrupt, false else. */ static bool isInterruptInProgress(); }; #endif /* OS_RTEMS_INTERRUPT_H_ */