22#ifndef PROTOCORE_NMEA0183_H
23#define PROTOCORE_NMEA0183_H
27#if PROTOCORE_ENABLE_NMEA0183
32typedef struct Nmea0183
37 const char *fields[PROTOCORE_NMEA0183_MAX_FIELDS];
38 uint8_t field_len[PROTOCORE_NMEA0183_MAX_FIELDS];
42uint8_t protocore_nmea0183_checksum(
const char *s,
size_t len);
48size_t protocore_nmea0183_build(
char *buf,
size_t cap,
const char *body);
55proto_bool protocore_nmea0183_parse(
const char *s,
size_t len, Nmea0183 *out);
58proto_bool protocore_nmea0183_field_float(
const Nmea0183 *m, uint8_t idx,
float *out);
61proto_bool protocore_nmea0183_field_int(
const Nmea0183 *m, uint8_t idx,
long *out);
88 uint8_t day, month, year;
99proto_bool protocore_nmea0183_parse_gga(
const Nmea0183 *m, protocore_nmea_gga *out);
105proto_bool protocore_nmea0183_parse_rmc(
const Nmea0183 *m, protocore_nmea_rmc *out);
115} protocore_nmea_gsv_sat;
123 uint8_t sats_in_view;
125 protocore_nmea_gsv_sat sats[4];
132proto_bool protocore_nmea0183_parse_gsv(
const Nmea0183 *m, protocore_nmea_gsv *out);
138 uint8_t hour, minute;
143 uint8_t zone_minutes;
150proto_bool protocore_nmea0183_parse_zda(
const Nmea0183 *m, protocore_nmea_zda *out);
156 float course_true_deg;
157 float course_mag_deg;
167proto_bool protocore_nmea0183_parse_vtg(
const Nmea0183 *m, protocore_nmea_vtg *out);
186proto_bool protocore_nmea0183_parse_gsa(
const Nmea0183 *m, protocore_nmea_gsa *out);
191 float wind_angle_deg;
202proto_bool protocore_nmea0183_parse_mwv(
const Nmea0183 *m, protocore_nmea_mwv *out);
217proto_bool protocore_nmea0183_parse_dpt(
const Nmea0183 *m, protocore_nmea_dpt *out);
232proto_bool protocore_nmea0183_parse_hdg(
const Nmea0183 *m, protocore_nmea_hdg *out);
240 uint8_t hour, minute;
251proto_bool protocore_nmea0183_parse_gll(
const Nmea0183 *m, protocore_nmea_gll *out);
258 float heading_true_deg;
259 float heading_mag_deg;
268proto_bool protocore_nmea0183_parse_vhw(
const Nmea0183 *m, protocore_nmea_vhw *out);
274 float total_water_nm;
282proto_bool protocore_nmea0183_parse_vlw(
const Nmea0183 *m, protocore_nmea_vlw *out);
#define PROTOCORE_BEGIN_DECLS
Give a header's declarations C linkage, so their symbol names carry no parameter types.
_Bool proto_bool
The truth value.
#define PROTOCORE_END_DECLS