From 3790907f4d302e956bea30a261a72411c98a0d60 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 30 Mar 2010 09:08:26 +0000 Subject: Added board hardware driver support for the Benito programmer. --- LUFA/Drivers/Board/BENITO/LEDs.h | 128 +++++++++++++++++++++++++++++++++++++++ LUFA/Drivers/Board/LEDs.h | 5 +- 2 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 LUFA/Drivers/Board/BENITO/LEDs.h (limited to 'LUFA/Drivers') diff --git a/LUFA/Drivers/Board/BENITO/LEDs.h b/LUFA/Drivers/Board/BENITO/LEDs.h new file mode 100644 index 000000000..9139d9267 --- /dev/null +++ b/LUFA/Drivers/Board/BENITO/LEDs.h @@ -0,0 +1,128 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2010. + + dean [at] fourwalledcubicle [dot] com + www.fourwalledcubicle.com +*/ + +/* + Copyright 2010 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 Benito. + * + * Board specific LED driver header for the Benito (http://dorkbotpdx.org/wiki/benito). + * + * \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_BENITO BENITO + * + * Board specific LED driver header for the Benito (http://dorkbotpdx.org/wiki/benito). + * + * \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. + * + * @{ + */ + +#ifndef __LEDS_BENITO_H__ +#define __LEDS_BENITO_H__ + + /* Includes: */ + #include + +/* 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 << 7) + + /** LED mask for the second LED on the board. */ + #define LEDS_LED2 (1 << 6) + + /** LED mask for all the LEDs on the board. */ + #define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2) + + /** 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) + { + DDRC |= LEDS_ALL_LEDS; + PORTC |= LEDS_ALL_LEDS; + } + + static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) + { + PORTC &= ~LEDMask; + } + + static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) + { + PORTC |= LEDMask; + } + + static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) + { + PORTC = ((PORTC | LEDS_ALL_LEDS) & ~LEDMask); + } + + static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask) + { + PORTC = ((PORTC | ActiveMask) & ~LEDMask); + } + + static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) + { + PORTC ^= LEDMask; + } + + static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; + static inline uint8_t LEDs_GetLEDs(void) + { + return (PORTC & LEDS_ALL_LEDS); + } + #endif + + /* Disable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + } + #endif + +#endif + +/** @} */ diff --git a/LUFA/Drivers/Board/LEDs.h b/LUFA/Drivers/Board/LEDs.h index 9d470a700..884aa7dab 100644 --- a/LUFA/Drivers/Board/LEDs.h +++ b/LUFA/Drivers/Board/LEDs.h @@ -53,7 +53,8 @@ * provides an interface to configure, test and change the status of all the board LEDs. * * If the BOARD value is set to BOARD_USER, this will include the /Board/Dataflash.h file in the user project - * directory. Otherwise, it will include the appropriate built in board driver header file. + * directory. Otherwise, it will include the appropriate built in board driver header file. If the BOARD value + * is set to BOARD_NONE, this driver is silently disabled. * * \note To make code as compatible as possible, it is assumed that all boards carry a minimum of four LEDs. If * a board contains less than four LEDs, the remaining LED masks are defined to 0 so as to have no effect. @@ -106,6 +107,8 @@ #include "TEENSY/LEDs.h" #elif (BOARD == BOARD_USBTINYMKII) #include "USBTINYMKII/LEDs.h" + #elif (BOARD == BOARD_BENITO) + #include "BENITO/LEDs.h" #elif (BOARD == BOARD_USER) #include "Board/LEDs.h" #endif -- cgit v1.2.3