Add support for the Micropendous series of USB AVR8 boards.
authorDean Camera <dean@fourwalledcubicle.com>
Fri, 3 Feb 2012 20:20:11 +0000 (20:20 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Fri, 3 Feb 2012 20:20:11 +0000 (20:20 +0000)
LUFA/Common/BoardTypes.h
LUFA/DoxygenPages/ChangeLog.txt
LUFA/DoxygenPages/DeviceSupport.txt
LUFA/Drivers/Board/AVR8/MICROPENDOUS/Buttons.h [new file with mode: 0644]
LUFA/Drivers/Board/AVR8/MICROPENDOUS/LEDs.h [new file with mode: 0644]
LUFA/Drivers/Board/Buttons.h
LUFA/Drivers/Board/LEDs.h

index ea0d707..ad34d51 100644 (file)
        /* Public Interface - May be used in end-application: */
                /* Macros: */
                        /** Selects the USBKEY specific board drivers, including Temperature, Button, Dataflash, Joystick and LED drivers. */
        /* Public Interface - May be used in end-application: */
                /* Macros: */
                        /** Selects the USBKEY specific board drivers, including Temperature, Button, Dataflash, Joystick and LED drivers. */
-                       #define BOARD_USBKEY        0
+                       #define BOARD_USBKEY               0
 
                        /** Selects the STK525 specific board drivers, including Temperature, Button, Dataflash, Joystick and LED drivers. */
 
                        /** Selects the STK525 specific board drivers, including Temperature, Button, Dataflash, Joystick and LED drivers. */
-                       #define BOARD_STK525        1
+                       #define BOARD_STK525               1
 
                        /** Selects the STK526 specific board drivers, including Temperature, Button, Dataflash, Joystick and LED drivers. */
 
                        /** Selects the STK526 specific board drivers, including Temperature, Button, Dataflash, Joystick and LED drivers. */
-                       #define BOARD_STK526        2
+                       #define BOARD_STK526               2
 
                        /** Selects the RZUSBSTICK specific board drivers, including the driver for the boards LEDs. */
 
                        /** Selects the RZUSBSTICK specific board drivers, including the driver for the boards LEDs. */
-                       #define BOARD_RZUSBSTICK    3
+                       #define BOARD_RZUSBSTICK           3
 
                        /** Selects the ATAVRUSBRF01 specific board drivers, including the driver for the board LEDs. */
 
                        /** Selects the ATAVRUSBRF01 specific board drivers, including the driver for the board LEDs. */
-                       #define BOARD_ATAVRUSBRF01  4
+                       #define BOARD_ATAVRUSBRF01         4
 
                        /** Selects the user-defined board drivers, which should be placed in the user project's folder
                         *  under a directory named \c /Board/. Each board driver should be named identically to the LUFA
                         *  master board driver (i.e., driver in the \c LUFA/Drivers/Board directory) so that the library
                         *  can correctly identify it.
                         */
 
                        /** Selects the user-defined board drivers, which should be placed in the user project's folder
                         *  under a directory named \c /Board/. Each board driver should be named identically to the LUFA
                         *  master board driver (i.e., driver in the \c LUFA/Drivers/Board directory) so that the library
                         *  can correctly identify it.
                         */
-                       #define BOARD_USER          5
+                       #define BOARD_USER                 5
 
                        /** Selects the BUMBLEB specific board drivers, using the officially recommended peripheral layout. */
 
                        /** Selects the BUMBLEB specific board drivers, using the officially recommended peripheral layout. */
-                       #define BOARD_BUMBLEB       6
+                       #define BOARD_BUMBLEB              6
 
                        /** Selects the XPLAIN (Revision 2 or newer) specific board drivers, including LED and Dataflash drivers. */
 
                        /** Selects the XPLAIN (Revision 2 or newer) specific board drivers, including LED and Dataflash drivers. */
-                       #define BOARD_XPLAIN        7
+                       #define BOARD_XPLAIN               7
 
                        /** Selects the XPLAIN (Revision 1) specific board drivers, including LED and Dataflash drivers. */
 
                        /** Selects the XPLAIN (Revision 1) specific board drivers, including LED and Dataflash drivers. */
-                       #define BOARD_XPLAIN_REV1   8
+                       #define BOARD_XPLAIN_REV1          8
 
                        /** Selects the EVK527 specific board drivers, including Temperature, Button, Dataflash, Joystick and LED drivers. */
 
                        /** Selects the EVK527 specific board drivers, including Temperature, Button, Dataflash, Joystick and LED drivers. */
-                       #define BOARD_EVK527        9
+                       #define BOARD_EVK527               9
 
                        /** Disables board drivers when operation will not be adversely affected (e.g. LEDs) - use of board drivers
                         *  such as the Joystick driver, where the removal would adversely affect the code's operation is still disallowed. */
 
                        /** Disables board drivers when operation will not be adversely affected (e.g. LEDs) - use of board drivers
                         *  such as the Joystick driver, where the removal would adversely affect the code's operation is still disallowed. */
-                       #define BOARD_NONE          10
+                       #define BOARD_NONE                 10
 
                        /** Selects the Teensy version 1.x specific board drivers, including the driver for the board LEDs. */
 
                        /** Selects the Teensy version 1.x specific board drivers, including the driver for the board LEDs. */
-                       #define BOARD_TEENSY        11
+                       #define BOARD_TEENSY               11
 
                        /** Selects the USBTINY MKII specific board drivers, including the Button and LEDs drivers. */
 
                        /** Selects the USBTINY MKII specific board drivers, including the Button and LEDs drivers. */
-                       #define BOARD_USBTINYMKII   12
+                       #define BOARD_USBTINYMKII          12
 
                        /** Selects the Benito specific board drivers, including the Button and LEDs drivers. */
 
                        /** Selects the Benito specific board drivers, including the Button and LEDs drivers. */
-                       #define BOARD_BENITO        13
+                       #define BOARD_BENITO               13
 
                        /** Selects the JM-DB-U2 specific board drivers, including the Button and LEDs drivers. */
 
                        /** Selects the JM-DB-U2 specific board drivers, including the Button and LEDs drivers. */
-                       #define BOARD_JMDBU2        14
+                       #define BOARD_JMDBU2               14
 
                        /** Selects the Olimex AVR-USB-162 specific board drivers, including the Button and LEDs drivers. */
 
                        /** Selects the Olimex AVR-USB-162 specific board drivers, including the Button and LEDs drivers. */
-                       #define BOARD_OLIMEX162     15
+                       #define BOARD_OLIMEX162            15
 
                        /** Selects the UDIP specific board drivers, including the Button and LEDs drivers. */
 
                        /** Selects the UDIP specific board drivers, including the Button and LEDs drivers. */
-                       #define BOARD_UDIP          16
+                       #define BOARD_UDIP                 16
 
                        /** Selects the BUI specific board drivers, including the driver for the board LEDs. */
 
                        /** Selects the BUI specific board drivers, including the driver for the board LEDs. */
-                       #define BOARD_BUI           17
+                       #define BOARD_BUI                  17
 
                        /** Selects the Arduino Uno specific board drivers, including the driver for the board LEDs. */
 
                        /** Selects the Arduino Uno specific board drivers, including the driver for the board LEDs. */
-                       #define BOARD_UNO           18
+                       #define BOARD_UNO                  18
 
                        /** Selects the Busware CUL V3 specific board drivers, including the Button and LEDs drivers. */
 
                        /** Selects the Busware CUL V3 specific board drivers, including the Button and LEDs drivers. */
-                       #define BOARD_CULV3         19
+                       #define BOARD_CULV3                19
 
                        /** Selects the Blackcat USB JTAG specific board drivers, including the driver for the board LEDs. */
 
                        /** Selects the Blackcat USB JTAG specific board drivers, including the driver for the board LEDs. */
-                       #define BOARD_BLACKCAT      20
+                       #define BOARD_BLACKCAT             20
 
                        /** Selects the Maximus specific board drivers, including the driver for the board LEDs. */
 
                        /** Selects the Maximus specific board drivers, including the driver for the board LEDs. */
-                       #define BOARD_MAXIMUS       21
+                       #define BOARD_MAXIMUS              21
 
                        /** Selects the Minimus specific board drivers, including the Button and LEDs drivers. */
 
                        /** Selects the Minimus specific board drivers, including the Button and LEDs drivers. */
-                       #define BOARD_MINIMUS       22
+                       #define BOARD_MINIMUS              22
 
                        /** Selects the Adafruit U4 specific board drivers, including the Button driver. */
 
                        /** Selects the Adafruit U4 specific board drivers, including the Button driver. */
-                       #define BOARD_ADAFRUITU4    23
+                       #define BOARD_ADAFRUITU4           23
 
                        /** Selects the Microsin AVR-USB162 specific board drivers, including the Button and LEDs drivers. */
 
                        /** Selects the Microsin AVR-USB162 specific board drivers, including the Button and LEDs drivers. */
-                       #define BOARD_MICROSIN162   24
+                       #define BOARD_MICROSIN162          24
 
                        /** Selects the Kernel Concepts USBFOO specific board drivers, including the Button and LEDs drivers. */
 
                        /** Selects the Kernel Concepts USBFOO specific board drivers, including the Button and LEDs drivers. */
-                       #define BOARD_USBFOO        25
+                       #define BOARD_USBFOO               25
 
                        /** Selects the Sparkfun ATMEGA8U2 specific board drivers, including the driver for the board LEDs. */
 
                        /** Selects the Sparkfun ATMEGA8U2 specific board drivers, including the driver for the board LEDs. */
-                       #define BOARD_SPARKFUN8U2   26
+                       #define BOARD_SPARKFUN8U2          26
 
                        /** Selects the Atmel EVK1101 specific board drivers, including the Button, Joystick and LED drivers. */
 
                        /** Selects the Atmel EVK1101 specific board drivers, including the Button, Joystick and LED drivers. */
-                       #define BOARD_EVK1101       27
+                       #define BOARD_EVK1101              27
 
                        /** Selects the Busware TUL specific board drivers, including the Button and LED drivers. */
 
                        /** Selects the Busware TUL specific board drivers, including the Button and LED drivers. */
-                       #define BOARD_TUL           28
+                       #define BOARD_TUL                  28
 
                        /** Selects the Atmel EVK1100 specific board drivers, including the Button, Joystick and LED drivers. */
 
                        /** Selects the Atmel EVK1100 specific board drivers, including the Button, Joystick and LED drivers. */
-                       #define BOARD_EVK1100       29
+                       #define BOARD_EVK1100              29
 
                        /** Selects the Atmel EVK1104 specific board drivers, including the Button and LED drivers. */
 
                        /** Selects the Atmel EVK1104 specific board drivers, including the Button and LED drivers. */
-                       #define BOARD_EVK1104       30
+                       #define BOARD_EVK1104              30
 
                        /** Selects the Atmel XMEGA A3BU Xplained specific board drivers, including Dataflash, Button and LED drivers. */
 
                        /** Selects the Atmel XMEGA A3BU Xplained specific board drivers, including Dataflash, Button and LED drivers. */
-                       #define BOARD_A3BU_XPLAINED 31
+                       #define BOARD_A3BU_XPLAINED        31
 
                        /** Selects the Teensy version 2.x specific board drivers, including the driver for the board LEDs. */
 
                        /** Selects the Teensy version 2.x specific board drivers, including the driver for the board LEDs. */
-                       #define BOARD_TEENSY2       32
+                       #define BOARD_TEENSY2              32
 
                        /** Selects the USB2AX version 1 and 2 specific board drivers, including the Button and LEDs drivers. */
 
                        /** Selects the USB2AX version 1 and 2 specific board drivers, including the Button and LEDs drivers. */
-                       #define BOARD_USB2AX        33
+                       #define BOARD_USB2AX               33
 
                        /** Selects the USB2AX version 3 specific board drivers, including the Button and LEDs drivers. */
 
                        /** Selects the USB2AX version 3 specific board drivers, including the Button and LEDs drivers. */
-                       #define BOARD_USB2AX_V3     34
+                       #define BOARD_USB2AX_V3            34
+
+                       /** Selects the Micropendous 32U2 specific board drivers, including the Button and LED drivers. */
+                       #define BOARD_MICROPENDOUS_32U2    35
+
+                       /** Selects the Micropendous A specific board drivers, including the Button. */
+                       #define BOARD_MICROPENDOUS_A       36
+
+                       /** Selects the Micropendous 1 specific board drivers, including the Button. */
+                       #define BOARD_MICROPENDOUS_1       37
+
+                       /** Selects the Micropendous 2 specific board drivers, including the Button. */
+                       #define BOARD_MICROPENDOUS_2       38
+
+                       /** Selects the Micropendous 3 specific board drivers, including the Button. */
+                       #define BOARD_MICROPENDOUS_3       39
+
+                       /** Selects the Micropendous 4 specific board drivers, including the Button. */
+                       #define BOARD_MICROPENDOUS_4       40
+
+                       /** Selects the Micropendous DIP specific board drivers, including the Button. */
+                       #define BOARD_MICROPENDOUS_DIP     41
 
                        #if !defined(__DOXYGEN__)
 
                        #if !defined(__DOXYGEN__)
-                               #define BOARD_          BOARD_NONE
+                               #define BOARD_                 BOARD_NONE
 
                                #if !defined(BOARD)
 
                                #if !defined(BOARD)
-                                       #define BOARD       BOARD_NONE
+                                       #define BOARD              BOARD_NONE
                                #endif
                        #endif
 
                                #endif
                        #endif
 
index d6d09ba..bb00436 100644 (file)
@@ -17,6 +17,7 @@
   *   - Added new USB_Host_GetDescriptor(), USB_Host_GetDeviceConfiguration() and USB_Host_GetInterfaceAltSetting() functions
   *   - Added new CALLBACK_Audio_Device_GetSetInterfaceProperty() callback to the Audio Device Class driver
   *   - Added new LEDs_Disable(), Buttons_Disable() and Joystick_Disable() functions to the board hardware drivers
   *   - Added new USB_Host_GetDescriptor(), USB_Host_GetDeviceConfiguration() and USB_Host_GetInterfaceAltSetting() functions
   *   - Added new CALLBACK_Audio_Device_GetSetInterfaceProperty() callback to the Audio Device Class driver
   *   - Added new LEDs_Disable(), Buttons_Disable() and Joystick_Disable() functions to the board hardware drivers
+  *   - Added support for the Micropendous family of boards
   *  - Library Applications:
   *   - Added User Application APIs to the CDC and DFU class bootloaders
   *   - Added INVERTED_ISP_MISO compile time option to the AVRISP-MKII clone project (thanks to Chuck Rohs)
   *  - Library Applications:
   *   - Added User Application APIs to the CDC and DFU class bootloaders
   *   - Added INVERTED_ISP_MISO compile time option to the AVRISP-MKII clone project (thanks to Chuck Rohs)
index 0a8912f..507ec41 100644 (file)
  *   - Arduino Uno
  *   - Busware BUI
  *   - Busware CUL V3
  *   - Arduino Uno
  *   - Busware BUI
  *   - Busware CUL V3
- *   - Fletchtronics Bumble-B (using officially recommended peripheral layout)
+ *   - Busware TUL
+ *   - Fletchtronics Bumble-B (using manufacturer recommended peripheral layout)
  *   - Kernel Concepts USBFOO
  *   - Linnix UDIP
  *   - MattairTech JM-DB-U2
  *   - Maximus USB
  *   - Kernel Concepts USBFOO
  *   - Linnix UDIP
  *   - MattairTech JM-DB-U2
  *   - Maximus USB
+ *   - Micropendous Boards (many versions)
  *   - Microsin AVR-USB162
  *   - Minimus USB
  *   - Olimex AVR-USB-162
  *   - Microsin AVR-USB162
  *   - Minimus USB
  *   - Olimex AVR-USB-162
diff --git a/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Buttons.h b/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Buttons.h
new file mode 100644 (file)
index 0000000..640568d
--- /dev/null
@@ -0,0 +1,166 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+/** \file\r
+ *  \brief Board specific Buttons driver header for the Micropendous series boards.\r
+ *  \copydetails Group_Buttons_MICROPENDOUS_32U2\r
+ *\r
+ *  \note This file should not be included directly. It is automatically included as needed by the Buttons driver\r
+ *        dispatch header located in LUFA/Drivers/Board/Buttons.h.\r
+ */\r
+\r
+/** \ingroup Group_Buttons\r
+ *  \defgroup Group_Buttons_MICROPENDOUS_A MICROPENDOUS_A\r
+ *  \brief Board specific Button driver header for the Micropendous A (https://code.google.com/p/micropendous/wiki/MicropendousA).\r
+ *\r
+ *  See \ref Group_Buttons_MICROPENDOUS_32U2 for more details.\r
+ */\r
+\r
+/** \ingroup Group_Buttons\r
+ *  \defgroup Group_Buttons_MICROPENDOUS_1 MICROPENDOUS_1\r
+ *  \brief Board specific Button driver header for the Micropendous 1 (https://code.google.com/p/micropendous/wiki/Micropendous1).\r
+ *\r
+ *  See \ref Group_Buttons_MICROPENDOUS_32U2 for more details.\r
+ */\r
+\r
+/** \ingroup Group_Buttons\r
+ *  \defgroup Group_Buttons_MICROPENDOUS_2 MICROPENDOUS_2\r
+ *  \brief Board specific Button driver header for the Micropendous 2 (https://code.google.com/p/micropendous/wiki/Micropendous2).\r
+ *\r
+ *  See \ref Group_Buttons_MICROPENDOUS_32U2 for more details.\r
+ */\r
\r
+/** \ingroup Group_Buttons\r
+ *  \defgroup Group_Buttons_MICROPENDOUS_3 MICROPENDOUS_3\r
+ *  \brief Board specific Button driver header for the Micropendous 3 (https://code.google.com/p/micropendous/wiki/Micropendous3).\r
+ *\r
+ *  See \ref Group_Buttons_MICROPENDOUS_32U2 for more details.\r
+ */\r
\r
+/** \ingroup Group_Buttons\r
+ *  \defgroup Group_Buttons_MICROPENDOUS_4 MICROPENDOUS_4\r
+ *  \brief Board specific Button driver header for the Micropendous 4 (https://code.google.com/p/micropendous/wiki/Micropendous4).\r
+ *\r
+ *  See \ref Group_Buttons_MICROPENDOUS_32U2 for more details.\r
+ */\r
+\r
+/** \ingroup Group_Buttons\r
+ *  \defgroup Group_Buttons_MICROPENDOUS_32U2 MICROPENDOUS_32U2\r
+ *  \brief Board specific Buttons driver header for the Micropendous 32U2.\r
+ *\r
+ *  \note There are multiple supported Micropendous boards, compile with <code>BOARD = MICROPENDOUS_{VERSION}</code>.\r
+ *\r
+ *  Board specific Buttons driver header for the Micropendous 32U2 (https://code.google.com/p/micropendous/wiki/Micropendous_32U2).\r
+ *\r
+ *  @{\r
+ */\r
+\r
+#ifndef __BUTTONS_MICROPENDOUS_H__\r
+#define __BUTTONS_MICROPENDOUS_H__\r
+\r
+       /* Includes: */\r
+               #include "../../../../Common/Common.h"\r
+\r
+       /* Enable C linkage for C++ Compilers: */\r
+               #if defined(__cplusplus)\r
+                       extern "C" {\r
+               #endif\r
+\r
+       /* Preprocessor Checks: */\r
+               #if !defined(__INCLUDE_FROM_BUTTONS_H)\r
+                       #error Do not include this file directly. Include LUFA/Drivers/Board/Buttons.h instead.\r
+               #endif\r
+\r
+       /* Private Interface - For use in library only: */\r
+       #if !defined(__DOXYGEN__)\r
+               #if (BOARD == BOARD_MICROPENDOUS_32U2)\r
+                       #define _BOARD_BUTTON1_MASK             (1 << 7)\r
+                       #define _BOARD_BUTTON_PORTLETTER        D\r
+               #elif (BOARD == BOARD_MICROPENDOUS_A)\r
+                       #define _BOARD_BUTTON1_MASK             (1 << 2)\r
+                       #define _BOARD_BUTTON_PORTLETTER        E\r
+               #elif (BOARD == BOARD_MICROPENDOUS_1)\r
+                       #define _BOARD_BUTTON1_MASK             (1 << 7)\r
+                       #define _BOARD_BUTTON_PORTLETTER        D\r
+               #elif (BOARD == BOARD_MICROPENDOUS_2)\r
+                       #define _BOARD_BUTTON1_MASK             (1 << 2)\r
+                       #define _BOARD_BUTTON_PORTLETTER        E\r
+               #elif (BOARD == BOARD_MICROPENDOUS_3)\r
+                       #define _BOARD_BUTTON1_MASK             (1 << 2)\r
+                       #define _BOARD_BUTTON_PORTLETTER        E\r
+               #elif (BOARD == BOARD_MICROPENDOUS_4)\r
+                       #define _BOARD_BUTTON1_MASK             (1 << 2)\r
+                       #define _BOARD_BUTTON_PORTLETTER        E\r
+               #endif\r
+               \r
+               #define _BOARD_BUTTON_CONCAT2(Reg, Letter)  Reg ## Letter\r
+               #define _BOARD_BUTTON_CONCAT(Reg, Letter)   _BOARD_BUTTON_CONCAT2(Reg, Letter)\r
+\r
+               #define _BOARD_BUTTON_PORT                 _BOARD_BUTTON_CONCAT(PORT, _BOARD_BUTTON_PORTLETTER)\r
+               #define _BOARD_BUTTON_PIN                  _BOARD_BUTTON_CONCAT(PIN, _BOARD_BUTTON_PORTLETTER)\r
+               #define _BOARD_BUTTON_DDR                  _BOARD_BUTTON_CONCAT(DDR, _BOARD_BUTTON_PORTLETTER)\r
+       #endif\r
+\r
+       /* Public Interface - May be used in end-application: */\r
+               /* Macros: */\r
+                       /** Button mask for the first button on the board. */\r
+                       #define BUTTONS_BUTTON1      _BOARD_BUTTON1_MASK\r
+\r
+               /* Inline Functions: */\r
+               #if !defined(__DOXYGEN__)\r
+                       static inline void Buttons_Init(void)\r
+                       {\r
+                               _BOARD_BUTTON_DDR  &= ~BUTTONS_BUTTON1;\r
+                               _BOARD_BUTTON_PORT |=  BUTTONS_BUTTON1;\r
+                       }\r
+\r
+                       static inline void Buttons_Disable(void)\r
+                       {\r
+                               _BOARD_BUTTON_DDR  &= ~BUTTONS_BUTTON1;\r
+                               _BOARD_BUTTON_PORT &= ~BUTTONS_BUTTON1;\r
+                       }\r
+\r
+                       static inline uint8_t Buttons_GetStatus(void) ATTR_WARN_UNUSED_RESULT;\r
+                       static inline uint8_t Buttons_GetStatus(void)\r
+                       {\r
+                               return ((_BOARD_BUTTON_PIN & BUTTONS_BUTTON1) ^ BUTTONS_BUTTON1);\r
+                       }\r
+               #endif\r
+\r
+       /* Disable C linkage for C++ Compilers: */\r
+               #if defined(__cplusplus)\r
+                       }\r
+               #endif\r
+\r
+#endif\r
+\r
+/** @} */\r
+\r
+
diff --git a/LUFA/Drivers/Board/AVR8/MICROPENDOUS/LEDs.h b/LUFA/Drivers/Board/AVR8/MICROPENDOUS/LEDs.h
new file mode 100644 (file)
index 0000000..9d6c8d7
--- /dev/null
@@ -0,0 +1,130 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+/** \file\r
+ *  \brief Board specific LED driver header for the Micropendous-32U2.\r
+ *  \copydetails Group_LEDs_MICROPENDOUS_32U2\r
+ *\r
+ *  \note This file should not be included directly. It is automatically included as needed by the LEDs driver\r
+ *        dispatch header located in LUFA/Drivers/Board/LEDs.h.\r
+ */\r
+\r
+/** \ingroup Group_LEDs\r
+ *  \defgroup Group_LEDs_MICROPENDOUS_32U2 MICROPENDOUS_32U2\r
+ *  \brief Board specific LED driver header for the Micropendous 32U2.\r
+ *\r
+ *  Board specific LED driver header for the Micropendous 32U2 (https://code.google.com/p/micropendous/wiki/Micropendous_32U2).\r
+ *\r
+ *  @{\r
+ */\r
+\r
+#ifndef __LEDS_MICROPENDOUS_H__\r
+#define __LEDS_MICROPENDOUS_H__\r
+\r
+       /* Includes: */\r
+               #include "../../../../Common/Common.h"\r
+\r
+       /* Enable C linkage for C++ Compilers: */\r
+               #if defined(__cplusplus)\r
+                       extern "C" {\r
+               #endif\r
+\r
+       /* Preprocessor Checks: */\r
+               #if !defined(__INCLUDE_FROM_LEDS_H)\r
+                       #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead.\r
+               #endif\r
+\r
+       /* Public Interface - May be used in end-application: */\r
+               /* Macros: */\r
+                       /** LED mask for the first LED on the board. */\r
+                       #define LEDS_LED1        (1 << 6)\r
+\r
+                       /** LED mask for all the LEDs on the board. */\r
+                       #define LEDS_ALL_LEDS    LEDS_LED1\r
+\r
+                       /** LED mask for the none of the board LEDs. */\r
+                       #define LEDS_NO_LEDS     0\r
+\r
+               /* Inline Functions: */\r
+               #if !defined(__DOXYGEN__)\r
+                       static inline void LEDs_Init(void)\r
+                       {\r
+                               DDRD  |=  LEDS_ALL_LEDS;\r
+                               PORTD &= ~LEDS_ALL_LEDS;\r
+                       }\r
+\r
+                       static inline void LEDs_Disable(void)\r
+                       {\r
+                               DDRD  &= ~LEDS_ALL_LEDS;\r
+                               PORTD &= ~LEDS_ALL_LEDS;\r
+                       }\r
+\r
+                       static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)\r
+                       {\r
+                               PORTD |= LEDMask;\r
+                       }\r
+\r
+                       static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask)\r
+                       {\r
+                               PORTD &= ~LEDMask;\r
+                       }\r
+\r
+                       static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)\r
+                       {\r
+                               PORTD = ((PORTF & ~LEDS_ALL_LEDS) | LEDMask);\r
+                       }\r
+\r
+                       static inline void LEDs_ChangeLEDs(const uint8_t LEDMask,\r
+                                                          const uint8_t ActiveMask)\r
+                       {\r
+                               PORTD = ((PORTF & ~LEDMask) | ActiveMask);\r
+                       }\r
+\r
+                       static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)\r
+                       {\r
+                               PORTD ^= LEDMask;\r
+                       }\r
+\r
+                       static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;\r
+                       static inline uint8_t LEDs_GetLEDs(void)\r
+                       {\r
+                               return (PORTD & LEDS_ALL_LEDS);\r
+                       }\r
+               #endif\r
+\r
+       /* Disable C linkage for C++ Compilers: */\r
+               #if defined(__cplusplus)\r
+                       }\r
+               #endif\r
+\r
+#endif\r
+\r
+/** @} */\r
+\r
index 3dd89a9..8fe8ebc 100644 (file)
                        #include "XMEGA/A3BU_XPLAINED/Buttons.h"
                #elif ((BOARD == BOARD_USB2AX) || (BOARD == BOARD_USB2AX_V3))
                        #include "AVR8/USB2AX/Buttons.h"
                        #include "XMEGA/A3BU_XPLAINED/Buttons.h"
                #elif ((BOARD == BOARD_USB2AX) || (BOARD == BOARD_USB2AX_V3))
                        #include "AVR8/USB2AX/Buttons.h"
+               #elif ((BOARD_MICROPENDOUS_32U2) || (BOARD == BOARD_MICROPENDOUS_A) || \
+                      (BOARD == BOARD_MICROPENDOUS_1) || (BOARD == BOARD_MICROPENDOUS_2) || \
+                      (BOARD == BOARD_MICROPENDOUS_3) || (BOARD == BOARD_MICROPENDOUS_4) || \
+                      (BOARD == BOARD_MICROPENDOUS_DIP))
+                       #include "AVR8/MICROPENDOUS/Buttons.h"
                #else
                        #include "Board/Buttons.h"
                #endif
                #else
                        #include "Board/Buttons.h"
                #endif
index 839a059..9db6957 100644 (file)
                        #include "XMEGA/A3BU_XPLAINED/LEDs.h"
                #elif ((BOARD == BOARD_USB2AX) || (BOARD == BOARD_USB2AX_V3))
                        #include "AVR8/USB2AX/LEDs.h"
                        #include "XMEGA/A3BU_XPLAINED/LEDs.h"
                #elif ((BOARD == BOARD_USB2AX) || (BOARD == BOARD_USB2AX_V3))
                        #include "AVR8/USB2AX/LEDs.h"
+               #elif (BOARD_MICROPENDOUS_32U2)
+                       #include "AVR8/MICROPENDOUS/LEDs.h"
                #else
                        #include "Board/LEDs.h"
                #endif
                #else
                        #include "Board/LEDs.h"
                #endif