Chaeron GPS Library - Version 1.02

02/20/2003


Version History

02/20/2003 - Version 1.02:

- Fixed a bug in the calculation of Garmin Packet Data Length (due to unsigned byte to signed int conversion, thanks to Simon Rowe for pointing this one out).
- Added specification of a Palm Creator ID to SuperWaba build, so that the GPSDemo app will run with the latest SW 3.4 release
- Modifed Ant build.xml so that aJile targets (source not included for aJile/JStamp platforms) are not built for composite targets

02/11/2003 - Version 1.01:

- Fixed a bug in the parsing of NMEA GSV (Satellites in View) sentences so that values are assigned correctly (thanks to Keith Chew for pointing this one out).
- Changed Ant build file so that it specifies target="1.1" for javac compiles so that classes will be compatible with the aJile environment when compiled using JDK 1.4
- Tweaked Ant build file to check more dependencies for Palm builds (Jump and Superwaba), and to terminate a Jump build if the Pila assembler fails with any errors.
- Added a SysTaskWait() PalmOS call when using Bluetooth to spin the OS event loop to try and minimize Line Errors due to Bluetooth stack thread starvation.
- Restructured common platform-specific classes into their own package. This means that the platform specific classes MUST be specified before the gps common classes in your classpath (eg. gps_windows.jar must come before gps_common.jar for Windows).
- Updated WabaJump libraries to latest 0.6 version.
- Reformatted source code for all platform-specific files to be consistent with the common GPS Library source.
- Version History split from the readme.html into a separate file .

11/20/2002 - Version 1.00:

- Added Linux platform-specific code (primarily to handle different naming of serial ports: dev/ttyS# versus COM# under Windows, and making the default serial port timeout non-zero for linux).
- Reworked the distribution directory structure and included pre-built jar files for the GPS Library common components and platform-specific classes.
- Build process, and running demo on a PC, changed to use Apache's ANT build tool (.bat files were all eliminated from this release)
- Minor changes to the code base plus platform specific delegation classes added so that it will run on the SuperWaba platform again (SW V3.3 or later required, Bluetooth supported).
- NMEA GLL parsing bug was fixed so that UTC is handled as a float instead of an integer.
- After over a year of betas, the code base is quite stable, so this release has been named the 1.00 release. Unlike most 1.0 releases, it should be pretty decent at this stage.

10/17/2002 - Version 0.98:

- Entering a Serial Port value of "bluetooth" (or "bt") in the GPS Demo application on a Bluetooth-enabled Palm PDA will connect to a bluetooth-enabled GPS that supports the BT Serial Port Profile (SPP) (I tested with an Emtac GPS in NMEA mode, and a Palm M505 with a Bluetooth SDIO card). This uses a virtual serial port number of 666 under the covers.
- Serial Port code for the Palm (using Jump) was reworked to use the new Palm Serial Manager. This means that only PalmOS 3.3 and later is now supported. The old serial port code is included in the platform\jump directory for those that want to use it.
- added support for the PGRMM sentence (selected map datum) as well as corrected some of the conversion factors (thanks to Tommy Widenflycht for these fixes!)
- You can now set compile-time values for packet and/or GPS event queues to balance workload per poll() invocation versus polling interval (see comments in the Compile.java file for details)
- Serial Port exceptions and error handling reworked to use common error codes and descriptive messages
- The GPSDemo example program now allows you to set the serial port/baud when you are asked to select the protocol on the first panel.
- Fixed a menu handling and null pointer on exit bugs in the GPSDemo example program
- If you set a different baud rate for the GPS object, prior to doing the connect, the requested speed will now be used. Otherwise a default baud rate will be used based on the protocol selected.
- Added two new methods GPS.poll( boolean) and GPS.processEvents() so that reading/polling of the serial port and the processing of packets/events can be decoupled. Very useful if you use javax.comm (eg. PC and aJile/Systronix platforms) to do the serial I/O since you can then use the DataAvailable event handler that the javax.comm serial port thread generates to trigger the polling.
- Added ability to queue GPS Packets (prior to them being processed into events). Controlled by a static final compile flag in the Compile class.
- Fixed a bug where an ArrayIndexOutOfBounds would be thrown if we receive a badly formatted NMEA string.
- Fixed a bug where parsing a NMEA RMC string would fail when converting the UTC time if it was a floating point in the sentence.

03/07/2002 - Version 0.97:

- Fixed a bug where parsing a NMEA GGA string would fail when converting the UTC time if it was a floating point in the sentence.
- Fixed a bug that caused the sign of Waypoint Lat/Long to be incorrect when converting from Semicircles on a Garmin unit.
- The library now runs on Systronix/aJile Embedded Java hardware (Java bytecodes executed in silicon)! Contact the author for licensing information for this platform.

01/28/2002 - Version 0.96:

- The library now runs on Systronix/aJile Embedded Java hardware (Java bytecodes executed in silicon)! Contact the author for licensing information for this platform.
- This version of the library generates XML output in accordance with (and can be validated by) the GPSml XMLSchema version 0.50
- The core GPS library code no longer uses any Waba or Waba Extras classes. All platform specific classes (like the Waba SerialPort, Catalog, Stream, Vector and Vm classes) moved to the com.chaeron.platform package in the /platform directory. This was done to eliminate any dependency on the full Waba class libraries in the core so that if you are not using the Waba UI classes, you won't need need to download the Waba distribution or put it in your classpath. Note that the GPSDemo program still uses the Waba UI classes.
- Now using Peter Dickerson's latest PDM6 optimized Jump code, which fixes some bit shift bugs in Jump.

01/13/2002 - Version 0.95:

- GPSDemo can now save downloaded Waypoints, Routes or TrackLogs to a file in XML format. On a Palm, as a .pdb database. On a PC, as a text file.
- XML formatting for Waypoints, Routes and Tracklogs now implemented using GPSEvent decorators.
- GPSEvent decorators also allow detection of which GPSEvent getter methods are implemented by/valid for a particular GPS device/protocol (all methods return default values if not implemented).
- Compile flags are now used (com.chaeron.GPS.Compile.java) to selectively disable functionality and thus reduce memory footprint of the executable. Defaults are to include all functionality.
- build.bat changed to use experimental Huge (-hw flag) Jump memory model (to support large Track Logs). SEE Caveats and Disclaimers above!!!!
- Requests for Waypoint/Route/TrackLog downloads now check to make sure the Garmin GPS device supports the download protocol (and throws an exception if the function is not supported).
- Fixed bug in Waba SerialPort class for Windows which caused port close to fail, and read checks to not work properly. (patched version in \platform subdir)
- waba.io.Catalog was rewritten for the PC to have it save the data in normal text format so that saved XML data can be easily read any XML or text-editing program. (in platform\windows). It is not compatible with the Waba Extras version!
- GPSTestPC/GPSTestPalm examples (and related files) have been removed as of version 0.91, since they only used a subset of the latest functionality and were not being updated/used any more.
- Javadoc generation fixed to include exceptions and decorators.

01/04/2002 - Version 0.90:

- Route and Track Log downloading/display now supported for Garmin GPS's
- Waypoint download now returns a Vector instead of an array of waypoints (to be consistent with Route and Track downloads)
- GPSDemo now uses Download and View menu items for Waypoint, Route and Track functions.
- Waypoint downloads now use a non-blocking method.
- Waypoint Transfer Handler refactored. No longer an inner class of GarminGPSImpl.
- Fixed bug in WabaJump SerialPort class that caused intermittent serial port connection problems in NMEA mode (patched version in \platform subdir)
- Fixed a bug that would not propagate NMEA Sentence events unless other events were being listened for that particular NMEA string.
- Fixed some Error event creation code that set an incorrect Event type.
- Fixed UI event handling code in GPSDemo (some events were handled twice).
- Reworked progress spinner in GPSDemo to be more responsive (in lower left corner..it rotates 45 degrees for every poll issued).
- All use of error codes as return values from methods now replaced with thrown GPSExceptions instead.
- Superwaba is no longer supported as of 0.90 due to use of Exceptions in the GPS code. To run on a Palm PDA, you need to use Jump/WabaJump for now. Superwaba support will resume when Guich implements Exceptions in SW ( promised for late Feb '02)
- Now using Peter Dickerson's optimized Jump code, executable sizes are down 32.6%.

12/11/2001 - Version 0.85:

- Sample programs and library now runs under Superwaba. The older Waba VM is no longer being supported.
- Doubles are now used for Latitude/Longitude/tow and all conversions (eg. Degrees <--> Semicircles) for more accuracy.
- Fixed display of version info
- Waba Extras ExtraMainWindow and Popup classes fixed to work with Superwaba (in the superwaba\ subdirectory)
- build batch files changed to build Superwaba executables and to include the Superwaba workaround classes when doing so
- Some workarounds put in place to mitigate Superwaba bugs (int to byte casting problems).
- SuperwabaExtensions class added to support useful Superwaba extensions that do not exist in Jump/WabaJump
- Superwaba executables (.prc/.pdb) now included for sample programs
- Changed Garmin Protocol handling so that the huge capabilities lookup table is released after being used (to save lots of object heap space).
- Changed GPSDemo real-time location display units of measure to match Waypoint display (Lat/Long in Minutes/Seconds and Altitude in feet).

12/10/2001 - Version 0.8:

- Added Garmin Waypoint Download capability (Supports all Garmin Waypoint Data types from D100 - D109, D150 - D155. Only eTrex/eMap D108 tested!)
- Fixed Garmin protocol timing-related parsing bugs that would cause hangups
- Fixed some Garmin protocol write buffer handling potential problems
- Refactored Garmin Protocol handling into one Protocol class
- Added full Garmin Protocol/Capabilities handling using documented protocol tables and/or Product Capabilities packet.
- Reworked handling of event queue so that event generation or recursive propagations don't corrupt the queue.
- Added Javadoc to GPSDemo.java
- Changed readme to html format

12/04/2001 - Version 0.7:

- Optimized performance so that events that are not listened for are never processed nor created
- Serial Port read timeouts turned back on
- GUI-based demo program added, GPSDemo

12/03/2001 - Version 0.6:

- Palm example now closes serial port correctly
- Added close button to Palm example
- Palm example now uses user-paged display of events (with queueing of output & display of queued lines)
- Debugging display code now turned off by default in GPS.java
- Added warnings about Palm overclocking utilities causing problems with serial port functions
- Changed version requirements for WabaJump (need latest CVS bug fixes in WabaJump 0.5)
- setSerialPort changed to reflect real-world numbering of COM ports.
- default changed to propagate all queued events at once.

11/28/2001 - Version 0.5

- Initial public beta release


License & Copyright Information

Copyright (c) 2001-2003 Chaeron Corporation, All rights reserved.

Chaeron grants you a non-exclusive license to use, modify and re-distribute this program under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version, provided that this copyright notice and license appear on all copies of the software.

Other licenses are also available for commercial (ie, non-GPL'ed, non-open source) use of this library. Please contact the author for if you wish to discuss license arrangements for commercial use of this library. We can also create custom versions to support unique requirements (specialty GPS hardware, custom/reduced API, etc.)

Software is provided "AS IS," without a warranty of any kind. ALL EXPRESS OR IMPLIED REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE ENTIRE RISK ARISING OUT OF USING THE SOFTWARE IS ASSUMED BY THE LICENSEE. See the GNU General Public License for more details.

CHAERON AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE OR ANY THIRD PARTY AS A RESULT OF USING OR DISTRIBUTING SOFTWARE. IN NO EVENT WILL CHAERON OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AN REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF CHAERON HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

If you make any useful changes or additions to this GPS library please email copies back to the author so that they can be incorporated in the official distribution. Credit for such additions will be retained in the source and the archive. Any/all such submissions, if they are incorporated in the official distribution, will become the exclusive copyright and property of Chaeron Corporation.