From d0806c817cbf0c1b5c5362d1577eac6075c94dfc Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Fri, 22 May 2009 05:23:00 +0000 Subject: Deleted StdDescriptors.c, renamed USB_GetDescriptor() to CALLBACK_USB_GetDescriptor, moved ConfigDescriptor.c/.h from the LUFA/Drivers/USB/Class/ directory to LUFA/Drivers/USB/HighLevel/ in preperation for the new USB class APIs. --- Bootloaders/CDC/Descriptors.c | 2 +- Bootloaders/CDC/Descriptors.h | 4 +- Bootloaders/CDC/makefile | 4 +- Bootloaders/DFU/Descriptors.c | 2 +- Bootloaders/DFU/Descriptors.h | 4 +- Bootloaders/DFU/makefile | 4 +- Bootloaders/TeensyHID/Descriptors.c | 2 +- Bootloaders/TeensyHID/Descriptors.h | 4 +- Bootloaders/TeensyHID/makefile | 4 +- Demos/Device/AudioInput/AudioInput.h | 6 +- Demos/Device/AudioInput/Descriptors.c | 2 +- Demos/Device/AudioInput/Descriptors.h | 4 +- Demos/Device/AudioInput/makefile | 3 +- Demos/Device/AudioOutput/Descriptors.h | 4 +- Demos/Device/AudioOutput/makefile | 3 +- Demos/Device/CDC/Descriptors.c | 2 +- Demos/Device/CDC/Descriptors.h | 4 +- Demos/Device/CDC/makefile | 3 +- Demos/Device/DualCDC/Descriptors.c | 2 +- Demos/Device/DualCDC/Descriptors.h | 4 +- Demos/Device/DualCDC/makefile | 3 +- Demos/Device/GenericHID/Descriptors.c | 2 +- Demos/Device/GenericHID/Descriptors.h | 4 +- Demos/Device/GenericHID/makefile | 3 +- Demos/Device/Joystick/Descriptors.c | 2 +- Demos/Device/Joystick/Descriptors.h | 4 +- Demos/Device/Joystick/makefile | 3 +- Demos/Device/Keyboard/Descriptors.c | 2 +- Demos/Device/Keyboard/Descriptors.h | 4 +- Demos/Device/Keyboard/makefile | 3 +- Demos/Device/KeyboardMouse/Descriptors.c | 2 +- Demos/Device/KeyboardMouse/Descriptors.h | 4 +- Demos/Device/KeyboardMouse/makefile | 3 +- Demos/Device/MIDI/Descriptors.c | 2 +- Demos/Device/MIDI/Descriptors.h | 4 +- Demos/Device/MIDI/makefile | 3 +- Demos/Device/MassStorage/Descriptors.c | 2 +- Demos/Device/MassStorage/Descriptors.h | 4 +- Demos/Device/MassStorage/makefile | 3 +- Demos/Device/Mouse/Descriptors.c | 2 +- Demos/Device/Mouse/Descriptors.h | 4 +- Demos/Device/Mouse/makefile | 3 +- Demos/Device/RNDISEthernet/Descriptors.c | 2 +- Demos/Device/RNDISEthernet/Descriptors.h | 4 +- Demos/Device/RNDISEthernet/makefile | 3 +- Demos/Device/USBtoSerial/Descriptors.c | 2 +- Demos/Device/USBtoSerial/Descriptors.h | 4 +- Demos/Device/USBtoSerial/makefile | 3 +- Demos/Host/CDCHost/makefile | 3 +- Demos/Host/GenericHIDHost/makefile | 3 +- Demos/Host/KeyboardHost/makefile | 3 +- Demos/Host/KeyboardHostWithParser/makefile | 3 +- Demos/Host/MassStorageHost/makefile | 3 +- Demos/Host/MouseHost/makefile | 3 +- Demos/Host/MouseHostWithParser/makefile | 3 +- Demos/Host/StillImageHost/makefile | 3 +- Demos/OTG/TestApp/Descriptors.c | 2 +- Demos/OTG/TestApp/Descriptors.h | 4 +- Demos/OTG/TestApp/TestEvents.c | 12 -- Demos/OTG/TestApp/TestEvents.h | 3 +- Demos/OTG/TestApp/makefile | 3 +- LUFA.pnproj | 2 +- LUFA/ChangeLog.txt | 2 + LUFA/Drivers/USB/Class/ConfigDescriptor.c | 141 -------------- LUFA/Drivers/USB/Class/ConfigDescriptor.h | 271 -------------------------- LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c | 141 ++++++++++++++ LUFA/Drivers/USB/HighLevel/ConfigDescriptor.h | 271 ++++++++++++++++++++++++++ LUFA/Drivers/USB/HighLevel/Events.h | 12 -- LUFA/Drivers/USB/HighLevel/StdDescriptors.c | 44 ----- LUFA/Drivers/USB/HighLevel/StdDescriptors.h | 27 --- LUFA/Drivers/USB/LowLevel/DevChapter9.c | 9 +- LUFA/Drivers/USB/LowLevel/Device.h | 36 ++-- LUFA/Drivers/USB/LowLevel/LowLevel.c | 2 +- LUFA/Drivers/USB/USB.h | 5 +- LUFA/MigrationInformation.txt | 5 + LUFA/makefile | 14 +- Projects/Magstripe/Descriptors.c | 2 +- Projects/Magstripe/Descriptors.h | 4 +- Projects/Magstripe/Magstripe.h | 2 - Projects/Magstripe/makefile | 3 +- 80 files changed, 546 insertions(+), 646 deletions(-) delete mode 100644 LUFA/Drivers/USB/Class/ConfigDescriptor.c delete mode 100644 LUFA/Drivers/USB/Class/ConfigDescriptor.h create mode 100644 LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c create mode 100644 LUFA/Drivers/USB/HighLevel/ConfigDescriptor.h delete mode 100644 LUFA/Drivers/USB/HighLevel/StdDescriptors.c diff --git a/Bootloaders/CDC/Descriptors.c b/Bootloaders/CDC/Descriptors.c index 590b04130..0e2b3c79e 100644 --- a/Bootloaders/CDC/Descriptors.c +++ b/Bootloaders/CDC/Descriptors.c @@ -209,7 +209,7 @@ USB_Descriptor_String_t ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Bootloaders/CDC/Descriptors.h b/Bootloaders/CDC/Descriptors.h index 8bd6bdf85..d913f45c0 100644 --- a/Bootloaders/CDC/Descriptors.h +++ b/Bootloaders/CDC/Descriptors.h @@ -89,7 +89,7 @@ } USB_Descriptor_Configuration_t; /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Bootloaders/CDC/makefile b/Bootloaders/CDC/makefile index 3caec538d..bc8e2ca1a 100644 --- a/Bootloaders/CDC/makefile +++ b/Bootloaders/CDC/makefile @@ -113,6 +113,7 @@ LUFA_PATH = ../.. # List C source files here. (C dependencies are automatically generated.) SRC = $(TARGET).c \ Descriptors.c \ + $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c \ @@ -120,10 +121,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Bootloaders/DFU/Descriptors.c b/Bootloaders/DFU/Descriptors.c index cff3cd523..d8b734b12 100644 --- a/Bootloaders/DFU/Descriptors.c +++ b/Bootloaders/DFU/Descriptors.c @@ -143,7 +143,7 @@ USB_Descriptor_String_t ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Bootloaders/DFU/Descriptors.h b/Bootloaders/DFU/Descriptors.h index 527fc50fd..570bb6e08 100644 --- a/Bootloaders/DFU/Descriptors.h +++ b/Bootloaders/DFU/Descriptors.h @@ -124,7 +124,7 @@ } USB_Descriptor_Configuration_t; /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Bootloaders/DFU/makefile b/Bootloaders/DFU/makefile index 94525c10b..4e51e299c 100644 --- a/Bootloaders/DFU/makefile +++ b/Bootloaders/DFU/makefile @@ -113,6 +113,7 @@ LUFA_PATH = ../.. # List C source files here. (C dependencies are automatically generated.) SRC = $(TARGET).c \ Descriptors.c \ + $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c \ @@ -120,10 +121,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Bootloaders/TeensyHID/Descriptors.c b/Bootloaders/TeensyHID/Descriptors.c index 62e2d2111..99db8cac5 100644 --- a/Bootloaders/TeensyHID/Descriptors.c +++ b/Bootloaders/TeensyHID/Descriptors.c @@ -172,7 +172,7 @@ USB_Descriptor_String_t ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Bootloaders/TeensyHID/Descriptors.h b/Bootloaders/TeensyHID/Descriptors.h index 2b84734ca..11c6f0f46 100644 --- a/Bootloaders/TeensyHID/Descriptors.h +++ b/Bootloaders/TeensyHID/Descriptors.h @@ -85,7 +85,7 @@ #define DTYPE_Report 0x22 /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Bootloaders/TeensyHID/makefile b/Bootloaders/TeensyHID/makefile index d022c9315..de929edfb 100644 --- a/Bootloaders/TeensyHID/makefile +++ b/Bootloaders/TeensyHID/makefile @@ -113,6 +113,7 @@ LUFA_PATH = ../.. # List C source files here. (C dependencies are automatically generated.) SRC = $(TARGET).c \ Descriptors.c \ + $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c \ @@ -120,10 +121,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Device/AudioInput/AudioInput.h b/Demos/Device/AudioInput/AudioInput.h index 6358c24a0..a394492f0 100644 --- a/Demos/Device/AudioInput/AudioInput.h +++ b/Demos/Device/AudioInput/AudioInput.h @@ -30,11 +30,11 @@ /** \file * - * Header file for AudioOutput.c. + * Header file for AudioInput.c. */ -#ifndef _AUDIO_OUTPUT_H_ -#define _AUDIO_OUTPUT_H_ +#ifndef _AUDIO_INPUT_H_ +#define _AUDIO_INPUT_H_ /* Includes: */ #include diff --git a/Demos/Device/AudioInput/Descriptors.c b/Demos/Device/AudioInput/Descriptors.c index 5be5061eb..b8de373d6 100644 --- a/Demos/Device/AudioInput/Descriptors.c +++ b/Demos/Device/AudioInput/Descriptors.c @@ -271,7 +271,7 @@ USB_Descriptor_String_t PROGMEM ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Demos/Device/AudioInput/Descriptors.h b/Demos/Device/AudioInput/Descriptors.h index 5c5d9a686..c2b4b05e7 100644 --- a/Demos/Device/AudioInput/Descriptors.h +++ b/Demos/Device/AudioInput/Descriptors.h @@ -316,7 +316,7 @@ } USB_Descriptor_Configuration_t; /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Demos/Device/AudioInput/makefile b/Demos/Device/AudioInput/makefile index 7c8b7ab5a..c70e98e04 100644 --- a/Demos/Device/AudioInput/makefile +++ b/Demos/Device/AudioInput/makefile @@ -133,10 +133,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Device/AudioOutput/Descriptors.h b/Demos/Device/AudioOutput/Descriptors.h index 1964b742c..e1145717e 100644 --- a/Demos/Device/AudioOutput/Descriptors.h +++ b/Demos/Device/AudioOutput/Descriptors.h @@ -316,7 +316,7 @@ } USB_Descriptor_Configuration_t; /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Demos/Device/AudioOutput/makefile b/Demos/Device/AudioOutput/makefile index fc200be4a..28f038f49 100644 --- a/Demos/Device/AudioOutput/makefile +++ b/Demos/Device/AudioOutput/makefile @@ -133,10 +133,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Device/CDC/Descriptors.c b/Demos/Device/CDC/Descriptors.c index 2ec482db1..03e688277 100644 --- a/Demos/Device/CDC/Descriptors.c +++ b/Demos/Device/CDC/Descriptors.c @@ -220,7 +220,7 @@ USB_Descriptor_String_t PROGMEM ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Demos/Device/CDC/Descriptors.h b/Demos/Device/CDC/Descriptors.h index bec5e40d4..41b44300a 100644 --- a/Demos/Device/CDC/Descriptors.h +++ b/Demos/Device/CDC/Descriptors.h @@ -92,7 +92,7 @@ } USB_Descriptor_Configuration_t; /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Demos/Device/CDC/makefile b/Demos/Device/CDC/makefile index 5755dda1e..bc22be5c0 100644 --- a/Demos/Device/CDC/makefile +++ b/Demos/Device/CDC/makefile @@ -133,10 +133,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Device/DualCDC/Descriptors.c b/Demos/Device/DualCDC/Descriptors.c index d9689f76a..64aed7d5f 100644 --- a/Demos/Device/DualCDC/Descriptors.c +++ b/Demos/Device/DualCDC/Descriptors.c @@ -342,7 +342,7 @@ USB_Descriptor_String_t PROGMEM ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Demos/Device/DualCDC/Descriptors.h b/Demos/Device/DualCDC/Descriptors.h index 7bbe52fe3..2c2311b9c 100644 --- a/Demos/Device/DualCDC/Descriptors.h +++ b/Demos/Device/DualCDC/Descriptors.h @@ -112,7 +112,7 @@ } USB_Descriptor_Configuration_t; /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Demos/Device/DualCDC/makefile b/Demos/Device/DualCDC/makefile index 75099c533..06d0e184b 100644 --- a/Demos/Device/DualCDC/makefile +++ b/Demos/Device/DualCDC/makefile @@ -133,10 +133,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Device/GenericHID/Descriptors.c b/Demos/Device/GenericHID/Descriptors.c index 0eed6e9f3..ca1a110e7 100644 --- a/Demos/Device/GenericHID/Descriptors.c +++ b/Demos/Device/GenericHID/Descriptors.c @@ -199,7 +199,7 @@ USB_Descriptor_String_t PROGMEM ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Demos/Device/GenericHID/Descriptors.h b/Demos/Device/GenericHID/Descriptors.h index 590cea6af..023687032 100644 --- a/Demos/Device/GenericHID/Descriptors.h +++ b/Demos/Device/GenericHID/Descriptors.h @@ -94,7 +94,7 @@ #define DTYPE_Report 0x22 /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Demos/Device/GenericHID/makefile b/Demos/Device/GenericHID/makefile index c70c6a123..9c6c891cd 100644 --- a/Demos/Device/GenericHID/makefile +++ b/Demos/Device/GenericHID/makefile @@ -133,10 +133,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Device/Joystick/Descriptors.c b/Demos/Device/Joystick/Descriptors.c index 7ab6d46d5..bd7be658a 100644 --- a/Demos/Device/Joystick/Descriptors.c +++ b/Demos/Device/Joystick/Descriptors.c @@ -199,7 +199,7 @@ USB_Descriptor_String_t PROGMEM ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Demos/Device/Joystick/Descriptors.h b/Demos/Device/Joystick/Descriptors.h index 3d569978c..6121295fa 100644 --- a/Demos/Device/Joystick/Descriptors.h +++ b/Demos/Device/Joystick/Descriptors.h @@ -87,7 +87,7 @@ #define DTYPE_Report 0x22 /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Demos/Device/Joystick/makefile b/Demos/Device/Joystick/makefile index 7550ed33b..aaf69e80b 100644 --- a/Demos/Device/Joystick/makefile +++ b/Demos/Device/Joystick/makefile @@ -133,10 +133,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Device/Keyboard/Descriptors.c b/Demos/Device/Keyboard/Descriptors.c index 428a6a1b5..ddd19fc8c 100644 --- a/Demos/Device/Keyboard/Descriptors.c +++ b/Demos/Device/Keyboard/Descriptors.c @@ -216,7 +216,7 @@ USB_Descriptor_String_t PROGMEM ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Demos/Device/Keyboard/Descriptors.h b/Demos/Device/Keyboard/Descriptors.h index 998379725..92eb7b884 100644 --- a/Demos/Device/Keyboard/Descriptors.h +++ b/Demos/Device/Keyboard/Descriptors.h @@ -92,7 +92,7 @@ #define DTYPE_Report 0x22 /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Demos/Device/Keyboard/makefile b/Demos/Device/Keyboard/makefile index 3c597bf49..88e4de0e6 100644 --- a/Demos/Device/Keyboard/makefile +++ b/Demos/Device/Keyboard/makefile @@ -133,10 +133,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Device/KeyboardMouse/Descriptors.c b/Demos/Device/KeyboardMouse/Descriptors.c index 6a9d75a7f..145708db9 100644 --- a/Demos/Device/KeyboardMouse/Descriptors.c +++ b/Demos/Device/KeyboardMouse/Descriptors.c @@ -286,7 +286,7 @@ USB_Descriptor_String_t PROGMEM ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Demos/Device/KeyboardMouse/Descriptors.h b/Demos/Device/KeyboardMouse/Descriptors.h index 5540f4af8..43c345a21 100644 --- a/Demos/Device/KeyboardMouse/Descriptors.h +++ b/Demos/Device/KeyboardMouse/Descriptors.h @@ -98,7 +98,7 @@ #define DTYPE_Report 0x22 /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Demos/Device/KeyboardMouse/makefile b/Demos/Device/KeyboardMouse/makefile index b26bdbed6..c6b34d96e 100644 --- a/Demos/Device/KeyboardMouse/makefile +++ b/Demos/Device/KeyboardMouse/makefile @@ -133,10 +133,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Device/MIDI/Descriptors.c b/Demos/Device/MIDI/Descriptors.c index d4254110c..2007858dd 100644 --- a/Demos/Device/MIDI/Descriptors.c +++ b/Demos/Device/MIDI/Descriptors.c @@ -282,7 +282,7 @@ USB_Descriptor_String_t PROGMEM ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Demos/Device/MIDI/Descriptors.h b/Demos/Device/MIDI/Descriptors.h index 8a93b87a6..616acab86 100644 --- a/Demos/Device/MIDI/Descriptors.h +++ b/Demos/Device/MIDI/Descriptors.h @@ -183,7 +183,7 @@ } USB_Descriptor_Configuration_t; /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Demos/Device/MIDI/makefile b/Demos/Device/MIDI/makefile index 89bfc6cc0..18fc3b154 100644 --- a/Demos/Device/MIDI/makefile +++ b/Demos/Device/MIDI/makefile @@ -133,10 +133,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Device/MassStorage/Descriptors.c b/Demos/Device/MassStorage/Descriptors.c index 2351a0be2..6c02a6c55 100644 --- a/Demos/Device/MassStorage/Descriptors.c +++ b/Demos/Device/MassStorage/Descriptors.c @@ -176,7 +176,7 @@ USB_Descriptor_String_t PROGMEM SerialNumberString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Demos/Device/MassStorage/Descriptors.h b/Demos/Device/MassStorage/Descriptors.h index a64d72e92..0fa147b75 100644 --- a/Demos/Device/MassStorage/Descriptors.h +++ b/Demos/Device/MassStorage/Descriptors.h @@ -65,7 +65,7 @@ } USB_Descriptor_Configuration_t; /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Demos/Device/MassStorage/makefile b/Demos/Device/MassStorage/makefile index 95c91f61d..78abcfd07 100644 --- a/Demos/Device/MassStorage/makefile +++ b/Demos/Device/MassStorage/makefile @@ -135,10 +135,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Device/Mouse/Descriptors.c b/Demos/Device/Mouse/Descriptors.c index 0a6cbde36..8ac457094 100644 --- a/Demos/Device/Mouse/Descriptors.c +++ b/Demos/Device/Mouse/Descriptors.c @@ -199,7 +199,7 @@ USB_Descriptor_String_t PROGMEM ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Demos/Device/Mouse/Descriptors.h b/Demos/Device/Mouse/Descriptors.h index 6385145c1..883ef31e8 100644 --- a/Demos/Device/Mouse/Descriptors.h +++ b/Demos/Device/Mouse/Descriptors.h @@ -87,7 +87,7 @@ #define DTYPE_Report 0x22 /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Demos/Device/Mouse/makefile b/Demos/Device/Mouse/makefile index d5ad21145..632bf91ae 100644 --- a/Demos/Device/Mouse/makefile +++ b/Demos/Device/Mouse/makefile @@ -133,10 +133,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ # List C++ source files here. (C dependencies are automatically generated.) diff --git a/Demos/Device/RNDISEthernet/Descriptors.c b/Demos/Device/RNDISEthernet/Descriptors.c index dfa4ba16b..1be5bfd26 100644 --- a/Demos/Device/RNDISEthernet/Descriptors.c +++ b/Demos/Device/RNDISEthernet/Descriptors.c @@ -220,7 +220,7 @@ USB_Descriptor_String_t PROGMEM ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Demos/Device/RNDISEthernet/Descriptors.h b/Demos/Device/RNDISEthernet/Descriptors.h index 070c118d6..eb4373552 100644 --- a/Demos/Device/RNDISEthernet/Descriptors.h +++ b/Demos/Device/RNDISEthernet/Descriptors.h @@ -92,7 +92,7 @@ } USB_Descriptor_Configuration_t; /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Demos/Device/RNDISEthernet/makefile b/Demos/Device/RNDISEthernet/makefile index e46b13bf2..15c33efc5 100644 --- a/Demos/Device/RNDISEthernet/makefile +++ b/Demos/Device/RNDISEthernet/makefile @@ -145,10 +145,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Device/USBtoSerial/Descriptors.c b/Demos/Device/USBtoSerial/Descriptors.c index ddb90bb8c..c369d1607 100644 --- a/Demos/Device/USBtoSerial/Descriptors.c +++ b/Demos/Device/USBtoSerial/Descriptors.c @@ -220,7 +220,7 @@ USB_Descriptor_String_t PROGMEM ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Demos/Device/USBtoSerial/Descriptors.h b/Demos/Device/USBtoSerial/Descriptors.h index bec5e40d4..41b44300a 100644 --- a/Demos/Device/USBtoSerial/Descriptors.h +++ b/Demos/Device/USBtoSerial/Descriptors.h @@ -92,7 +92,7 @@ } USB_Descriptor_Configuration_t; /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Demos/Device/USBtoSerial/makefile b/Demos/Device/USBtoSerial/makefile index 8808abe2f..7da8b9740 100644 --- a/Demos/Device/USBtoSerial/makefile +++ b/Demos/Device/USBtoSerial/makefile @@ -134,10 +134,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Host/CDCHost/makefile b/Demos/Host/CDCHost/makefile index d9c58a377..f1255aad2 100644 --- a/Demos/Host/CDCHost/makefile +++ b/Demos/Host/CDCHost/makefile @@ -135,10 +135,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Host/GenericHIDHost/makefile b/Demos/Host/GenericHIDHost/makefile index 617ab7e5b..b17ae1641 100644 --- a/Demos/Host/GenericHIDHost/makefile +++ b/Demos/Host/GenericHIDHost/makefile @@ -135,10 +135,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Host/KeyboardHost/makefile b/Demos/Host/KeyboardHost/makefile index 9ea163e66..b8cb79c5c 100644 --- a/Demos/Host/KeyboardHost/makefile +++ b/Demos/Host/KeyboardHost/makefile @@ -135,10 +135,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Host/KeyboardHostWithParser/makefile b/Demos/Host/KeyboardHostWithParser/makefile index 43559d8f1..0d09178dd 100644 --- a/Demos/Host/KeyboardHostWithParser/makefile +++ b/Demos/Host/KeyboardHostWithParser/makefile @@ -136,10 +136,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Host/MassStorageHost/makefile b/Demos/Host/MassStorageHost/makefile index 5c1de65ea..d4792ae40 100644 --- a/Demos/Host/MassStorageHost/makefile +++ b/Demos/Host/MassStorageHost/makefile @@ -136,10 +136,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Host/MouseHost/makefile b/Demos/Host/MouseHost/makefile index 4987c9dde..b7bad9400 100644 --- a/Demos/Host/MouseHost/makefile +++ b/Demos/Host/MouseHost/makefile @@ -135,10 +135,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Host/MouseHostWithParser/makefile b/Demos/Host/MouseHostWithParser/makefile index be8f48f7d..a6aeb6dc7 100644 --- a/Demos/Host/MouseHostWithParser/makefile +++ b/Demos/Host/MouseHostWithParser/makefile @@ -136,10 +136,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/Host/StillImageHost/makefile b/Demos/Host/StillImageHost/makefile index 3663d4804..bcb036f25 100644 --- a/Demos/Host/StillImageHost/makefile +++ b/Demos/Host/StillImageHost/makefile @@ -135,10 +135,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/Demos/OTG/TestApp/Descriptors.c b/Demos/OTG/TestApp/Descriptors.c index 965ffb1bd..f8f53cfd7 100644 --- a/Demos/OTG/TestApp/Descriptors.c +++ b/Demos/OTG/TestApp/Descriptors.c @@ -144,7 +144,7 @@ USB_Descriptor_String_t PROGMEM ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Demos/OTG/TestApp/Descriptors.h b/Demos/OTG/TestApp/Descriptors.h index 88c0a5e7e..d2e04d218 100644 --- a/Demos/OTG/TestApp/Descriptors.h +++ b/Demos/OTG/TestApp/Descriptors.h @@ -53,7 +53,7 @@ } USB_Descriptor_Configuration_t; /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Demos/OTG/TestApp/TestEvents.c b/Demos/OTG/TestApp/TestEvents.c index a444cc6a6..b2f174015 100644 --- a/Demos/OTG/TestApp/TestEvents.c +++ b/Demos/OTG/TestApp/TestEvents.c @@ -179,18 +179,6 @@ void EVENT_USB_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t Su printf_P(PSTR(" -- In State %d\r\n"), USB_HostState); } -/** - * Event handler for the USB_DeviceError event. When fired, the event is logged to the USART and the program - * execution aborted. - */ -void EVENT_USB_DeviceError(const uint8_t ErrorCode) -{ - puts_P(PSTR(EVENT_PREFIX ESC_BG_RED "Device Mode Error\r\n")); - printf_P(PSTR(" -- Error Code %d\r\n"), ErrorCode); - - Abort_Program(); -} - /** Event handler for the USB_UnhandledControlPacket event. When fired, the event is logged to the USART. */ void EVENT_USB_UnhandledControlPacket(void) { diff --git a/Demos/OTG/TestApp/TestEvents.h b/Demos/OTG/TestApp/TestEvents.h index 656c070ea..3642428f5 100644 --- a/Demos/OTG/TestApp/TestEvents.h +++ b/Demos/OTG/TestApp/TestEvents.h @@ -71,7 +71,6 @@ void EVENT_USB_ConfigurationChanged(void); void EVENT_USB_Suspend(void); void EVENT_USB_WakeUp(void); - void EVENT_USB_Reset(void); - void EVENT_USB_DeviceError(const uint8_t ErrorCode); + void EVENT_USB_Reset(void); #endif diff --git a/Demos/OTG/TestApp/makefile b/Demos/OTG/TestApp/makefile index 3c34d5563..dd6d8f43f 100644 --- a/Demos/OTG/TestApp/makefile +++ b/Demos/OTG/TestApp/makefile @@ -138,10 +138,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ diff --git a/LUFA.pnproj b/LUFA.pnproj index 4e78e5be0..2409a3e4f 100644 --- a/LUFA.pnproj +++ b/LUFA.pnproj @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/LUFA/ChangeLog.txt b/LUFA/ChangeLog.txt index 6ccbb7fae..4a7f34eaa 100644 --- a/LUFA/ChangeLog.txt +++ b/LUFA/ChangeLog.txt @@ -26,6 +26,8 @@ * - Removed DESCRIPTOR_COMPARATOR() macro - comparators should now use regular function definitions to clarify user code * - USB_IsConnected is now cleared before the USB_Disconnect() event is fired in response to VBUS being removed * - Fixed incorrect PID value being used in the USBtoSerial project (thanks to Phill) + * - Deleted StdDescriptors.c, renamed USB_GetDescriptor() to CALLBACK_USB_GetDescriptor, moved ConfigDescriptor.c/.h from the + * LUFA/Drivers/USB/Class/ directory to LUFA/Drivers/USB/HighLevel/ in preperation for the new USB class APIs * * * \section Sec_ChangeLog090510 Version 090510 diff --git a/LUFA/Drivers/USB/Class/ConfigDescriptor.c b/LUFA/Drivers/USB/Class/ConfigDescriptor.c deleted file mode 100644 index bbe258b3a..000000000 --- a/LUFA/Drivers/USB/Class/ConfigDescriptor.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2009. - - dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com -*/ - -/* - Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, and distribute this software - and its documentation for any purpose and without fee is hereby - granted, 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. -*/ - -#include "ConfigDescriptor.h" - -#if defined(USB_CAN_BE_HOST) -uint8_t USB_GetDeviceConfigDescriptor(uint16_t* const ConfigSizePtr, void* BufferPtr) -{ - uint8_t ErrorCode; - - USB_ControlRequest = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE), - .bRequest = REQ_GetDescriptor, - .wValue = (DTYPE_Configuration << 8), - .wIndex = 0, - .wLength = sizeof(USB_Descriptor_Configuration_Header_t), - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - if (BufferPtr == NULL) - { - uint8_t ConfigHeader[sizeof(USB_Descriptor_Configuration_Header_t)]; - - ErrorCode = USB_Host_SendControlRequest(ConfigHeader); - - #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) - *ConfigSizePtr = DESCRIPTOR_CAST(ConfigHeader, USB_Descriptor_Configuration_Header_t).TotalConfigurationSize; - #else - *ConfigSizePtr = DESCRIPTOR_CAST(ConfigHeader, USB_Descriptor_Configuration_Header_t).wTotalLength; - #endif - } - else - { - USB_ControlRequest.wLength = *ConfigSizePtr; - - ErrorCode = USB_Host_SendControlRequest(BufferPtr); - } - - return ErrorCode; -} -#endif - -void USB_GetNextDescriptorOfType(uint16_t* const BytesRem, - uint8_t** const CurrConfigLoc, - const uint8_t Type) -{ - while (*BytesRem) - { - USB_GetNextDescriptor(BytesRem, CurrConfigLoc); - - if (DESCRIPTOR_TYPE(*CurrConfigLoc) == Type) - return; - } -} - -void USB_GetNextDescriptorOfTypeBefore(uint16_t* const BytesRem, - uint8_t** const CurrConfigLoc, - const uint8_t Type, - const uint8_t BeforeType) -{ - while (*BytesRem) - { - USB_GetNextDescriptor(BytesRem, CurrConfigLoc); - - if (DESCRIPTOR_TYPE(*CurrConfigLoc) == Type) - { - return; - } - else if (DESCRIPTOR_TYPE(*CurrConfigLoc) == BeforeType) - { - *BytesRem = 0; - return; - } - } -} - -void USB_GetNextDescriptorOfTypeAfter(uint16_t* const BytesRem, - uint8_t** const CurrConfigLoc, - const uint8_t Type, - const uint8_t AfterType) -{ - USB_GetNextDescriptorOfType(BytesRem, CurrConfigLoc, AfterType); - - if (*BytesRem) - USB_GetNextDescriptorOfType(BytesRem, CurrConfigLoc, Type); -} - -uint8_t USB_GetNextDescriptorComp(uint16_t* BytesRem, uint8_t** CurrConfigLoc, ConfigComparatorPtr_t ComparatorRoutine) -{ - uint8_t ErrorCode; - - while (*BytesRem) - { - uint8_t* PrevDescLoc = *CurrConfigLoc; - uint16_t PrevBytesRem = *BytesRem; - - USB_GetNextDescriptor(BytesRem, CurrConfigLoc); - - if ((ErrorCode = ComparatorRoutine(*CurrConfigLoc)) != DESCRIPTOR_SEARCH_NotFound) - { - if (ErrorCode == DESCRIPTOR_SEARCH_Fail) - { - *CurrConfigLoc = PrevDescLoc; - *BytesRem = PrevBytesRem; - } - - return ErrorCode; - } - } - - return DESCRIPTOR_SEARCH_COMP_EndOfDescriptor; -} diff --git a/LUFA/Drivers/USB/Class/ConfigDescriptor.h b/LUFA/Drivers/USB/Class/ConfigDescriptor.h deleted file mode 100644 index 5c2b6e2de..000000000 --- a/LUFA/Drivers/USB/Class/ConfigDescriptor.h +++ /dev/null @@ -1,271 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2009. - - dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com -*/ - -/* - Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, and distribute this software - and its documentation for any purpose and without fee is hereby - granted, 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 - * - * Configuration descriptor parser API. This section of the library gives a friendly API which can be used in - * host applications to easily parse an attached device's configuration descriptor so that endpoint, interface - * and other descriptor data can be extracted and used as needed. - */ - -/** \ingroup Group_Descriptors - * @defgroup Group_ConfigDescriptorParser Configuration Descriptor Parser - * - * Functions, macros, variables, enums and types related to the parsing of Configuration Descriptors. - * - * @{ - */ - -#ifndef __CONFIGDESCRIPTOR_H__ -#define __CONFIGDESCRIPTOR_H__ - - /* Includes: */ - #include - - #include "../../../Common/Common.h" - #include "../HighLevel/USBMode.h" - #include "../LowLevel/HostChapter9.h" - #include "../HighLevel/StdDescriptors.h" - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - /** Mask for determining the type of an endpoint from an endpoint descriptor. This should then be compared - * with the EP_TYPE_* masks to determine the exact type of the endpoint. - */ - #define EP_TYPE_MASK 0x03 - - /** Casts a pointer to a descriptor inside the configuration descriptor into a pointer to the given - * descriptor type. - * - * Usage Example: - * \code - * uint8_t* CurrDescriptor = &ConfigDescriptor[0]; // Pointing to the configuration header - * USB_Descriptor_Configuration_Header_t* ConfigHeaderPtr = DESCRIPTOR_PCAST(CurrDescriptor, - * USB_Descriptor_Configuration_Header_t); - * - * // Can now access elements of the configuration header struct using the -> indirection operator - * \endcode - */ - #define DESCRIPTOR_PCAST(DescriptorPtr, Type) ((Type*)DescriptorPtr) - - /** Casts a pointer to a descriptor inside the configuration descriptor into the given descriptor - * type (as an actual struct instance rather than a pointer to a struct). - * - * Usage Example: - * \code - * uint8_t* CurrDescriptor = &ConfigDescriptor[0]; // Pointing to the configuration header - * USB_Descriptor_Configuration_Header_t ConfigHeader = DESCRIPTOR_CAST(CurrDescriptor, - * USB_Descriptor_Configuration_Header_t); - * - * // Can now access elements of the configuration header struct using the . operator - * \endcode - */ - #define DESCRIPTOR_CAST(DescriptorPtr, Type) (*DESCRIPTOR_PCAST(DescriptorPtr, Type)) - - /** Returns the descriptor's type, expressed as the 8-bit type value in the header of the descriptor. - * This value's meaning depends on the descriptor's placement in the descriptor, but standard type - * values can be accessed in the \ref USB_DescriptorTypes_t enum. - */ - #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__) - #define DESCRIPTOR_TYPE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).Type - #else - #define DESCRIPTOR_TYPE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).bDescriptorType - #endif - - /** Returns the descriptor's size, expressed as the 8-bit value indicating the number of bytes. */ - #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__) - #define DESCRIPTOR_SIZE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).Size - #else - #define DESCRIPTOR_SIZE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).bLength - #endif - - /* Type Defines: */ - /** Type define for a Configuration Descriptor comparator function (function taking a pointer to an array - * of type void, returning a uint8_t value). - * - * \see \ref USB_GetNextDescriptorComp function for more details - */ - typedef uint8_t (* const ConfigComparatorPtr_t)(void* const); - - /* Function Prototypes: */ - /** Searches for the next descriptor in the given configuration descriptor using a premade comparator - * function. The routine updates the position and remaining configuration descriptor bytes values - * automatically. If a comparator routine fails a search, the descriptor pointer is retreated back - * so that the next descriptor search invocation will start from the descriptor which first caused the - * original search to fail. This behaviour allows for one comparator to be used immediately after another - * has failed, starting the second search from the descriptor which failed the first. - * - * Comparator functions should be standard functions which accept a pointer to the header of the current - * descriptor inside the configuration descriptor which is being compared, and should return a value from - * the \ref DSearch_Return_ErrorCodes_t enum as a uint8_t value. - * - * \note This function is available in USB Host mode only. - * - * \param BytesRem Pointer to an int storing the remaining bytes in the configuration descriptor - * \param CurrConfigLoc Pointer to the current position in the configuration descriptor - * \param ComparatorRoutine Name of the comparator search function to use on the configuration descriptor - * - * \return Value of one of the members of the \ref DSearch_Comp_Return_ErrorCodes_t enum - * - * Usage Example: - * \code - * uint8_t EndpointSearcher(void* CurrentDescriptor); // Comparator Prototype - * - * uint8_t EndpointSearcher(void* CurrentDescriptor) - * { - * if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint) - * return DESCRIPTOR_SEARCH_Found; - * else - * return DESCRIPTOR_SEARCH_NotFound; - * } - * - * //... - * // After retrieving configuration descriptor: - * if (USB_Host_GetNextDescriptorComp(&BytesRemaining, &ConfigDescriptorData, EndpointSearcher) == - * Descriptor_Search_Comp_Found) - * { - * // Do something with the endpoint descriptor - * } - * \endcode - */ - uint8_t USB_GetNextDescriptorComp(uint16_t* BytesRem, uint8_t** CurrConfigLoc, ConfigComparatorPtr_t ComparatorRoutine); - - /* Enums: */ - /** Enum for return values of a descriptor comparator function. */ - enum DSearch_Return_ErrorCodes_t - { - DESCRIPTOR_SEARCH_Found = 0, /**< Current descriptor matches comparator criteria. */ - DESCRIPTOR_SEARCH_Fail = 1, /**< No further descriptor could possibly match criteria, fail the search. */ - DESCRIPTOR_SEARCH_NotFound = 2, /**< Current descriptor does not match comparator criteria. */ - }; - - /** Enum for return values of \ref USB_GetNextDescriptorComp(). */ - enum DSearch_Comp_Return_ErrorCodes_t - { - DESCRIPTOR_SEARCH_COMP_Found = 0, /**< Configuration descriptor now points to descriptor which matches - * search criteria of the given comparator function. */ - DESCRIPTOR_SEARCH_COMP_Fail = 1, /**< Comparator function returned Descriptor_Search_Fail. */ - DESCRIPTOR_SEARCH_COMP_EndOfDescriptor = 2, /**< End of configuration descriptor reached before match found. */ - }; - - /* Function Prototypes: */ - /** Retrieves the configuration descriptor data or size from an attached device via a standard request. - * - * \param ConfigSizePtr Pointer to a uint16_t for either storing or retrieving the configuration - * descriptor size - * - * \param BufferPtr Pointer to the buffer for storing the configuration descriptor data. If this is - * NULL, the size of the configuration descriptor will be retrieved instead and - * placed in the variable pointed to by ConfigSizePtr. If this is non-NULL, the number - * of bytes indicated by ConfigSizePtr of the configuration descriptor will be loaded - * into the buffer - */ - uint8_t USB_GetDeviceConfigDescriptor(uint16_t* const ConfigSizePtr, void* BufferPtr) - ATTR_NON_NULL_PTR_ARG(1); - - /** Skips to the next sub-descriptor inside the configuration descriptor of the specified type value. - * The bytes remaining value is automatically decremented. - * - * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor - * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor - * \param Type Descriptor type value to search for - */ - void USB_GetNextDescriptorOfType(uint16_t* const BytesRem, - uint8_t** const CurrConfigLoc, - const uint8_t Type) - ATTR_NON_NULL_PTR_ARG(1, 2); - - /** Skips to the next sub-descriptor inside the configuration descriptor of the specified type value, - * which must come before a descriptor of the second given type value. If the BeforeType type - * descriptor is reached first, the number of bytes remaining to process is set to zero and the - * function exits. The bytes remaining value is automatically decremented. - * - * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor - * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor - * \param Type Descriptor type value to search for - * \param BeforeType Descriptor type value which must not be reached before the given Type descriptor - */ - void USB_GetNextDescriptorOfTypeBefore(uint16_t* const BytesRem, - uint8_t** const CurrConfigLoc, - const uint8_t Type, - const uint8_t BeforeType) - ATTR_NON_NULL_PTR_ARG(1, 2); - - /** Skips to the next sub-descriptor inside the configuration descriptor of the specified type value, - * which must come after a descriptor of the second given type value. The bytes remaining value is - * automatically decremented. - * - * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor - * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor - * \param Type Descriptor type value to search for - * \param AfterType Descriptor type value which must be reached before the given Type descriptor - */ - void USB_GetNextDescriptorOfTypeAfter(uint16_t* const BytesRem, - uint8_t** const CurrConfigLoc, - const uint8_t Type, - const uint8_t AfterType) - ATTR_NON_NULL_PTR_ARG(1, 2); - - /* Inline Functions: */ - /** Skips over the current sub-descriptor inside the configuration descriptor, so that the pointer then - points to the next sub-descriptor. The bytes remaining value is automatically decremented. - * - * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor - * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor - */ - static inline void USB_GetNextDescriptor(uint16_t* const BytesRem, - uint8_t** const CurrConfigLoc) - ATTR_NON_NULL_PTR_ARG(1, 2); - static inline void USB_GetNextDescriptor(uint16_t* const BytesRem, - uint8_t** const CurrConfigLoc) - { - #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) - uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).Size; - #else - uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).bLength; - #endif - - *CurrConfigLoc += CurrDescriptorSize; - *BytesRem -= CurrDescriptorSize; - } - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ diff --git a/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c b/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c new file mode 100644 index 000000000..bbe258b3a --- /dev/null +++ b/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c @@ -0,0 +1,141 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2009. + + dean [at] fourwalledcubicle [dot] com + www.fourwalledcubicle.com +*/ + +/* + Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, and distribute this software + and its documentation for any purpose and without fee is hereby + granted, 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. +*/ + +#include "ConfigDescriptor.h" + +#if defined(USB_CAN_BE_HOST) +uint8_t USB_GetDeviceConfigDescriptor(uint16_t* const ConfigSizePtr, void* BufferPtr) +{ + uint8_t ErrorCode; + + USB_ControlRequest = (USB_Request_Header_t) + { + .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE), + .bRequest = REQ_GetDescriptor, + .wValue = (DTYPE_Configuration << 8), + .wIndex = 0, + .wLength = sizeof(USB_Descriptor_Configuration_Header_t), + }; + + Pipe_SelectPipe(PIPE_CONTROLPIPE); + + if (BufferPtr == NULL) + { + uint8_t ConfigHeader[sizeof(USB_Descriptor_Configuration_Header_t)]; + + ErrorCode = USB_Host_SendControlRequest(ConfigHeader); + + #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) + *ConfigSizePtr = DESCRIPTOR_CAST(ConfigHeader, USB_Descriptor_Configuration_Header_t).TotalConfigurationSize; + #else + *ConfigSizePtr = DESCRIPTOR_CAST(ConfigHeader, USB_Descriptor_Configuration_Header_t).wTotalLength; + #endif + } + else + { + USB_ControlRequest.wLength = *ConfigSizePtr; + + ErrorCode = USB_Host_SendControlRequest(BufferPtr); + } + + return ErrorCode; +} +#endif + +void USB_GetNextDescriptorOfType(uint16_t* const BytesRem, + uint8_t** const CurrConfigLoc, + const uint8_t Type) +{ + while (*BytesRem) + { + USB_GetNextDescriptor(BytesRem, CurrConfigLoc); + + if (DESCRIPTOR_TYPE(*CurrConfigLoc) == Type) + return; + } +} + +void USB_GetNextDescriptorOfTypeBefore(uint16_t* const BytesRem, + uint8_t** const CurrConfigLoc, + const uint8_t Type, + const uint8_t BeforeType) +{ + while (*BytesRem) + { + USB_GetNextDescriptor(BytesRem, CurrConfigLoc); + + if (DESCRIPTOR_TYPE(*CurrConfigLoc) == Type) + { + return; + } + else if (DESCRIPTOR_TYPE(*CurrConfigLoc) == BeforeType) + { + *BytesRem = 0; + return; + } + } +} + +void USB_GetNextDescriptorOfTypeAfter(uint16_t* const BytesRem, + uint8_t** const CurrConfigLoc, + const uint8_t Type, + const uint8_t AfterType) +{ + USB_GetNextDescriptorOfType(BytesRem, CurrConfigLoc, AfterType); + + if (*BytesRem) + USB_GetNextDescriptorOfType(BytesRem, CurrConfigLoc, Type); +} + +uint8_t USB_GetNextDescriptorComp(uint16_t* BytesRem, uint8_t** CurrConfigLoc, ConfigComparatorPtr_t ComparatorRoutine) +{ + uint8_t ErrorCode; + + while (*BytesRem) + { + uint8_t* PrevDescLoc = *CurrConfigLoc; + uint16_t PrevBytesRem = *BytesRem; + + USB_GetNextDescriptor(BytesRem, CurrConfigLoc); + + if ((ErrorCode = ComparatorRoutine(*CurrConfigLoc)) != DESCRIPTOR_SEARCH_NotFound) + { + if (ErrorCode == DESCRIPTOR_SEARCH_Fail) + { + *CurrConfigLoc = PrevDescLoc; + *BytesRem = PrevBytesRem; + } + + return ErrorCode; + } + } + + return DESCRIPTOR_SEARCH_COMP_EndOfDescriptor; +} diff --git a/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.h b/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.h new file mode 100644 index 000000000..5c2b6e2de --- /dev/null +++ b/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.h @@ -0,0 +1,271 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2009. + + dean [at] fourwalledcubicle [dot] com + www.fourwalledcubicle.com +*/ + +/* + Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, and distribute this software + and its documentation for any purpose and without fee is hereby + granted, 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 + * + * Configuration descriptor parser API. This section of the library gives a friendly API which can be used in + * host applications to easily parse an attached device's configuration descriptor so that endpoint, interface + * and other descriptor data can be extracted and used as needed. + */ + +/** \ingroup Group_Descriptors + * @defgroup Group_ConfigDescriptorParser Configuration Descriptor Parser + * + * Functions, macros, variables, enums and types related to the parsing of Configuration Descriptors. + * + * @{ + */ + +#ifndef __CONFIGDESCRIPTOR_H__ +#define __CONFIGDESCRIPTOR_H__ + + /* Includes: */ + #include + + #include "../../../Common/Common.h" + #include "../HighLevel/USBMode.h" + #include "../LowLevel/HostChapter9.h" + #include "../HighLevel/StdDescriptors.h" + + /* Enable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + extern "C" { + #endif + + /* Public Interface - May be used in end-application: */ + /* Macros: */ + /** Mask for determining the type of an endpoint from an endpoint descriptor. This should then be compared + * with the EP_TYPE_* masks to determine the exact type of the endpoint. + */ + #define EP_TYPE_MASK 0x03 + + /** Casts a pointer to a descriptor inside the configuration descriptor into a pointer to the given + * descriptor type. + * + * Usage Example: + * \code + * uint8_t* CurrDescriptor = &ConfigDescriptor[0]; // Pointing to the configuration header + * USB_Descriptor_Configuration_Header_t* ConfigHeaderPtr = DESCRIPTOR_PCAST(CurrDescriptor, + * USB_Descriptor_Configuration_Header_t); + * + * // Can now access elements of the configuration header struct using the -> indirection operator + * \endcode + */ + #define DESCRIPTOR_PCAST(DescriptorPtr, Type) ((Type*)DescriptorPtr) + + /** Casts a pointer to a descriptor inside the configuration descriptor into the given descriptor + * type (as an actual struct instance rather than a pointer to a struct). + * + * Usage Example: + * \code + * uint8_t* CurrDescriptor = &ConfigDescriptor[0]; // Pointing to the configuration header + * USB_Descriptor_Configuration_Header_t ConfigHeader = DESCRIPTOR_CAST(CurrDescriptor, + * USB_Descriptor_Configuration_Header_t); + * + * // Can now access elements of the configuration header struct using the . operator + * \endcode + */ + #define DESCRIPTOR_CAST(DescriptorPtr, Type) (*DESCRIPTOR_PCAST(DescriptorPtr, Type)) + + /** Returns the descriptor's type, expressed as the 8-bit type value in the header of the descriptor. + * This value's meaning depends on the descriptor's placement in the descriptor, but standard type + * values can be accessed in the \ref USB_DescriptorTypes_t enum. + */ + #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__) + #define DESCRIPTOR_TYPE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).Type + #else + #define DESCRIPTOR_TYPE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).bDescriptorType + #endif + + /** Returns the descriptor's size, expressed as the 8-bit value indicating the number of bytes. */ + #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__) + #define DESCRIPTOR_SIZE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).Size + #else + #define DESCRIPTOR_SIZE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).bLength + #endif + + /* Type Defines: */ + /** Type define for a Configuration Descriptor comparator function (function taking a pointer to an array + * of type void, returning a uint8_t value). + * + * \see \ref USB_GetNextDescriptorComp function for more details + */ + typedef uint8_t (* const ConfigComparatorPtr_t)(void* const); + + /* Function Prototypes: */ + /** Searches for the next descriptor in the given configuration descriptor using a premade comparator + * function. The routine updates the position and remaining configuration descriptor bytes values + * automatically. If a comparator routine fails a search, the descriptor pointer is retreated back + * so that the next descriptor search invocation will start from the descriptor which first caused the + * original search to fail. This behaviour allows for one comparator to be used immediately after another + * has failed, starting the second search from the descriptor which failed the first. + * + * Comparator functions should be standard functions which accept a pointer to the header of the current + * descriptor inside the configuration descriptor which is being compared, and should return a value from + * the \ref DSearch_Return_ErrorCodes_t enum as a uint8_t value. + * + * \note This function is available in USB Host mode only. + * + * \param BytesRem Pointer to an int storing the remaining bytes in the configuration descriptor + * \param CurrConfigLoc Pointer to the current position in the configuration descriptor + * \param ComparatorRoutine Name of the comparator search function to use on the configuration descriptor + * + * \return Value of one of the members of the \ref DSearch_Comp_Return_ErrorCodes_t enum + * + * Usage Example: + * \code + * uint8_t EndpointSearcher(void* CurrentDescriptor); // Comparator Prototype + * + * uint8_t EndpointSearcher(void* CurrentDescriptor) + * { + * if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint) + * return DESCRIPTOR_SEARCH_Found; + * else + * return DESCRIPTOR_SEARCH_NotFound; + * } + * + * //... + * // After retrieving configuration descriptor: + * if (USB_Host_GetNextDescriptorComp(&BytesRemaining, &ConfigDescriptorData, EndpointSearcher) == + * Descriptor_Search_Comp_Found) + * { + * // Do something with the endpoint descriptor + * } + * \endcode + */ + uint8_t USB_GetNextDescriptorComp(uint16_t* BytesRem, uint8_t** CurrConfigLoc, ConfigComparatorPtr_t ComparatorRoutine); + + /* Enums: */ + /** Enum for return values of a descriptor comparator function. */ + enum DSearch_Return_ErrorCodes_t + { + DESCRIPTOR_SEARCH_Found = 0, /**< Current descriptor matches comparator criteria. */ + DESCRIPTOR_SEARCH_Fail = 1, /**< No further descriptor could possibly match criteria, fail the search. */ + DESCRIPTOR_SEARCH_NotFound = 2, /**< Current descriptor does not match comparator criteria. */ + }; + + /** Enum for return values of \ref USB_GetNextDescriptorComp(). */ + enum DSearch_Comp_Return_ErrorCodes_t + { + DESCRIPTOR_SEARCH_COMP_Found = 0, /**< Configuration descriptor now points to descriptor which matches + * search criteria of the given comparator function. */ + DESCRIPTOR_SEARCH_COMP_Fail = 1, /**< Comparator function returned Descriptor_Search_Fail. */ + DESCRIPTOR_SEARCH_COMP_EndOfDescriptor = 2, /**< End of configuration descriptor reached before match found. */ + }; + + /* Function Prototypes: */ + /** Retrieves the configuration descriptor data or size from an attached device via a standard request. + * + * \param ConfigSizePtr Pointer to a uint16_t for either storing or retrieving the configuration + * descriptor size + * + * \param BufferPtr Pointer to the buffer for storing the configuration descriptor data. If this is + * NULL, the size of the configuration descriptor will be retrieved instead and + * placed in the variable pointed to by ConfigSizePtr. If this is non-NULL, the number + * of bytes indicated by ConfigSizePtr of the configuration descriptor will be loaded + * into the buffer + */ + uint8_t USB_GetDeviceConfigDescriptor(uint16_t* const ConfigSizePtr, void* BufferPtr) + ATTR_NON_NULL_PTR_ARG(1); + + /** Skips to the next sub-descriptor inside the configuration descriptor of the specified type value. + * The bytes remaining value is automatically decremented. + * + * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor + * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor + * \param Type Descriptor type value to search for + */ + void USB_GetNextDescriptorOfType(uint16_t* const BytesRem, + uint8_t** const CurrConfigLoc, + const uint8_t Type) + ATTR_NON_NULL_PTR_ARG(1, 2); + + /** Skips to the next sub-descriptor inside the configuration descriptor of the specified type value, + * which must come before a descriptor of the second given type value. If the BeforeType type + * descriptor is reached first, the number of bytes remaining to process is set to zero and the + * function exits. The bytes remaining value is automatically decremented. + * + * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor + * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor + * \param Type Descriptor type value to search for + * \param BeforeType Descriptor type value which must not be reached before the given Type descriptor + */ + void USB_GetNextDescriptorOfTypeBefore(uint16_t* const BytesRem, + uint8_t** const CurrConfigLoc, + const uint8_t Type, + const uint8_t BeforeType) + ATTR_NON_NULL_PTR_ARG(1, 2); + + /** Skips to the next sub-descriptor inside the configuration descriptor of the specified type value, + * which must come after a descriptor of the second given type value. The bytes remaining value is + * automatically decremented. + * + * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor + * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor + * \param Type Descriptor type value to search for + * \param AfterType Descriptor type value which must be reached before the given Type descriptor + */ + void USB_GetNextDescriptorOfTypeAfter(uint16_t* const BytesRem, + uint8_t** const CurrConfigLoc, + const uint8_t Type, + const uint8_t AfterType) + ATTR_NON_NULL_PTR_ARG(1, 2); + + /* Inline Functions: */ + /** Skips over the current sub-descriptor inside the configuration descriptor, so that the pointer then + points to the next sub-descriptor. The bytes remaining value is automatically decremented. + * + * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor + * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor + */ + static inline void USB_GetNextDescriptor(uint16_t* const BytesRem, + uint8_t** const CurrConfigLoc) + ATTR_NON_NULL_PTR_ARG(1, 2); + static inline void USB_GetNextDescriptor(uint16_t* const BytesRem, + uint8_t** const CurrConfigLoc) + { + #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) + uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).Size; + #else + uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).bLength; + #endif + + *CurrConfigLoc += CurrDescriptorSize; + *BytesRem -= CurrDescriptorSize; + } + + /* Disable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + } + #endif + +#endif + +/** @} */ diff --git a/LUFA/Drivers/USB/HighLevel/Events.h b/LUFA/Drivers/USB/HighLevel/Events.h index 464f21aa8..e6d2beaa7 100644 --- a/LUFA/Drivers/USB/HighLevel/Events.h +++ b/LUFA/Drivers/USB/HighLevel/Events.h @@ -267,17 +267,6 @@ * \ref Group_USBManagement documentation). */ void EVENT_USB_Reset(void); - - /** Event for USB device mode error. This event fires when the USB interface is in device mode, - * and an error occurs which prevents it from operating normally. - * - * \param ErrorCode Error code indicating the source of the error, a value in - * \ref USB_Device_ErrorCodes_t - * - * \note This event does not exist if the USB_HOST_ONLY token is supplied to the compiler (see - * \ref Group_USBManagement documentation). - */ - void EVENT_USB_DeviceError(const uint8_t ErrorCode); #endif /* Private Interface - For use in library only: */ @@ -314,7 +303,6 @@ void EVENT_USB_Suspend(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); void EVENT_USB_WakeUp(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); void EVENT_USB_Reset(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - void EVENT_USB_DeviceError(const uint8_t ErrorCode) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); #endif #endif diff --git a/LUFA/Drivers/USB/HighLevel/StdDescriptors.c b/LUFA/Drivers/USB/HighLevel/StdDescriptors.c deleted file mode 100644 index ae8cc711d..000000000 --- a/LUFA/Drivers/USB/HighLevel/StdDescriptors.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2009. - - dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com -*/ - -/* - Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, and distribute this software - and its documentation for any purpose and without fee is hereby - granted, 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. -*/ - -#include "USBMode.h" - -#if defined(USB_CAN_BE_DEVICE) - -#include "StdDescriptors.h" - -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) -{ - EVENT_USB_DeviceError(DEVICE_ERROR_GetDescriptorNotHooked); - - return 0; -}; - -#endif diff --git a/LUFA/Drivers/USB/HighLevel/StdDescriptors.h b/LUFA/Drivers/USB/HighLevel/StdDescriptors.h index d94a91296..7a0ca52b3 100644 --- a/LUFA/Drivers/USB/HighLevel/StdDescriptors.h +++ b/LUFA/Drivers/USB/HighLevel/StdDescriptors.h @@ -456,33 +456,6 @@ #endif } USB_Descriptor_String_t; - /* Function Prototypes: */ - /** Function to retrieve a given descriptor's size and memory location from the given descriptor type value, - * index and language ID. This function MUST be overridden in the user application (added with full, identical - * prototype and name except for the \ref ATTR_WEAK attribute) so that the library can call it to retrieve descriptor - * data. - * - * \param wValue The type of the descriptor to retrieve in the upper byte, and the index in the - * lower byte (when more than one descriptor of the given type exists, such as the - * case of string descriptors). The type may be one of the standard types defined - * in the DescriptorTypes_t enum, or may be a class-specific descriptor type value. - * \param wIndex The language ID of the string to return if the wValue type indicates DTYPE_String, - * otherwise zero for standard descriptors, or as defined in a class-specific - * standards. - * \param DescriptorAddress Pointer to the descriptor in memory. This should be set by the routine to - * the address of the descriptor. - * - * \note By default, the library expects all descriptors to be located in flash memory via the PROGMEM attribute. - * If descriptors should be located in RAM or EEPROM instead (to speed up access in the case of RAM, or to - * allow the descriptors to be changed dynamically at runtime) either the USE_RAM_DESCRIPTORS or the - * USE_EEPROM_DESCRIPTORS tokens may be defined in the project makefile and passed to the compiler by the -D - * switch. - * - * \return Size in bytes of the descriptor if it exists, zero or \ref NO_DESCRIPTOR otherwise - */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_WEAK ATTR_NON_NULL_PTR_ARG(3); - /* Private Interface - For use in library only: */ #if !defined(__DOXYGEN__) /* Macros: */ diff --git a/LUFA/Drivers/USB/LowLevel/DevChapter9.c b/LUFA/Drivers/USB/LowLevel/DevChapter9.c index 8f53105a6..9bba23495 100644 --- a/LUFA/Drivers/USB/LowLevel/DevChapter9.c +++ b/LUFA/Drivers/USB/LowLevel/DevChapter9.c @@ -137,7 +137,7 @@ static void USB_Device_SetConfiguration(void) #else USB_Descriptor_Device_t* DevDescriptorPtr; - if ((USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DevDescriptorPtr) == NO_DESCRIPTOR) || + if ((CALLBACK_USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DevDescriptorPtr) == NO_DESCRIPTOR) || #if defined(USE_RAM_DESCRIPTORS) ((uint8_t)USB_ControlRequest.wValue > DevDescriptorPtr->NumberOfConfigurations)) #elif defined (USE_EEPROM_DESCRIPTORS) @@ -179,8 +179,11 @@ static void USB_Device_GetDescriptor(void) void* DescriptorPointer; uint16_t DescriptorSize; - if ((DescriptorSize = USB_GetDescriptor(USB_ControlRequest.wValue, USB_ControlRequest.wIndex, &DescriptorPointer)) == NO_DESCRIPTOR) - return; + if ((DescriptorSize = CALLBACK_USB_GetDescriptor(USB_ControlRequest.wValue, + USB_ControlRequest.wIndex, &DescriptorPointer)) == NO_DESCRIPTOR) + { + return; + } Endpoint_ClearSETUP(); diff --git a/LUFA/Drivers/USB/LowLevel/Device.h b/LUFA/Drivers/USB/LowLevel/Device.h index ea9be4b9f..cf54345c4 100644 --- a/LUFA/Drivers/USB/LowLevel/Device.h +++ b/LUFA/Drivers/USB/LowLevel/Device.h @@ -114,20 +114,32 @@ #define USB_Device_IsUSBSuspended() ((UDINT & (1 << SUSPI)) ? true : false) #endif - /* Enums: */ - /** Enum for the ErrorCode parameter of the \ref EVENT_USB_DeviceError() event. + /* Function Prototypes: */ + /** Function to retrieve a given descriptor's size and memory location from the given descriptor type value, + * index and language ID. This function MUST be overridden in the user application (added with full, identical + * prototype and name except for the \ref ATTR_WEAK attribute) so that the library can call it to retrieve descriptor + * data. * - * \see Events.h for more information on this event. + * \param wValue The type of the descriptor to retrieve in the upper byte, and the index in the + * lower byte (when more than one descriptor of the given type exists, such as the + * case of string descriptors). The type may be one of the standard types defined + * in the DescriptorTypes_t enum, or may be a class-specific descriptor type value. + * \param wIndex The language ID of the string to return if the wValue type indicates DTYPE_String, + * otherwise zero for standard descriptors, or as defined in a class-specific + * standards. + * \param DescriptorAddress Pointer to the descriptor in memory. This should be set by the routine to + * the address of the descriptor. + * + * \note By default, the library expects all descriptors to be located in flash memory via the PROGMEM attribute. + * If descriptors should be located in RAM or EEPROM instead (to speed up access in the case of RAM, or to + * allow the descriptors to be changed dynamically at runtime) either the USE_RAM_DESCRIPTORS or the + * USE_EEPROM_DESCRIPTORS tokens may be defined in the project makefile and passed to the compiler by the -D + * switch. + * + * \return Size in bytes of the descriptor if it exists, zero or \ref NO_DESCRIPTOR otherwise */ - enum USB_Device_ErrorCodes_t - { - DEVICE_ERROR_GetDescriptorNotHooked = 0, /**< Indicates that the \ref USB_GetDescriptor() method - * has not been hooked by the user application. - * - * \see \ref Group_Descriptors for more information on - * the \ref USB_GetDescriptor() method. - */ - }; + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_WEAK ATTR_NON_NULL_PTR_ARG(3); /* Private Interface - For use in library only: */ #if !defined(__DOXYGEN__) diff --git a/LUFA/Drivers/USB/LowLevel/LowLevel.c b/LUFA/Drivers/USB/LowLevel/LowLevel.c index 346420f47..8b395be98 100644 --- a/LUFA/Drivers/USB/LowLevel/LowLevel.c +++ b/LUFA/Drivers/USB/LowLevel/LowLevel.c @@ -206,7 +206,7 @@ void USB_ResetInterface(void) { USB_Descriptor_Device_t* DeviceDescriptorPtr; - if (USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DeviceDescriptorPtr) != NO_DESCRIPTOR) + if (CALLBACK_USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DeviceDescriptorPtr) != NO_DESCRIPTOR) { #if defined(USE_RAM_DESCRIPTORS) USB_ControlEndpointSize = DeviceDescriptorPtr->Endpoint0Size; diff --git a/LUFA/Drivers/USB/USB.h b/LUFA/Drivers/USB/USB.h index e0d812787..6d66c4d14 100644 --- a/LUFA/Drivers/USB/USB.h +++ b/LUFA/Drivers/USB/USB.h @@ -46,10 +46,9 @@ * - LUFA/Drivers/USB/LowLevel/LowLevel.c * - LUFA/Drivers/USB/LowLevel/Pipe.c * - LUFA/Drivers/USB/HighLevel/Events.c - * - LUFA/Drivers/USB/HighLevel/StdDescriptors.c * - LUFA/Drivers/USB/HighLevel/USBInterrupt.c * - LUFA/Drivers/USB/HighLevel/USBTask.c - * - LUFA/Drivers/USB/Class/ConfigDescriptor.c + * - LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c * - LUFA/Drivers/USB/Class/HIDParser.c * * \section Module Description @@ -97,7 +96,7 @@ #include "LowLevel/OTG.h" #endif - #include "Class/ConfigDescriptor.h" + #include "HighLevel/ConfigDescriptor.h" #include "Class/HIDParser.h" #endif diff --git a/LUFA/MigrationInformation.txt b/LUFA/MigrationInformation.txt index 7b21b8cc2..2ee452c86 100644 --- a/LUFA/MigrationInformation.txt +++ b/LUFA/MigrationInformation.txt @@ -23,6 +23,11 @@ * \ref Group_Events for new API details. * - The STREAM_CALLBACK() macro has been removed. User applications should replace all instances of the macro with regular * function signatures of a function accepting no arguments and returning a uint8_t value. + * - The Event_DeviceError() event no longer exists, as its sole caller (unlinked USB_GetDescriptor() function) now produces a + * compilation error rather than a runtime error. The StdDescriptors.c file no longer exists as a result, and should be removed + * from project makefiles. + * - The USB_GetDescriptor() function has been renamed to CALLBACK_USB_GetDescriptor() to be in line with the new CALLBACK_ function + * prefixes for functions which *must* be implemented in the user application. * * Host Mode * - Support for non-control data pipe interrupts has been dropped due to many issues in the implementation. All existing diff --git a/LUFA/makefile b/LUFA/makefile index 3e1ce85b7..fc0009793 100644 --- a/LUFA/makefile +++ b/LUFA/makefile @@ -8,18 +8,18 @@ # Makefile for the LUFA library itself. -LUFA_SRC_FILES = ./Drivers/USB/LowLevel/LowLevel.c \ +LUFA_SRC_FILES = ./Drivers/USB/LowLevel/DevChapter9.c \ ./Drivers/USB/LowLevel/Endpoint.c \ - ./Drivers/USB/LowLevel/Pipe.c \ - ./Drivers/USB/LowLevel/DevChapter9.c \ - ./Drivers/USB/LowLevel/HostChapter9.c \ ./Drivers/USB/LowLevel/Host.c \ - ./Drivers/USB/HighLevel/USBTask.c \ - ./Drivers/USB/HighLevel/USBInterrupt.c \ + ./Drivers/USB/LowLevel/HostChapter9.c \ + ./Drivers/USB/LowLevel/LowLevel.c \ + ./Drivers/USB/LowLevel/Pipe.c \ ./Drivers/USB/HighLevel/Events.c \ ./Drivers/USB/HighLevel/StdDescriptors.c \ - ./Drivers/USB/Class/HIDParser.c \ + ./Drivers/USB/HighLevel/USBInterrupt.c \ + ./Drivers/USB/HighLevel/USBTask.c \ ./Drivers/USB/Class/ConfigDescriptor.c \ + ./Drivers/USB/Class/HIDParser.c \ ./Scheduler/Scheduler.c \ ./MemoryAllocator/DynAlloc.c \ ./Drivers/Board/Temperature.c \ diff --git a/Projects/Magstripe/Descriptors.c b/Projects/Magstripe/Descriptors.c index 3d9dd08f4..1dee58676 100644 --- a/Projects/Magstripe/Descriptors.c +++ b/Projects/Magstripe/Descriptors.c @@ -196,7 +196,7 @@ USB_Descriptor_String_t PROGMEM ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Projects/Magstripe/Descriptors.h b/Projects/Magstripe/Descriptors.h index 16299bbfd..9948085a5 100644 --- a/Projects/Magstripe/Descriptors.h +++ b/Projects/Magstripe/Descriptors.h @@ -92,7 +92,7 @@ #define DTYPE_Report 0x22 /* Function Prototypes: */ - uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); + uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) + ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); #endif diff --git a/Projects/Magstripe/Magstripe.h b/Projects/Magstripe/Magstripe.h index 597bafd8e..a83496b91 100644 --- a/Projects/Magstripe/Magstripe.h +++ b/Projects/Magstripe/Magstripe.h @@ -107,7 +107,5 @@ void EVENT_USB_UnhandledControlPacket(void); bool GetNextReport(USB_KeyboardReport_Data_t* ReportData); - void SendKey(USB_KeyboardReport_Data_t* KeyboardReportData, uint8_t Key); - void Send(USB_KeyboardReport_Data_t* KeyboardReportData, bool SendReport); #endif diff --git a/Projects/Magstripe/makefile b/Projects/Magstripe/makefile index 931c6737a..6a77cf05c 100644 --- a/Projects/Magstripe/makefile +++ b/Projects/Magstripe/makefile @@ -134,10 +134,9 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \ -- cgit v1.2.3