Commit Graph

679 Commits

Author SHA1 Message Date
Dean Camera f670bdeff8 Add __VA_ARGS__ support to the LUFA supplied ISR macro. Add proper result typecasting to the SWAPENDIAN_* macros.
Switch to using -1 on the UC3 target to obtain a register mask with all bits set (for clearing interrupts and status flags).

Fix incorrect USB controller mode on the UC3 when a fixed mode is specified as a compile time option due to AVR32_USBB.USBCON.uide being set by default.

Make USB_Descriptor_String_t use a uint16_t for Unicode strings on all targets except the AVR8 (retained for backwards compatibility).
2011-04-25 07:28:36 +00:00
Dean Camera 2b0c9532a3 Fix reversed descriptions for the AVR8 USB pad regulator enable/disable masks (thanks to Omar). 2011-04-20 06:04:49 +00:00
Dean Camera e0852408de Replace cast-as-char* byte access of multibyte variables with proper shifts and masks to preserve endianness across different architectures. 2011-04-13 06:12:52 +00:00
Dean Camera 995195a2b0 Add missing function attributes to the pipe/endpoint functions for all architectures.
Perform endianness correction in the HID report parser for big-endian platforms.
2011-04-12 03:03:56 +00:00
Dean Camera 852b5e612d Remove redundant type information for bitfield elements, other than the signed/unsignedness of the element.
Change type of USB_SelectedPipe and USB_SelectedEndpoint for the AVR32 UC3 architecture to uint32_t to reduce the compiled code size.
2011-04-10 06:43:02 +00:00
Dean Camera c263ea837a Move global interrupt enable/disable functions out to Common.h and document them. 2011-04-08 05:40:25 +00:00
Dean Camera de9bd767dc Correct UC3 global interrupt functions.
Replace all calls and references to _delay_ms() in the code with the architecture-agnostic Delay_MS() function.

Improve code generation for the Delay_MS() function on the AVR8 architecture when called with a constant input.
2011-04-08 05:05:05 +00:00
Dean Camera 70284d390f Add in a new common Delay_MS() function, which provides a blocking delay for all architectures.
Remove use of avr-libc specific ATOMIC_BLOCK, replace with a new per-architecture set of inline functions to retrieve and manipulate the global interrupt enable bit for each architecture.

Add in documentation for the USB controller common interrupt routine which must be linked to the interrupt controller in the user application on the AVR32 UC3 architecture.
2011-04-08 04:49:20 +00:00
Dean Camera 0c5afda7e8 Oops - fix misnamed function call in Pipe_Discard_Stream(). 2011-04-04 15:41:26 +00:00
Dean Camera 96a2da1813 Oops - fix incorrect variable name in the updated Pipe_Write_8() function. 2011-04-04 15:25:30 +00:00
Dean Camera 899df7d331 Renamed all low level Endpoint_Read_*, Endpoint_Write_* and Endpoint_Discard_* functions to use the number of bits instead of a symbolic size (Byte, Word, DWord) so that the function names are applicable and correct across all architectures.
Renamed all low level Pipe_Read_*, Pipe_Write_* and Pipe_Discard_* functions to use the number of bits instead of a symbolic size (Byte, Word, DWord) so that the function names are applicable and correct across all architectures.
2011-04-04 12:52:30 +00:00
Dean Camera 2efa79d3ec Conditionally add available address spaces to the address space enum, for multiple address space architectures.
Update Doxygen configuration file for the latest Doxygen release.

Minor documentation updates.
2011-04-04 10:24:57 +00:00
Dean Camera 06d00bb99b Ensure the library builds cleanly in device mode for architectures lacking multiple address spaces. 2011-03-27 22:17:26 +00:00
Dean Camera fa5c8700bc Fix corner case in the HID report descriptor Mouse/Joystick tempates at the 8/16 bit boundary. 2011-03-23 09:25:13 +00:00
Dean Camera f595043584 Add in new architecture attribute defines to selectively remove the EEPROM and FLASH memory space functions on architectures which do not have seperate memory address spaces. 2011-03-21 11:10:02 +00:00
Dean Camera aba7932a5c F_CLOCK changed to F_USB to be more descriptive, and applicable on future architecture ports. 2011-03-21 10:20:42 +00:00
Dean Camera f6f4ac588c Fix bugs in the new VirtualSerialMassStorage demo (thanks to Martin Degelsegger). 2011-03-16 22:54:31 +00:00
Dean Camera b47374caf5 Fix incorrectly named include guards in the Board driver header files. 2011-03-16 06:00:02 +00:00
Dean Camera fe62770a1e Added new VirtualSerialMassStorage Device Class Driver demo. 2011-03-16 05:58:58 +00:00
Dean Camera 5eb1862d54 Remove redundant Doxygen guards from the internal preprocessor definitions. 2011-03-15 09:22:39 +00:00
Dean Camera 134e018b21 Fixed Remote Wakeup broken on the AVRs due to the mechanism only operating when the SUSPI bit is set (thanks to Holger Steinhaus).
Remove redundant setting of UIDE in the AVR8 and AVR32 USB controller drivers.
2011-03-15 08:07:29 +00:00
Dean Camera 95a1aa4c01 Add named macros to the board joystick drivers where a shift is needed to maintain unique joystick direction bits in the returned mask value. 2011-03-15 06:51:50 +00:00
Dean Camera b35f93a372 Implemented on-demand PLL clock generation for the U4, U6 and U7 series USB AVRs when automatic PLL mode is specified. 2011-03-15 06:39:34 +00:00
Dean Camera 0111fb515d Oops - fix internal serial number extraction routine for the AVR8 architecture. 2011-03-14 00:24:14 +00:00
Dean Camera ea361a0d30 Correct Endpoint/Pipe maximum constants for the AVR32 UC3 models. 2011-03-14 00:03:30 +00:00
Dean Camera 02dfd7dc3d Simplify the internal serial extraction routines for each architecture. 2011-03-13 23:32:32 +00:00
Dean Camera a7eca42996 Add experimental support for the AVR32 UC3A4 microcontrollers.
Add support for the inbuilt unique serial numbers in the UC3A3 and UC3A4 models.
2011-03-13 22:42:08 +00:00
Dean Camera 81fd8d4004 Re-add accidentally deleted Host_UC3.c and Host_UC3.h files. 2011-03-13 22:02:07 +00:00
Dean Camera 944e0d2009 Rename UC3B driver files to UC3, as they are generic to all AVR32 UC3 models. 2011-03-13 21:53:19 +00:00
Dean Camera 6005a42150 Add experimental support for the UC3A0, UC3A1 and UC3A3 series AVR32 microcontrollers. 2011-03-13 21:25:05 +00:00
Dean Camera 13e2f71f15 Simplify AVR32 UC3B software FIFO, as it will only ever be accessed a byte at a time to prevent data alignment issues. 2011-03-11 07:03:34 +00:00
Dean Camera c8a438d66c Add structure padding to the appropriate descriptor structures to maintain correct alignments on larger architectures.
Fix EVK1101 swapped joystick Right/Down masks.
2011-03-11 06:47:39 +00:00
Dean Camera e4b3e3fc65 Fix UC3B architecture compile errors and ensure the architecture can be compiled with no special makefile tokens defined. 2011-03-05 16:36:57 +00:00
Dean Camera 8b13f7f89a Endpoint_ResetFIFO() renamed to Endpoint_ResetEndpoint(), to be consistent with the Pipe_ResetPipe() function name.
Fix undefined error in Pipe_UC3B.h.

Add missing migration notes.
2011-03-05 16:30:57 +00:00
Dean Camera 1e3d892b6a Add software FIFOs to the UC3B pipe control interfaces, to match the endpoint control interfaces. Fix incorrect endianness for the Endpoint/Pipe read and write routines. 2011-03-05 12:13:35 +00:00
Dean Camera b763c3f33e Porting updates for the UC3B architecture - get UC3B partially enumerating using a modified mouse demo on the EVK1101. Implement a software FIFO for the endpoint banks; datasheet hints that this can be done through hardware as on the AVR8 architecture, but the correct method to do this not discovered yet. 2011-03-05 11:34:04 +00:00
Dean Camera c1c94fe5a0 Fixed Still Image Host class driver exiting the descriptor search routine prematurely if the data pipes (but not event pipe) is found.
Fixed missing call to Pipe_SetInfiniteINRequests() in the Pipe_ConfigurePipe() routine.
2011-03-03 19:32:27 +00:00
Dean Camera 8c6f26e19d Add in USB_INT_RegisterHandlers() internal function to register the interrupt handler routines used by LUFA. Add dummy loads after clearing the interrupt lines according to the datasheet.
Add in temporary global interrupts enable/disable macros.
2011-02-28 22:30:40 +00:00
Dean Camera 86a2be8536 Fix EVK1101 board joystick driver movement masks. 2011-02-27 23:05:46 +00:00
Dean Camera 29ba88cffd Add code to start the USBB Generic Clock from the user-specified master clock source (OSCx or PLLx) in the AVR32 UC3B core USB driver. 2011-02-27 22:06:31 +00:00
Dean Camera c79f6e2586 Oops - ensure that only the relevant/available interrupts are defined and used on each architecture.
Make all USB driver headers include USBMode.h first, to ensure that the relevant USB mode macros are defined.
2011-02-27 20:38:47 +00:00
Dean Camera 04526d284d Changed over the AVR8 USB controller interrupt management macros to be inlined functions instead, for better compile-time validity checking and to keep the per-architecture source files as uniform as possible. 2011-02-27 20:00:15 +00:00
Dean Camera 92b3553a07 General cleanup and more port work to the AVR32 UC3B. 2011-02-27 18:25:29 +00:00
Dean Camera 4a3b70e727 Fix USB Host mode compile errors for the UC3B architecture. 2011-02-27 15:23:09 +00:00
Dean Camera 381dd0d490 Move out common architecture-independent core definitions into the appropriate core dispatch header files. 2011-02-27 14:39:49 +00:00
Dean Camera f3f481183a More AVR32 UC3B architecture ports - USB device mode applications can now be sucessfully compiled, although they will be currently non-functional. 2011-02-27 14:04:29 +00:00
Dean Camera cf2411435c Removed Pipe_ClearErrorFlags(), pipe error flags are now automatically cleared when Pipe_ClearError() is called.
More UC3B architecture porting.
2011-02-26 20:22:33 +00:00
Dean Camera 66c38cd940 Added TWI baud rate prescaler and bit length parameters to the TWI_Init() function (thanks to Thomas Herlinghaus). 2011-02-26 15:57:06 +00:00
Dean Camera 6f01b6afd5 More UC3B architecture port updates. 2011-02-26 15:54:11 +00:00
Dean Camera a318f32b31 Update board driver common APIs to use uint_reg_t. 2011-02-20 19:18:06 +00:00
Dean Camera 86be7f9330 Fix incorrect Doxygen grouping in the incomplete AVR32 UC3B architecture port. 2011-02-20 18:27:09 +00:00
Dean Camera 3a00e41639 Make sure the peripheral driver .c files include the driver dispatch header, rather than the architecture specific header files. 2011-02-20 18:23:09 +00:00
Dean Camera b6a3c78fa3 Rename architecture specific driver files, to make them appear with uniquely identifying filenames in the documentation. 2011-02-20 18:21:04 +00:00
Dean Camera cad5e9ffca Added start of a port of the core USB driver code to the AVR32 UC3B architecture. 2011-02-20 17:53:17 +00:00
Dean Camera f3ec62b5c6 More updates to remove architecture-specific comments from the documentation, alter USBMode.h preprocessor logic to support future architectures more easily. 2011-02-20 14:43:13 +00:00
Dean Camera 28a1ee29a1 More Doxygen updates for multiple architecture support. 2011-02-20 14:07:20 +00:00
Dean Camera 5e73190582 Start update of documentation to support possible multiple architectures in the future - alter \file documentation to automatically copy in the module documentation where possible. 2011-02-20 13:08:29 +00:00
Dean Camera 1daa5e16f9 Initial restructuring of the core USB driver module to support multiple architectures in the future. 2011-02-19 22:59:27 +00:00
Dean Camera 3832182fe1 Fix documentation glitches from the restructuring changes. 2011-02-19 18:53:30 +00:00
Dean Camera e0a3f26978 Move out Dataflash IC command constants headers into the general LUFA/Drivers/Misc/ directory rather than duplicating them inside the individual board driver folders. 2011-02-19 18:45:50 +00:00
Dean Camera 3d4d8e7f62 Add new ARCH option to the makefiles to (eventually) specify the target device architecture. Update non-usb peripheral drivers to reflect future multiple architecture support. 2011-02-19 18:37:22 +00:00
Dean Camera 100a197d0e Reduced latency for executing the Start-Of-Frame events (if enabled in the user application). 2011-02-19 12:09:55 +00:00
Dean Camera 4344b0621d Added board driver support for the Sparkfun ATMEGA8U2 breakout board. 2011-02-16 21:00:46 +00:00
Dean Camera 0019fbd129 Add more const-ness to the stream endpoint/pipe functions where possible. 2011-02-13 21:27:24 +00:00
Dean Camera 272d446d32 Fix include path in the library RingBuffer.h header file. 2011-02-12 00:08:05 +00:00
Dean Camera 782614dbb5 Add static keyword to all project globals whose scope should be restricted to the same module as they are declared in.
Tighten up the HID class bootloader code slightly, document that it currently exceeds 2KB of bootloader space for all models other than the Series 2 USB AVRs.
2011-02-10 17:55:49 +00:00
Dean Camera 73718d7c57 Fixed incorect BUTTONS_BUTTON1 definition for the Minimus board. 2011-02-02 15:31:45 +00:00
Dean Camera 43b9d552bb Renamed all driver termination *_ShutDown() functions to the more logical name *_Disable(). 2011-01-30 23:12:06 +00:00
Dean Camera 43c4735305 Renamed the PRNT_Host_SendString(), CDC_Host_SendString() and CDC_Device_SendString() functions to *_SendData(), and added new versions of the *_SendString() routines that expect a null terminated string instead.
Added new Serial_SendData() function to the Serial driver.
2011-01-30 21:02:31 +00:00
Dean Camera afd828c095 Removed SerialStream module, rolled functionality into the base USART Serial peripheral driver instead through the new Serial_CreateStream() and Serial_CreateBlockingStream() methods.
Renamed the Serial byte send/receive functions to remain consistent with the CDC driver's byte functions.

Altered the serial byte receive function to make it non-blocking.
2011-01-30 19:47:31 +00:00
Dean Camera 30f6d2bfd8 Oops - forgot to add in LOGICAL MINIMUM and LOGICAL MAXIMUM report items into the standard library Joystick HID report descriptor macro. Add in support for joystick resolution reporting via PHYSICAL_MINIMUM and PHYSICAL_MAXIMUM items. 2011-01-30 14:40:24 +00:00
Dean Camera e6dc951630 Add new HID_DESCRIPTOR_VENDOR() macro, change over all projects and Device ClassDriver demos to use it.
Fix reversed byte ordering of multi-byte HID data.

Added support to the HID parser for extended USAGE items that contain the usage page as well as the usage index.

Removed the HID_IOF_NON_VOLATILE and HID_IOF_VOLATILE flags from HID INPUT items where the flag is invalid. Changed over HID OUTPUT items to use HID_IOF_NON_VOLATILE.

Change over MagStripe project to use HID_DESCRIPTOR_KEYBOARD() for its HID report. Change over MouseHostDevice demo to use HID_DESCRIPTOR_MOUSE() for its HID report.
2011-01-30 14:14:04 +00:00
Dean Camera a852ea8e43 Added new KeyboardMouseMultiReport Device ClassDriver demo.
Fixed ReportID not being removed from the feature/out report data array in the HID class driver when Report IDs are used.

Added new MAX() and MIN() convenience macros.
2011-01-26 21:33:07 +00:00
Dean Camera 6c7ed7ecd6 Added new HID_DESCRIPTOR_MOUSE, HID_DESCRIPTOR_KEYBOARD and HID_DESCRIPTOR_JOYSTICK macros for easy automatic creation of basic USB HID device reports. 2011-01-23 20:02:51 +00:00
Dean Camera ef44b8c036 Fixed incorrect definition of the HID_KEYBOARD_SC_RIGHT_ARROW constant in the HID class driver (thanks to Joby Taffey).
Add in newHID_KEYBOARD_SC_POWER keyboard scancode constant.
2011-01-17 23:11:13 +00:00
Dean Camera efd57cfe51 Abuse the the C preprocessor so that the HID macros can automatically encode data into the array from the HID macros automagically, by specifying the bit-width of the data, and the data itself as a single integer value of that width. 2011-01-17 19:44:48 +00:00
Dean Camera 47fec03694 Fixed several functions in the Host mode Still Image Class driver returning an error code from the incorrect error code enum (thanks to Daniel Seibert). 2011-01-16 23:13:54 +00:00
Dean Camera 787869c2fd Minor documentation corrections for the new HID report item constant defines. 2011-01-16 19:41:26 +00:00
Dean Camera 039a714ee4 New HID report item macros (with HID_RI_ prefix) to allow for easy creation and editing of HID report descriptors.
Changed over all project and demo HID report descriptors to use the new HID report item macros.

Moved the HIDParser.c source file to the LUFA/Drivers/USB/Class/Common/ directory from the LUFA/Drivers/USB/Class/Host/.
2011-01-16 19:34:28 +00:00
Dean Camera 32830a2b82 Added new ADC_GET_CHANNEL_MASK() convenience macro to the ADC driver. 2011-01-16 16:13:22 +00:00
Dean Camera 70d55f6e0c Added new high level TWI packet read/write commands, altered behaviour of the TWI_StartTransmission() function.
Spell check source code files.
2011-01-13 22:56:49 +00:00
Dean Camera 187ccb2e15 Fix typos and outdated information. 2011-01-10 21:53:38 +00:00
Dean Camera 154f934b22 Call USB_USBTask() in the Endpoint stream functions between packets if INTERRUPT_CONTROL_ENDPOINT is not set. Remove calls to USB_USBTask in the Mass Storage class driver stream read/write continuation checks, since this is now done inside the stream function. 2011-01-10 18:56:34 +00:00
Dean Camera f555ad7ced Altered all endpoint/pipe stream transfers so that the new BytesProcessed parameter now points to a location where the number of bytes in the transfer that have been completed can be stored (or NULL if entire transaction should be performed in one chunk).
Added new Endpoint_Null_Stream() and Pipe_Null_stream() functions.

Removed the NO_STREAM_CALLBACKS compile time option due to the new partial stream transfer feature replacing it.

Fixed errors in the incomplete Test and Measurement device demo preventing proper operation (thanks to Pavel Plotnikov).
2011-01-10 18:43:34 +00:00
Dean Camera 477a2047f4 Oops - fix type preventing compilation of demos using the class drivers. 2011-01-08 15:54:57 +00:00
Dean Camera 7dc3d3a68f Minor documentation improvements. 2011-01-08 11:47:20 +00:00
Dean Camera d126146887 The FAST_STREAM_TRANSFERS compile time option has been removed due to lack of use and low cost/benefit ratio.
Add GCC_FORCE_POINTER_ACCESS() macro use to the RingBuffer library header, to attempt to force GCC into producing more efficient code for manipulating the buffers.
2011-01-08 00:54:30 +00:00
Dean Camera a49b5bfd8a Update Doxygen documentation configuration file for the main project documentation to the latest version. Add missing data structure documentation briefs. 2011-01-03 20:13:06 +00:00
Dean Camera 1d433d4506 Update copyright year on all source files. 2011-01-01 13:00:56 +00:00
Dean Camera b8fd4dd51c Fixed incorrect byte ordering in the Audio_Device_WriteSample24 function (thanks to WZab). 2010-12-31 15:03:57 +00:00
Dean Camera 64fe1cd0b2 Rename RingBuffer header functions and typedefs from RingBuff_* to RingBuffer_* so that it matches the header name. 2010-12-31 14:47:20 +00:00
Dean Camera cb9ef559a0 Fixed inverted Minimus board LEDs. 2010-12-28 22:07:31 +00:00
Dean Camera 6026b9128b Fix compile errors from the changes to the SerialStream and board Temperature drivers. 2010-12-26 15:44:10 +00:00
Dean Camera c05e7cd7d9 More minor documentation corrections. 2010-12-26 15:09:27 +00:00
Dean Camera a8b66f318d Documentation improvements - put driver example code into its own section, fix incorrect and missing section names. 2010-12-26 14:55:26 +00:00
Dean Camera 2073b96d82 Added basic driver example use code to the library documentation.
Made the USARTStream global public and documented in the SerialStream module, allowing for the serial USART stream to be accessed via its handle rather than via the implicit stdout and stdin streams.
2010-12-26 14:25:34 +00:00
Dean Camera 39ac72f2d1 Make a new general RingBuffer.h misc library driver, instead of the per-application LightweightRingBuff.h ring buffers. Change over projects to use the new driver.
Add ORDERED_EP_CONFIG to the device Projects (only) that use only a single class driver, or where the endpoint ordering is fixed, to save on compiled binary size.

Added new GCC_FORCE_POINTER_ACCESS() macro to correct GCC's mishandling of struct pointers.
2010-12-26 13:01:37 +00:00
Dean Camera bfa622d27e Much more efficient algorithm for the Endpoint/Pipe configuration routine of unordered endpoints/pipes - only reconfigure the endpoints and pipes above the newly configured endpoint/pipe, and don't cache existing endpoint/pipe configuration before use to save SRAM. 2010-12-24 18:06:55 +00:00
Dean Camera ec537fd84d Re-add in old Endpoint/Pipe workaround for unordered pipes - add new ORDERED_EP_CONFIG compile time option to override the workaround and use the previous behaviour that imposes correct Endpoint/Pipe ordering but produces smaller compiled code. 2010-12-24 17:05:41 +00:00
Dean Camera 0aa950c241 Fixed incorrect definition of the HID_KEYBOARD_SC_D constant in the HID class driver (thanks to Opendous Inc.).
Add extra comments to the ISPTarget.c source file in the AVRISP-MKII clone project.
2010-12-13 06:05:05 +00:00