Just a quick update for those of you who use this program. (Cross-posted here from my own site because I know a number of you on this forum use it.)

My primary focus right now is getting the connection code to the GPS device solid and stable. This actually goes hand in hand with getting the problem of gracefully handling hibernation and unhibernation (which I know is a vital feature a lot of people).

Right now the program is made up of two projects. One is the Windows app itself, and all of its UI and so forth. The other was basically an NMEA parser with attributes to store the current GPS data being returned from the parser. I say was because that is changing with this next version. I'll explain how.

The connection code to the serial port used to be in the Windows app project and it would handle connecting, disconnecting, and so forth. This worked fine, but didn't really mesh totally smoothly and was turning out to be harder to extend as I started adding more functionality. The other drawback was that if I wanted to include my NMEA parser project in another GPS app (I have more I want to make), then I'd have to duplicate all the serial connection code in the new app. Not cool.

I am now in the process of getting all the connection code moved into the NMEA parser project and making sure all the logical flows work correctly, especially in regard to handling broken connections, errors, dead (but still open) connections, suspend/resume (for hibernate/unhibernate), and so forth. This is quite a significant code change, so it's taking a little while to do.

The big advantage of moving this connection code into the NMEA parser project is that the project is now really a full-out, self-contained GPS device class. Because it is totally self-contained and can be included in other applications, it makes it a snap to make other applications GPS-enabled.

So, while this update really isn't changing anything on the front-end, it is making the back-end much more robust, more extensible, and all around easier to work with. This means that adding new features will be a faster process and more reliable.

I wasn't feeling well last week, so progress was quite slow, but I'm better now and getting back into it. I'll be sending out test releases to a few testers, and then a public release soon after that if all reports are good. If you'd like a test release, let me know and I'll get you on the list.

I should mention briefly that progress is far enough along that I have tested hibernation/unhibernation and it now works, so that's good news.