A new hope
Sometimes I wish there was a working “unsubscribe” link for life. People are just too damn difficult.
On a more positive note, it looks like the complaints I made about the current Windows SideShow implementation are actually resulting in some changes for the better. A Microsoft employee has stated that there are some new changes to the SideShow platform being unveiled at the WINHEC 2008 conference (damn my age and location!) which will make the platform much easier to implement on small embedded microcontrollers. With any luck, this means that consumers will start seeing new (low capability) SideShow devices popping up in six months or so with some useful functionality. Up until now, the platform has really been geared towards high-end microprocessors (such as the ARM series), making implementations difficult for RAM-sparse tiny 8-bit microcontrollers such as the USB AVRs.
A few weeks ago I tried my hand at a SideShow implementation on the MyUSB stack, with mixed success. After a lot of playing around I managed to get my device to enumerate correctly and even recieve XML content from the host. Where I got stuck was twofold:
1) Writing an XML parser to parse the content into a compact form for storage and display is quite involved
2) The GetCapabilities request was essentially never used for its intended purpose by the host (determining the device capabilities such as content caching, screen type, display, etc.)
I do think SideShow is a fantastic idea, and I applaud Microsoft for doing some real innovation. Where it falls down is the current system expects the SideShow device to be fairly interactive — being able to display pictures, many lines of text, take user input, cache data, display many colours, etc. How I envision SideShow is a little different; I see a host being able to push data to all manner of items with different capabilities, small or large.
For example, I wanted to make my demo device take in a Media Player widget application, and display the current song information to a 16×2 alphanumeric display. That serves as something that users can build quite easily and get a feel for the USB stack and the SideShow framework. What I got was a host which expected the device to be able to handle multiple applications at a time, and be able to display complex menus. Ideally, the host should be able to fully query the device capabilities, then push data to the display in a format suitable for that device. If the device is severely limited (such as having no user input, like my proposed song title display) customization of the widget/application should be offered on the host so that the desired data can be streamed to the device.
I’m very intereted in how this will pan out and, for once, I’m optimistic that it won’t turn out to be a complete disaster.

Loading...
Hi Dean, and many thanks for great job (I am about MyUSB library).
I think that you don’t need to write your own XML parser, because there is a lot of them already exists in the world. For example, the EXPAT parser is compact, source included and free. I am already port this parser to LVRT os (build on the top of PharLap os). I think that it is very simple to port this parser to AVR-GCC. And I think that your idea about sideshow is a great for building another example for MyUSB library.
And I have a favour to ask of you: Can you provide an example that use an USB Test & Measurement Class device (USBTMC). You can find specifications on http://www.USB.org.
P.S. Sorry for my not so hot English
Sorry, here is the link to expat: http://www.libexpat.org