Mark build test makefiles as being incompatible with parallel make builds, as they...
[pub/USBasp.git] / LUFA / Drivers / Board / AVR8 / MICROPENDOUS / LEDs.h
index 17a8b9f..2d5bad4 100644 (file)
  */
 
 /** \ingroup Group_LEDs
+ *  \defgroup Group_LEDs_MICROPENDOUS_REV1 MICROPENDOUS_REV1
+ *  \brief Board specific LED driver header for the Micropendous Arduino-like Revision 1 (https://code.google.com/p/micropendous/wiki/Micropendous).
+ *
+ *  See \ref Group_LEDs_MICROPENDOUS_32U2 for more details.
+ */
+
+/** \ingroup Group_LEDs
+ *  \defgroup Group_LEDs_MICROPENDOUS_REV2 MICROPENDOUS_REV2
+ *  \brief Board specific LED driver header for the Micropendous Arduino-like Revision 2 (https://code.google.com/p/micropendous/wiki/Micropendous).
+ *
+ *  See \ref Group_LEDs_MICROPENDOUS_32U2 for more details.
+ */
+
+/** \ingroup Group_LEDs
  *  \defgroup Group_LEDs_MICROPENDOUS_32U2 MICROPENDOUS_32U2
- *  \brief Board specific LED driver header for the Micropendous 32U2.
+ *  \brief Board specific LED driver header for the Micropendous-32U2.
  *
  *  Board specific LED driver header for the Micropendous 32U2 (https://code.google.com/p/micropendous/wiki/Micropendous_32U2).
  *
+ *  <b>BOARD_MICROPENDOUS_32U2</b>:
+ *  <table>
+ *    <tr><th>Name</th><th>Color</th><th>Info</th><th>Active Level</th><th>Port Pin</th></tr>
+ *    <tr><td>LEDS_LED1</td><td>Green</td><td>General Indicator</td><td>High</td><td>PORTD.6</td></tr>
+ *  </table>
+ *
+ *  <b>Other Revisions</b>:
+ *  <table>
+ *    <tr><th>Name</th><th>Color</th><th>Info</th><th>Active Level</th><th>Port Pin</th></tr>
+ *    <tr><td>LEDS_LED1</td><td>Green</td><td>General Indicator</td><td>High</td><td>PORTB.1</td></tr>
+ *  </table>
+ *
  *  @{
  */
 
                        #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead.
                #endif
 
+       /* Private Interface - For use in library only: */
+       #if !defined(__DOXYGEN__)
+               #if (BOARD == BOARD_MICROPENDOUS_32U2)
+                       #define _BOARD_LED1_MASK                (1 << 6)
+                       #define _BOARD_LED_PORTLETTER           D
+               #elif (BOARD == BOARD_MICROPENDOUS_REV1)
+                       #define _BOARD_LED1_MASK                (1 << 1)
+                       #define _BOARD_LED_PORTLETTER           B
+               #elif (BOARD == BOARD_MICROPENDOUS_REV2)
+                       #define _BOARD_LED1_MASK                (1 << 1)
+                       #define _BOARD_LED_PORTLETTER           B
+               #endif
+               
+               #define _BOARD_LED_CONCAT2(Reg, Letter)     Reg ## Letter
+               #define _BOARD_LED_CONCAT(Reg, Letter)      _BOARD_LED_CONCAT2(Reg, Letter)
+
+               #define _BOARD_LED_PORT                     _BOARD_LED_CONCAT(PORT, _BOARD_LED_PORTLETTER)
+               #define _BOARD_LED_PIN                      _BOARD_LED_CONCAT(PIN,  _BOARD_LED_PORTLETTER)
+               #define _BOARD_LED_DDR                      _BOARD_LED_CONCAT(DDR,  _BOARD_LED_PORTLETTER)
+       #endif
+
        /* Public Interface - May be used in end-application: */
                /* Macros: */
                        /** LED mask for the first LED on the board. */
-                       #define LEDS_LED1        (1 << 6)
+                       #define LEDS_LED1        _BOARD_LED1_MASK
 
                        /** LED mask for all the LEDs on the board. */
                        #define LEDS_ALL_LEDS    LEDS_LED1
                #if !defined(__DOXYGEN__)
                        static inline void LEDs_Init(void)
                        {
-                               DDRD  |=  LEDS_ALL_LEDS;
-                               PORTD &= ~LEDS_ALL_LEDS;
+                               _BOARD_LED_DDR  |=  LEDS_ALL_LEDS;
+                               _BOARD_LED_PORT &= ~LEDS_ALL_LEDS;
                        }
 
                        static inline void LEDs_Disable(void)
                        {
-                               DDRD  &= ~LEDS_ALL_LEDS;
-                               PORTD &= ~LEDS_ALL_LEDS;
+                               _BOARD_LED_DDR  &= ~LEDS_ALL_LEDS;
+                               _BOARD_LED_PORT &= ~LEDS_ALL_LEDS;
                        }
 
                        static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
                        {
-                               PORTD |= LEDMask;
+                               _BOARD_LED_PORT |= LEDMask;
                        }
 
                        static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask)
                        {
-                               PORTD &= ~LEDMask;
+                               _BOARD_LED_PORT &= ~LEDMask;
                        }
 
                        static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
                        {
-                               PORTD = ((PORTF & ~LEDS_ALL_LEDS) | LEDMask);
+                               _BOARD_LED_PORT = ((_BOARD_LED_PORT & ~LEDS_ALL_LEDS) | LEDMask);
                        }
 
                        static inline void LEDs_ChangeLEDs(const uint8_t LEDMask,
                                                           const uint8_t ActiveMask)
                        {
-                               PORTD = ((PORTF & ~LEDMask) | ActiveMask);
+                               _BOARD_LED_PORT = ((_BOARD_LED_PORT & ~LEDMask) | ActiveMask);
                        }
 
                        static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
                        {
-                               PORTD ^= LEDMask;
+                               _BOARD_LED_PIN  = LEDMask;
                        }
 
                        static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
                        static inline uint8_t LEDs_GetLEDs(void)
                        {
-                               return (PORTD & LEDS_ALL_LEDS);
+                               return (_BOARD_LED_PORT & LEDS_ALL_LEDS);
                        }
                #endif