These notes were made when Garmin's first PalmOS device was released. The entire line has now reached end of life.
Garmin iQue3600 Notes
In preparation for adding Garmin support to my applications, I began tinkering a bit with the SDK for the iQue3600. Here's the little test program I wrote to exercise the Garmin API:
iqTestD.prc (17.64 K) (the program itself). Freeware, iQue3600 required.
iqTest.c (5.66 K) (source code excerpt). Depends on many local libraries and macro definitions, but might be useful as an example.
After writing/running iqTest, I have concluded:
You will notice that the track direction seems to use 0 for north, positive numbers eastward, negative numbers westward. So the compass direction we all know and love as "270" will display as -90.
There are 4 track values available: north component, east component, vertical component, and horizontal speed.
displays position both in lat/long and in "semicircles". The Garmin SDK explains semicircles: 2^31 semicircles = 180 degrees. The "semicircles" value is the most precise position information available from the device; I'm not sure what relationship the precision of the number has to the precision of the GPS position, however. It certainly doesn't imply that the GPS is precise to one part in 2^32. Semicircles are also defined in the Garmin IOP spec mentioned below.
Mathlib is included in the ROM. I haven't seen this documented anywhere, but found it by accident with Filez.
The Garmin Simulator doesn't know it's a Garmin. It returns 'psys' for the maker, and doesn't have a device value set. Actual iQue 3600's return 'grmn' for the maker and '3600' for the device (see http://www.mobilegeographics.com/dev/devices.php).
If you're testing for device type in your code, the test won't work the same on the simulator as on the physical hardware.
Installing the simulator is a bit odd. First you must install a working Palmsource 5.2 simulator. Then add the Garmin sim files to that folder. This is documented in the Garmin SDK, but if you're not planning to use the SDK you wouldn't see this step.
Waypoints are stored as address book entries. The latitude and longitude are stored in the "Custom 4" field. The format appears to be", where and are the latitude and longitude, respectively, expressed in semicircles. I have determined this experimentally, by examining some address book entries and converting semicircles to degrees. Writing address book entries using this layout seems to work fine.
If the waypoint contains an elevation, or an icon specification, then there are one or two more fields after the lat/long. First comes the icon string, if present; then last is the elevation string.
The icon string is a hex http://www.garmin.com/support/pdf/iop_spec.pdf. That spec also says that not all waypoint numbers are supported on all devices, and indeed it seems that only the 45 icons displayed on the QueMap's icon selection form are available. If an icon other than those 45 is set in the address book entry, only the default square dot appears on the display.followed by four hex digits; the hex digits are the same as the numbers listed on pages 32-35 of the Garmin GPS Specification, downloadable at
Elevation strings always start with a hex IQ Booster, or a third-party address book app) to set the field appropriately. Note that while the display is in feet, the internal storage is in meters.and are followed by 8 hex digits. The 8 hex digits are the floating point representation (IEEE-754 single precision) of the elevation, in meters. Elevation with respect to what? I don't know yet. There's no sign that the iQue 3600 uses the waypoint's elevation for anything useful, so the question may not matter. Although the iQue 3600's on-device waypoint editing screen does not allow you to enter negative numbers for elevation, it will display negative numbers if you use some other software (e.g.
Notes on the Garmin iQue 3600