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)))
123 unsigned int field = 0;
125 for (
const auto word : std::views::split(data,
delim)) {
164 unsigned int field = 0;
166 for (
const auto word : std::views::split(data,
delim)) {
194 gga.result.
sats = std::stoi(std::string(std::string_view(word)));
198 gga.result.
alt = std::stof(std::string(std::string_view(word)),
nullptr);
202 gga.result.
geosep = std::stof(std::string(std::string_view(word)),
nullptr);
216 unsigned int field = 0;
218 std::string_view v = std::string_view(data).substr(0, data.find(
'*'));
219 for (
const auto word : std::views::split(v,
delim)) {
236 if (std::string_view(word).length() == 0) {
237 gsa.result.
sats[field - 3] = 0;
240 std::stoi(std::string(std::string_view(word)));
261 unsigned int field = 0;
263 std::string_view v = std::string_view(data).substr(0, data.find(
'*'));
264 for (
const auto word : std::views::split(v,
delim)) {
273 if (std::string_view(word).length() == 0) {
274 gsv.result.
sats[(field - 4) / 4 ].prn = 0;
276 gsv.result.
sats[(field - 4) / 4 ].prn =
277 std::stoi(std::string(std::string_view(word)));
284 if (std::string_view(word).length() == 0) {
285 gsv.result.
sats[(field - 5) / 4 ].elev = 0;
287 gsv.result.
sats[(field - 5) / 4 ].elev =
288 std::stoi(std::string(std::string_view(word)));
295 if (std::string_view(word).length() == 0) {
296 gsv.result.
sats[(field - 6) / 4 ].azim = 0;
298 gsv.result.
sats[(field - 6) / 4 ].azim =
299 std::stoi(std::string(std::string_view(word)));
306 if (std::string_view(word).length() == 0) {
307 gsv.result.
sats[(field - 7) / 4 ].snr = 0;
309 gsv.result.
sats[(field - 7) / 4 ].snr =
310 std::stoi(std::string(std::string_view(word)));
324 unsigned int field = 0;
326 for (
const auto word : std::views::split(data,
delim)) {