92void nmea::date(
const std::string_view& sv, std::chrono::year_month_day& d) {
99 d = std::chrono::year_month_day{
100 std::chrono::year(std::stoi(
s.substr(4)) +
CENTURY),
101 std::chrono::month(std::stoi(
s.substr(2, 2))),
102 std::chrono::day(std::stoi(
s.substr(0, 2)))
122 unsigned int field = 0;
123 for (
const auto word : std::views::split(data,
delim)) {
161 unsigned int field = 0;
162 for (
const auto word : std::views::split(data,
delim)) {
190 gga.
sats = std::stoi(std::string(std::string_view(word)));
194 gga.
alt = std::stof(std::string(std::string_view(word)),
nullptr);
198 gga.
geosep = std::stof(std::string(std::string_view(word)),
nullptr);
205 return (field == 15);
211 unsigned int field = 0;
212 std::string_view v = std::string_view(data).substr(0, data.find(
'*'));
213 for (
const auto word : std::views::split(v,
delim)) {
230 if (std::string_view(word).length() == 0) {
234 std::stoi(std::string(std::string_view(word)));
245 return (field == 18);
254 unsigned int field = 0;
255 std::string_view v = std::string_view(data).substr(0, data.find(
'*'));
256 for (
const auto word : std::views::split(v,
delim)) {
265 if (std::string_view(word).length() == 0) {
266 gsv.
sats[(field - 4) / 4 ].prn = 0;
268 gsv.
sats[(field - 4) / 4 ].prn =
269 std::stoi(std::string(std::string_view(word)));
276 if (std::string_view(word).length() == 0) {
277 gsv.
sats[(field - 5) / 4 ].elev = 0;
279 gsv.
sats[(field - 5) / 4 ].elev =
280 std::stoi(std::string(std::string_view(word)));
287 if (std::string_view(word).length() == 0) {
288 gsv.
sats[(field - 6) / 4 ].azim = 0;
290 gsv.
sats[(field - 6) / 4 ].azim =
291 std::stoi(std::string(std::string_view(word)));
298 if (std::string_view(word).length() == 0) {
299 gsv.
sats[(field - 7) / 4 ].snr = 0;
301 gsv.
sats[(field - 7) / 4 ].snr =
302 std::stoi(std::string(std::string_view(word)));
310 return (field == 20);
315 unsigned int field = 0;
316 for (
const auto word : std::views::split(data,
delim)) {
351 return (field == 13);