summaryrefslogtreecommitdiff
path: root/packet.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2008-07-12 12:43:03 +0000
committerEric S. Raymond <esr@thyrsus.com>2008-07-12 12:43:03 +0000
commitc8c4a26cade7ea5322cbef664343eb4d512ff05d (patch)
treef7ad0d08f25bddd6774b49f60a94f2048027655b /packet.c
parent2a45e351695e47836ad63cd51f5d8337f155c7c6 (diff)
downloadgpsd-c8c4a26cade7ea5322cbef664343eb4d512ff05d.tar.gz
Fix gpscat to dump binary packets correctly.
Reenable some debugging in the packet getter, and add a bit more.
Diffstat (limited to 'packet.c')
-rw-r--r--packet.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/packet.c b/packet.c
index da0f7099..325c375b 100644
--- a/packet.c
+++ b/packet.c
@@ -845,19 +845,19 @@ static void character_discard(struct gps_packet_t *lexer)
/* entry points begin here */
-ssize_t packet_parse(struct gps_packet_t *lexer, size_t fix)
+ssize_t packet_parse(struct gps_packet_t *lexer, size_t len)
/* grab a packet; returns either BAD_PACKET or the length */
{
#ifdef STATE_DEBUG
gpsd_report(LOG_RAW+1, "Read %d chars to buffer offset %d (total %d): %s\n",
- fix,
+ len,
lexer->inbuflen,
- lexer->inbuflen+fix,
- gpsd_hexdump(lexer->inbufptr, fix));
+ lexer->inbuflen+len,
+ gpsd_hexdump(lexer->inbufptr, len));
#endif /* STATE_DEBUG */
lexer->outbuflen = 0;
- lexer->inbuflen += fix;
+ lexer->inbuflen += len;
while (lexer->inbufptr < lexer->inbuffer + lexer->inbuflen) {
/*@ -modobserver @*/
unsigned char c = *lexer->inbufptr++;
@@ -1249,7 +1249,10 @@ ssize_t packet_parse(struct gps_packet_t *lexer, size_t fix)
#endif /* RTCM104V2_ENABLE */
} /* while */
- return (ssize_t)fix;
+#ifdef STATE_DEBUG
+ gpsd_report(LOG_RAW+1, "Packet parse returns %d\n", len);
+#endif /* STATE_DEBUG */
+ return (ssize_t)len;
}
#undef getword
@@ -1261,18 +1264,18 @@ ssize_t packet_get(int fd, struct gps_packet_t *lexer)
/*@ -modobserver @*/
recvd = read(fd, lexer->inbuffer+lexer->inbuflen,
sizeof(lexer->inbuffer)-(lexer->inbuflen));
-#ifdef STATEDEBUG
+#ifdef STATE_DEBUG
gpsd_report(LOG_RAW+1, "%d raw bytes read: %s\n",
recvd, gpsd_hexdump(lexer->inbuffer+lexer->inbuflen, recvd));
-#endif /* STATEDEBUG */
+#endif /* STATE_DEBUG */
/*@ +modobserver @*/
if (recvd == -1) {
if ((errno == EAGAIN) || (errno == EINTR)) {
return 0;
} else {
-#ifdef STATEDEBUG
+#ifdef STATE_DEBUG
gpsd_report(LOG_RAW+1, "errno: %s\n", strerror(errno));
-#endif /* STATEDEBUG */
+#endif /* STATE_DEBUG */
return BAD_PACKET;
}
}