summaryrefslogtreecommitdiff
path: root/gpsd.h-tail
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2013-09-29 01:42:45 -0400
committerEric S. Raymond <esr@thyrsus.com>2013-09-29 01:46:53 -0400
commit4361ec2d89bdf451602d659ddfd0fb9a79c178a2 (patch)
treeaf067d1d7614a9e67f449eec933ba3347cde10b0 /gpsd.h-tail
parenta77b95b57475c2856707e91b197f8aaa8e5eb407 (diff)
downloadgpsd-4361ec2d89bdf451602d659ddfd0fb9a79c178a2.tar.gz
Change gpsd_report to no longer use a global. All regression tests pass.
This is a large, ugly change. But without it we can't troubleshoot the ICP/IP-source initialization bug properly - colliding definitions of gpsd_report() were interfering with error reporting early in gpsd runs. More cleanup work remains to be done, but at least this is working.
Diffstat (limited to 'gpsd.h-tail')
-rw-r--r--gpsd.h-tail42
1 files changed, 22 insertions, 20 deletions
diff --git a/gpsd.h-tail b/gpsd.h-tail
index 75d05962..2cee2f8f 100644
--- a/gpsd.h-tail
+++ b/gpsd.h-tail
@@ -190,23 +190,6 @@ extern ssize_t packet_get(int, struct gps_packet_t *);
extern int packet_sniff(struct gps_packet_t *);
#define packet_buffered_input(lexer) ((lexer)->inbuffer + (lexer)->inbuflen - (lexer)->inbufptr)
-extern void isgps_init(/*@out@*/struct gps_packet_t *);
-enum isgpsstat_t isgps_decode(struct gps_packet_t *,
- bool (*preamble_match)(isgps30bits_t *),
- bool (*length_check)(struct gps_packet_t *),
- size_t,
- unsigned int);
-extern unsigned int isgps_parity(isgps30bits_t);
-extern void isgps_output_magnavox(const isgps30bits_t *, unsigned int, FILE *);
-
-extern enum isgpsstat_t rtcm2_decode(struct gps_packet_t *, unsigned int);
-extern void json_rtcm2_dump(const struct rtcm2_t *,
- /*@null@*/const char *, /*@out@*/char[], size_t);
-extern void rtcm2_unpack(/*@out@*/struct rtcm2_t *, char *);
-extern void json_rtcm3_dump(const struct rtcm3_t *,
- /*@null@*/const char *, /*@out@*/char[], size_t);
-extern void rtcm3_unpack(/*@out@*/struct rtcm3_t *, char *);
-
/* Next, declarations for the core library... */
/* factors for converting among confidence interval units */
@@ -684,6 +667,24 @@ struct gps_device_t {
#define IS_HIGHEST_BIT(v,m) (v & ~((m<<1)-1))==0
+/* driver helper functions */
+extern void isgps_init(/*@out@*/struct gps_packet_t *);
+enum isgpsstat_t isgps_decode(struct gps_packet_t *,
+ bool (*preamble_match)(isgps30bits_t *),
+ bool (*length_check)(struct gps_packet_t *),
+ size_t,
+ unsigned int);
+extern unsigned int isgps_parity(isgps30bits_t);
+extern void isgps_output_magnavox(const isgps30bits_t *, unsigned int, FILE *);
+
+extern enum isgpsstat_t rtcm2_decode(struct gps_packet_t *, unsigned int);
+extern void json_rtcm2_dump(const struct rtcm2_t *,
+ /*@null@*/const char *, /*@out@*/char[], size_t);
+extern void rtcm2_unpack(/*@out@*/struct rtcm2_t *, char *);
+extern void json_rtcm3_dump(const struct rtcm3_t *,
+ /*@null@*/const char *, /*@out@*/char[], size_t);
+extern void rtcm3_unpack(const int, /*@out@*/struct rtcm3_t *, char *);
+
/* here are the available GPS drivers */
extern const struct gps_type_t **gpsd_drivers;
@@ -823,7 +824,8 @@ extern /*@observer@*/const char *gpsd_maskdump(gps_mask_t);
/* exceptional driver methods */
extern bool ubx_write(struct gps_device_t *, unsigned int, unsigned int,
/*@null@*/unsigned char *, size_t);
-extern bool ais_binary_decode(struct ais_t *,
+extern bool ais_binary_decode(const int debug,
+ struct ais_t *ais,
const unsigned char *, size_t,
/*@null@*/struct ais_type24_queue_t *);
@@ -843,9 +845,9 @@ extern void libgps_dump_state(struct gps_data_t *);
/* caller should supply this */
# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
-__attribute__((__format__(__printf__, 2, 3))) void gpsd_report(int, const char *, ...);
+__attribute__((__format__(__printf__, 3, 4))) void gpsd_report(const int, const int, const char *, ...);
# else /* not a new enough GCC, use the unprotected prototype */
-void gpsd_report(int, const char *, ...);
+void gpsd_report(const int, const int, const char *, ...);
#endif
#ifdef S_SPLINT_S