13#ifndef __FPSDK_COMMON_TO_JSON_NMEA_HPP__
14#define __FPSDK_COMMON_TO_JSON_NMEA_HPP__
19#include <nlohmann/json.hpp>
28inline void to_json(nlohmann::json& j,
const NmeaTalkerId e)
48inline void to_json(nlohmann::json& j,
const NmeaModeGll e)
53inline void to_json(nlohmann::json& j,
const NmeaModeVtg e)
78inline void to_json(nlohmann::json& j,
const NmeaSystemId e)
83inline void to_json(nlohmann::json& j,
const NmeaSignalId e)
90inline void to_json(nlohmann::json& j,
const NmeaTime& m)
93 j = nlohmann::json::object({
103inline void to_json(nlohmann::json& j,
const NmeaDate& m)
106 j = nlohmann::json::object({
107 {
"years", m.years },
108 {
"months", m.months },
116inline void to_json(nlohmann::json& j,
const NmeaLlh& m)
118 if (m.latlon_valid) {
119 j = nlohmann::json::object({
123 if (m.height_valid) {
124 j[
"height"] = m.height;
131inline void to_json(nlohmann::json& j,
const NmeaSat& m)
134 j = nlohmann::json::object({
135 {
"system", m.system },
143inline void to_json(nlohmann::json& j,
const NmeaAzEl& m)
146 j = nlohmann::json::object({
147 {
"system", m.system },
157inline void to_json(nlohmann::json& j,
const NmeaCno& m)
160 j = nlohmann::json::object({
161 {
"system", m.system },
163 {
"signal", m.signal },
171inline void to_json(nlohmann::json& j,
const NmeaInt& m)
180inline void to_json(nlohmann::json& j,
const NmeaFloat& m)
193 j = nlohmann::json::object({
196 {
"height_msl", m.height_msl },
197 {
"quality", m.quality },
198 {
"num_sv", m.num_sv },
200 {
"diff_age", m.diff_age },
201 {
"diff_sta", m.diff_sta },
209 j = nlohmann::json::object({
212 {
"status", m.status },
221 j = nlohmann::json::object({
224 {
"speed", m.speed },
225 {
"course", m.course },
228 {
"navstatus", m.navstatus },
236 j = nlohmann::json::object({
249 j = nlohmann::json::object({
251 {
"rms_range", m.rms_range },
252 {
"std_major", m.std_major },
253 {
"std_minor", m.std_minor },
254 {
"angle_major", m.angle_major },
255 {
"std_lat", m.std_lat },
256 {
"std_lon", m.std_lon },
257 {
"std_alt", m.std_alt },
265 j = nlohmann::json::object({
266 {
"heading", m.heading },
274 j = nlohmann::json::object({
277 {
"local_hr", m.local_hr },
278 {
"local_min", m.local_min },
286 j = nlohmann::json::object({
287 {
"opmode", m.opmode },
288 {
"navmode", m.navmode },
290 {
"num_sats", m.num_sats },
294 {
"system", m.system },
302 j = nlohmann::json::object({
303 {
"num_msgs", m.num_msgs },
304 {
"msg_num", m.msg_num },
305 {
"tot_num_sat", m.tot_num_sat },
306 {
"azels", m.azels },
307 {
"num_azels", m.num_azels },
308 {
"num_cnos", m.num_cnos },
309 {
"system", m.system },
310 {
"signal", m.signal },
318 j = nlohmann::json::object();
322 j[
"_valid"] = nmea->valid_;
323 j[
"_talker"] = nmea->talker_;
324 j[
"_formatter"] = nmea->formatter_;
326 switch (nmea->formatter_) {
Parser NMEA routines and types.
NmeaSystemId
NMEA system IDs.
NmeaModeRmcGns
NMEA-Gx-RMC and NMEA-Gx-GNS pos mode.
const char * NmeaNavStatusRmcStr(const NmeaNavStatusRmc navstatus)
Stringify NMEA-Gx-RMC navigational status.
const char * NmeaNavModeGsaStr(const NmeaNavModeGsa navmode)
Stringify NMEA-Gx-GNS nav mode.
NmeaOpModeGsa
NMEA-Gx-GNS operation mode.
NmeaNavStatusRmc
NMEA-Gx-RMC navigational status.
const char * NmeaSystemIdStr(const NmeaSystemId system)
Stringify NMEA system ID.
const char * NmeaTalkerIdStr(const NmeaTalkerId talker)
Stringify NMEA talker ID.
NmeaModeGll
NMEA-Gx-GLL pos mode.
const char * NmeaModeRmcGnsStr(const NmeaModeRmcGns mode)
Stringify NMEA-Gx-RMC and NMEA-Gx-GNS pos mode.
const char * NmeaStatusGllRmcStr(const NmeaStatusGllRmc status)
Stringify NMEA-Gx-GLL and NMEA-Gx-RMC status.
NmeaFormatter
NMEA formatter.
@ ZDA
Formatter ZDA (NmeaZdaPayload).
@ UNSPECIFIED
Unspecified.
@ HDT
Formatter HDT (NmeaHdtPayload).
@ RMC
Formatter RMC (NmeaRmcPayload).
@ GGA
Formatter GGA (NmeaGgaPayload).
@ GST
Formatter GST (NmeaGstPayload).
@ GSV
Formatter GSV (NmeaGsvPayload).
@ GSA
Formatter GSA (NmeaGsaPayload).
@ GLL
Formatter GLL (NmeaGllPayload).
@ VTG
Formatter VTG (NmeaVtgPayload).
NmeaNavModeGsa
NMEA-Gx-GNS nav mode.
const char * NmeaModeVtgStr(const NmeaModeVtg mode)
Stringify NMEA-Gx-VTG pos mode.
NmeaTalkerId
NMEA talker IDs.
const char * NmeaQualityGgaStr(const NmeaQualityGga qual)
Stringify NMEA-Gx-GGA quality indicator.
const char * NmeaOpModeGsaStr(const NmeaOpModeGsa opmode)
Stringify NMEA-Gx-GNS operation mode.
const char * NmeaModeGllStr(const NmeaModeGll mode)
Stringify NMEA-Gx-GLL pos mode.
const char * NmeaSignalIdStr(const NmeaSignalId signal)
Stringify NMEA signal IDs.
std::unique_ptr< NmeaPayload > NmeaPayloadPtr
Pointer to NMEA payload.
NmeaStatusGllRmc
NMEA-Gx-GLL and NMEA-Gx-RMC status.
NmeaModeVtg
NMEA-Gx-VTG pos mode.
NmeaSignalId
NMEA signal IDs.
const char * NmeaFormatterStr(const NmeaFormatter formatter)
Stringify NMEA formatter.
NmeaQualityGga
NMEA-Gx-GGA quality indicator.
Fixposition SDK: Parser NMEA routines and types.
NMEA date (year, month, day).
NMEA-Gx-GGA message payload.
NMEA-Gx-GLL message payload.
NMEA-Gx-GSA message payload (NMEA 4.11 only!).
NMEA-Gx-GST message payload.
NMEA-Gx-GSV message payload (NMEA 4.11 only!).
NMEA-Gx-HDT message payload.
NMEA-Gx-RMC message payload.
NMEA satellite (used, e.g. in GSA).
NMEA time (hour, minutes, seconds).
NMEA-Gx-VTG message payload.
NMEA-Gx-ZDA message payload.