Miz-spelingz

I’m currently right in the middle of my mid-year exams, so I’m not heavily developing like I normally am — but I have managed to squeeze in a little bit of coding over the last week in between the studying and blind, crippling panic. As such, there’s no great triumphs to report just yet, only some small wins.

Firstly, I’ve spell-checked the LUFA codebase again, including (for the first time) the manual pages. I’m well known for atrocious, terrible, awful and all-round bad spelling, so this at least should make the manual text look a little more professional. I managed to misspell “mispell” in the changelog when reporting some other spelling corrections a long time ago, which just about caused my computer to implode in a fit of irony. On the plus side, since I spell checked the actual code a while back, the new changes are cosmetic only. Nothing worse than finding the API of a library has functions with misspelled names, something I’ve endured first hand with a terrible PHP mailing list library.

Secondly, for those who missed it the first time, there’s a new Mercurial mirror for the LUFA codebase, to compliment the existing Subversion and GIT repositories. They’re all synced to the same code on my machine, so which you use is up to you. Convenience is best!

Also, I am still working on getting RFCOMM up and running for my Bluetooth stack. I’m in the process of adding all the control-channel multiplexer commands needed to establish channels between devices, and on the whole I’m fairly happy. My Linux machine no longer reports any errors when trying to send data to my LUFA device via RFCOMM, although the actual data is queued forever as my code does not yet send the proper “go ahead” flags the sender requires before it will transmit.

Actually, working on Bluetooth has made me realize just how amazing it is that anything we use actually works at all. I shudder to think of the layers of code involved in such complicated schemes such as visiting a website on a PC through tethered bluetooth phone. The transport alone would involve at least L2CAP, HCI, TCP, IP, PPP, and HTTP, and that’s just for a “simple” request. The biggest accomplishment your computer will ever achieve is turning on — anything else it does is just a bonus. In the case of my cheap Toshiba laptop, that “extra” functionality is promptly turning off again when I try to use it due to overheating caused by me being cheap and buying a poorly designed laptop.

I’ve also been pondering the possibility of adding hub support to LUFA again, which was on my mind a while back ever since Atmel told me it wasn’t possible, before adding it to their own stack. Granted, it’s only possible in a limited manner, but even that would be enough for many applications. My last attempt caused me to get tangled up in some of the details, so I’ll be mocking up the APIs again first this time so I can get a handle on how it would work. Right now I’m thinking of having it as a separate Hub class driver, which would internally handle the device “context switches” needed to reconfigure the pipes and set the Host address.

My server logs indicate quite a number of people accessing this page (that aren’t bots), which I found rather astonishing — after all, I wouldn’t read this junk. However, since I know people are reading this, I get the opportunity to reach out to you all and invite you to prioritize my LUFA development. Let me know what order I should be tacking the following – and add your own requests if you wish!

  1. Bluetooth Stack
  2. USB-TMC Demos/Class Drivers
  3. Hub Support
  4. AVR32 Port
  5. ARM Port
  6. Better Documentation and Tutorials
  7. Compiler Ports
 

Comments: 14

Leave a reply »

 
 
 

Number 6 should be number 1

More emphasis should be made to small modular examples instead of simply providing example projects.

Although I figured out my way around Doxygen somewhat, it still sucks

Can you setup a custom Google search and only target within the LUFA documentation?

 

1. Bluetooth Stack
2. Bluetooth Stack
3. Bluetooth Stack

😉

 

1. Bluetooth stack
2. Better documentationand Tutorials
3. Hub Support
4-7 If you can be bothered 🙂

 

My preference
5 ARM Port – This would make ports to other architectures easier too like AVR32
6 Better documentation
7 Compiler ports (ANSI C and portable)
3 Hub Support

 

Hello all,

I’m very interested to the RFCOMM end Bluetooth Stack.

I would like to add a BT Device to my project:

http://web.tiscali.it/mirkougolini/

Now I use a RFCOMM module from Sure electronics.
The best form be shoud be to add a USB ATMEL device that support LUFA and use a normal BT US Dongle for comunicate to my MC with a JAVA Midlet that I developed usign LWUIT framefork from SUN.

In witch level is the RFCOMM developing stadium in LUFA?

Do you mean that it will be possible to test it for me?

Great job Dean.

Go head!!!

Mirko Ugolini

 

Mirko,

Eventually yes, you will be able to use a USB AVR that supports USB Host mode (AT90USB1287 or AT90USB647) and standard Bluetooth USB dongle from any vendor. I’ll be implementing several Bluetooth classes, but currently I am working on RFCOMM to emulate a wireless serial port between a PC and the AVR. You can test out the code now by grabbing the latest revision from the LUFA Subversion, Git or Mercurial mirror, and compiling the Demos/Host/Incomplete/BluetoothHost demo code.

It’s not functional yet (the RFCOMM layer is incomplete) so the most you can do is connect to it from a PC and open the virtual serial port it creates, but the actual data transmission won’t work on most hosts until the RFCOMM control layer is finished. I’m currently in the middle of my exams so I’ve stopped working on it temporarily, but will continue in a week or two.

– Dean

 

Hi Dean,

I wish you good luck for your next exams.
I think that I’ll wait untill you finish to develope the RFCOMM module.
Please keep us update in the evolution of the LUFA project.
And more please introduce some minimun tutorial for the use of Bluetooth dongle.
and if possible to have a pdf guide il woul be better.

Regards

Mirko

 

My thoughts on the hub support is to support hubs during enumeration only. This allows you to find and address end devices with embedded hubs. After enumeration, it is difficult to support multiple addresses, including the hub address interrupts. I would call this useful enumeration capability hub hopping, not hub support.
Of course full hub support would be great !

 

That’s a good idea, but if I implement some of the hub control code I might as well add it all – with a compile time option to restrict it to “hopping” mode instead. Frankly I’m not convinced that the tiny USB AVRs will be able to keep up with more than two low speed USB devices connecting through a hub, since anything else would probably time out before the host has time to reconfigure the pipes and read in the next packet. I’ll make for a neat experiment either way.

– Dean

 

After the problems with endpoint swapping on the fly, I too fear the same problems with address swapping. The hopping would not require simultaneous use of multiple addresses. After enumeration and setting the hub port, you could handle as a single device.
This would cover those devices with a built in hub (some bluetooth and flash memory)

 

Interested in USBTMC. If you need a beta tester please shout.

 

Hi,

Just a tip: Your laptop overheating problem migth be due the dust sucked in by it’s fans.

At least that’s my case. From time to time I have to take it appart piece by piece and clean it.

Although a it’s bit of a pain, once you’re done you’d seem to have a brand new laptop.

Regards,

 

I’m certain that’s the case – I just need to figure out how to open it without destroying it. Opening my laptops always freaks me out, since they’re somewhat like Chinese puzzles to get everything back in the right places afterwards.

You’d think by now they manufacturers would put in removable air filters which would be accessible without complete disassembly, like the RAM and HD usually is.

– Dean

 

The most HID keyboards have a hub inside. So it wil be very very helpfull to get HID Keyboard example running.

 

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