void ntrip_report(struct gps_context_t *context, struct gps_device_t *gps, struct gps_device_t *caster) /* may be time to ship a usage report to the Ntrip caster */ { static int count; /* * 10 is an arbitrary number, the point is to have gotten several good * fixes before reporting usage to our Ntrip caster. * * count % 5 is as arbitrary a number as the fixcnt. But some delay * was needed here */ count ++; if (caster->ntrip.stream.nmea != 0 && context->fixcnt > 10 && (count % 5)==0) { if (caster->gpsdata.gps_fd > -1) { char buf[BUFSIZ]; gpsd_position_fix_dump(gps, buf, sizeof(buf)); if (write(caster->gpsdata.gps_fd, buf, strlen(buf)) == (ssize_t) strlen(buf)) { gpsd_log(&context->errout, LOG_IO, "=> dgps %s\n", buf); } else { gpsd_log(&context->errout, LOG_IO, "ntrip report write failed\n"); } } } }
/* *INDENT-OFF* */ void nmea_tpv_dump(struct gps_device_t *session, /*@out@*/ char bufp[], size_t len) { bufp[0] = '\0'; if ((session->gpsdata.set & TIME_SET) != 0) gpsd_binary_time_dump(session, bufp + strlen(bufp), len - strlen(bufp)); if ((session->gpsdata.set & LATLON_SET) != 0) { gpsd_position_fix_dump(session, bufp + strlen(bufp), len - strlen(bufp)); gpsd_transit_fix_dump(session, bufp + strlen(bufp), len - strlen(bufp)); } if ((session->gpsdata.set & (MODE_SET | DOP_SET | USED_IS | HERR_SET | VERR_SET)) != 0) gpsd_binary_quality_dump(session, bufp + strlen(bufp), len - strlen(bufp)); }
void ntrip_report(struct gps_device_t *session) /* may be time to ship a usage report to the Ntrip caster */ { struct ntrip_stream_t *stream = session->context->netgnss_privdata; /* * 10 is an arbitrary number, the point is to have gotten several good * fixes before reporting usage to our Ntrip caster. */ if (stream != NULL && stream->nmea != 0 && session->context->fixcnt > 10 && !session->context->sentdgps) { session->context->sentdgps = true; if (session->context->dsock > -1) { char buf[BUFSIZ]; gpsd_position_fix_dump(session, buf, sizeof(buf)); if (write(session->context->dsock, buf, strlen(buf)) == (ssize_t) strlen(buf)) gpsd_report(LOG_IO, "=> dgps %s\n", buf); else gpsd_report(LOG_IO, "ntrip report write failed\n"); } } }