Thanks for the interest Andy. The project is my final work for my undergraduate masters in electronics. I may well post up the project afterwards, but technically the University owns all rights, so I'm not sure if it's quite as simple as that.
I saw the callback function using to wait for a certain character, however I feel that as the function is just checking the last character anyway, I may as well just call getc() and check for myself. Perhaps using your method would be slightly more efficient, but the margin is acceptable for me and my code was initially written without that in mind.
My main performance bottleneck currently is the SD Card which burst writes and whilst most of my acquisition cycles take 4000 us, every 4 seconds one cycle takes 20000 us or more. Unfortunately fflush() doesn't seem to force a write, and therefore this is causing my logger to lose cycles occasionally. I was actually looking at your MODDMA earlier to see if I can use that to improve things, however without a knowledge of the FATFileSystem and file i/o commands, I don't think it is as easy to implement as I would hope.
I have recently been trying to use SerialBuffered to buffer an incoming GPS stream. Whilst the buffering seemingly worked, my program also used a ticker which set a flag every 10ms causing a method to be called. My problem is that the SerialBuffered library never seems to relinquish the interrupt and the ticker never ticks. A change to using the MODSERIAL library for buffering instantly made my code work.
Cheers, Rob