diff options
Diffstat (limited to 'Projects/AVRISP-MKII/Descriptors.h')
| -rw-r--r-- | Projects/AVRISP-MKII/Descriptors.h | 44 | 
1 files changed, 35 insertions, 9 deletions
diff --git a/Projects/AVRISP-MKII/Descriptors.h b/Projects/AVRISP-MKII/Descriptors.h index 1b140f30d..1ff25635e 100644 --- a/Projects/AVRISP-MKII/Descriptors.h +++ b/Projects/AVRISP-MKII/Descriptors.h @@ -40,19 +40,34 @@  		#include <avr/pgmspace.h>  		#include <LUFA/Drivers/USB/USB.h> +		#include <LUFA/Drivers/Board/LEDs.h> + +		#include "Config/AppConfig.h" + +	/* Preprocessor Checks: */ +		#if defined(LIBUSB_DRIVER_COMPAT) && defined(RESET_TOGGLES_LIBUSB_COMPAT) +			#error LIBUSB_DRIVER_COMPAT and RESET_TOGGLES_LIBUSB_COMPAT are mutually exclusive. +		#endif  	/* Macros: */ -		#if !defined(LIBUSB_DRIVER_COMPAT) || defined(__DOXYGEN__) -			/** Endpoint address of the AVRISP data OUT endpoint. */ -			#define AVRISP_DATA_OUT_EPADDR     (ENDPOINT_DIR_OUT | 2) +		/** Endpoint address of the AVRISP data OUT endpoint. */ +		#define AVRISP_DATA_OUT_EPADDR         (ENDPOINT_DIR_OUT | 2) + +		/** Endpoint address of the AVRISP data IN endpoint, when in Jungo driver compatibility mode. */ +		#define AVRISP_DATA_IN_EPADDR_JUNGO    (ENDPOINT_DIR_IN  | 2) + +		/** Endpoint address of the AVRISP data IN endpoint, when in LibUSB driver compatibility mode. */ +		#define AVRISP_DATA_IN_EPADDR_LIBUSB   (ENDPOINT_DIR_IN  | 3) +		#if !defined(LIBUSB_DRIVER_COMPAT) || defined(__DOXYGEN__)  			/** Endpoint address of the AVRISP data IN endpoint. */ -			#define AVRISP_DATA_IN_EPADDR      (ENDPOINT_DIR_IN  | 2) +			#define AVRISP_DATA_IN_EPADDR      AVRISP_DATA_IN_EPADDR_JUNGO +		#elif defined(RESET_TOGGLES_LIBUSB_COMPAT) +			#define AVRISP_DATA_IN_EPADDR      AVRISP_CurrDataINEndpointAddress  		#else -			#define AVRISP_DATA_OUT_EPADDR     (ENDPOINT_DIR_OUT | 2) -			#define AVRISP_DATA_IN_EPADDR      (ENDPOINT_DIR_IN  | 3) +			#define AVRISP_DATA_IN_EPADDR      AVRISP_DATA_IN_EPADDR_LIBUSB  		#endif - +		  		/** Size in bytes of the AVRISP data endpoint. */  		#define AVRISP_DATA_EPSIZE             64 @@ -71,11 +86,22 @@  			USB_Descriptor_Endpoint_t                AVRISP_DataOutEndpoint;  		} USB_Descriptor_Configuration_t; +	/* External Variables: */ +		#if defined(RESET_TOGGLES_LIBUSB_COMPAT) +			extern uint8_t AVRISP_CurrDataINEndpointAddress; +		#endif +		  	/* Function Prototypes: */  		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,  		                                    const uint8_t wIndex, -		                                    const void** const DescriptorAddress) -		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); +		                                    const void** const DescriptorAddress, +											uint8_t* const DescriptorMemorySpace) +		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3) ATTR_NON_NULL_PTR_ARG(4); + +		#if defined(RESET_TOGGLES_LIBUSB_COMPAT) +		void CheckExternalReset(void) ATTR_NAKED ATTR_INIT_SECTION(3); +		void UpdateCurrentCompatibilityMode(void); +		#endif  #endif  | 
