summary refs log tree commit diff
path: root/lib/lufa/BuildTests/BoardDriverTest
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2017-07-07 11:55:23 -0400
committerJack Humbert <jack.humb@gmail.com>2017-07-07 11:55:23 -0400
commit8655d4f4948b2deef7844503c8d690f23ac1a062 (patch)
treeb2c6effc9d6cd5b5b43933a1e53b8bf17e9e82cf /lib/lufa/BuildTests/BoardDriverTest
parent1896c76a2928c96f9ab7947bec2ef8dd37623cff (diff)
parent60b30c036397cb5627fa374bb930794b225daa29 (diff)
Merge commit '60b30c036397cb5627fa374bb930794b225daa29' as 'lib/lufa'
Diffstat (limited to 'lib/lufa/BuildTests/BoardDriverTest')
-rw-r--r--lib/lufa/BuildTests/BoardDriverTest/Board/Board.h82
-rw-r--r--lib/lufa/BuildTests/BoardDriverTest/Board/Buttons.h92
-rw-r--r--lib/lufa/BuildTests/BoardDriverTest/Board/Dataflash.h197
-rw-r--r--lib/lufa/BuildTests/BoardDriverTest/Board/Joystick.h104
-rw-r--r--lib/lufa/BuildTests/BoardDriverTest/Board/LEDs.h132
-rw-r--r--lib/lufa/BuildTests/BoardDriverTest/BoardDeviceMap.cfg89
-rw-r--r--lib/lufa/BuildTests/BoardDriverTest/Test.c115
-rw-r--r--lib/lufa/BuildTests/BoardDriverTest/makefile69
-rw-r--r--lib/lufa/BuildTests/BoardDriverTest/makefile.test35
9 files changed, 915 insertions, 0 deletions
diff --git a/lib/lufa/BuildTests/BoardDriverTest/Board/Board.h b/lib/lufa/BuildTests/BoardDriverTest/Board/Board.h
new file mode 100644
index 0000000000..33b65fe4cd
--- /dev/null
+++ b/lib/lufa/BuildTests/BoardDriverTest/Board/Board.h
@@ -0,0 +1,82 @@
+/*
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+*/
+
+/*
+  Copyright 2017  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
+  without fee, provided that the above copyright notice appear in
+  all copies and that both that the copyright notice and this
+  permission notice and warranty disclaimer appear in supporting
+  documentation, and that the name of the author not be used in
+  advertising or publicity pertaining to distribution of the
+  software without specific, written prior permission.
+
+  The author disclaims all warranties with regard to this
+  software, including all implied warranties of merchantability
+  and fitness.  In no event shall the author be liable for any
+  special, indirect or consequential damages or any damages
+  whatsoever resulting from loss of use, data or profits, whether
+  in an action of contract, negligence or other tortious action,
+  arising out of or in connection with the use or performance of
+  this software.
+*/
+
+/** \file
+ *  \brief LUFA Custom Board Hardware Information Driver (Template)
+ *
+ *  This is a stub driver header file, for implementing custom board
+ *  layout hardware with compatible LUFA board specific drivers. If
+ *  the library is configured to use the BOARD_USER board mode, this
+ *  driver file should be completed and copied into the "/Board/" folder
+ *  inside the application's folder.
+ *
+ *  This stub is for the board-specific component of the LUFA Board Hardware
+ *  information driver.
+ */
+
+#ifndef __BOARD_USER_H__
+#define __BOARD_USER_H__
+
+	/* Includes: */
+		// TODO: Add any required includes here
+
+	/* Enable C linkage for C++ Compilers: */
+		#if defined(__cplusplus)
+			extern "C" {
+		#endif
+
+	/* Preprocessor Checks: */
+		#if !defined(__INCLUDE_FROM_BOARD_H)
+			#error Do not include this file directly. Include LUFA/Drivers/Board/Board.h instead.
+		#endif
+
+	/* Public Interface - May be used in end-application: */
+		/* Macros: */
+			/** Indicates the board has a hardware Buttons mounted if defined. */
+//			#define BOARD_HAS_BUTTONS
+
+			/** Indicates the board has a hardware Dataflash mounted if defined. */
+//			#define BOARD_HAS_DATAFLASH
+
+			/** Indicates the board has a hardware Joystick mounted if defined. */
+//			#define BOARD_HAS_JOYSTICK
+
+			/** Indicates the board has a hardware LEDs mounted if defined. */
+//			#define BOARD_HAS_LEDS
+
+	/* Disable C linkage for C++ Compilers: */
+		#if defined(__cplusplus)
+			}
+		#endif
+
+#endif
+
+/** @} */
+
diff --git a/lib/lufa/BuildTests/BoardDriverTest/Board/Buttons.h b/lib/lufa/BuildTests/BoardDriverTest/Board/Buttons.h
new file mode 100644
index 0000000000..c1a23ef087
--- /dev/null
+++ b/lib/lufa/BuildTests/BoardDriverTest/Board/Buttons.h
@@ -0,0 +1,92 @@
+/*
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+*/
+
+/*
+  Copyright 2017  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
+  without fee, provided that the above copyright notice appear in
+  all copies and that both that the copyright notice and this
+  permission notice and warranty disclaimer appear in supporting
+  documentation, and that the name of the author not be used in
+  advertising or publicity pertaining to distribution of the
+  software without specific, written prior permission.
+
+  The author disclaims all warranties with regard to this
+  software, including all implied warranties of merchantability
+  and fitness.  In no event shall the author be liable for any
+  special, indirect or consequential damages or any damages
+  whatsoever resulting from loss of use, data or profits, whether
+  in an action of contract, negligence or other tortious action,
+  arising out of or in connection with the use or performance of
+  this software.
+*/
+
+/** \file
+ *  \brief LUFA Custom Board Button Hardware Driver (Template)
+ *
+ *  This is a stub driver header file, for implementing custom board
+ *  layout hardware with compatible LUFA board specific drivers. If
+ *  the library is configured to use the BOARD_USER board mode, this
+ *  driver file should be completed and copied into the "/Board/" folder
+ *  inside the application's folder.
+ *
+ *  This stub is for the board-specific component of the LUFA Buttons driver,
+ *  for the control of physical board-mounted GPIO pushbuttons.
+ */
+
+#ifndef __BUTTONS_USER_H__
+#define __BUTTONS_USER_H__
+
+	/* Includes: */
+		// TODO: Add any required includes here
+
+	/* Enable C linkage for C++ Compilers: */
+		#if defined(__cplusplus)
+			extern "C" {
+		#endif
+
+	/* Preprocessor Checks: */
+		#if !defined(__INCLUDE_FROM_BUTTONS_H)
+			#error Do not include this file directly. Include LUFA/Drivers/Board/Buttons.h instead.
+		#endif
+
+		#define BOARD_DUMMY_BUTTONS_IMPLEMENTATION
+
+	/* Public Interface - May be used in end-application: */
+		/* Macros: */
+			/** Button mask for the first button on the board. */
+			#define BUTTONS_BUTTON1          (1 << 0)
+
+		/* Inline Functions: */
+		#if !defined(__DOXYGEN__)
+			static inline void Buttons_Init(void)
+			{
+
+			}
+
+			static inline void Buttons_Disable(void)
+			{
+
+			}
+
+			static inline uint8_t Buttons_GetStatus(void) ATTR_WARN_UNUSED_RESULT;
+			static inline uint8_t Buttons_GetStatus(void)
+			{
+				return 0;
+			}
+		#endif
+
+	/* Disable C linkage for C++ Compilers: */
+		#if defined(__cplusplus)
+			}
+		#endif
+
+#endif
+
diff --git a/lib/lufa/BuildTests/BoardDriverTest/Board/Dataflash.h b/lib/lufa/BuildTests/BoardDriverTest/Board/Dataflash.h
new file mode 100644
index 0000000000..86726a2923
--- /dev/null
+++ b/lib/lufa/BuildTests/BoardDriverTest/Board/Dataflash.h
@@ -0,0 +1,197 @@
+/*
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+*/
+
+/*
+  Copyright 2017  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
+  without fee, provided that the above copyright notice appear in
+  all copies and that both that the copyright notice and this
+  permission notice and warranty disclaimer appear in supporting
+  documentation, and that the name of the author not be used in
+  advertising or publicity pertaining to distribution of the
+  software without specific, written prior permission.
+
+  The author disclaims all warranties with regard to this
+  software, including all implied warranties of merchantability
+  and fitness.  In no event shall the author be liable for any
+  special, indirect or consequential damages or any damages
+  whatsoever resulting from loss of use, data or profits, whether
+  in an action of contract, negligence or other tortious action,
+  arising out of or in connection with the use or performance of
+  this software.
+*/
+
+/** \file
+ *  \brief LUFA Custom Board Dataflash Hardware Driver (Template)
+ *
+ *  This is a stub driver header file, for implementing custom board
+ *  layout hardware with compatible LUFA board specific drivers. If
+ *  the library is configured to use the BOARD_USER board mode, this
+ *  driver file should be completed and copied into the "/Board/" folder
+ *  inside the application's folder.
+ *
+ *  This stub is for the board-specific component of the LUFA Dataflash
+ *  driver.
+*/
+
+#ifndef __DATAFLASH_USER_H__
+#define __DATAFLASH_USER_H__
+
+	/* Includes: */
+		// TODO: Add any required includes here
+
+	/* Preprocessor Checks: */
+		#if !defined(__INCLUDE_FROM_DATAFLASH_H)
+			#error Do not include this file directly. Include LUFA/Drivers/Board/Dataflash.h instead.
+		#endif
+
+		#define BOARD_DUMMY_DATAFLASH_IMPLEMENTATION
+
+	/* Private Interface - For use in library only: */
+	#if !defined(__DOXYGEN__)
+		/* Macros: */
+			#define DATAFLASH_CHIPCS_MASK                0
+			#define DATAFLASH_CHIPCS_DDR                 0
+			#define DATAFLASH_CHIPCS_PORT                0
+	#endif
+
+	/* Public Interface - May be used in end-application: */
+		/* Macros: */
+			/** Constant indicating the total number of dataflash ICs mounted on the selected board. */
+			#define DATAFLASH_TOTALCHIPS                 1
+
+			/** Mask for no dataflash chip selected. */
+			#define DATAFLASH_NO_CHIP                    0
+
+			/** Mask for the first dataflash chip selected. */
+			#define DATAFLASH_CHIP1                      0
+
+			/** Mask for the second dataflash chip selected. */
+			#define DATAFLASH_CHIP2                      0
+
+			/** Internal main memory page size for the board's dataflash ICs. */
+			#define DATAFLASH_PAGE_SIZE                  0
+
+			/** Total number of pages inside each of the board's dataflash ICs. */
+			#define DATAFLASH_PAGES                      0
+
+		/* Inline Functions: */
+			/** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC.
+			 *  The microcontroller's SPI driver MUST be initialized before any of the dataflash commands are used.
+			 */
+			static inline void Dataflash_Init(void)
+			{
+
+			}
+
+			/** Sends a byte to the currently selected dataflash IC, and returns a byte from the dataflash.
+			 *
+			 *  \param[in] Byte  Byte of data to send to the dataflash
+			 *
+			 *  \return Last response byte from the dataflash
+			 */
+			static inline uint8_t Dataflash_TransferByte(const uint8_t Byte) ATTR_ALWAYS_INLINE;
+			static inline uint8_t Dataflash_TransferByte(const uint8_t Byte)
+			{
+				return 0;
+			}
+
+			/** Sends a byte to the currently selected dataflash IC, and ignores the next byte from the dataflash.
+			 *
+			 *  \param[in] Byte  Byte of data to send to the dataflash
+			 */
+			static inline void Dataflash_SendByte(const uint8_t Byte) ATTR_ALWAYS_INLINE;
+			static inline void Dataflash_SendByte(const uint8_t Byte)
+			{
+
+			}
+
+			/** Sends a dummy byte to the currently selected dataflash IC, and returns the next byte from the dataflash.
+			 *
+			 *  \return Last response byte from the dataflash
+			 */
+			static inline uint8_t Dataflash_ReceiveByte(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
+			static inline uint8_t Dataflash_ReceiveByte(void)
+			{
+				return 0;
+			}
+
+			/** Determines the currently selected dataflash chip.
+			 *
+			 *  \return Mask of the currently selected Dataflash chip, either \ref DATAFLASH_NO_CHIP if no chip is selected
+			 *          or a DATAFLASH_CHIPn mask (where n is the chip number).
+			 */
+			static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
+			static inline uint8_t Dataflash_GetSelectedChip(void)
+			{
+				return 0;
+			}
+
+			/** Selects the given dataflash chip.
+			 *
+			 *  \param[in]  ChipMask  Mask of the Dataflash IC to select, in the form of a \c DATAFLASH_CHIPn mask (where n is
+			 *              the chip number).
+			 */
+			static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE;
+			static inline void Dataflash_SelectChip(const uint8_t ChipMask)
+			{
+
+			}
+
+			/** Deselects the current dataflash chip, so that no dataflash is selected. */
+			static inline void Dataflash_DeselectChip(void) ATTR_ALWAYS_INLINE;
+			static inline void Dataflash_DeselectChip(void)
+			{
+
+			}
+
+			/** Selects a dataflash IC from the given page number, which should range from 0 to
+			 *  ((DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS) - 1). For boards containing only one
+			 *  dataflash IC, this will select DATAFLASH_CHIP1. If the given page number is outside
+			 *  the total number of pages contained in the boards dataflash ICs, all dataflash ICs
+			 *  are deselected.
+			 *
+			 *  \param[in] PageAddress  Address of the page to manipulate, ranging from
+			 *                          0 to ((DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS) - 1).
+			 */
+			static inline void Dataflash_SelectChipFromPage(const uint16_t PageAddress)
+			{
+
+			}
+
+			/** Toggles the select line of the currently selected dataflash IC, so that it is ready to receive
+			 *  a new command.
+			 */
+			static inline void Dataflash_ToggleSelectedChipCS(void)
+			{
+
+			}
+
+			/** Spin-loops while the currently selected dataflash is busy executing a command, such as a main
+			 *  memory page program or main memory to buffer transfer.
+			 */
+			static inline void Dataflash_WaitWhileBusy(void)
+			{
+
+			}
+
+			/** Sends a set of page and buffer address bytes to the currently selected dataflash IC, for use with
+			 *  dataflash commands which require a complete 24-bit address.
+			 *
+			 *  \param[in] PageAddress  Page address within the selected dataflash IC
+			 *  \param[in] BufferByte   Address within the dataflash's buffer
+			 */
+			static inline void Dataflash_SendAddressBytes(uint16_t PageAddress, const uint16_t BufferByte)
+			{
+
+			}
+
+#endif
+
diff --git a/lib/lufa/BuildTests/BoardDriverTest/Board/Joystick.h b/lib/lufa/BuildTests/BoardDriverTest/Board/Joystick.h
new file mode 100644
index 0000000000..86a7d7681d
--- /dev/null
+++ b/lib/lufa/BuildTests/BoardDriverTest/Board/Joystick.h
@@ -0,0 +1,104 @@
+/*
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+*/
+
+/*
+  Copyright 2017  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
+  without fee, provided that the above copyright notice appear in
+  all copies and that both that the copyright notice and this
+  permission notice and warranty disclaimer appear in supporting
+  documentation, and that the name of the author not be used in
+  advertising or publicity pertaining to distribution of the
+  software without specific, written prior permission.
+
+  The author disclaims all warranties with regard to this
+  software, including all implied warranties of merchantability
+  and fitness.  In no event shall the author be liable for any
+  special, indirect or consequential damages or any damages
+  whatsoever resulting from loss of use, data or profits, whether
+  in an action of contract, negligence or other tortious action,
+  arising out of or in connection with the use or performance of
+  this software.
+*/
+
+/** \file
+ *  \brief LUFA Custom Board Joystick Hardware Driver (Template)
+ *
+ *  This is a stub driver header file, for implementing custom board
+ *  layout hardware with compatible LUFA board specific drivers. If
+ *  the library is configured to use the BOARD_USER board mode, this
+ *  driver file should be completed and copied into the "/Board/" folder
+ *  inside the application's folder.
+ *
+ *  This stub is for the board-specific component of the LUFA Joystick
+ *  driver, for a digital four-way (plus button) joystick.
+*/
+
+#ifndef __JOYSTICK_USER_H__
+#define __JOYSTICK_USER_H__
+
+	/* Includes: */
+		// TODO: Add any required includes here
+
+	/* Enable C linkage for C++ Compilers: */
+		#if defined(__cplusplus)
+			extern "C" {
+		#endif
+
+	/* Preprocessor Checks: */
+		#if !defined(__INCLUDE_FROM_JOYSTICK_H)
+			#error Do not include this file directly. Include LUFA/Drivers/Board/Joystick.h instead.
+		#endif
+
+		#define BOARD_DUMMY_JOYSTICK_IMPLEMENTATION
+
+	/* Public Interface - May be used in end-application: */
+		/* Macros: */
+			/** Mask for the joystick being pushed in the left direction. */
+			#define JOY_LEFT                  0
+
+			/** Mask for the joystick being pushed in the right direction. */
+			#define JOY_RIGHT                 0
+
+			/** Mask for the joystick being pushed in the upward direction. */
+			#define JOY_UP                    0
+
+			/** Mask for the joystick being pushed in the downward direction. */
+			#define JOY_DOWN                  0
+
+			/** Mask for the joystick being pushed inward. */
+			#define JOY_PRESS                 0
+
+		/* Inline Functions: */
+		#if !defined(__DOXYGEN__)
+			static inline void Joystick_Init(void)
+			{
+
+			}
+
+			static inline void Joystick_Disable(void)
+			{
+
+			}
+
+			static inline uint8_t Joystick_GetStatus(void) ATTR_WARN_UNUSED_RESULT;
+			static inline uint8_t Joystick_GetStatus(void)
+			{
+				return 0;
+			}
+		#endif
+
+	/* Disable C linkage for C++ Compilers: */
+		#if defined(__cplusplus)
+			}
+		#endif
+
+#endif
+
diff --git a/lib/lufa/BuildTests/BoardDriverTest/Board/LEDs.h b/lib/lufa/BuildTests/BoardDriverTest/Board/LEDs.h
new file mode 100644
index 0000000000..548d24232c
--- /dev/null
+++ b/lib/lufa/BuildTests/BoardDriverTest/Board/LEDs.h
@@ -0,0 +1,132 @@
+/*
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+*/
+
+/*
+  Copyright 2017  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
+  without fee, provided that the above copyright notice appear in
+  all copies and that both that the copyright notice and this
+  permission notice and warranty disclaimer appear in supporting
+  documentation, and that the name of the author not be used in
+  advertising or publicity pertaining to distribution of the
+  software without specific, written prior permission.
+
+  The author disclaims all warranties with regard to this
+  software, including all implied warranties of merchantability
+  and fitness.  In no event shall the author be liable for any
+  special, indirect or consequential damages or any damages
+  whatsoever resulting from loss of use, data or profits, whether
+  in an action of contract, negligence or other tortious action,
+  arising out of or in connection with the use or performance of
+  this software.
+*/
+
+/** \file
+ *  \brief LUFA Custom Board LED Hardware Driver (Template)
+ *
+ *  This is a stub driver header file, for implementing custom board
+ *  layout hardware with compatible LUFA board specific drivers. If
+ *  the library is configured to use the BOARD_USER board mode, this
+ *  driver file should be completed and copied into the "/Board/" folder
+ *  inside the application's folder.
+ *
+ *  This stub is for the board-specific component of the LUFA LEDs driver,
+ *  for the LEDs (up to four) mounted on most development boards.
+*/
+
+#ifndef __LEDS_USER_H__
+#define __LEDS_USER_H__
+
+	/* Includes: */
+		// TODO: Add any required includes here
+
+/* Enable C linkage for C++ Compilers: */
+		#if defined(__cplusplus)
+			extern "C" {
+		#endif
+
+	/* Preprocessor Checks: */
+		#if !defined(__INCLUDE_FROM_LEDS_H)
+			#error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead.
+		#endif
+
+		#define BOARD_DUMMY_LEDS_IMPLEMENTATION
+
+	/* Public Interface - May be used in end-application: */
+		/* Macros: */
+			/** LED mask for the first LED on the board. */
+			#define LEDS_LED1        (1 << 0)
+
+			/** LED mask for the second LED on the board. */
+			#define LEDS_LED2        (1 << 1)
+
+			/** LED mask for the third LED on the board. */
+			#define LEDS_LED3        (1 << 2)
+
+			/** LED mask for the fourth LED on the board. */
+			#define LEDS_LED4        (1 << 3)
+
+			/** LED mask for all the LEDs on the board. */
+			#define LEDS_ALL_LEDS    (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4)
+
+			/** LED mask for none of the board LEDs. */
+			#define LEDS_NO_LEDS     0
+
+		/* Inline Functions: */
+		#if !defined(__DOXYGEN__)
+			static inline void LEDs_Init(void)
+			{
+
+			}
+
+			static inline void LEDs_Disable(void)
+			{
+
+			}
+
+			static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
+			{
+
+			}
+
+			static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask)
+			{
+
+			}
+
+			static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
+			{
+
+			}
+
+			static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask)
+			{
+
+			}
+
+			static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
+			{
+
+			}
+
+			static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
+			static inline uint8_t LEDs_GetLEDs(void)
+			{
+				return 0;
+			}
+		#endif
+
+	/* Disable C linkage for C++ Compilers: */
+		#if defined(__cplusplus)
+			}
+		#endif
+
+#endif
+
diff --git a/lib/lufa/BuildTests/BoardDriverTest/BoardDeviceMap.cfg b/lib/lufa/BuildTests/BoardDriverTest/BoardDeviceMap.cfg
new file mode 100644
index 0000000000..c12050941d
--- /dev/null
+++ b/lib/lufa/BuildTests/BoardDriverTest/BoardDeviceMap.cfg
@@ -0,0 +1,89 @@
+#
+#             LUFA Library
+#     Copyright (C) Dean Camera, 2017.
+#
+#  dean [at] fourwalledcubicle [dot] com
+#           www.lufa-lib.org
+#
+#
+# =============================================================================
+# Board configuration map script, processed with the "BoardDriverTest"
+# makefile. This script file maps the possible LUFA target BOARD makefile
+# values in user projects to a specific architecture and device. This mapping is
+# then used by the makefile to build all possible drivers for that board, to
+# detect any missing or erroneous functions. To add a new board mapping, use
+# the syntax:
+#
+#    BOARD DEFINE = {ARCH} : {MCU} :
+#
+# And re-run the makefile. Note that each board may have only one target.
+# =============================================================================
+#
+#
+# ----------------- AVR8 Boards ------------------
+BOARD_ADAFRUITU4        = AVR8  : atmega32u4     :
+BOARD_ATAVRUSBRF01      = AVR8  : at90usb1287    :
+BOARD_BENITO            = AVR8  : at90usb162     :
+BOARD_BIGMULTIO         = AVR8  : atmega32u4     :
+BOARD_BLACKCAT          = AVR8  : at90usb162     :
+BOARD_BUI               = AVR8  : at90usb646     :
+BOARD_BUMBLEB           = AVR8  : at90usb162     :
+BOARD_CULV3             = AVR8  : atmega32u4     :
+BOARD_DUCE              = AVR8  : atmega32u2     :
+BOARD_EVK527            = AVR8  : atmega32u4     :
+BOARD_JMDBU2            = AVR8  : atmega32u2     :
+BOARD_LEONARDO          = AVR8  : atmega32u4     :
+BOARD_MAXIMUS           = AVR8  : at90usb162     :
+BOARD_MICROPENDOUS_32U2 = AVR8  : atmega32u2     :
+BOARD_MICROPENDOUS_A    = AVR8  : at90usb1287    :
+BOARD_MICROPENDOUS_1    = AVR8  : at90usb162     :
+BOARD_MICROPENDOUS_2    = AVR8  : atmega32u4     :
+BOARD_MICROPENDOUS_3    = AVR8  : at90usb1287    :
+BOARD_MICROPENDOUS_4    = AVR8  : at90usb1287    :
+BOARD_MICROPENDOUS_DIP  = AVR8  : at90usb1287    :
+BOARD_MICROPENDOUS_REV1 = AVR8  : at90usb1287    :
+BOARD_MICROPENDOUS_REV2 = AVR8  : at90usb1287    :
+BOARD_MICROSIN162       = AVR8  : atmega162      :
+BOARD_MINIMUS           = AVR8  : atmega32u2     :
+BOARD_MULTIO            = AVR8  : at90usb162     :
+BOARD_NONE              = AVR8  : at90usb1287    :
+BOARD_OLIMEX162         = AVR8  : at90usb162     :
+BOARD_OLIMEX32U4        = AVR8  : atmega32u4     :
+BOARD_OLIMEXT32U4       = AVR8  : atmega32u4     :
+BOARD_OLIMEXISPMK2      = AVR8  : at90usb162     :
+BOARD_RZUSBSTICK        = AVR8  : at90usb1287    :
+BOARD_SPARKFUN8U2       = AVR8  : atmega8u2      :
+BOARD_STK525            = AVR8  : at90usb647     :
+BOARD_STK526            = AVR8  : at90usb162     :
+BOARD_TEENSY            = AVR8  : at90usb162     :
+BOARD_TEENSY2           = AVR8  : at90usb646     :
+BOARD_TUL               = AVR8  : atmega32u4     :
+BOARD_UDIP              = AVR8  : atmega32u2     :
+BOARD_UNO               = AVR8  : atmega8u2      :
+BOARD_USB2AX            = AVR8  : atmega32u2     :
+BOARD_USB2AX_V3         = AVR8  : atmega32u2     :
+BOARD_USB2AX_V31        = AVR8  : atmega32u2     :
+BOARD_USBFOO            = AVR8  : atmega162      :
+BOARD_USBKEY            = AVR8  : at90usb1287    :
+BOARD_USBTINYMKII       = AVR8  : at90usb162     :
+BOARD_USER              = AVR8  : at90usb1287    :
+BOARD_XPLAIN            = AVR8  : at90usb1287    :
+BOARD_XPLAIN_REV1       = AVR8  : at90usb1287    :
+BOARD_STANGE_ISP        = AVR8  : at90usb162     :
+BOARD_U2S               = AVR8  : atmega32u2     :
+BOARD_YUN               = AVR8  : atmega32u4     :
+BOARD_MICRO             = AVR8  : atmega32u4     :
+BOARD_POLOLUMICRO       = AVR8  : atmega32u4     :
+BOARD_XPLAINED_MINI     = AVR8  : atmega32u4     :
+#
+# ----------------- XMEGA Boards -----------------
+BOARD_A3BU_XPLAINED     = XMEGA : atxmega256a3bu :
+BOARD_B1_XPLAINED       = XMEGA : atxmega128b1   :
+BOARD_C3_XPLAINED       = XMEGA : atxmega384c3   :
+#
+# ------------------ UC3 Boards ------------------
+BOARD_EVK1100           = UC3   : uc3a0512       :
+BOARD_EVK1101           = UC3   : uc3b0256       :
+BOARD_EVK1104           = UC3   : uc3a3256       :
+BOARD_UC3A3_XPLAINED    = UC3   : uc3a3256       :
+#
diff --git a/lib/lufa/BuildTests/BoardDriverTest/Test.c b/lib/lufa/BuildTests/BoardDriverTest/Test.c
new file mode 100644
index 0000000000..8baa4460ba
--- /dev/null
+++ b/lib/lufa/BuildTests/BoardDriverTest/Test.c
@@ -0,0 +1,115 @@
+/*
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+*/
+
+/*
+  Copyright 2017  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
+  without fee, provided that the above copyright notice appear in
+  all copies and that both that the copyright notice and this
+  permission notice and warranty disclaimer appear in supporting
+  documentation, and that the name of the author not be used in
+  advertising or publicity pertaining to distribution of the
+  software without specific, written prior permission.
+
+  The author disclaims all warranties with regard to this
+  software, including all implied warranties of merchantability
+  and fitness.  In no event shall the author be liable for any
+  special, indirect or consequential damages or any damages
+  whatsoever resulting from loss of use, data or profits, whether
+  in an action of contract, negligence or other tortious action,
+  arising out of or in connection with the use or performance of
+  this software.
+*/
+
+#include <LUFA/Common/Common.h>
+#include <LUFA/Drivers/Board/Board.h>
+#include <LUFA/Drivers/Board/Buttons.h>
+#include <LUFA/Drivers/Board/Dataflash.h>
+#include <LUFA/Drivers/Board/LEDs.h>
+#include <LUFA/Drivers/Board/Joystick.h>
+
+#if defined(BOARD_HAS_BUTTONS) == defined(BOARD_DUMMY_BUTTONS_IMPLEMENTATION)
+	#error Mismatch between BOARD_HAS_BUTTONS and implementation.
+#endif
+
+#if defined(BOARD_HAS_DATAFLASH) == defined(BOARD_DUMMY_DATAFLASH_IMPLEMENTATION)
+	#error Mismatch between BOARD_HAS_DATAFLASH and implementation.
+#endif
+
+#if defined(BOARD_HAS_LEDS) == defined(BOARD_DUMMY_LEDS_IMPLEMENTATION)
+	#error Mismatch between BOARD_HAS_LEDS and implementation.
+#endif
+
+#if defined(BOARD_HAS_JOYSTICK) == defined(BOARD_DUMMY_JOYSTICK_IMPLEMENTATION)
+	#error Mismatch between BOARD_HAS_JOYSTICK and implementation.
+#endif
+
+int main(void)
+{
+	uint_reg_t Dummy;
+
+	/* =============================
+	 *     Buttons Compile Check
+	 * ============================= */
+	// cppcheck-suppress redundantAssignment
+	Dummy = BUTTONS_BUTTON1;
+	Buttons_Init();
+	// cppcheck-suppress redundantAssignment
+	Dummy = Buttons_GetStatus();
+	Buttons_Disable();
+
+	/* =============================
+	 *    Dataflash Compile Check
+	 * ============================= */
+	// cppcheck-suppress redundantAssignment
+	Dummy = DATAFLASH_TOTALCHIPS + DATAFLASH_NO_CHIP + DATAFLASH_CHIP1 + DATAFLASH_PAGE_SIZE + DATAFLASH_PAGES;
+	Dataflash_Init();
+	Dataflash_TransferByte(0);
+	Dataflash_SendByte(0);
+	// cppcheck-suppress redundantAssignment
+	Dummy = Dataflash_ReceiveByte();
+	// cppcheck-suppress redundantAssignment
+	Dummy = Dataflash_GetSelectedChip();
+	Dataflash_SelectChip(DATAFLASH_CHIP1);
+	Dataflash_DeselectChip();
+	Dataflash_SelectChipFromPage(0);
+	Dataflash_ToggleSelectedChipCS();
+	Dataflash_WaitWhileBusy();
+	Dataflash_SendAddressBytes(0, 0);
+
+	/* =============================
+	 *       LEDs Compile Check
+	 * ============================= */
+	// cppcheck-suppress redundantAssignment
+	Dummy = LEDS_LED1 + LEDS_LED2 + LEDS_LED3 + LEDS_LED4;
+	LEDs_Init();
+	LEDs_TurnOnLEDs(LEDS_ALL_LEDS);
+	LEDs_TurnOffLEDs(LEDS_ALL_LEDS);
+	LEDs_SetAllLEDs(LEDS_ALL_LEDS);
+	LEDs_ChangeLEDs(LEDS_ALL_LEDS, LEDS_NO_LEDS);
+	LEDs_ToggleLEDs(LEDS_ALL_LEDS);
+	// cppcheck-suppress redundantAssignment
+	Dummy = LEDs_GetLEDs();
+	LEDs_Disable();
+
+	/* =============================
+	 *     Joystick Compile Check
+	 * ============================= */
+	// cppcheck-suppress redundantAssignment
+	Dummy = JOY_LEFT + JOY_RIGHT + JOY_UP + JOY_DOWN + JOY_PRESS;
+	Joystick_Init();
+	// cppcheck-suppress redundantAssignment
+	Dummy = Joystick_GetStatus();
+	Joystick_Disable();
+
+	(void)Dummy;
+}
+
+
diff --git a/lib/lufa/BuildTests/BoardDriverTest/makefile b/lib/lufa/BuildTests/BoardDriverTest/makefile
new file mode 100644
index 0000000000..8414d91862
--- /dev/null
+++ b/lib/lufa/BuildTests/BoardDriverTest/makefile
@@ -0,0 +1,69 @@
+#
+#             LUFA Library
+#     Copyright (C) Dean Camera, 2017.
+#
+#  dean [at] fourwalledcubicle [dot] com
+#           www.lufa-lib.org
+#
+
+# Makefile for the board driver build test. This
+# test attempts to build a dummy project with all
+# possible board targets using their respective
+# compiler.
+
+# Path to the LUFA library core
+LUFA_PATH := ../../LUFA/
+
+# Build test cannot be run with multiple parallel jobs
+.NOTPARALLEL:
+
+all: begin makeboardlist testboards clean end
+
+begin:
+	@echo Executing build test "BoardDriverTest".
+	@echo
+
+end:
+	@echo Build test "BoardDriverTest" complete.
+	@echo
+
+makeboardlist:
+	@grep "BOARD_" $(patsubst %/,%,$(LUFA_PATH))/Common/BoardTypes.h | cut -d'#' -f2 | cut -d' ' -f2 | grep "BOARD_" > BoardList.txt
+
+testboards:
+	@echo "buildtest:" > BuildMakefile
+
+	@while read line;                                                                               \
+	 do                                                                                             \
+	   build_cfg=`grep "$$line " BoardDeviceMap.cfg | grep -v "#" | cut -d'=' -f2- | sed 's/ //g'`; \
+	                                                                                                \
+	   build_board=$$line;                                                                          \
+	   build_arch=`echo $$build_cfg | cut -d':' -f1`;                                               \
+	   build_mcu=`echo $$build_cfg | cut -d':' -f2`;                                                \
+	                                                                                                \
+	   if ( test -z "$$build_cfg" ); then                                                           \
+	     echo "No matching information set for board $$build_board";                                \
+	   else                                                                                         \
+	     echo "Found board configuration for $$build_board - $$build_arch, $$build_mcu";            \
+		                                                                                            \
+		 printf "\t@echo Building dummy project for $$build_board...\n" >> BuildMakefile;           \
+		 printf "\t$(MAKE) -f makefile.test clean elf MCU=%s ARCH=%s BOARD=%s\n\n" $$build_mcu $$build_arch $$build_board >> BuildMakefile; \
+	   fi;                                                                                          \
+	 done < BoardList.txt
+
+	 $(MAKE) -f BuildMakefile buildtest
+
+clean:
+	rm -f BuildMakefile
+	rm -f BoardList.txt
+	$(MAKE) -f makefile.test clean BOARD=NONE ARCH=AVR8 MCU=at90usb1287
+	$(MAKE) -f makefile.test clean BOARD=NONE ARCH=XMEGA MCU=atxmega128a1u
+	$(MAKE) -f makefile.test clean BOARD=NONE ARCH=UC3 MCU=uc3a0256
+
+%:
+
+.PHONY: all begin end makeboardlist testboards clean
+
+# Include common DMBS build system modules
+DMBS_PATH      ?= $(LUFA_PATH)/Build/DMBS/DMBS
+include $(DMBS_PATH)/core.mk
diff --git a/lib/lufa/BuildTests/BoardDriverTest/makefile.test b/lib/lufa/BuildTests/BoardDriverTest/makefile.test
new file mode 100644
index 0000000000..373a15e753
--- /dev/null
+++ b/lib/lufa/BuildTests/BoardDriverTest/makefile.test
@@ -0,0 +1,35 @@
+#
+#             LUFA Library
+#     Copyright (C) Dean Camera, 2017.
+#
+#  dean [at] fourwalledcubicle [dot] com
+#           www.lufa-lib.org
+#
+# --------------------------------------
+#         LUFA Project Makefile.
+# --------------------------------------
+
+# Run "make help" for target help.
+
+MCU          =
+ARCH         =
+BOARD        =
+F_CPU        = $(F_USB)
+F_USB        = 8000000
+OPTIMIZATION = 1
+TARGET       = Test
+SRC          = $(TARGET).c
+LUFA_PATH    = ../../LUFA
+CC_FLAGS     = -Werror
+DEBUG_LEVEL  = 0
+
+
+# Include LUFA-specific DMBS extension modules
+DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA
+include $(DMBS_LUFA_PATH)/lufa-sources.mk
+include $(DMBS_LUFA_PATH)/lufa-gcc.mk
+
+# Include common DMBS build system modules
+DMBS_PATH      ?= $(LUFA_PATH)/Build/DMBS/DMBS
+include $(DMBS_PATH)/core.mk
+include $(DMBS_PATH)/gcc.mk