From d4f00fe7d51cd6779d2264c1f2a80b4435ca7b38 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sun, 20 May 2012 15:34:47 +0000 Subject: Added new RESET_TOGGLES_LIBUSB_COMPAT compile time option to the AVRISP-MKII clone programmer project (thanks to Robert Spitzenpfeil). --- Projects/AVRISP-MKII/Descriptors.h | 42 ++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 9 deletions(-) (limited to 'Projects/AVRISP-MKII/Descriptors.h') diff --git a/Projects/AVRISP-MKII/Descriptors.h b/Projects/AVRISP-MKII/Descriptors.h index 1b140f30d..675291afb 100644 --- a/Projects/AVRISP-MKII/Descriptors.h +++ b/Projects/AVRISP-MKII/Descriptors.h @@ -40,19 +40,32 @@ #include #include + #include + + /* 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 +84,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 -- cgit v1.2.3