summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO13
-rw-r--r--packet.c19
-rw-r--r--sirf.c1
-rw-r--r--sirfmon.xml6
-rw-r--r--www/gps-hacking.html6
-rw-r--r--www/hardware.html11
6 files changed, 28 insertions, 28 deletions
diff --git a/TODO b/TODO
index 7885e266..6556b4c3 100644
--- a/TODO
+++ b/TODO
@@ -4,12 +4,6 @@ will unfold them again.
** Bugs in gpsd and its clients:
-*** Nail down Daryl Ross's SiRF bugs
-
-Daryl Ross is reporting some very odd bugs on the BU-303 that I can't
-reproduce with my almost identical test setup. This bothers me, and
-I want to understand why it is happening.
-
*** EPH and EPV reports are zeroed too often in the TSIP driver
There is some bad interaction between the policy code in
@@ -75,13 +69,6 @@ system("free t") at the end of each handle_input() call.
** To do:
-*** Evermore driver
-
-Petr Slansky wants Evermore chipset support. His email reads as
-though he is competent to write it. An unanswered question is whether
-there is a probe string that can elicit a PEMT or other unique
-response from the Evermore chipset.
-
*** SiRF firmware uploader
Chris Kuethe appears to be well along on this. It is not yet
diff --git a/packet.c b/packet.c
index 4ea4a011..8f6c945c 100644
--- a/packet.c
+++ b/packet.c
@@ -28,8 +28,6 @@ distinguish them from baud barf.
#include <unistd.h>
#include <string.h>
#include <errno.h>
-#include <sys/time.h>
-#include <sys/ioctl.h>
#include "config.h"
#include "gpsd.h"
@@ -57,14 +55,18 @@ void gpsd_report(int errlevel, const char *fmt, ... )
#endif /* TESTMAIN */
/*
- * The packet-recognition state machine. It doesn't do checksums,
- * caller is responsible for that part. It can be fooled by garbage
+ * The packet-recognition state machine. It can be fooled by garbage
* that looks like the head of a binary packet followed by a NMEA
* packet; in that case it won't reset until it notices that the
* binary trailer is not where it should be, and the NMEA packet will
* be lost. The reverse scenario is not possible because none of the
* binary leader character can occur in an NMEA packet. Caller should
* consume a packet when it sees one of the *_RECOGNIZED states.
+ * It's good practice to follow the _RECOGNIZED transition with one
+ * that recognizes a leader of the same packet type rather than
+ * dropping back to ground state -- this for example will prevent
+ * the state machine from hopping between recognizing TSIP and
+ * Evermore packets that both start with a DLE.
*
* Error handling is brutally simple; any time we see an unexpected
* character, go to GROUND_STATE and reset the machine (except that a
@@ -82,8 +84,9 @@ void gpsd_report(int errlevel, const char *fmt, ... )
enum {
GROUND_STATE, /* we don't know what packet type to expect */
- NMEA_DOLLAR, /* we've seen first character of NMEA leader */
+ /* NMEA 0183 packet states */
+ NMEA_DOLLAR, /* we've seen first character of NMEA leader */
NMEA_PUB_LEAD, /* seen second character of NMEA G leader */
NMEA_LEADER_END, /* seen end char of NMEA leader, in body */
NMEA_CR, /* seen terminating \r of NMEA packet */
@@ -150,7 +153,7 @@ enum {
EVERMORE_HEADER_DLE, /* 1-byte packet length was DLE */
EVERMORE_PAYLOAD, /* in payload part of Evermore packet */
EVERMORE_DELIVERED, /* got to end of payload, looking for checksum */
- EVERMORE_CHECKSUM_DLE, /* in payload part of Evermore packet */
+ EVERMORE_SUM_DLE, /* in payload part of Evermore packet */
EVERMORE_TRAILER_1, /* looking for first byte of Evermore trailer */
EVERMORE_RECOGNIZED, /* found end of Evermore packet */
#endif /* EVERMORE_ENABLE */
@@ -491,11 +494,11 @@ static void nexstate(struct gps_device_t *session, unsigned char c)
break;
case EVERMORE_DELIVERED:
if (c == 0x10)
- session->packet_state = EVERMORE_CHECKSUM_DLE;
+ session->packet_state = EVERMORE_SUM_DLE;
else
session->packet_state = EVERMORE_TRAILER_1;
break;
- case EVERMORE_CHECKSUM_DLE:
+ case EVERMORE_SUM_DLE:
if (c == 0x10)
session->packet_state = EVERMORE_TRAILER_1;
else
diff --git a/sirf.c b/sirf.c
index 9cbf771c..cd4b51aa 100644
--- a/sirf.c
+++ b/sirf.c
@@ -172,7 +172,6 @@ gps_mask_t sirf_parse(struct gps_device_t *session, unsigned char *buf, size_t l
ecef_to_wgs84fix(&session->gpsdata,
getsl(buf, 1)*1.0, getsl(buf, 5)*1.0, getsl(buf, 9)*1.0,
getsw(buf, 13)/8.0, getsw(buf, 15)/8.0, getsw(buf, 17)/8.0);
- /* WGS 84 geodesy parameters */
/* fix status is byte 19 */
navtype = (unsigned short)getub(buf, 19);
session->gpsdata.status = STATUS_NO_FIX;
diff --git a/sirfmon.xml b/sirfmon.xml
index 17d20edd..1c1f3576 100644
--- a/sirfmon.xml
+++ b/sirfmon.xml
@@ -116,6 +116,12 @@ zero. This condition will continue until the computed velocity rises
above 1.2 times the threshold or until the computed position is at
least a set distance from the frozen place. The threshold velocity and
set distance may vary with software versions.</quote></para>
+
+<para>Non-static mode is designed for use with road navigation
+software, which often snaps the reported position to the nearest road
+within some uncertainty radius. You probably want to turn static
+navigation off for pedestrian use, as it is likely to report speed
+zero and position changing in lsrge jumps.</para>
</listitem>
</varlistentry>
<varlistentry>
diff --git a/www/gps-hacking.html b/www/gps-hacking.html
index 74d09ea9..b201c8cf 100644
--- a/www/gps-hacking.html
+++ b/www/gps-hacking.html
@@ -354,8 +354,12 @@ and DGPS</a>.</dd>
<dd>Chris Kuethe's page has links to many interesting resources.</dd>
<dt><a href="http://www.ualberta.ca/~norris/gps/DOPnontech.html">DOP,
-the non-technical description</a>
+the non-technical description</a></dt>
<dd>Explains the most obscure statistic in GPS output.</dd>
+
+<dt>
+<a href='http://www.eomonline.com/Common/Archives/1995aug/95aug_gps.html'>Two</a> <a href='http://www.eomonline.com/Common/Archives/1996feb/96feb_gps.html'>articles</a> from Earth Observation Magazine</dt>
+<dd>These delve into the mysteries of GPS accuracy.</dd>
</dl>
</body>
diff --git a/www/hardware.html b/www/hardware.html
index 05874c16..6f2f484d 100644
--- a/www/hardware.html
+++ b/www/hardware.html
@@ -67,8 +67,9 @@ GPGSV,<br>
GPRMC,<br>
GPVTG</td>
<td>
-NMEA works, but (oddly) SiRF binary does not. This device seems to ignore
-the $PSRF100 mode switch.
+NMEA works, but (oddly) SiRF binary does not. (SiRF binary may be
+available on the auxiliary serisl port, but this is unconfirmed.)
+This device seems to ignore the $PSRF100 mode switch.
Denis Perchine &lt;dyp&#x40;perchine.com&gt;
</td>
</tr>
@@ -335,15 +336,15 @@ Reported by Frank Nicholas &lt;frank&#40;nicholasfamilycentral.com&gt;.
GPGSV,<br />GPRMC,<br />GPGLL,<br />GPGSA,<br />GPGGA,<br />GPVTG.
</td>
<td>
-There are CF, serial, and Bluetooth versions, not tested.
-The USB version is sold with Microsoft Streets and Trips.
+The Pharos comes with adaptors for SDIO, CF, USB and plain RS232.
+Microsoft Streets and Trips includes a Pharos with USB adaptor.
Reported by Robert Pouliot &lt;krynos&#x40;saturnus.com&gt;
</td>
</tr>
<tr>
<td><a href="http://www.navisky.com/nsa_u3.htm">NSA U3</a></td>
<td>Excellent</td>
-<td>SiRF-StarIIe/PL + PL2303</td>
+<td>SiRF-StarIIe/LP + PL2303</td>
<td>USB</td>
<td><a href="http://www.navisky.com/">NaviSky</a></td>
<td>2.24</td>