LUFA 100512 Released!

Ah, sweet, sweet release. I realize I’m no Linus Torvalds, but I can’t shake that happy feeling every couple of months when everything comes together and I put out an official package of LUFA which people can download and integrate into their applications. Today marks the release of the 100512 package, which contains a bunch of big fixes and little tweaks.

Unfortunately I wasn’t able to finish the Bluetooth code in time for the release, so that’s still in an “Incomplete” state, but included in the package for public review. If you don’t need LUFA-initiated connections or Service Discovery it is functional enough to use, but more likely than not the API for my incomplete stack will change between now and the period when I can call it fully functional. If you get a chance do check it out however, since being able to read in key presses from my old mobile phone is kind of, well, cool. A life goal of mine is to gut an old, (electronically) broken Pinball machine and replace it with LEDs and a nice I2C ATTINY network – but alas, it’s almost impossible to find one with only the electronics shot. I think it would be fun to add incorporate the code so that players can play pinball on a physical machine wirelessly with a Wiimote, but perhaps I’m just odd.

On the flipside however, plenty of good changes in this release. Of note, the TeensyHID bootloader which I’ve blogged about previously now works, so you can make your own Teensy boards and have them work with Paul’s GUI application, if that’s your cup of tea. I cut out the faulty software emulation mode from the AVRISP-MKII clone project and added a better timeout system, so it’s more reliable now than before, even if it does break pinout compatibility with the real thing. This release also has a “Fixed” list almost as long as my arm — I’m not sure if that indicates that this is a quality release, or I’m a terrible programmer. You decide, I guess, and post back here when everything goes to hell in a handbasket.

Digressing from the primary point here for a moment, I have to share this. Two days ago, I came home to find a letter, delivered care of the Australian postal system, origin Canada. Inside was a hand written letter, and some Monopoly Canadian money. The mail was from a Canadian named Andrew, who decided that my XPLAIN Bridge code was good enough to warrant a donation — but not just any donation. A donation involving posting actual, physical money across continents! The letter Andrew sent with it was nicely hand written, and damned funny to boot. So there you have it folks, I received my first physical donation in response to LUFA. Thanks Andrew!

Back to LUFA. Not much more to say, other than have fun, enjoy it and report back any problems you have! Thanks once again to the growing community who help support me and my project.

Download the Release here: http://code.google.com/p/lufa-lib/downloads/detail?name=LUFA-100512.zip&can=2 (This release was broken, see here for corrected version)

Online Documentation: http://fourwalledcubicle.com/files/MyUSB/Doc/100512/html/


Version 100512

New:

  • Added incomplete MIDIToneGenerator project
  • Added new Relay Controller Board project (thanks to OBinou)
  • Added board hardware driver support for the Teensy, USBTINY MKII, Benito and JM-DB-U2 lines of third party USB AVR boards
  • Added new ATTR_NO_INIT variable attribute for global variables that should not be automatically cleared on startup
  • Added new ENDPOINT_*_BusSuspended error code to the Endpoint function, so that the stream functions early-abort if the bus is suspended before or during a transfer
  • Added new EVENT_CDC_Device_BreakSent() event and CDC_Host_SendBreak() function to the Device and Host CDC Class drivers
  • Added ReportType parameter to the HID device class driver CALLBACK_HID_Device_ProcessHIDReport() function so that FEATURE reports from the host to the device can be correctly processed
  • Added ReportType parameter to the HID host class driver HID_Host_SendReportByID() function so that FEATURE reports can be issued to the attached device

Changed:

  • AVRISP programmer project now has a more robust timeout system
  • Added a timeout value to the TWI_StartTransmission() function, within which the addressed device must respond
  • Webserver project now uses the board LEDs to indicate the current IP configuration state
  • Added ENABLE_TELNET_SERVER compile time option to the Webserver project to disable the TELNET server if desired
  • Increased throughput of the USBtoSerial demo on systems that send multiple bytes per packet (thanks to Opendous Inc.)
  • Double bank CDC endpoints in the XPLAIN Bridge project, re-enable JTAG once the mode selection pin has been sampled.
  • Standardized the naming scheme given to configuration descriptor sub-elements in the Device mode demos, bootloaders and projects
  • All Class Driver Host mode demos now correctly set the board LEDs to READY once the enumeration process has completed
  • Added LIBUSB_FILTERDRV_COMPAT compile time option to the AVRISP programmer project to make the code compatible with Windows builds of avrdude at the expense of AVRStudio compatibility
  • Removed two-step endpoint/pipe bank clear and switch sequence for smaller, faster endpoint/pipe code
  • The USB_Init() function no longer calls sei() – the user is now responsible for enabling interrupts when they are ready for them to be enabled (thanks to Andrei Krainev)
  • The Audio_Device_IsSampleReceived() and Audio_Device_IsReadyForNextSample() functions are now inline, to reduce overhead
  • Removed the cast to uint16_t on the set baud rate in the USBtoSerial project, so that the higher >1M baud rates can be selected (thanks to Steffan Woltjer)
  • Removed software PDI and TPI emulation from the AVRISP-MKII clone project as it was very buggy and slow – PDI and TPI must now be implemented via seperate programming headers
  • The CDC class bootloader now uses a watchdog reset rather than a soft-reset when exited to ensure that all hardware is properly reset to their defaults
  • Device mode class driver callbacks are now fired before the control request status stage is sent to prevent the host from timing out if another request is immediately fired and the device has a lengthy callback routine

Fixed:

  • Fixed software PDI/TPI programming mode in the AVRISP project not correctly toggling just the clock pin
  • Fixed TWI_StartTransmission() corrupting the contents of the GPIOR0 register
  • Fixed TWI driver not aborting when faced with no response after attempting to address a device on the bus
  • Fixed ADC routines not correctly returning the last result when multiple channels were read
  • Fixed ADC routines failing to read the extended channels (Channels 8 to 13, Internal Temperature Sensor) on the U4 series USB AVR parts
  • Fixed LowLevel MassStorage demo broken on the U2 series USB AVRs due to unsupported double-banked endpoint modes used
  • Fixed compilation error in the AudioInput demos when MICROPHONE_BIASED_TO_HALF_RAIL is defined (thanks to C. Scott Ananian)
  • Fixed incorrect definition of HID_ALIGN_DATA() causing incorrect HID report item data alignment
  • Fixed Still Image Host class driver not resetting the transaction ID when a new session is opened, fixed driver not sending a valid session ID to the device
  • Removed invalid dfu and flip related targets from the bootloaders – bootloaders can only be replaced with an external programmer
  • Fixed Set/Clear Feature requests directed to a non-configured endpoint not returning a stall to the host
  • Fixed HID Device Class Driver not allocating a temporary buffer when the host requests a report via the control endpoint and the user has set the PrevReportINBuffer driver configuration element to NULL (thanks to Lars Noschinski)
  • Fixed device state not being reset to DEVICE_STATE_Default if the host sets a 0x00 device address
  • Fixed device not stalling configuration requests before the device’s address has been set
  • Fixed possibility of internal signature retrieval being corrupted if an interrupt occurs during a signature byte read (thanks to Andrei Krainev)
  • Fixed device state not being reset back to the default state if the host sets the address to 0
  • Fixed Set Configuration requests not being stalled until the host has set the device’s address
  • Fixed Host mode HID class driver not sending the correct report type when HID_Host_SendReportByID() was called and the HID_HOST_BOOT_PROTOCOL_ONLY compile time option is set
  • Fixed INTERRUPT_CONTROL_ENDPOINT compile time option preventing other interrupts from occuring while the control endpoint request is being processed, causing possible lockups if a USB interrupt occurs during a transfer
  • Fixed TeensyHID bootloader not working on some USB AVR models with the official TeensyLoader GUI application
  • Remove incorrect Abstract Call Management class specific descriptor from the CDC demos, bootloaders and projects
 

Comments

No comments so far.

Leave a Reply

 
(will not be published)
 
 
Comment
 
 

 

Vital Stats

  • 35 Years Old
  • Australian
  • Lover of embedded systems
  • Firmware engineer
  • Self-Proclaimed Geek

Latest Blog Posts

RSS