#include #include "gps.hpp" int main() { gps::Reader reader; if (!reader.begin()) { std::fprintf(stderr, "gps open failed\n" " check /dev/serial0 (UART)\n" " enable serial: sudo raspi-config -> Interfaces -> Serial Port\n" " login shell = No, hardware = Yes\n"); return 1; } std::fprintf(stderr, "gps reading /dev/serial0 at 9600...\n"); char line[128]; gps::Fix fix; for (;;) { if (!reader.readLine(line, sizeof(line))) { std::fprintf(stderr, "uart read error\n"); break; } if (!gps::Reader::parseRmc(line, fix)) { // Not an RMC sentence or no fix — print raw line for debug // std::fprintf(stderr, "raw: %s", line); continue; } if (fix.valid) { std::fprintf(stderr, "fix lat=%+.6f lon=%+.6f spd=%.1f kn " "time=%s date=%s\n", fix.lat, fix.lon, fix.speed_knots, fix.time, fix.date); } else { std::fprintf(stderr, "no fix\n"); } } }