/*\r
LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
+ Copyright (C) Dean Camera, 2010.\r
\r
dean [at] fourwalledcubicle [dot] com\r
www.fourwalledcubicle.com\r
*/\r
\r
/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- 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
+ Copyright 2010 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
*/\r
\r
/** \file\r
+ * \brief Master include file for the board LEDs driver.\r
*\r
* This file is the master dispatch header file for the board-specific LED driver, for boards containing user\r
* controllable LEDs.\r
* If the BOARD value is set to BOARD_USER, this will include the /Board/LEDs.h file in the user project\r
* directory.\r
*/\r
- \r
+\r
+/** \ingroup Group_BoardDrivers\r
+ * @defgroup Group_LEDs LEDs Driver - LUFA/Drivers/Board/LEDs.h\r
+ *\r
+ * \section Sec_Dependencies Module Source Dependencies\r
+ * The following files must be built with any user project that uses this module:\r
+ * - None\r
+ *\r
+ * \section Module Description\r
+ * Hardware LEDs driver. This provides an easy to use driver for the hardware LEDs present on many boards. It\r
+ * provides an interface to configure, test and change the status of all the board LEDs.\r
+ *\r
+ * If the BOARD value is set to BOARD_USER, this will include the /Board/Dataflash.h file in the user project\r
+ * directory. Otherwise, it will include the appropriate built in board driver header file. If the BOARD value\r
+ * is set to BOARD_NONE, this driver is silently disabled.\r
+ *\r
+ * \note To make code as compatible as possible, it is assumed that all boards carry a minimum of four LEDs. If\r
+ * a board contains less than four LEDs, the remaining LED masks are defined to 0 so as to have no effect.\r
+ * If other behaviour is desired, either alias the remaining LED masks to existing LED masks via the -D \r
+ * switch in the project makefile, or alias them to nothing in the makefile to cause compilation errors when\r
+ * a non-existing LED is referenced in application code. Note that this means that it is possible to make\r
+ * compatible code for a board with no LEDs by making a board LED driver (see \ref Page_WritingBoardDrivers)\r
+ * which contains only stub functions and defines no LEDs.\r
+ *\r
+ * @{\r
+ */\r
+\r
#ifndef __LEDS_H__\r
#define __LEDS_H__\r
\r
/* Macros: */\r
#if !defined(__DOXYGEN__)\r
+ #define __INCLUDE_FROM_LEDS_H\r
#define INCLUDE_FROM_LEDS_H\r
- #define INCLUDE_FROM_BOARD_DRIVER\r
#endif\r
\r
/* Includes: */\r
#include "../../Common/Common.h"\r
\r
- #if !defined(BOARD)\r
- #error BOARD must be set in makefile to a value specified in BoardTypes.h.\r
+ #if (BOARD == BOARD_NONE)\r
+ static inline void LEDs_Init(void) {};\r
+ static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) {};\r
+ static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) {};\r
+ static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) {};\r
+ static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask) {};\r
+ static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) {};\r
+ static inline uint8_t LEDs_GetLEDs(void) { return 0; }\r
#elif (BOARD == BOARD_USBKEY)\r
#include "USBKEY/LEDs.h"\r
#elif (BOARD == BOARD_STK525)\r
#include "RZUSBSTICK/LEDs.h"\r
#elif (BOARD == BOARD_ATAVRUSBRF01)\r
#include "ATAVRUSBRF01/LEDs.h"\r
+ #elif ((BOARD == BOARD_XPLAIN) || (BOARD == BOARD_XPLAIN_REV1))\r
+ #include "XPLAIN/LEDs.h"\r
+ #elif (BOARD == BOARD_BUMBLEB)\r
+ #include "BUMBLEB/LEDs.h"\r
+ #elif (BOARD == BOARD_EVK527)\r
+ #include "EVK527/LEDs.h"\r
+ #elif (BOARD == BOARD_TEENSY)\r
+ #include "TEENSY/LEDs.h"\r
+ #elif (BOARD == BOARD_USBTINYMKII)\r
+ #include "USBTINYMKII/LEDs.h"\r
+ #elif (BOARD == BOARD_BENITO)\r
+ #include "BENITO/LEDs.h"\r
+ #elif (BOARD == BOARD_JMDBU2)\r
+ #include "JMDBU2/LEDs.h"\r
#elif (BOARD == BOARD_USER)\r
#include "Board/LEDs.h"\r
#endif\r
\r
+ #if !defined(LEDS_LED1)\r
+ #define LEDS_LED1 0\r
+ #endif\r
+\r
+ #if !defined(LEDS_LED2)\r
+ #define LEDS_LED2 0\r
+ #endif\r
+\r
+ #if !defined(LEDS_LED3)\r
+ #define LEDS_LED3 0\r
+ #endif\r
+\r
+ #if !defined(LEDS_LED4)\r
+ #define LEDS_LED4 0\r
+ #endif\r
+ \r
/* Pseudo-Functions for Doxygen: */\r
#if defined(__DOXYGEN__)\r
/** Initializes the board LED driver so that the LEDs can be controlled. This sets the appropriate port\r
\r
/** Turns on the LEDs specified in the given LED mask.\r
*\r
- * \param LEDMask Mask of the board LEDs to manipulate (see board-specific LEDs.h driver file)\r
+ * \param[in] LEDMask Mask of the board LEDs to manipulate (see board-specific LEDs.h driver file)\r
*/\r
static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask);\r
\r
/** Turns off the LEDs specified in the given LED mask.\r
*\r
- * \param LEDMask Mask of the board LEDs to manipulate (see board-specific LEDs.h driver file)\r
+ * \param[in] LEDMask Mask of the board LEDs to manipulate (see board-specific LEDs.h driver file)\r
*/\r
static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask);\r
\r
/** Turns off all LEDs not specified in the given LED mask, and turns on all the LEDs in the given LED\r
* mask.\r
*\r
- * \param LEDMask Mask of the board LEDs to manipulate (see board-specific LEDs.h driver file)\r
+ * \param[in] LEDMask Mask of the board LEDs to manipulate (see board-specific LEDs.h driver file)\r
*/\r
static inline void LEDs_SetAllLEDs(const uint8_t LEDMask);\r
\r
/** Turns off all LEDs in the LED mask that are not set in the active mask, and turns on all the LEDs\r
* specified in both the LED and active masks.\r
*\r
- * \param LEDMask Mask of the board LEDs to manipulate (see board-specific LEDs.h driver file)\r
- * \param ActiveMask Mask of whether the LEDs in the LED mask should be turned on or off\r
+ * \param[in] LEDMask Mask of the board LEDs to manipulate (see board-specific LEDs.h driver file)\r
+ * \param[in] ActiveMask Mask of whether the LEDs in the LED mask should be turned on or off\r
*/\r
static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask);\r
+ \r
+ /** Toggles all LEDs in the LED mask, leaving all others in their current states.\r
+ *\r
+ * \param[in] LEDMask Mask of the board LEDs to manipulate (see board-specific LEDs.h driver file)\r
+ */\r
+ static inline void LEDs_ToggleLEDs(const uint8_t LEDMask);\r
\r
/** Returns the status of all the board LEDs; set LED masks in the return value indicate that the\r
* corresponding LED is on.\r
#endif\r
\r
#endif\r
+\r
+/** @} */\r