LUFA 091122 Released!
Finally, some good news! I’m now free of University for the next three months, and I’m raring to jump right back into LUFA. I’ve got a billion and one new ideas, and I’m not sure which one to begin with. Still, better that than being totally out of ideas. On that note, I now need some paid work to keep me occupied – so someone hire me! Please?
Today marks yet another release of LUFA. Due to the aformentioned end-of-year University comitments this one isn’t as amazing as some of the previous releases, but it does contains a boatload of fixes and new demos showing off how the class drivers can be combined. Need a CDC+HID demo? Want a HID Dual mode demo? The new version has got you covered.
The good news from all this is that the maintenance notes are very short — only two minor items in fact, both relating to host mode only. One corrects a misnamed function, the other modifies the HID Host Parser filter callback to expose more information about each parsed item. This makes more HID filtering options possible, such as telling the difference between a non-boot Mouse and a Joystick, which differ only via the usage value applied to an item’s root node. Don’t worry, that’s now included in the samples.
I’ve also been very plesantly surprised at how easy it’s been to integrate everything together for new projects. One thing I’ve started (but not finished) is to incorporate a MassStorage+CDC device interface pair into a single project, whack in the free Petite FatFS library from ELM-Chan so that I can now have a CDC serial console, Mass Storage device and be able to read the saved files from the host inside the device. Eventually this will become a standalone programmer (where the user dumps the EEPROM/FLASH/etc. data as files onto the Drive the device will expose when plugged in, and then program via ISP boards at the push of a button without the PC later on), time permitting. For now, you can at least see how those integrate in the /Projects/Incomplete/StandaloneProgrammer directory of the download package.
In other site-related news, I’ve decided to switch to Pledgie for donations. Pledgie is a neat system which still uses PayPal as the ultimate payment gateway, but which automates the tallying of donations and records (if desired) each donator into a nice webpage. This means that people can see their donation get listed on my site tally as soon as they send it, without me having to manually manage it. You can see the new Pledgie donation button on my site front page now, and click it to get a list of all donators (or make a donation, obviously). Cool.
Although I’ve yammered on about this previously, it bears noting again: in addition to the existing Official Release packages and the online SVN mirror, there’s now a new LUFA GIT mirror for GIT Source Control users located at GitHub.
Thanks to everyone who have helped the LUFA project, through Bug Reports, Donations, Suggestions, Posts to the Mailing List or even just using it in your own projects. You all motivate me to continue working on the project. Don’t forget that I love to receive email from people detailing how they use LUFA!
DOWNLOAD THE NEW RELEASE: http://www.fourwalledcubicle.com/LUFA.php
VIEW THE DOCUMENTATION ONLINE: http://fourwalledcubicle.com/files/MyUSB/Doc/091122/html/
Changelog for the 091122 Release:
New:
- Added new Dual Role Keyboard/Mouse demo
- Added new HID_HOST_BOOT_PROTOCOL_ONLY compile time token to reduce the size of the HID Host Class driver when Report protocol is not needed
- Added new MIDI LowLevel and ClassDriver Host demo, add new MIDI Host Class driver
- Added new CDC/Mouse ClassDriver device demo
- Added new Joystick Host ClassDriver and LowLevel demos
- Added new Printer Host mode Class driver
- Added new Printer Host mode ClassDriver demo
- Added optional support for double banked endpoints and pipes in the Device and Host mode Class drivers
- Added new stream creation function to the CDC Class drivers, to easily make standard I/O streams from CDC Class driver instances
Changed:
- Removed mostly useless “TestApp” demo, as it was mainly useful only for checking for sytax errors in the library
- MIDI device demos now receive MIDI events from the host and display note ON messages via the board LEDs
- Cleanups to the Device mode Mass Storage demo application SCSI routines
- Changed Audio Class driver sample read/write functions to be inline, to reduce the number of cycles needed to transfer samples to and from the device (allowing more time for sample processing and output)
- Audio class Device mode demos now work at both 16MHz and 8MHz, rather than just at 8MHz
- The previous USBtoSerial demo has been moved into the projects directory, as it was just a modified CDC demo
- The Endpoint/Pipe functions now use the const qualifier on the input buffer
- Changed the CALLBACK_HIDParser_FilterHIDReportItem() callback to pass a HID_ReportItem_t rather than just the current item’s attributes, to expose more information on the item (including it’s type, collection path, etc.)
- Changed MouseHostWithParser demos to check that the report items have a Mouse usage collection as a parent at some point, to prevent Joysticks from enumerating with the demo
- Corrected the name of the misnamed USB_GetDeviceConfigDescriptor() function to USB_Host_GetDeviceConfigDescriptor().
- Keyboard LowLevel/ClassDriver demos now support multiple simultaneous keypresses (up to 6) per report
Fixed:
- Fixed PrinterHost demo returning invalid Device ID data when the attached device does not have a device ID (thanks to Andrei Krainev)
- Changed LUFA_VERSION_INTEGER define to use BCD values, to make comparisons eaiser
- Fixed issue in the HID Host class driver’s HID_Host_SendReportByID() routine using the incorrect mode (control/pipe) to send report to the attached device
- Fixed ClassDriver AudioOutput device demo not selecting an audio output mode
- Fixed incorrect SampleFrequencyType value in the AudioInput and AudioOutput ClassDriver demos’ descriptors
- Fixed incorrect event name rule in demo/project/bootloader makefiles
- Fixed HID device class driver not reselecting the correct endpoint once the user callback routines have been called
- Corrected HID descriptor in the Joystick Device demos – buttons should be placed outside the pointer collection
- Fixed HID report parser collection paths invalid due to misplaced semicolon in the free path item search loop
- Fixed HID host Class driver report send/receive report broken when issued through the control pipe
- Fixed HOST_STATE_AS_GPIOR compile time option being ignored when in host mode (thanks to David Lyons)
- Fixed LowLevel Keyboard demo not saving the issues report only after it has been sent to the host
- Fixed Endpoint_Write_Control_Stream_* functions not sending a terminating IN when given data Length is zero
Idea # 1,000,000,002 (also posted in the feature requestor thingy) is to add the Linux usb-device functionality to LUFA, so that LUFA can support the same proprietary serial-to-USB adapters that Linux does. 🙂