Everything old is new again

MyUSB Library, Projects, Website No Comments »

The site’s back up on the new server, to hopefully fix the recent reliability problems — if you encounter any more problems using the new server, please drop me an email. Actually, the “new” server isn’t new at all; it’s the original server that Four Walled Cubicle was hosted on before it was moved some months ago to a (supposedly) better sever with no restrictions.

With the new server comes the new BETA of MyUSB 1.5.0, downloadable on the modified project page. I’ve changed the project page to include links to all the previous library releases (for archival purposes), as well as added downloads for the project documentation.

The site WIKI has been retired, in favor of a seperate documentation download generated from the new library source with the DoxyGen project. The new library is now fully documented, unlike the previous manual WIKI documentation, which should be a huge benefit to all the MyUSB library users. Unfortunately, that means that the documentation for older library versions are no longer accessible, however their interfaces are very close to the latest release.

The documentation is provided in HTML format, both online and as a ZIP download for convenience, and will be provided with each new release from 1.5.0 onwards. Users with DoxyGen already installed can forgo the documentation download, and instead build themselves by running a “make doxygen” in the root project folder.

MyUSB 1.5.0 is a BETA release for the moment, due to all the minor interface changes. I’ve taken this opportunity to rename some of the functions/events and remove unused API to make it more in line with the USB specification. Please send me an email if you encounter any problems with the BETA or mistakes in the documentation, however minor.

The changelog for MyUSB 1.5.0 BETA is:

  • Fixed MIDI demo, now correctly waits for the endpoint to be ready between multiple note messages
  • Added CDC Host demo application
  • Added KeyboardFullInt demo application
  • Endpoint and Pipe creation routines now mask endpoint/pipe size with the size mask, to remove transaction size bits not required for the routines (improves compatibility with devices)
  • Fixed AudioInput demo - now correctly sends sampled audio to the host PC
  • Shrunk round-robbin scheduler code slightly via the use of struct pointers rather than array indexes
  • Fixed off-by-one error when determining if the Usage Stack is full inside the HID Report parser
  • Renamed Magstripe.h to MagstripeHW.h and moved driver out of the library and into the MagStripe demo folder
  • Added preprocessor checks to enable C linkage on the library components when used with a C++ compiler
  • Added Still Image Host demo application
  • The USB device task now restores the previously selected endpoint, allowing control requests to be transparently handled via interrupts while other endpoints are serviced through polling
  • Fixed device signature being sent in reverse order in the CDC bootloader
  • Host demos now have a seperate ConfigDescriptor.c/.h file for configuration descriptor processing
  • HostWithParser demos now have a seperate HIDReport.c/.h file for HID report processing and dumping
  • Removed non-mandatory commands from MassStorage demo to save space, fixed SENSE ResponseCode value
  • CDC demos now send empty packets after sending a full one to prevent buffering issues on the host
  • Updated demo descriptors to use VID/PID values donated by Atmel
  • Added DoxyGen documentation to the source files
  • Fixed Serial_IsCharRecieved() definition, was previously reversed
  • Removed seperate USB_Descriptor_Language_t descriptor, USB_Descriptor_String_t is used instead
  • Changed USB_GetDescriptor() prototype to support multiple languages
  • Removed unused Device Qualifier descriptor structure
  • Renamed the USB_CreateEndpoints event to the more appropriate USB_ConfigurationChanged
  • Fixed MassStorageHost demo reading in the block data in reverse
  • Removed outdated typedefs in StdRequestType.h, superceeded by the macro masks
  • Corrected OTG.h is now included when the AVR supports both Host and Device modes, for creating OTG products
  • USB_DeviceEnumerationComplete event is now also fired when in device mode and the host has finished its enumeration
  • Interrupt driven demos now properly restore previously selected endpoint when ISR is complete
  • USB_HOST_TIMEOUT_MS is now overridable in the user project makefile to a custom fixed timeout value
  • Renamed USB_Host_SOFGeneration_* macros to more friendly USB_Host_SuspendBus(), USB_Host_ResumeBus() and USB_Host_IsBusSuspended()
  • Renamed *_*_Is* macros to *_Is* to make all flag checking macros consistant, Pipe_SetInterruptFreq() is now Pipe_SetInterruptPeriod() to use the correct terminology

Thank you to all those who sent in bug reports and feature requests since the last library release. I’ve also added links to the four projects that I know of which make use of the MyUSB library on the project page — if yours is omitted leave a comment or an email and I’ll add it in.

Back on the air

General, MyUSB Library, Projects, Website No Comments »

My apologies for the downtime yesterday. Haven’t a clue what caused it — looks like a problem with the server provider. Whatever the reason, everything is once again working as it should.

I’ve given my blog a little bit of a face lift via a new WordPress theme. I actually stumbled upon it while looking for a theme for the comical “Glacial Pace” blog my University friends are planning on starting up (based around my friend’s notoriously slow eating pace). While I can’t be certain, the new theme carries distinct similarities to the old, so it probably a newer version by the theme author. In any case, it spruces things up slightly without radically altering the design of the blog so I’ve switched to it.

Based on the few comments to my last entry plus research of my own, I’m thinking of leaving the Ethernet-Over-USB project for a little while. I’ve re-opened my unreleased “StillImageHost” demo code, which will eventually allow PIMA-compatible USB cameras (that’s anything which enumerates as a camera device rather than a Mass Storage device under Windows) to be controlled via the USB AVRs. I’ve already got a few of the commands working, so expect more progress on that soon.

Wordpress Update

Website No Comments »

Last night I finally got around to updating Wordpress to the newest version. As is the norm with all updates, the new version completely broke everything. I’ve since fixed all the problems I can find, but please leave a comment if you notice anything else not quite right.

New Sever, New Demo

MyUSB Library, Projects, Website No Comments »

Thanks to Angus, my younger and richer peer on AVRFreaks, my site is now hosted on a newer and faster server. That should reduce bottlenecks and prevent popular files like the high-resolution DB101 photos I posted from killing the site response.

Although it’s most unlike me, I decided to give up on getting the Audio Out feature unit working. It’s not really needed anyway; it just means that there is no master controls for the USB speaker - the individual mixer sources are still changeable. It’s only a demo after all, and I had run out of ideas as to how to solve the problem.

As a bit of good news however, with the completion of the Audio Out project (which now supports mono mixed, stereo and LED output modes) comes a similar but subtlety different Audio In project. This demo shows the library being used as an audio in source, a USB microphone.

I’ve just about run out of library demo ideas (feel free to comment with some!) so with the completion of the USB Mass Storage Host demo, I will focus on fixing all remaining bugs and missing features, then release it as MyUSB 1.0. The demo list now is quite impressive if I do say so myself:

  • Audio In Device
  • Audio Out Device
  • CDC Device
  • General Library Test Application
  • Joystick Device
  • Keyboard Device
  • Keyboard Host
  • Keyboard Host (Using Pipe Interrupts)
  • Magnetic Card Reader Device (based on Keyboard demo)
  • Mass Storage Device
  • Mass Storage Host (INCOMPLETE)
  • Mouse Device
  • Mouse Host
  • Mouse Host (Using Pipe Interrupts)
  • USB-RS232 Device (based on CDC Device demo)

University - End of Year 1

MyUSB Library, Projects, University, Website No Comments »

Tomorrow will be my final day at University for my first year of my EE/CS double degree, with only exams left to do. It’s quite scary - I still feel like I’ve only just walked through the doors!

Some more minor updates to the MyUSB library, with the code again updated on the project page. I’ve put off updating the mouse example while I stabilize the new changes, to avoid doing the same work twice. The latest update moves the user device routines from a seperate file in the MyUSB configuration folder out into their own hookable events. That’s quite neat - now if the events are unused, the user application can just not specify an event handler for them rather than having to compile and link files that contain empty functions. It also allows me to deprecate them in the future easily, which is also a huge plus.

With that configuration file gone, the only one left is the descriptors configuration files. That’s what I wanted - now updating the library should be as simple as pasting the old over the new, with only the descriptors file needing to be preserved. Much cleaner than having to retain (and update if the new library version has modified) a whole bunch of configuration files.

On the examples front, I should be able to release a keyboard example soon, thanks to the work of Denver Gingerich (barring licensing negotiations for the keyboard descriptor he’s used from a different USB project). Once the library has become stable I hope to work on quite a few examples for it, including a CDC example (virtual serial port) and possibly even an audio example if it’s possible with the hardware.

On a final note to those who are curious, the following is an image showing the bandwidth consumed by my site on the server since it was put online early this year:

Bandwidth 2007

The notable sections are numbered.

1) Site uploaded and made available to the public
2) Blog started and advertised on AVRFreaks
3) Initial DB101 Review
4) High Resolution DB101 Photos

Seems there are a lot of people out there interested in the new board!

Terminally Busy

AI Space Game, Projects, Website 1 Comment »

Since quite a lot of people are finding this site due to my blog post about my HL-340 USB to Serial adapter - presumably looking for the driver - I’m going to be a good Samaritan and upload it for public download. Get your HL-340 driver here! I have nothing to do with the adator or the drivers, so please don’t email me hoping I’ll be able to provide technical support; chances are I’m as totally clueless as you are.

I’ve also uploaded the latest source code to my Java Space “game”, which is available from the new site page here. I’ve been heavily reworking the backend code, which now uses a slower, but MUCH nicer ArrayList to store the game objects. I’ve been opting for ease of use over speed for the latest revisions - battles shouldn’t be more than one or two thousand ships at the extreme, and the simplified vector routines and ArrayLists make for a much more accessible and pleasant coding experience.

I’m still modifying the game code, and adding new features. New is a function to turn on or off gravity effects for bullets - so you can code some dastardly AIs that can “throw curve balls” using nearby planets.

Mutual attraction

AI Space Game, Projects, Website No Comments »

Plenty of visitors to my site from AVRFreaks since I put up the link to my DB101 board review a few days ago - well more than usual anyway, with an average of about 40 unique users each day visiting some portion of my site. Actually, I’m quite frankly surprised that there hasn’t been much discussion of the DB101 board online, sans for a few posts in a single AVRFreaks thread. I hope that will increase once others start getting the boards into their sweaty palms, as it really is a great board.

A few days ago I posted my space game to a discussion board about an old game (now free and open source) called Star Control, from which I “borrowed” the basics of the gameplay from. The response was a little less interested that I had hoped for - and in several cases, downright hostile - but I’m continuing with it regardless. To make it more interesting I’ve just finished adding planets with gravity and collisions.

Also new is the playfield scaling, where in the graphics mode the arbitrarily sized playing field can be scaled to fit the chosen size of the applet. Both of these features are visible in the below screenshot:

Space Game with Planets and Scaling

A zip archive with the current game source is available for download here in case anyone wants a gander at it. It’s unfinished and my first working game, so go gentile with the criticism! Actually, I wouldn’t mind chatting with someone experienced with this sort of thing, so I can get some ideas on how to structure the game. While this is really just an exercise I want to do for myself, I’m nevertheless interested in knowing how the “real” games work under the hood.

Citation Needed

MyUSB Library, Projects, Website No Comments »

I decided after a brainwave before to move the MyUSB documentation out of the clunky document I was manually formatting and restructuring into a new Wiki on my site. I’ve chosen a lightweight, basic Wiki that suits my needs (for now).

All the current documentation has been added for the MyUSB project, and I’ll begin documenting the current USB API tomorrow - although that will be changing very frequently as needed in the future. I think the Wiki’s a better way to get the information online sooner in an easily-editable form.

Check out the MyUSB entry - in the future I will most likely start adding in entries for past projects, adding project documentation, examples and the like.

Is this thing on?!

General, Website 1 Comment »

Well, I’ve decided to take the plunge into the world of blogging, at least as an experiment for a while. Quite possibly this will be abandoned to the wilds of the Internet in only a few short days, possibly longer. Or possibly, just perhaps, I’ll continue to maintain this for an extended time.

I won’t be posting here every day, I shall spare users the drudgeries of reading the ramblings of yet another soul’s life in this world. In here I’ll mainly post about my University course, my personal projects (and their development) and the like - things that interest me, but will also interest fellow technology/electronics minded geeks.

Let’s see how this pans out.

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in