/*
LUFA Library
- Copyright (C) Dean Camera, 2011.
+ Copyright (C) Dean Camera, 2012.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
- Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+ Copyright 2012 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
* It provides a way to easily configure and check the status of all the buttons on the board so that appropriate
* actions can be taken.
*
- * If the \c BOARD value is set to \c BOARD_USER, this will include the \c /Board/Dataflash.h file in the user project
+ * If the \c BOARD value is set to \c BOARD_USER, this will include the \c /Board/Buttons.h file in the user project
* directory. Otherwise, it will include the appropriate built in board driver header file.
*
* For possible \c BOARD makefile values, see \ref Group_BoardTypes.
* application.
*
* \code
- * // Initialise the button driver before first use
+ * // Initialize the button driver before first use
* Buttons_Init();
- *
+ *
* printf("Waiting for button press...\r\n");
- *
+ *
* // Loop until a board button has been pressed
* uint8_t ButtonPress;
* while (!(ButtonPress = Buttons_GetStatus())) {};
- *
+ *
* // Display which button was pressed (assuming two board buttons)
* printf("Button pressed: %s\r\n", (ButtonPress == BUTTONS_BUTTON1) ? "Button 1" : "Button 2");
* \endcode
- *
+ *
* @{
*/
#define __BUTTONS_H__
/* Macros: */
- #if !defined(__DOXYGEN__)
#define __INCLUDE_FROM_BUTTONS_H
- #define INCLUDE_FROM_BUTTONS_H
- #endif
/* Includes: */
- #include "../../Common/Common.h"
-
- #if (BOARD == BOARD_NONE)
- #error The Board Buttons driver cannot be used if the makefile BOARD option is not set.
- #elif (BOARD == BOARD_USBKEY)
- #include "USBKEY/Buttons.h"
- #elif (BOARD == BOARD_STK525)
- #include "STK525/Buttons.h"
- #elif (BOARD == BOARD_STK526)
- #include "STK526/Buttons.h"
- #elif (BOARD == BOARD_ATAVRUSBRF01)
- #include "ATAVRUSBRF01/Buttons.h"
- #elif (BOARD == BOARD_BUMBLEB)
- #include "BUMBLEB/Buttons.h"
- #elif (BOARD == BOARD_EVK527)
- #include "EVK527/Buttons.h"
- #elif (BOARD == BOARD_USBTINYMKII)
- #include "USBTINYMKII/Buttons.h"
- #elif (BOARD == BOARD_BENITO)
- #include "BENITO/Buttons.h"
- #elif (BOARD == BOARD_JMDBU2)
- #include "JMDBU2/Buttons.h"
- #elif (BOARD == BOARD_OLIMEX162)
- #include "OLIMEX162/Buttons.h"
- #elif (BOARD == BOARD_USBFOO)
- #include "USBFOO/Buttons.h"
- #elif (BOARD == BOARD_UDIP)
- #include "UDIP/Buttons.h"
- #elif (BOARD == BOARD_CULV3)
- #include "CULV3/Buttons.h"
- #elif (BOARD == BOARD_MINIMUS)
- #include "MINIMUS/Buttons.h"
- #elif (BOARD == BOARD_MICROSIN162)
- #include "MICROSIN162/Buttons.h"
- #else
- #include "Board/Buttons.h"
- #endif
+ #include "../../Common/Common.h"
+
+ #if (BOARD == BOARD_NONE)
+ #error The Board Buttons driver cannot be used if the makefile BOARD option is not set.
+ #elif (BOARD == BOARD_USBKEY)
+ #include "AVR8/USBKEY/Buttons.h"
+ #elif (BOARD == BOARD_STK525)
+ #include "AVR8/STK525/Buttons.h"
+ #elif (BOARD == BOARD_STK526)
+ #include "AVR8/STK526/Buttons.h"
+ #elif (BOARD == BOARD_ATAVRUSBRF01)
+ #include "AVR8/ATAVRUSBRF01/Buttons.h"
+ #elif (BOARD == BOARD_BUMBLEB)
+ #include "AVR8/BUMBLEB/Buttons.h"
+ #elif (BOARD == BOARD_EVK527)
+ #include "AVR8/EVK527/Buttons.h"
+ #elif (BOARD == BOARD_USBTINYMKII)
+ #include "AVR8/USBTINYMKII/Buttons.h"
+ #elif (BOARD == BOARD_BENITO)
+ #include "AVR8/BENITO/Buttons.h"
+ #elif (BOARD == BOARD_JMDBU2)
+ #include "AVR8/JMDBU2/Buttons.h"
+ #elif (BOARD == BOARD_OLIMEX162)
+ #include "AVR8/OLIMEX162/Buttons.h"
+ #elif (BOARD == BOARD_USBFOO)
+ #include "AVR8/USBFOO/Buttons.h"
+ #elif (BOARD == BOARD_UDIP)
+ #include "AVR8/UDIP/Buttons.h"
+ #elif (BOARD == BOARD_CULV3)
+ #include "AVR8/CULV3/Buttons.h"
+ #elif (BOARD == BOARD_MINIMUS)
+ #include "AVR8/MINIMUS/Buttons.h"
+ #elif (BOARD == BOARD_MICROSIN162)
+ #include "AVR8/MICROSIN162/Buttons.h"
+ #elif (BOARD == BOARD_EVK1101)
+ #include "UC3/EVK1101/Buttons.h"
+ #elif (BOARD == BOARD_TUL)
+ #include "AVR8/TUL/Buttons.h"
+ #elif (BOARD == BOARD_EVK1100)
+ #include "UC3/EVK1100/Buttons.h"
+ #elif (BOARD == BOARD_EVK1104)
+ #include "UC3/EVK1104/Buttons.h"
+ #elif (BOARD == BOARD_A3BU_XPLAINED)
+ #include "XMEGA/A3BU_XPLAINED/Buttons.h"
+ #elif ((BOARD == BOARD_USB2AX) || (BOARD == BOARD_USB2AX_V3))
+ #include "AVR8/USB2AX/Buttons.h"
+ #elif ((BOARD == 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_REV1) || (BOARD == BOARD_MICROPENDOUS_REV2) || \
+ (BOARD == BOARD_MICROPENDOUS_DIP))
+ #include "AVR8/MICROPENDOUS/Buttons.h"
+ #elif (BOARD == BOARD_B1_XPLAINED)
+ #include "XMEGA/B1_XPLAINED/Buttons.h"
+ #elif (BOARD == BOARD_OLIMEX32U4)
+ #include "AVR8/OLIMEX32U4/Buttons.h"
+ #elif (BOARD == BOARD_OLIMEXT32U4)
+ #include "AVR8/OLIMEXT32U4/Buttons.h"
+ #else
+ #include "Board/Buttons.h"
+ #endif
/* Pseudo-Functions for Doxygen: */
#if defined(__DOXYGEN__)
- /** Initialises the BUTTONS driver, so that the current button position can be read. This sets the appropriate
+ /** Initializes the buttons driver, so that the current button position can be read. This sets the appropriate
* I/O pins to an inputs with pull-ups enabled.
*
* This must be called before any Button driver functions are used.
*/
static inline void Buttons_Init(void);
+ /** Disables the buttons driver, releasing the I/O pins back to their default high-impedance input mode. */
+ static inline void Buttons_Disable(void);
+
/** Returns a mask indicating which board buttons are currently pressed.
*
* \return Mask indicating which board buttons are currently pressed.
*/
- static inline uint8_t Buttons_GetStatus(void) ATTR_WARN_UNUSED_RESULT;
+ static inline uint_reg_t Buttons_GetStatus(void) ATTR_WARN_UNUSED_RESULT;
#endif
#endif