diff options
Diffstat (limited to 'drivers.c')
-rw-r--r-- | drivers.c | 154 |
1 files changed, 79 insertions, 75 deletions
@@ -36,22 +36,22 @@ gps_mask_t generic_parse_input(struct gps_device_t *session) char *sentence = (char *)session->lexer.outbuffer; if (sentence[strlen(sentence)-1] != '\n') - gpsd_report(&session->context->errout, LOG_IO, - "<= GPS: %s\n", sentence); + gpsd_log(&session->context->errout, LOG_IO, + "<= GPS: %s\n", sentence); else - gpsd_report(&session->context->errout, LOG_IO, - "<= GPS: %s", sentence); + gpsd_log(&session->context->errout, LOG_IO, + "<= GPS: %s", sentence); if ((st=nmea_parse(sentence, session)) == 0) { - gpsd_report(&session->context->errout, LOG_WARN, - "unknown sentence: \"%s\"\n", sentence); + gpsd_log(&session->context->errout, LOG_WARN, + "unknown sentence: \"%s\"\n", sentence); } for (dp = gpsd_drivers; *dp; dp++) { char *trigger = (*dp)->trigger; if (trigger!=NULL && str_starts_with(sentence, trigger)) { - gpsd_report(&session->context->errout, LOG_PROG, - "found trigger string %s.\n", trigger); + gpsd_log(&session->context->errout, LOG_PROG, + "found trigger string %s.\n", trigger); if (*dp != session->device_type) { (void)gpsd_switch_driver(session, (*dp)->type_name); if (session->device_type != NULL @@ -65,9 +65,9 @@ gps_mask_t generic_parse_input(struct gps_device_t *session) return st; #endif /* NMEA_ENABLE */ } else { - gpsd_report(&session->context->errout, LOG_SHOUT, - "packet type %d fell through (should never happen): %s.\n", - session->lexer.type, gpsd_prettydump(session)); + gpsd_log(&session->context->errout, LOG_SHOUT, + "packet type %d fell through (should never happen): %s.\n", + session->lexer.type, gpsd_prettydump(session)); return 0; } } @@ -149,8 +149,8 @@ static void nmea_event_hook(struct gps_device_t *session, event_t event) #ifdef NMEA_ENABLE case 0: /* probe for Garmin serial GPS -- expect $PGRMC followed by data */ - gpsd_report(&session->context->errout, LOG_PROG, - "=> Probing for Garmin NMEA\n"); + gpsd_log(&session->context->errout, LOG_PROG, + "=> Probing for Garmin NMEA\n"); (void)nmea_send(session, "$PGRMCE"); break; #endif /* NMEA_ENABLE */ @@ -173,7 +173,8 @@ static void nmea_event_hook(struct gps_device_t *session, event_t event) * mode! Fix this if we ever find a nondisruptive probe * string. */ - gpsd_report(&session->context->errout, LOG_PROG, "=> Probing for SiRF\n"); + gpsd_log(&session->context->errout, LOG_PROG, + "=> Probing for SiRF\n"); (void)nmea_send(session, "$PSRF100,0,%d,%d,%d,0", session->gpsdata.dev.baudrate, @@ -185,20 +186,21 @@ static void nmea_event_hook(struct gps_device_t *session, event_t event) #ifdef NMEA_ENABLE case 2: /* probe for the FV-18 -- expect $PFEC,GPint followed by data */ - gpsd_report(&session->context->errout, LOG_PROG, "=> Probing for FV-18\n"); + gpsd_log(&session->context->errout, LOG_PROG, + "=> Probing for FV-18\n"); (void)nmea_send(session, "$PFEC,GPint"); break; case 3: /* probe for the Trimble Copernicus */ - gpsd_report(&session->context->errout, LOG_PROG, - "=> Probing for Trimble Copernicus\n"); + gpsd_log(&session->context->errout, LOG_PROG, + "=> Probing for Trimble Copernicus\n"); (void)nmea_send(session, "$PTNLSNM,0139,01"); break; #endif /* NMEA_ENABLE */ #ifdef EVERMORE_ENABLE case 4: - gpsd_report(&session->context->errout, LOG_PROG, - "=> Probing for Evermore\n"); + gpsd_log(&session->context->errout, LOG_PROG, + "=> Probing for Evermore\n"); /* Enable checksum and GGA(1s), GLL(0s), GSA(1s), GSV(1s), RMC(1s), VTG(0s), PEMT101(0s) */ /* EverMore will reply with: \x10\x02\x04\x38\x8E\xC6\x10\x03 */ (void)gpsd_write(session, @@ -209,32 +211,32 @@ static void nmea_event_hook(struct gps_device_t *session, event_t event) #ifdef GPSCLOCK_ENABLE case 5: /* probe for Furuno Electric GH-79L4-N (GPSClock); expect $PFEC,GPssd */ - gpsd_report(&session->context->errout, LOG_PROG, - "=> Probing for GPSClock\n"); + gpsd_log(&session->context->errout, LOG_PROG, + "=> Probing for GPSClock\n"); (void)nmea_send(session, "$PFEC,GPsrq"); break; #endif /* GPSCLOCK_ENABLE */ #ifdef ASHTECH_ENABLE case 6: /* probe for Ashtech -- expect $PASHR,RID */ - gpsd_report(&session->context->errout, LOG_PROG, - "=> Probing for Ashtech\n"); + gpsd_log(&session->context->errout, LOG_PROG, + "=> Probing for Ashtech\n"); (void)nmea_send(session, "$PASHQ,RID"); break; #endif /* ASHTECH_ENABLE */ #ifdef UBLOX_ENABLE case 7: /* probe for UBX -- query port configuration */ - gpsd_report(&session->context->errout, LOG_PROG, - "=> Probing for UBX\n"); + gpsd_log(&session->context->errout, LOG_PROG, + "=> Probing for UBX\n"); (void)ubx_write(session, 0x06, 0x00, NULL, 0); break; #endif /* UBLOX_ENABLE */ #ifdef MTK3301_ENABLE case 8: /* probe for MTK-3301 -- expect $PMTK705 */ - gpsd_report(&session->context->errout, LOG_PROG, - "=> Probing for MediaTek\n"); + gpsd_log(&session->context->errout, LOG_PROG, + "=> Probing for MediaTek\n"); (void)nmea_send(session, "$PMTK605"); break; #endif /* MTK3301_ENABLE */ @@ -514,8 +516,8 @@ static void gpsclock_event_hook(struct gps_device_t *session, event_t event) * ignore the trailing PPS edge when extracting time from this chip. */ if (event == event_identified || event == event_reactivate) { - gpsd_report(&session->context->errout, LOG_INF, - "PPS trailing edge will be ignored\n"); + gpsd_log(&session->context->errout, LOG_INF, + "PPS trailing edge will be ignored\n"); session->nmea.ignore_trailing_edge = true; } } @@ -687,8 +689,8 @@ static ssize_t tnt_control_send(struct gps_device_t *session, } #ifdef __UNUSED__ else { - gpsd_report(&session->context->errout, LOG_ERROR, - "Bad TNT sentence: '%s'\n", msg); + gpsd_log(&session->context->errout, LOG_ERROR, + "Bad TNT sentence: '%s'\n", msg); } #endif /* __UNUSED__ */ while (((c = *p) != '\0')) { @@ -713,12 +715,12 @@ static bool tnt_send(struct gps_device_t *session, const char *fmt, ...) va_end(ap); sent = tnt_control_send(session, buf, strlen(buf)); if (sent == (ssize_t) strlen(buf)) { - gpsd_report(&session->context->errout, LOG_IO, - "=> GPS: %s\n", buf); + gpsd_log(&session->context->errout, LOG_IO, + "=> GPS: %s\n", buf); return true; } else { - gpsd_report(&session->context->errout, LOG_WARN, - "=> GPS: %s FAILED\n", buf); + gpsd_log(&session->context->errout, LOG_WARN, + "=> GPS: %s FAILED\n", buf); return false; } } @@ -811,10 +813,10 @@ static int oceanserver_send(struct gpsd_errout_t *errout, status = (int)write(fd, buf, strlen(buf)); (void)tcdrain(fd); if (status == (int)strlen(buf)) { - gpsd_report(errout, LOG_IO, "=> GPS: %s\n", buf); + gpsd_log(errout, LOG_IO, "=> GPS: %s\n", buf); return status; } else { - gpsd_report(errout, LOG_WARN, "=> GPS: %s FAILED\n", buf); + gpsd_log(errout, LOG_WARN, "=> GPS: %s FAILED\n", buf); return -1; } } @@ -944,12 +946,12 @@ static gps_mask_t rtcm104v2_analyze(struct gps_device_t *session) rtcm2_unpack(&session->gpsdata.rtcm2, (char *)session->lexer.isgps.buf); /* extra guard prevents expensive hexdump calls */ if (session->context->errout.debug >= LOG_RAW) - gpsd_report(&session->context->errout, LOG_RAW, - "RTCM 2.x packet type 0x%02x length %d words from %zd bytes: %s\n", - session->gpsdata.rtcm2.type, - session->gpsdata.rtcm2.length + 2, - session->lexer.isgps.buflen, - gpsd_hexdump(session->msgbuf, sizeof(session->msgbuf), + gpsd_log(&session->context->errout, LOG_RAW, + "RTCM 2.x packet type 0x%02x length %d words from %zd bytes: %s\n", + session->gpsdata.rtcm2.type, + session->gpsdata.rtcm2.length + 2, + session->lexer.isgps.buflen, + gpsd_hexdump(session->msgbuf, sizeof(session->msgbuf), (char *)session->lexer.isgps.buf, (session->gpsdata.rtcm2.length + 2) * sizeof(isgps30bits_t))); @@ -996,7 +998,7 @@ static gps_mask_t rtcm104v3_analyze(struct gps_device_t *session) { uint16_t type = getbeu16(session->lexer.inbuffer, 3) >> 4; - gpsd_report(&session->context->errout, LOG_RAW, "RTCM 3.x packet %d\n", type); + gpsd_log(&session->context->errout, LOG_RAW, "RTCM 3.x packet %d\n", type); rtcm3_unpack(session->context, &session->gpsdata.rtcm3, (char *)session->lexer.outbuffer); @@ -1207,15 +1209,16 @@ static bool aivdm_decode(const char *buf, size_t buflen, return false; /* we may need to dump the raw packet */ - gpsd_report(&session->context->errout, LOG_PROG, - "AIVDM packet length %zd: %s\n", buflen, buf); + gpsd_log(&session->context->errout, LOG_PROG, + "AIVDM packet length %zd: %s\n", buflen, buf); /* first clear the result, making sure we don't return garbage */ memset(ais, 0, sizeof(*ais)); /* discard overlong sentences */ if (strlen(buf) > sizeof(fieldcopy)-1) { - gpsd_report(&session->context->errout, LOG_ERROR, "overlong AIVDM packet.\n"); + gpsd_log(&session->context->errout, LOG_ERROR, + "overlong AIVDM packet.\n"); return false; } @@ -1231,7 +1234,8 @@ static bool aivdm_decode(const char *buf, size_t buflen, /* discard sentences with exiguous commas; catches run-ons */ if (nfields < 7) { - gpsd_report(&session->context->errout, LOG_ERROR, "malformed AIVDM packet.\n"); + gpsd_log(&session->context->errout, LOG_ERROR, + "malformed AIVDM packet.\n"); return false; } @@ -1243,15 +1247,15 @@ static bool aivdm_decode(const char *buf, size_t buflen, * is going to break if there's ever an AIVDO type 24, though. */ if (!str_starts_with((const char *)field[0], "!AIVDO")) - gpsd_report(&session->context->errout, LOG_INF, - "invalid empty AIS channel. Assuming 'A'\n"); + gpsd_log(&session->context->errout, LOG_INF, + "invalid empty AIS channel. Assuming 'A'\n"); ais_context = &session->driver.aivdm.context[0]; session->driver.aivdm.ais_channel ='A'; break; case '1': if (strcmp((char *)field[4], (char *)"12") == 0) { - gpsd_report(&session->context->errout, LOG_INF, - "ignoring bogus AIS channel '12'.\n"); + gpsd_log(&session->context->errout, LOG_INF, + "ignoring bogus AIS channel '12'.\n"); return false; } /*@fallthrough@*/ @@ -1266,12 +1270,12 @@ static bool aivdm_decode(const char *buf, size_t buflen, session->driver.aivdm.ais_channel ='B'; break; case 'C': - gpsd_report(&session->context->errout, LOG_INF, - "ignoring AIS channel C (secure AIS).\n"); + gpsd_log(&session->context->errout, LOG_INF, + "ignoring AIS channel C (secure AIS).\n"); return false; default: - gpsd_report(&session->context->errout, LOG_ERROR, - "invalid AIS channel 0x%0X .\n", field[4][0]); + gpsd_log(&session->context->errout, LOG_ERROR, + "invalid AIS channel 0x%0X .\n", field[4][0]); return false; } @@ -1279,17 +1283,17 @@ static bool aivdm_decode(const char *buf, size_t buflen, ifrag = atoi((char *)field[2]); /* fragment id */ data = field[5]; pad = field[6][0]; /* number of padding bits */ - gpsd_report(&session->context->errout, LOG_PROG, - "nfrags=%d, ifrag=%d, decoded_frags=%d, data=%s\n", - nfrags, ifrag, ais_context->decoded_frags, data); + gpsd_log(&session->context->errout, LOG_PROG, + "nfrags=%d, ifrag=%d, decoded_frags=%d, data=%s\n", + nfrags, ifrag, ais_context->decoded_frags, data); /* assemble the binary data */ /* check fragment ordering */ if (ifrag != ais_context->decoded_frags + 1) { - gpsd_report(&session->context->errout, LOG_ERROR, - "invalid fragment #%d received, expected #%d.\n", - ifrag, ais_context->decoded_frags + 1); + gpsd_log(&session->context->errout, LOG_ERROR, + "invalid fragment #%d received, expected #%d.\n", + ifrag, ais_context->decoded_frags + 1); if (ifrag != 1) return false; /* else, ifrag==1: Just discard all that was previously decoded and @@ -1310,8 +1314,8 @@ static bool aivdm_decode(const char *buf, size_t buflen, if (ch >= 40) ch -= 8; #ifdef __UNUSED_DEBUG__ - gpsd_report(&session->context->errout, LOG_RAW, - "%c: %s\n", *cp, sixbits[ch]); + gpsd_log(&session->context->errout, LOG_RAW, + "%c: %s\n", *cp, sixbits[ch]); #endif /* __UNUSED_DEBUG__ */ /*@ -shiftnegative @*/ for (i = 5; i >= 0; i--) { @@ -1321,8 +1325,8 @@ static bool aivdm_decode(const char *buf, size_t buflen, } ais_context->bitlen++; if (ais_context->bitlen > sizeof(ais_context->bits)) { - gpsd_report(&session->context->errout, LOG_INF, - "overlong AIVDM payload truncated.\n"); + gpsd_log(&session->context->errout, LOG_INF, + "overlong AIVDM payload truncated.\n"); return false; } } @@ -1336,10 +1340,10 @@ static bool aivdm_decode(const char *buf, size_t buflen, if (ifrag == nfrags) { if (debug >= LOG_INF) { size_t clen = BITS_TO_BYTES(ais_context->bitlen); - gpsd_report(&session->context->errout, LOG_INF, - "AIVDM payload is %zd bits, %zd chars: %s\n", - ais_context->bitlen, clen, - gpsd_hexdump(session->msgbuf, sizeof(session->msgbuf), + gpsd_log(&session->context->errout, LOG_INF, + "AIVDM payload is %zd bits, %zd chars: %s\n", + ais_context->bitlen, clen, + gpsd_hexdump(session->msgbuf, sizeof(session->msgbuf), (char *)ais_context->bits, clen)); } @@ -1457,8 +1461,8 @@ static void path_rewrite(struct gps_device_t *session, char *prefix) static gps_mask_t json_pass_packet(struct gps_device_t *session) { - gpsd_report(&session->context->errout, LOG_IO, - "<= GPS: %s\n", (char *)session->lexer.outbuffer); + gpsd_log(&session->context->errout, LOG_IO, + "<= GPS: %s\n", (char *)session->lexer.outbuffer); if (strstr(session->gpsdata.dev.path, ":/") != NULL && strstr(session->gpsdata.dev.path, "localhost") == NULL) { @@ -1485,9 +1489,9 @@ static gps_mask_t json_pass_packet(struct gps_device_t *session) session->lexer.outbuflen = strlen((char *)session->lexer.outbuffer); } } - gpsd_report(&session->context->errout, LOG_PROG, - "JSON, passing through %s\n", - (char *)session->lexer.outbuffer); + gpsd_log(&session->context->errout, LOG_PROG, + "JSON, passing through %s\n", + (char *)session->lexer.outbuffer); /*@-nullpass@*/ return PASSTHROUGH_IS; } |