# `dgnss.c`

Functions:- | This file provides the interface to Differential GNSS (Global Navigation Satellite Systems) services.
--- | ---
Notes based on code as of Mon Apr 5 21:38:06 2010 -0400.
`bool netgnss_url(char *name)` | Check if a URL is valid for GNSS/DGPS service.
`int netgnss_open(struct gps_context_t *context, char *dgnss_service)` | Try to open a connection to the nominated service. If the service cannot be opened, the return is -1. The supported services are `dgpsip` (differential corrections via IP) and `ntrip` (differential corrections in http form).
`int netgnss_poll(struct gps_context_t *context)` | Try to poll the GNSS service for a correction report. If no socket is active, simply return 0. If a socket is active, on successful read it stores the current timestamp and the report in the context buffer then returns 0. If no data is ready or an error (except EAGAIN) occurs, drop the connection and return -1.
`void netgnss_report(struct gps_device_t *session)` | Call the `dgpsip_report()` or `ntrip_report()` function if either is active.
`void netgnss_autoconnect(struct gps_context_t *context, double lat, double lon)` | Call the `autoconnect()` function in `dgpsip.c`
`void rtcm_relay(struct gps_device_t *session)` | If there is a DGNSS connection report in the context buffer, pass it to the caller. If the transaction fails, generate an error log, otherwise, update the session timestamp.