22#ifndef PROTOCORE_NMEA0183_H
23#define PROTOCORE_NMEA0183_H
38 const char *fields[PC_NMEA0183_MAX_FIELDS];
39 uint8_t field_len[PC_NMEA0183_MAX_FIELDS];
43uint8_t pc_nmea0183_checksum(
const char *s,
size_t len);
49size_t pc_nmea0183_build(
char *buf,
size_t cap,
const char *body);
56bool pc_nmea0183_parse(
const char *s,
size_t len, Nmea0183 *out);
59bool pc_nmea0183_field_float(
const Nmea0183 *m, uint8_t idx,
float *out);
62bool pc_nmea0183_field_int(
const Nmea0183 *m, uint8_t idx,
long *out);
89 uint8_t day, month, year;
100bool pc_nmea0183_parse_gga(
const Nmea0183 *m, pc_nmea_gga *out);
106bool pc_nmea0183_parse_rmc(
const Nmea0183 *m, pc_nmea_rmc *out);
109struct pc_nmea_gsv_sat
124 uint8_t sats_in_view;
126 pc_nmea_gsv_sat sats[4];
133bool pc_nmea0183_parse_gsv(
const Nmea0183 *m, pc_nmea_gsv *out);
139 uint8_t hour, minute;
144 uint8_t zone_minutes;
151bool pc_nmea0183_parse_zda(
const Nmea0183 *m, pc_nmea_zda *out);
157 float course_true_deg;
158 float course_mag_deg;
168bool pc_nmea0183_parse_vtg(
const Nmea0183 *m, pc_nmea_vtg *out);
187bool pc_nmea0183_parse_gsa(
const Nmea0183 *m, pc_nmea_gsa *out);
192 float wind_angle_deg;
203bool pc_nmea0183_parse_mwv(
const Nmea0183 *m, pc_nmea_mwv *out);
218bool pc_nmea0183_parse_dpt(
const Nmea0183 *m, pc_nmea_dpt *out);
233bool pc_nmea0183_parse_hdg(
const Nmea0183 *m, pc_nmea_hdg *out);
241 uint8_t hour, minute;
252bool pc_nmea0183_parse_gll(
const Nmea0183 *m, pc_nmea_gll *out);
259 float heading_true_deg;
260 float heading_mag_deg;
269bool pc_nmea0183_parse_vhw(
const Nmea0183 *m, pc_nmea_vhw *out);
275 float total_water_nm;
283bool pc_nmea0183_parse_vlw(
const Nmea0183 *m, pc_nmea_vlw *out);
User-facing configuration for ProtoCore.