diff options
Diffstat (limited to 'LUFA')
-rw-r--r-- | LUFA/DoxygenPages/ChangeLog.txt | 6 | ||||
-rw-r--r-- | LUFA/DoxygenPages/GettingStarted.txt | 12 | ||||
-rw-r--r-- | LUFA/DoxygenPages/KnownIssues.txt | 32 | ||||
-rw-r--r-- | LUFA/DoxygenPages/MigrationInformation.txt | 5 | ||||
-rw-r--r-- | LUFA/Drivers/Misc/RingBuffer.h | 10 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c | 4 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Host/AudioClassHost.c | 4 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Host/CDCClassHost.c | 6 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Host/HIDClassHost.c | 6 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Host/MIDIClassHost.c | 4 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Host/MassStorageClassHost.c | 4 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Host/PrinterClassHost.c | 4 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Host/RNDISClassHost.c | 6 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Class/Host/StillImageClassHost.c | 6 | ||||
-rw-r--r-- | LUFA/Platform/XMEGA/ClockManagement.h | 4 | ||||
-rw-r--r-- | LUFA/StudioIntegration/VSIX/LUFA.dll | bin | 746496 -> 749056 bytes | |||
-rw-r--r-- | LUFA/StudioIntegration/VSIX/extension.vsixmanifest | 1 |
17 files changed, 84 insertions, 30 deletions
diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt index d9fb0f030..2fd980f46 100644 --- a/LUFA/DoxygenPages/ChangeLog.txt +++ b/LUFA/DoxygenPages/ChangeLog.txt @@ -7,6 +7,12 @@ /** \page Page_ChangeLog Project Changelog * * \section Sec_ChangeLogXXXXXX Version XXXXXX + * <b>Fixed:</b> + * - Core: + * - Fixed device class driver pipe configuration routines returning success with a partially constructed instance + * when a pipe configuration failed (thanks to Helge Suess) + * + * \section Sec_ChangeLog140302 Version 140302 * <b>New:</b> * - Library Applications: * - Added new Bulk Vendor low level device demo diff --git a/LUFA/DoxygenPages/GettingStarted.txt b/LUFA/DoxygenPages/GettingStarted.txt index 18c868896..9ceec1e04 100644 --- a/LUFA/DoxygenPages/GettingStarted.txt +++ b/LUFA/DoxygenPages/GettingStarted.txt @@ -6,6 +6,10 @@ /** \page Page_GettingStarted Getting Started * + * Getting started with LUFA is easy; read the content below to get on your way to your first LUFA powered application. + * + * \section Sec_DemosOverview The LUFA Demo Applications + * * Out of the box, LUFA contains a large number of pre-made class demos for you to test, experiment with and * ultimately build upon for your own projects. All the demos (where possible) come pre-configured to build and * run correctly on the AT90USB1287 AVR microcontroller, mounted on the Atmel USBKEY board and running at an 8MHz @@ -13,9 +17,17 @@ * popular Atmel USB demonstration board to date. To learn how to reconfigure, recompile and program the included * LUFA applications using different settings, see the subsections below. * + * \section Sec_ClassOrLowLevel Class Driver and Low Level Demos + * * Most of the included demos in the /Demos/ folder come in both ClassDriver and LowLevel varieties. If you are new * to LUFA, it is highly recommended that you look at the ClassDriver versions first, which use the pre-made USB * Class Drivers (\ref Group_USBClassDrivers) to simplify the use of the standard USB classes in user applications. + * These demos give a basic but easy to use interface to the USB class used in the demo application, such as HID or + * CDC. + * + * Those needing absolute control over the class implementation can look at the LowLevel demos, which implement the + * required USB class directly in the demo application using the lowest level LUFA APIs. + * * * <b>Subsections:</b> * \li \subpage Page_ConfiguringApps - How to Configure the Included Demos, Projects and Bootloaders diff --git a/LUFA/DoxygenPages/KnownIssues.txt b/LUFA/DoxygenPages/KnownIssues.txt index 082b73caa..425fb2619 100644 --- a/LUFA/DoxygenPages/KnownIssues.txt +++ b/LUFA/DoxygenPages/KnownIssues.txt @@ -41,6 +41,38 @@ * - Not all devices are listed in the "Supported Parts" screen when selecting a device. To select an alternative device, change the "Show Device" drop-down to "All Parts". * - When switching boards after changing the device selection, a second conflicting BOARD symbol definition can be created that prevents successful compilation. To fix, open the project properties window (<i>Project->Project {name} Properties...</i> menu item), click the Toolchain tab, click "Symbols" under the "AVR/GNU C Compiler" section and remove the incorrect definition. * + * \section Sec_KnownIssues140302 Version 140302 + * - AVR8 Architecture + * - No known issues. + * - UC3 Architecture + * \warning The UC3 device support is currently <b>experimental</b> (incomplete and/or non-functional), and is included for preview purposes only. \n + * + * - No demos, bootloaders or projects have been ported for the UC3 devices in the current release, + * although the architecture is supported in the LUFA core library. + * - DMA transfers to and from the USB controller are not yet implemented for this release. + * - The UC3C, UC3D and UC3L sub-families of UC3 are not currently supported by the library due to their + * altered USB controller design. + * - The various \c *_CreateStream() functions for creating standard \c <stdio.h> compatible virtual file + * streams are not available on the UC3 architecture, due to a lack of suitable library support. + * - XMEGA Architecture + * \warning The XMEGA device support is currently <b>experimental</b> (incomplete and/or non-functional), and is included for preview purposes only. + * + * - Endpoints of more than 64 bytes are not currently supported in this release. + * - Isochronous endpoints are not currently supported in this release. As a result, the audio class + * cannot be used on XMEGA devices. + * - Multiple-bank endpoints are not currently supported in this release. + * - Early silicon revisions of the ATXMEGA128A1U are incompatible with LUFA, due to their various errata + * relating to the USB controller. + * - Architecture Independent + * - The LUFA library is not watchdog aware, and thus timeouts are possible if short periods are used + * and a lengthy USB operation is initiated. + * - No LUFA provided driver INF files for Windows are signed, and thus may fail to install on systems where driver signing is enforced (e.g. Windows 8). + * - Build System + * - No known issues. + * - Atmel Studio Integration + * - Not all devices are listed in the "Supported Parts" screen when selecting a device. To select an alternative device, change the "Show Device" drop-down to "All Parts". + * - When switching boards after changing the device selection, a second conflicting BOARD symbol definition can be created that prevents successful compilation. To fix, open the project properties window (<i>Project->Project {name} Properties...</i> menu item), click the Toolchain tab, click "Symbols" under the "AVR/GNU C Compiler" section and remove the incorrect definition. + * * \section Sec_KnownIssues130901 Version 130901 * - AVR8 Architecture * - No known issues. diff --git a/LUFA/DoxygenPages/MigrationInformation.txt b/LUFA/DoxygenPages/MigrationInformation.txt index 8d6cdb9dd..e87fa1618 100644 --- a/LUFA/DoxygenPages/MigrationInformation.txt +++ b/LUFA/DoxygenPages/MigrationInformation.txt @@ -10,7 +10,10 @@ * to the next version released. It does not indicate all new additions to the library in each version change, only * areas relevant to making older projects compatible with the API changes of each new release. * - * \section Sec_MigrationXXXXXX Migrating from 130901 to XXXXXX + * \section Sec_MigrationXXXXXX Migrating from 140302 to XXXXXX + * None + * + * \section Sec_Migration140302 Migrating from 130901 to 140302 * <b>USB Core</b> * - The \c VERSION_BCD() macro has changed from accepting one floating point parameter to taking three distinct major/minor/revision integer parameters, as * some edge cases caused incorrect parsing of the input float into the final integer BCD encoded value. diff --git a/LUFA/Drivers/Misc/RingBuffer.h b/LUFA/Drivers/Misc/RingBuffer.h index 97648c806..68fdb8e92 100644 --- a/LUFA/Drivers/Misc/RingBuffer.h +++ b/LUFA/Drivers/Misc/RingBuffer.h @@ -70,11 +70,11 @@ * RingBuffer_InitBuffer(&Buffer, BufferData, sizeof(BufferData)); * * // Insert some data into the buffer - * RingBuffer_Insert(Buffer, 'H'); - * RingBuffer_Insert(Buffer, 'E'); - * RingBuffer_Insert(Buffer, 'L'); - * RingBuffer_Insert(Buffer, 'L'); - * RingBuffer_Insert(Buffer, 'O'); + * RingBuffer_Insert(&Buffer, 'H'); + * RingBuffer_Insert(&Buffer, 'E'); + * RingBuffer_Insert(&Buffer, 'L'); + * RingBuffer_Insert(&Buffer, 'L'); + * RingBuffer_Insert(&Buffer, 'O'); * * // Cache the number of stored bytes in the buffer * uint16_t BufferCount = RingBuffer_GetCount(&Buffer); diff --git a/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c b/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c index 57a619ff4..ac8d5dc5c 100644 --- a/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c +++ b/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c @@ -98,10 +98,10 @@ uint8_t AOA_Host_ConfigurePipes(USB_ClassInfo_AOA_Host_t* const AOAInterfaceInfo AOAInterfaceInfo->Config.DataOUTPipe.Type = EP_TYPE_BULK; if (!(Pipe_ConfigurePipeTable(&AOAInterfaceInfo->Config.DataINPipe, 1))) - return false; + return AOA_ENUMERROR_PipeConfigurationFailed; if (!(Pipe_ConfigurePipeTable(&AOAInterfaceInfo->Config.DataOUTPipe, 1))) - return false; + return AOA_ENUMERROR_PipeConfigurationFailed; AOAInterfaceInfo->State.IsActive = true; AOAInterfaceInfo->State.InterfaceNumber = AOAInterface->InterfaceNumber; diff --git a/LUFA/Drivers/USB/Class/Host/AudioClassHost.c b/LUFA/Drivers/USB/Class/Host/AudioClassHost.c index c437654b6..3b5bceb6a 100644 --- a/LUFA/Drivers/USB/Class/Host/AudioClassHost.c +++ b/LUFA/Drivers/USB/Class/Host/AudioClassHost.c @@ -104,10 +104,10 @@ uint8_t Audio_Host_ConfigurePipes(USB_ClassInfo_Audio_Host_t* const AudioInterfa AudioInterfaceInfo->Config.DataOUTPipe.Banks = 2; if (!(Pipe_ConfigurePipeTable(&AudioInterfaceInfo->Config.DataINPipe, 1))) - return false; + return AUDIO_ENUMERROR_PipeConfigurationFailed; if (!(Pipe_ConfigurePipeTable(&AudioInterfaceInfo->Config.DataOUTPipe, 1))) - return false; + return AUDIO_ENUMERROR_PipeConfigurationFailed; AudioInterfaceInfo->State.ControlInterfaceNumber = AudioControlInterface->InterfaceNumber; AudioInterfaceInfo->State.StreamingInterfaceNumber = AudioStreamingInterface->InterfaceNumber; diff --git a/LUFA/Drivers/USB/Class/Host/CDCClassHost.c b/LUFA/Drivers/USB/Class/Host/CDCClassHost.c index a575c1bbf..b32a237cc 100644 --- a/LUFA/Drivers/USB/Class/Host/CDCClassHost.c +++ b/LUFA/Drivers/USB/Class/Host/CDCClassHost.c @@ -112,13 +112,13 @@ uint8_t CDC_Host_ConfigurePipes(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo CDCInterfaceInfo->Config.NotificationPipe.Type = EP_TYPE_INTERRUPT; if (!(Pipe_ConfigurePipeTable(&CDCInterfaceInfo->Config.DataINPipe, 1))) - return false; + return CDC_ENUMERROR_PipeConfigurationFailed; if (!(Pipe_ConfigurePipeTable(&CDCInterfaceInfo->Config.DataOUTPipe, 1))) - return false; + return CDC_ENUMERROR_PipeConfigurationFailed; if (!(Pipe_ConfigurePipeTable(&CDCInterfaceInfo->Config.NotificationPipe, 1))) - return false; + return CDC_ENUMERROR_PipeConfigurationFailed; CDCInterfaceInfo->State.ControlInterfaceNumber = CDCControlInterface->InterfaceNumber; CDCInterfaceInfo->State.ControlLineStates.HostToDevice = (CDC_CONTROL_LINE_OUT_RTS | CDC_CONTROL_LINE_OUT_DTR); diff --git a/LUFA/Drivers/USB/Class/Host/HIDClassHost.c b/LUFA/Drivers/USB/Class/Host/HIDClassHost.c index c3375e67e..b43435dcb 100644 --- a/LUFA/Drivers/USB/Class/Host/HIDClassHost.c +++ b/LUFA/Drivers/USB/Class/Host/HIDClassHost.c @@ -99,7 +99,7 @@ uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo HIDInterfaceInfo->Config.DataINPipe.Type = EP_TYPE_INTERRUPT; if (!(Pipe_ConfigurePipeTable(&HIDInterfaceInfo->Config.DataINPipe, 1))) - return false; + return HID_ENUMERROR_PipeConfigurationFailed; if (DataOUTEndpoint) { @@ -108,7 +108,7 @@ uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo HIDInterfaceInfo->Config.DataOUTPipe.Type = EP_TYPE_INTERRUPT; if (!(Pipe_ConfigurePipeTable(&HIDInterfaceInfo->Config.DataOUTPipe, 1))) - return false; + return HID_ENUMERROR_PipeConfigurationFailed; } HIDInterfaceInfo->State.InterfaceNumber = HIDInterface->InterfaceNumber; @@ -238,7 +238,7 @@ uint8_t HID_Host_SendReportByID(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo { #if !defined(HID_HOST_BOOT_PROTOCOL_ONLY) if ((USB_HostState != HOST_STATE_Configured) || !(HIDInterfaceInfo->State.IsActive)) - return false; + return PIPE_RWSTREAM_NoError; if (HIDInterfaceInfo->State.DeviceUsesOUTPipe && (ReportType == HID_REPORT_ITEM_Out)) { diff --git a/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c b/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c index 7ec26549d..8b898cba5 100644 --- a/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c +++ b/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c @@ -87,10 +87,10 @@ uint8_t MIDI_Host_ConfigurePipes(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceI MIDIInterfaceInfo->Config.DataOUTPipe.Type = EP_TYPE_BULK; if (!(Pipe_ConfigurePipeTable(&MIDIInterfaceInfo->Config.DataINPipe, 1))) - return false; + return MIDI_ENUMERROR_PipeConfigurationFailed; if (!(Pipe_ConfigurePipeTable(&MIDIInterfaceInfo->Config.DataOUTPipe, 1))) - return false; + return MIDI_ENUMERROR_PipeConfigurationFailed; MIDIInterfaceInfo->State.InterfaceNumber = MIDIInterface->InterfaceNumber; MIDIInterfaceInfo->State.IsActive = true; diff --git a/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.c b/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.c index d5bace70e..ac448a55b 100644 --- a/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.c +++ b/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.c @@ -87,10 +87,10 @@ uint8_t MS_Host_ConfigurePipes(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, MSInterfaceInfo->Config.DataOUTPipe.Type = EP_TYPE_BULK; if (!(Pipe_ConfigurePipeTable(&MSInterfaceInfo->Config.DataINPipe, 1))) - return false; + return MS_ENUMERROR_PipeConfigurationFailed; if (!(Pipe_ConfigurePipeTable(&MSInterfaceInfo->Config.DataOUTPipe, 1))) - return false; + return MS_ENUMERROR_PipeConfigurationFailed; MSInterfaceInfo->State.InterfaceNumber = MassStorageInterface->InterfaceNumber; MSInterfaceInfo->State.IsActive = true; diff --git a/LUFA/Drivers/USB/Class/Host/PrinterClassHost.c b/LUFA/Drivers/USB/Class/Host/PrinterClassHost.c index 7eda9f605..fd32e1c28 100644 --- a/LUFA/Drivers/USB/Class/Host/PrinterClassHost.c +++ b/LUFA/Drivers/USB/Class/Host/PrinterClassHost.c @@ -87,10 +87,10 @@ uint8_t PRNT_Host_ConfigurePipes(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceI PRNTInterfaceInfo->Config.DataOUTPipe.Type = EP_TYPE_BULK; if (!(Pipe_ConfigurePipeTable(&PRNTInterfaceInfo->Config.DataINPipe, 1))) - return false; + return PRNT_ENUMERROR_PipeConfigurationFailed; if (!(Pipe_ConfigurePipeTable(&PRNTInterfaceInfo->Config.DataOUTPipe, 1))) - return false; + return PRNT_ENUMERROR_PipeConfigurationFailed; PRNTInterfaceInfo->State.InterfaceNumber = PrinterInterface->InterfaceNumber; PRNTInterfaceInfo->State.AlternateSetting = PrinterInterface->AlternateSetting; diff --git a/LUFA/Drivers/USB/Class/Host/RNDISClassHost.c b/LUFA/Drivers/USB/Class/Host/RNDISClassHost.c index 9072d3aa6..3ed51c8d9 100644 --- a/LUFA/Drivers/USB/Class/Host/RNDISClassHost.c +++ b/LUFA/Drivers/USB/Class/Host/RNDISClassHost.c @@ -114,13 +114,13 @@ uint8_t RNDIS_Host_ConfigurePipes(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfa RNDISInterfaceInfo->Config.NotificationPipe.Type = EP_TYPE_INTERRUPT; if (!(Pipe_ConfigurePipeTable(&RNDISInterfaceInfo->Config.DataINPipe, 1))) - return false; + return RNDIS_ENUMERROR_PipeConfigurationFailed; if (!(Pipe_ConfigurePipeTable(&RNDISInterfaceInfo->Config.DataOUTPipe, 1))) - return false; + return RNDIS_ENUMERROR_PipeConfigurationFailed; if (!(Pipe_ConfigurePipeTable(&RNDISInterfaceInfo->Config.NotificationPipe, 1))) - return false; + return RNDIS_ENUMERROR_PipeConfigurationFailed; RNDISInterfaceInfo->State.ControlInterfaceNumber = RNDISControlInterface->InterfaceNumber; RNDISInterfaceInfo->State.IsActive = true; diff --git a/LUFA/Drivers/USB/Class/Host/StillImageClassHost.c b/LUFA/Drivers/USB/Class/Host/StillImageClassHost.c index b3d74bc1e..24a6308f5 100644 --- a/LUFA/Drivers/USB/Class/Host/StillImageClassHost.c +++ b/LUFA/Drivers/USB/Class/Host/StillImageClassHost.c @@ -100,13 +100,13 @@ uint8_t SI_Host_ConfigurePipes(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo, SIInterfaceInfo->Config.EventsPipe.Type = EP_TYPE_INTERRUPT; if (!(Pipe_ConfigurePipeTable(&SIInterfaceInfo->Config.DataINPipe, 1))) - return false; + return SI_ENUMERROR_PipeConfigurationFailed; if (!(Pipe_ConfigurePipeTable(&SIInterfaceInfo->Config.DataOUTPipe, 1))) - return false; + return SI_ENUMERROR_PipeConfigurationFailed; if (!(Pipe_ConfigurePipeTable(&SIInterfaceInfo->Config.EventsPipe, 1))) - return false; + return SI_ENUMERROR_PipeConfigurationFailed; SIInterfaceInfo->State.InterfaceNumber = StillImageInterface->InterfaceNumber; SIInterfaceInfo->State.IsActive = true; diff --git a/LUFA/Platform/XMEGA/ClockManagement.h b/LUFA/Platform/XMEGA/ClockManagement.h index ed48d6ee1..a39911a0e 100644 --- a/LUFA/Platform/XMEGA/ClockManagement.h +++ b/LUFA/Platform/XMEGA/ClockManagement.h @@ -171,8 +171,8 @@ * * \return Boolean \c true if the internal oscillator was successfully started, \c false if invalid parameters specified. */ - static inline uint8_t XMEGACLK_StartInternalOscillator(const uint8_t Source) ATTR_ALWAYS_INLINE; - static inline uint8_t XMEGACLK_StartInternalOscillator(const uint8_t Source) + static inline bool XMEGACLK_StartInternalOscillator(const uint8_t Source) ATTR_ALWAYS_INLINE; + static inline bool XMEGACLK_StartInternalOscillator(const uint8_t Source) { switch (Source) { diff --git a/LUFA/StudioIntegration/VSIX/LUFA.dll b/LUFA/StudioIntegration/VSIX/LUFA.dll Binary files differindex c0cf25563..665b8029f 100644 --- a/LUFA/StudioIntegration/VSIX/LUFA.dll +++ b/LUFA/StudioIntegration/VSIX/LUFA.dll diff --git a/LUFA/StudioIntegration/VSIX/extension.vsixmanifest b/LUFA/StudioIntegration/VSIX/extension.vsixmanifest index afe6a70ec..ea6edeb25 100644 --- a/LUFA/StudioIntegration/VSIX/extension.vsixmanifest +++ b/LUFA/StudioIntegration/VSIX/extension.vsixmanifest @@ -14,6 +14,7 @@ <SupportedProducts>
<IsolatedShell Version="6.1">AtmelStudio</IsolatedShell>
+ <IsolatedShell Version="6.2">AtmelStudio</IsolatedShell>
</SupportedProducts>
<SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="4.5"/>
|