# `ntrip.c`

Functions:- | Gather and dispatch DGNSS data from Ntrip broadcasters.
--- | ---
Notes based on codec as of Tue Apr 6 10:17:55 2010 -0400.
`static char *ntrip_field_iterate(char *start, char *prev, const char *eol)` | Extract individual fields from the STR data block using ';' as the separator but handling string-embedded ';' characters correctly.
`static void ntrip_str_parse(char *str, size_t len, struct ntrip_stream_t *hold)` | Break an STR data block down using `ntrip_field_iterate()` and store the relevant details in an accumulation buffer.
`static int ntrip_sourcetable_parse(int fd, char *buf, ssize_t blen, const char *stream, struct ntrip_stream_t *keep)` | Parse a block of ntrip data by passing the STR data to `ntrip_str_parse()`. Return a 0 on success or -1 on any of the many possible failures.
`static int ntrip_stream_probe(const char *caster, const char *port, const char *stream, struct ntrip_stream_t *keep)` | Send a request to the broadcaster for a block of correction data. If successful, return the result of parsing the table. On error return -1.
`static int ntrip_auth_encode(const struct ntrip_stream_t *stream, const char *auth, char buf[], size_t size)` | Check the authorisation of the stream and return 0 if there is none or it is basic. Return -1 in all other cases.
`static int ntrip_stream_open(const char *caster, const char *port, const char *auth, struct gps_context_t *context, struct ntrip_stream_t *stream)` | Check the authorisation of the stream and if successful, try to connect. On connection, try to read data and test for various errors. On success, return the socket number, on error return -1.
`int ntrip_open(struct gps_context_t *context, char *caster)` | Try to establish a connection to the ntrip server. On success, return the socket number. Signal error with a return of -1.
`void ntrip_report(struct gps_device_t *session)` | If we have not contacted the server already and we have at least 10 fixes, send a report to the server and set the flag, so we don't do it again.