aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA
diff options
context:
space:
mode:
Diffstat (limited to 'LUFA')
-rw-r--r--LUFA/DoxygenPages/ChangeLog.txt6
-rw-r--r--LUFA/DoxygenPages/GettingStarted.txt12
-rw-r--r--LUFA/DoxygenPages/KnownIssues.txt32
-rw-r--r--LUFA/DoxygenPages/MigrationInformation.txt5
-rw-r--r--LUFA/Drivers/Misc/RingBuffer.h10
-rw-r--r--LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c4
-rw-r--r--LUFA/Drivers/USB/Class/Host/AudioClassHost.c4
-rw-r--r--LUFA/Drivers/USB/Class/Host/CDCClassHost.c6
-rw-r--r--LUFA/Drivers/USB/Class/Host/HIDClassHost.c6
-rw-r--r--LUFA/Drivers/USB/Class/Host/MIDIClassHost.c4
-rw-r--r--LUFA/Drivers/USB/Class/Host/MassStorageClassHost.c4
-rw-r--r--LUFA/Drivers/USB/Class/Host/PrinterClassHost.c4
-rw-r--r--LUFA/Drivers/USB/Class/Host/RNDISClassHost.c6
-rw-r--r--LUFA/Drivers/USB/Class/Host/StillImageClassHost.c6
-rw-r--r--LUFA/Platform/XMEGA/ClockManagement.h4
-rw-r--r--LUFA/StudioIntegration/VSIX/LUFA.dllbin746496 -> 749056 bytes
-rw-r--r--LUFA/StudioIntegration/VSIX/extension.vsixmanifest1
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
index c0cf25563..665b8029f 100644
--- a/LUFA/StudioIntegration/VSIX/LUFA.dll
+++ b/LUFA/StudioIntegration/VSIX/LUFA.dll
Binary files differ
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"/>