Fix up some missing target dependencies and output messages in the LUFA build system...
[pub/USBasp.git] / LUFA / Platform / UC3 / InterruptManagement.h
index 6bd7f0a..e9efbf3 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2011.
+     Copyright (C) Dean Camera, 2012.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2012  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
  *  handlers within the device.
  */
 
  *  handlers within the device.
  */
 
-/** \ingroup Group_PlatformDrivers
- *  \defgroup Group_PlatformDrivers_UC3Interrupts UC3 Interrupt Controller Driver - LUFA/Platform/UC3/InterruptManagement.h
+/** \ingroup Group_PlatformDrivers_UC3
+ *  \defgroup Group_PlatformDrivers_UC3Interrupts Interrupt Controller Driver - LUFA/Platform/UC3/InterruptManagement.h
  *  \brief Interrupt Controller Driver for the AVR32 UC3 microcontrollers.
  *
  *  \section Sec_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
  *  \brief Interrupt Controller Driver for the AVR32 UC3 microcontrollers.
  *
  *  \section Sec_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
- *    - LUFA/Platform/UC3/InterruptManagement.c
- *    - LUFA/Platform/UC3/Exception.S
+ *    - LUFA/Platform/UC3/InterruptManagement.c <i>(Makefile source module name: LUFA_SRC_PLATFORM)</i>
+ *    - LUFA/Platform/UC3/Exception.S <i>(Makefile source module name: LUFA_SRC_PLATFORM)</i>
  *
  *  \section Sec_ModDescription Module Description
  *  Interrupt controller driver for the AVR32 UC3 microcontrollers, for the configuration of interrupt
  *
  *  \section Sec_ModDescription Module Description
  *  Interrupt controller driver for the AVR32 UC3 microcontrollers, for the configuration of interrupt
  *  Usage Example:
  *  \code
  *             #include <LUFA/Platform/UC3/InterruptManagement.h>
  *  Usage Example:
  *  \code
  *             #include <LUFA/Platform/UC3/InterruptManagement.h>
- *
+ *      
  *             ISR(USB_Group_IRQ_Handler)
  *             {
  *                     // USB group handler code here
  *             }
  *             ISR(USB_Group_IRQ_Handler)
  *             {
  *                     // USB group handler code here
  *             }
- *
+ *      
  *             void main(void)
  *             {
  *                     INTC_Init();
  *             void main(void)
  *             {
  *                     INTC_Init();
@@ -71,7 +71,7 @@
 #define _UC3_INTERRUPT_MANAGEMENT_H_
 
        /* Includes: */
 #define _UC3_INTERRUPT_MANAGEMENT_H_
 
        /* Includes: */
-               #include <LUFA/Common/Common.h>
+               #include "../../Common/Common.h"
 
        /* Enable C linkage for C++ Compilers: */
                #if defined(__cplusplus)
 
        /* Enable C linkage for C++ Compilers: */
                #if defined(__cplusplus)
                        typedef void (*InterruptHandlerPtr_t)(void);
 
                /* External Variables: */
                        typedef void (*InterruptHandlerPtr_t)(void);
 
                /* External Variables: */
-                       extern const void            EVBA_Table;
-                       extern const uint32_t        Autovector_Table[];
+                       #if defined(__INCLUDE_FROM_INTMANAGEMENT_C)
+                               extern const void        EVBA_Table;
+                       #endif
                        extern InterruptHandlerPtr_t InterruptHandlers[AVR32_INTC_NUM_INT_GRPS];
                        extern InterruptHandlerPtr_t InterruptHandlers[AVR32_INTC_NUM_INT_GRPS];
+                       extern const uint32_t        Autovector_Table[];
        #endif
 
        /* Public Interface - May be used in end-application: */
                /* Macros: */
        #endif
 
        /* Public Interface - May be used in end-application: */
                /* Macros: */
-                       /** Converts a given interrupt index into its assocated interrupt group.
+                       /** Converts a given interrupt index into its associated interrupt group.
                         *
                         *  \param[in] IRQIndex  Index of the interrupt request to convert.
                         *
                         *
                         *  \param[in] IRQIndex  Index of the interrupt request to convert.
                         *
                         */
                        #define INTC_IRQ_GROUP(IRQIndex)  (IRQIndex / 32)
 
                         */
                        #define INTC_IRQ_GROUP(IRQIndex)  (IRQIndex / 32)
 
-                       /** Converts a given interrupt index into its assocated interrupt line.
+                       /** Converts a given interrupt index into its associated interrupt line.
                         *
                         *  \param[in] IRQIndex  Index of the interrupt request to convert.
                         *
                         *
                         *  \param[in] IRQIndex  Index of the interrupt request to convert.
                         *
                        #define INTC_IRQ_LINE(IRQIndex)   (IRQIndex % 32)
 
                /* Function Prototypes: */
                        #define INTC_IRQ_LINE(IRQIndex)   (IRQIndex % 32)
 
                /* Function Prototypes: */
-                       /** Initializes the interrupt controller, nulling out all interrupt handlers ready for new registration. This
-                        *  function should be called once on startup to ensure the interrupt controller is ready for use.
+                       /** Initializes the interrupt controller ready to handle interrupts. This must be called at the
+                        *  start of the user program before any interrupts are registered or enabled.
+                        */
+                       void INTC_Init(void);                   
+                       
+                       /** Retrieves the associated interrupt handler for the interrupt group currently being fired. This
+                        *  is called directly from the exception handler routine before dispatching to the ISR.
+                        *
+                        *  \param[in] InterruptLevel  Priority level of the interrupt.
+                        *
+                        *  \return Pointer to the associated interrupt handler function, or NULL if no handler set.
                         */
                         */
-                       void INTC_Init(void);
+                       InterruptHandlerPtr_t INTC_GetInterruptHandler(const uint_reg_t InterruptLevel);
 
                /* Inline Functions: */
                        /** Registers a handler for a given interrupt group. On the AVR32 UC3 devices, interrupts are grouped by
 
                /* Inline Functions: */
                        /** Registers a handler for a given interrupt group. On the AVR32 UC3 devices, interrupts are grouped by