Fixposition SDK 0.0.0-heads/main-0-g90a51ff
Collection of c++ libraries and apps for use with Fixposition products
Loading...
Searching...
No Matches
nmea.hpp File Reference

Fixposition SDK: Parser NMEA routines and types. More...

#include <array>
#include <cstdint>
#include <string>
#include <vector>
Include dependency graph for nmea.hpp:

Go to the source code of this file.

Classes

struct  fpsdk::common::parser::nmea::NmeaMessageMeta
 NMEA message meta data. More...
 
struct  fpsdk::common::parser::nmea::NmeaCoordinates
 NMEA coordinates (integer degrees, float minutes and a sign for N/S resp. E/W) More...
 
struct  fpsdk::common::parser::nmea::NmeaTime
 NMEA time (hour, minutes, seconds) More...
 
struct  fpsdk::common::parser::nmea::NmeaDate
 NMEA date (year, month, day) More...
 
struct  fpsdk::common::parser::nmea::NmeaLlh
 NMEA geodetic position. More...
 
struct  fpsdk::common::parser::nmea::NmeaSat
 NMEA satellite (used, e.g. in GSA) More...
 
struct  fpsdk::common::parser::nmea::NmeaVersion
 Constants for different versions of NMEA. More...
 
struct  fpsdk::common::parser::nmea::NmeaAzEl
 
struct  fpsdk::common::parser::nmea::NmeaCno
 
struct  fpsdk::common::parser::nmea::NmeaInt
 NMEA integer value. More...
 
struct  fpsdk::common::parser::nmea::NmeaFloat
 NMEA float value. More...
 
struct  fpsdk::common::parser::nmea::NmeaPayload
 NMEA payload base class. More...
 
struct  fpsdk::common::parser::nmea::NmeaGgaPayload
 NMEA-Gx-GGA message payload. More...
 
struct  fpsdk::common::parser::nmea::NmeaGllPayload
 NMEA-Gx-GLL message payload. More...
 
struct  fpsdk::common::parser::nmea::NmeaRmcPayload
 NMEA-Gx-RMC message payload. More...
 
struct  fpsdk::common::parser::nmea::NmeaVtgPayload
 NMEA-Gx-VTG message payload. More...
 
struct  fpsdk::common::parser::nmea::NmeaGstPayload
 NMEA-Gx-GST message payload. More...
 
struct  fpsdk::common::parser::nmea::NmeaHdtPayload
 NMEA-Gx-HDT message payload. More...
 
struct  fpsdk::common::parser::nmea::NmeaZdaPayload
 NMEA-Gx-ZDA message payload. More...
 
struct  fpsdk::common::parser::nmea::NmeaGsaPayload
 NMEA-Gx-GSA message payload (NMEA 4.11 only!) More...
 
struct  fpsdk::common::parser::nmea::NmeaGsvPayload
 NMEA-Gx-GSV message payload (NMEA 4.11 only!) More...
 
struct  fpsdk::common::parser::nmea::NmeaCollectGsaGsv
 Collector for NMEA-Gx-GSA and NMEA-Gx-GPA. More...
 
struct  fpsdk::common::parser::nmea::NmeaCollectGsaGsv::Sat
 Satellite info. More...
 
struct  fpsdk::common::parser::nmea::NmeaCollectGsaGsv::Sig
 

Namespaces

namespace  fpsdk
 Fixposition SDK.
 
namespace  fpsdk::common
 Fixposition SDK: Common library.
 
namespace  fpsdk::common::parser
 Parser.
 
namespace  fpsdk::common::parser::nmea
 Parser NMEA routines and types.
 

Enumerations

enum class  fpsdk::common::parser::nmea::NmeaTalkerId : int {
  fpsdk::common::parser::nmea::UNSPECIFIED = '!' , fpsdk::common::parser::nmea::PROPRIETARY = 'x' , fpsdk::common::parser::nmea::GPS_SBAS = 'P' , fpsdk::common::parser::nmea::GLO = 'L' ,
  fpsdk::common::parser::nmea::GAL = 'A' , fpsdk::common::parser::nmea::BDS = 'B' , fpsdk::common::parser::nmea::NAVIC = 'I' , fpsdk::common::parser::nmea::QZSS = 'Q' ,
  fpsdk::common::parser::nmea::GNSS = 'N'
}
 NMEA talker IDs. More...
 
enum class  fpsdk::common::parser::nmea::NmeaQualityGga : int {
  fpsdk::common::parser::nmea::UNSPECIFIED = '!' , fpsdk::common::parser::nmea::NOFIX = '0' , fpsdk::common::parser::nmea::SPP = '1' , fpsdk::common::parser::nmea::DGNSS = '2' ,
  fpsdk::common::parser::nmea::PPS = '3' , fpsdk::common::parser::nmea::RTK_FIXED = '4' , fpsdk::common::parser::nmea::RTK_FLOAT = '5' , fpsdk::common::parser::nmea::ESTIMATED = '6' ,
  fpsdk::common::parser::nmea::MANUAL = '7' , fpsdk::common::parser::nmea::SIM = '8'
}
 NMEA-Gx-GGA quality indicator. More...
 
enum class  fpsdk::common::parser::nmea::NmeaStatusGllRmc : int { fpsdk::common::parser::nmea::UNSPECIFIED = '!' , fpsdk::common::parser::nmea::INVALID = 'V' , fpsdk::common::parser::nmea::VALID = 'A' }
 NMEA-Gx-GLL and NMEA-Gx-RMC status. More...
 
enum class  fpsdk::common::parser::nmea::NmeaModeGllVtg : int {
  fpsdk::common::parser::nmea::UNSPECIFIED = '!' , fpsdk::common::parser::nmea::INVALID = 'N' , fpsdk::common::parser::nmea::AUTONOMOUS = 'A' , fpsdk::common::parser::nmea::DGNSS = 'D' ,
  fpsdk::common::parser::nmea::ESTIMATED = 'E' , fpsdk::common::parser::nmea::MANUAL = 'M' , fpsdk::common::parser::nmea::SIM = 'S'
}
 NMEA-Gx-GLL and NMEA-Gx-VTG pos mode. More...
 
enum class  fpsdk::common::parser::nmea::NmeaModeRmcGns : int {
  fpsdk::common::parser::nmea::UNSPECIFIED = '!' , fpsdk::common::parser::nmea::INVALID = 'N' , fpsdk::common::parser::nmea::AUTONOMOUS = 'A' , fpsdk::common::parser::nmea::DGNSS = 'D' ,
  fpsdk::common::parser::nmea::ESTIMATED = 'E' , fpsdk::common::parser::nmea::RTK_FIXED = 'R' , fpsdk::common::parser::nmea::RTK_FLOAT = 'F' , fpsdk::common::parser::nmea::PRECISE = 'P' ,
  fpsdk::common::parser::nmea::MANUAL = 'M' , fpsdk::common::parser::nmea::SIM = 'S'
}
 NMEA-Gx-RMC and NMEA-Gx-GNS pos mode. More...
 
enum class  fpsdk::common::parser::nmea::NmeaNavStatusRmc : int {
  fpsdk::common::parser::nmea::UNSPECIFIED = '!' , fpsdk::common::parser::nmea::SAFE = 'S' , fpsdk::common::parser::nmea::CAUTION = 'C' , fpsdk::common::parser::nmea::UNSAFE = 'U' ,
  fpsdk::common::parser::nmea::NA = 'V'
}
 NMEA-Gx-RMC navigational status. More...
 
enum class  fpsdk::common::parser::nmea::NmeaOpModeGsa : int { fpsdk::common::parser::nmea::UNSPECIFIED = '!' , fpsdk::common::parser::nmea::MANUAL = 'M' , fpsdk::common::parser::nmea::AUTO = 'A' }
 NMEA-Gx-GNS operation mode. More...
 
enum class  fpsdk::common::parser::nmea::NmeaNavModeGsa : int { fpsdk::common::parser::nmea::UNSPECIFIED = '!' , fpsdk::common::parser::nmea::NOFIX = '1' , fpsdk::common::parser::nmea::FIX2D = '2' , fpsdk::common::parser::nmea::FIX3D = '3' }
 NMEA-Gx-GNS nav mode. More...
 
enum class  fpsdk::common::parser::nmea::NmeaSystemId : int {
  fpsdk::common::parser::nmea::UNSPECIFIED = '!' , fpsdk::common::parser::nmea::GPS_SBAS = '1' , fpsdk::common::parser::nmea::GLO = '2' , fpsdk::common::parser::nmea::GAL = '3' ,
  fpsdk::common::parser::nmea::BDS = '4' , fpsdk::common::parser::nmea::QZSS = '5' , fpsdk::common::parser::nmea::NAVIC = '6'
}
 NMEA system IDs. More...
 
enum class  fpsdk::common::parser::nmea::NmeaSignalId : int {
  fpsdk::common::parser::nmea::UNSPECIFIED = 0x000 + '!' , fpsdk::common::parser::nmea::NONE = 0x000 + '0' , fpsdk::common::parser::nmea::GPS_L1CA = 0x100 + '1' , fpsdk::common::parser::nmea::GPS_L2CL = 0x100 + '6' ,
  fpsdk::common::parser::nmea::GPS_L2CM = 0x100 + '5' , fpsdk::common::parser::nmea::GPS_L5I = 0x100 + '7' , fpsdk::common::parser::nmea::GPS_L5Q = 0x100 + '8' , fpsdk::common::parser::nmea::GLO_L1OF = 0x200 + '1' ,
  fpsdk::common::parser::nmea::GLO_L2OF = 0x200 + '3' , fpsdk::common::parser::nmea::GAL_E1 = 0x300 + '7' , fpsdk::common::parser::nmea::GAL_E5A = 0x300 + '1' , fpsdk::common::parser::nmea::GAL_E5B = 0x300 + '2' ,
  fpsdk::common::parser::nmea::BDS_B1ID = 0x400 + '1' , fpsdk::common::parser::nmea::BDS_B2ID = 0x400 + 'B' , fpsdk::common::parser::nmea::BDS_B1C = 0x400 + '3' , fpsdk::common::parser::nmea::BDS_B2A = 0x400 + '5' ,
  fpsdk::common::parser::nmea::QZSS_L1CA = 0x500 + '1' , fpsdk::common::parser::nmea::QZSS_L1S = 0x500 + '4' , fpsdk::common::parser::nmea::QZSS_L2CM = 0x500 + '5' , fpsdk::common::parser::nmea::QZSS_L2CL = 0x500 + '6' ,
  fpsdk::common::parser::nmea::QZSS_L5I = 0x500 + '7' , fpsdk::common::parser::nmea::QZSS_L5Q = 0x500 + '8' , fpsdk::common::parser::nmea::NAVIC_L5A = 0x600 + '5'
}
 NMEA signal IDs. More...
 

Functions

bool fpsdk::common::parser::nmea::NmeaGetMessageMeta (NmeaMessageMeta &meta, const uint8_t *msg, const std::size_t msg_size)
 Get NMEA message meta data.
 
bool fpsdk::common::parser::nmea::NmeaGetMessageName (char *name, const std::size_t size, const uint8_t *msg, const std::size_t msg_size)
 Get NMEA message name.
 
bool fpsdk::common::parser::nmea::NmeaGetMessageInfo (char *info, const std::size_t size, const uint8_t *msg, const std::size_t msg_size)
 Get NMEA message info.
 

Variables

static constexpr uint8_t fpsdk::common::parser::nmea::NMEA_PREAMBLE = '$'
 NMEA framing preamble.
 
static constexpr std::size_t fpsdk::common::parser::nmea::NMEA_FRAME_SIZE = 6
 NMEA frame size ("$*cc\r\n")
 

Detailed Description

Fixposition SDK: Parser NMEA routines and types.

* ___    ___
* \  \  /  /
*  \  \/  /   Copyright (c) Fixposition AG (www.fixposition.com) and contributors
*  /  /\  \   License: see the LICENSE file
* /__/  \__\
*
* Based on work by flipflip (https://github.com/phkehl)
* The information on message structures, IDs, descriptions etc. in this file are from publicly available data, such as:
* - NMEA 0183 (https://www.nmea.org/)
* - https://en.wikipedia.org/wiki/NMEA_0183
* - u-blox ZED-F9P Interface Description (HPG 1.50) (https://www.u-blox.com/en/docs/UBXDOC-963802114-12815),
*   copyright (c) 2024 u-blox AG
* 

Definition in file nmea.hpp.