From 3bd6336075b200fdc0d16cdf80aaf55614854c1d Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sat, 4 Jun 2011 04:13:01 +0000 Subject: [PATCH] Added board driver support for the Busware TUL board. --- LUFA.pnproj | 2 +- LUFA/Common/BoardTypes.h | 5 +- LUFA/Drivers/Board/AVR8/TUL/Buttons.h | 92 +++++++++++++++++++ LUFA/Drivers/Board/AVR8/TUL/LEDs.h | 124 ++++++++++++++++++++++++++ LUFA/Drivers/Board/Buttons.h | 2 + LUFA/Drivers/Board/LEDs.h | 2 + LUFA/ManPages/ChangeLog.txt | 1 + LUFA/ManPages/FutureChanges.txt | 2 +- 8 files changed, 227 insertions(+), 3 deletions(-) create mode 100644 LUFA/Drivers/Board/AVR8/TUL/Buttons.h create mode 100644 LUFA/Drivers/Board/AVR8/TUL/LEDs.h diff --git a/LUFA.pnproj b/LUFA.pnproj index 3f9ec0eed8..8add49c11a 100644 --- a/LUFA.pnproj +++ b/LUFA.pnproj @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/LUFA/Common/BoardTypes.h b/LUFA/Common/BoardTypes.h index 2644685cd2..f41ca88529 100644 --- a/LUFA/Common/BoardTypes.h +++ b/LUFA/Common/BoardTypes.h @@ -120,7 +120,7 @@ /** Selects the Arduino Uno specific board drivers, including the driver for the board LEDs. */ #define BOARD_UNO 18 - /** Selects the 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 /** Selects the Blackcat USB JTAG specific board drivers, including the driver for the board LEDs. */ @@ -147,6 +147,9 @@ /** Selects the Atmel EVK1101 specific board drivers, including the Button, Joystick and LED drivers. */ #define BOARD_EVK1101 27 + /** Selects the Busware TUL specific board drivers, including the Button and LED drivers. */ + #define BOARD_TUL 28 + #if !defined(__DOXYGEN__) #define BOARD_ BOARD_NONE diff --git a/LUFA/Drivers/Board/AVR8/TUL/Buttons.h b/LUFA/Drivers/Board/AVR8/TUL/Buttons.h new file mode 100644 index 0000000000..d4bc5848ab --- /dev/null +++ b/LUFA/Drivers/Board/AVR8/TUL/Buttons.h @@ -0,0 +1,92 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2011. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2011 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 disclaim 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 Board specific Buttons driver header for the TUL. + * \copydetails Group_Buttons_TUL + * + * \note This file should not be included directly. It is automatically included as needed by the Buttons driver + * dispatch header located in LUFA/Drivers/Board/Buttons.h. + */ + +/** \ingroup Group_Buttons + * \defgroup Group_Buttons_TUL TUL + * \brief Board specific Buttons driver header for the TUL. + * + * Board specific Buttons driver header for the Busware TUL (http://www.busware.de/tiki-index.php?page=TUL). + * + * @{ + */ + +#ifndef __BUTTONS_TUL_H__ +#define __BUTTONS_TUL_H__ + + /* Includes: */ + #include "../../../../Common/Common.h" + + /* 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 + + /* Public Interface - May be used in end-application: */ + /* Macros: */ + /** Button mask for the first button on the board. */ + #define BUTTONS_BUTTON1 (1 << 2) + + /* Inline Functions: */ + #if !defined(__DOXYGEN__) + static inline void Buttons_Init(void) + { + DDRE &= ~BUTTONS_BUTTON1; + PORTE |= BUTTONS_BUTTON1; + } + + static inline uint8_t Buttons_GetStatus(void) ATTR_WARN_UNUSED_RESULT; + static inline uint8_t Buttons_GetStatus(void) + { + return ((PINE & BUTTONS_BUTTON1) ^ BUTTONS_BUTTON1); + } + #endif + + /* Disable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + } + #endif + +#endif + +/** @} */ + diff --git a/LUFA/Drivers/Board/AVR8/TUL/LEDs.h b/LUFA/Drivers/Board/AVR8/TUL/LEDs.h new file mode 100644 index 0000000000..02b7970ced --- /dev/null +++ b/LUFA/Drivers/Board/AVR8/TUL/LEDs.h @@ -0,0 +1,124 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2011. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2011 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 disclaim 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 Board specific LED driver header for the Busware TUL. + * \copydetails Group_LEDs_TUL + * + * \note This file should not be included directly. It is automatically included as needed by the LEDs driver + * dispatch header located in LUFA/Drivers/Board/LEDs.h. + */ + +/** \ingroup Group_LEDs + * \defgroup Group_LEDs_TUL TUL + * \brief Board specific LED driver header for the Busware TUL. + * + * Board specific LED driver header for the Busware TUL (http://www.busware.de/tiki-index.php?page=TUL). + * + * @{ + */ + +#ifndef __LEDS_TUL_H__ +#define __LEDS_TUL_H__ + + /* Includes: */ + #include "../../../../Common/Common.h" + + /* 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 + + /* 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 all the LEDs on the board. */ + #define LEDS_ALL_LEDS LEDS_LED1 + + /** LED mask for the none of the board LEDs. */ + #define LEDS_NO_LEDS 0 + + /* Inline Functions: */ + #if !defined(__DOXYGEN__) + static inline void LEDs_Init(void) + { + DDRF |= LEDS_ALL_LEDS; + PORTF &= ~LEDS_ALL_LEDS; + } + + static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) + { + PORTF |= LEDMask; + } + + static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) + { + PORTF &= ~LEDMask; + } + + static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) + { + PORTF = ((PORTF & ~LEDS_ALL_LEDS) | LEDMask); + } + + static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, + const uint8_t ActiveMask) + { + PORTF = ((PORTF & ~LEDMask) | ActiveMask); + } + + static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) + { + PORTF ^= LEDMask; + } + + static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; + static inline uint8_t LEDs_GetLEDs(void) + { + return (PORTF & LEDS_ALL_LEDS); + } + #endif + + /* Disable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + } + #endif + +#endif + +/** @} */ + diff --git a/LUFA/Drivers/Board/Buttons.h b/LUFA/Drivers/Board/Buttons.h index df74b46316..ed584e13c0 100644 --- a/LUFA/Drivers/Board/Buttons.h +++ b/LUFA/Drivers/Board/Buttons.h @@ -125,6 +125,8 @@ #include "AVR8/MICROSIN162/Buttons.h" #elif (BOARD == BOARD_EVK1101) #include "UC3/EVK1101/Buttons.h" + #elif (BOARD == BOARD_TUL) + #include "AVR8/TUL/Buttons.h" #else #include "Board/Buttons.h" #endif diff --git a/LUFA/Drivers/Board/LEDs.h b/LUFA/Drivers/Board/LEDs.h index 100f852144..316f812a2e 100644 --- a/LUFA/Drivers/Board/LEDs.h +++ b/LUFA/Drivers/Board/LEDs.h @@ -165,6 +165,8 @@ #include "AVR8/SPARKFUN8U2/LEDs.h" #elif (BOARD == BOARD_EVK1101) #include "UC3/EVK1101/LEDs.h" + #elif (BOARD == BOARD_TUL) + #include "AVR8/TUL/LEDs.h" #else #include "Board/LEDs.h" #endif diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index f0683039b2..b4618a71ad 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -14,6 +14,7 @@ * - Added new USB_Host_SetInterfaceAltSetting() convenience function for the selection of an interface's alternative setting * - Added Audio class control request definitions * - Added new callback to the Audio Class driver to allow for endpoint control manipulations such as data sample rates + * - Added board driver support for the Busware TUL board * - Library Applications: * - Added RNDIS device mode to the Webserver project * - Added new MediaControl project diff --git a/LUFA/ManPages/FutureChanges.txt b/LUFA/ManPages/FutureChanges.txt index 75dd9e7292..4eea5c5840 100644 --- a/LUFA/ManPages/FutureChanges.txt +++ b/LUFA/ManPages/FutureChanges.txt @@ -33,7 +33,7 @@ * -# Add class driver support for Test and Measurement class * -# Add class driver support for EEM class * -# Add class driver support for ECM class - * -# Fix up Audio class support - add support for mixers, etc., add support for GET/SET commands + * -# Extend Low Level Audio demos to include sample rate switching * - Ports * -# Complete AVR32 port for existing devices, add UC3C support * -# Atmel ARM7 series microcontrollers