/** * @file nmea.h * @note Copyright (C) 2020 Richard Cochran * @note SPDX-License-Identifier: GPL-2.0+ */ #ifndef HAVE_NMEA_H #define HAVE_NMEA_H #include #include /** Opaque type. */ struct nmea_parser; struct nmea_rmc { struct timespec ts; bool fix_valid; }; /** * Parses NMEA RMC sentences out of a given buffer. * @param np Pointer obtained via nmea_parser_create(). * @param buf Pointer to the data to be parsed. * @param buflen Length of 'buf' in bytes. * @param rmc Pointer to hold the result. * @param parsed Returns the number of bytes parsed, possibly less than buflen. * @return Zero on success, non-zero otherwise. */ int nmea_parse(struct nmea_parser *np, const char *buf, int buflen, struct nmea_rmc *rmc, int *parsed); /** * Creates an instance of an NMEA parser. * @return Pointer to a new instance on success, NULL otherwise. */ struct nmea_parser *nmea_parser_create(void); /** * Destroys an NMEA parser instance. * @param np Pointer obtained via nmea_parser_create(). */ void nmea_parser_destroy(struct nmea_parser *np); #endif