SkyLok/chip_test_example/gps_test.cpp
2026-05-21 12:30:02 +02:00

40 lines
1.1 KiB
C++

#include <cstdio>
#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");
}
}
}