LUFA 090605 Released

I’ve gone ahead and released the next LUFA revision to the unwashed masses – get it here. This is based off the current public SVN revision and thus doesn’t have the new class-level driver APIs I’m currently working on, but I felt that it was worth pushing that forward to next month so I can get this release out the door. This release aims to simplfy and finalise the low-level APIs, serving as a stable base for future revisions. The only real difference between this release and the next as far as a the low-level APIs go will be that the pseudo scheduler (which wasn’t really a RTOS at all and caused all sorts of confusion) will be permenantly removed.

Most of the migration notes for this release center around remvoving things rather than adding – most of the abstraction macros have gone. Events now use regular function syntax and thus have easy-to-see parameters, for example, leading to clearer code. I really don’t expect much grumbling from users on this version, and none at all from the next as the low level APIs will no longer change. Everything is finally as it should be ;).

As always, the changelog is reproduced below:

  • Fixed bug in RNDISEthernet and DualCDC demos not using the correct USB_ControlRequest structure for control request data
  • Fixed documentation showing incorrect USB mode support on the supported AVRs list
  • Fixed RNDISEthernet not working under Linux due to Linux requiring an “optional” RNDIS request which was unhandled
  • Fixed Mouse and Keyboard device demos not acting in accordance with the HID specification for idle periods (thanks to Brian Dickman)
  • Removed support for endpoint/pipe non-control interrupts; these did not act in the way users expected, and had many subtle issues
  • Fixed Device Mode not handling Set Feature and Clear Feature Chapter 9 requests that are addressed to the device (thanks to Brian Dickman)
  • Moved control endpoint interrupt handling into the library itself, enable via the new INTERRUPT_CONTROL_ENDPOINT token
  • Fixed CDCHost not clearing configured pipes and resetting configured pipes mask when a partially enumerated invalid CDC interface is skipped
  • Clarified the size of library tokens which accept integer values in the Compile Time Tokens page, values now use the smallest datatype inside the library that is able to hold their defined value to save space
  • Removed DESCRIPTOR_ADDRESS() macro as it was largely supurflous and only served to obfuscate code
  • Rewritten event system to remove all macros, to make user code clearer
  • Fixed incorrect ENDPOINT_EPNUM_MASK mask preventing endpoints above EP3 from being selected (thanks to Jonathan Oakley)
  • Removed STREAM_CALLBACK() macro – callbacks now use regular function definitions to clarify user code
  • Removed DESCRIPTOR_COMPARATOR() macro – comparators should now use regular function definitions to clarify user code
  • USB_IsConnected is now cleared before the USB_Disconnect() event is fired in response to VBUS being removed
  • Fixed incorrect PID value being used in the USBtoSerial project (thanks to Phill)
  • Deleted StdDescriptors.c, renamed USB_GetDescriptor() to CALLBACK_USB_GetDescriptor, moved ConfigDescriptor.c/.h from the LUFA/Drivers/USB/Class/ directory to LUFA/Drivers/USB/HighLevel/ in preperation for the new USB class APIs
  • Moved out each demos’ functionality library files (e.g. Ring Buffer library) to /Lib directories for a better directory structure
  • Removed Tx interrupt from the USBtoSerial demo; now sends characters via polling to ensure more time for the Rx interrupt

As you can see, most of it is actually bug fixes rather than new additions, another sign that stability is finally comming to the project.

Those who wish to check out the upcomming class driver changes can do so – see this thread for details.

 

Comments: 2

Leave a reply »

 
 
 

Reference. I have downloaded your program and run it. My application is that AT90USB run as usb host to access usb disk. During the stablity test,AT90USB cann’t read and write usb disk stably. After I modify the function MassStore_WaitForDataReceived() in the Demos\Host\MassStorageHost\MassStoreCommands.c, test is stable. The methods is avoiding of freeing the DATA IN and DATA OUT pipe simultaneity. You can verify it.

 

Truth, I’d like to discuss this in further depth via email with you, as it sounds interesting. Please send me an email at dean at fourwalledcubicle dot com outlining exactly what changes you’ve made to correct the demo.

Cheers!
– Dean

 

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