From 5df906624edadfa5038e7f530d11f71a2026e879 Mon Sep 17 00:00:00 2001 From: m-elias Date: Fri, 19 Apr 2024 18:51:10 -0500 Subject: [PATCH] additional REL flag parsing, fixed PVT carr_soln parsing additional RELPOSNED flags, added functions to get PVT & REL flag data, fixed PVT carr_soln_ parsing to return fixed(2), float(1) or none(0). --- src/ubx.cpp | 5 ++++- src/ubx.h | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/ubx.cpp b/src/ubx.cpp index bd92fae..6810cfa 100644 --- a/src/ubx.cpp +++ b/src/ubx.cpp @@ -142,7 +142,7 @@ void Ubx::ProcessNavData() { /* Fix */ gnss_fix_ok_ = ubx_nav_pvt_.payload.flags & 0x01; diff_soln_ = ubx_nav_pvt_.payload.flags & 0x02; - carr_soln_ = ubx_nav_pvt_.payload.flags >> 6; + carr_soln_ = (ubx_nav_pvt_.payload.flags & 0xC0) >> 6; if (gnss_fix_ok_) { switch (ubx_nav_pvt_.payload.fix_type) { case 2: { @@ -298,7 +298,10 @@ void Ubx::ProcessNavData() { } /* Relative position */ if (rel_pos_data_) { + rel_pos_gnss_fix_ok_ = ubx_nav_pvt_.payload.flags & 0x01; + rel_pos_diff_soln_ = ubx_nav_pvt_.payload.flags & 0x02; rel_pos_avail_ = ubx_nav_rel_pos_ned_.payload.flags & 0x04; + rel_pos_carr_soln_ = (ubx_nav_rel_pos_ned_.payload.flags & 0x18) >> 3; rel_pos_moving_baseline_ = ubx_nav_rel_pos_ned_.payload.flags & 0x20; rel_pos_ref_pos_miss_ = ubx_nav_rel_pos_ned_.payload.flags & 0x40; rel_pos_ref_obs_miss_ = ubx_nav_rel_pos_ned_.payload.flags & 0x80; diff --git a/src/ubx.h b/src/ubx.h index 1194318..b4e0ac3 100644 --- a/src/ubx.h +++ b/src/ubx.h @@ -56,6 +56,9 @@ class Ubx { /* Reads NAV data and returns true on EOE */ bool Read(); /* Data output */ + inline bool gnss_fix_ok() const {return gnss_fix_ok_;} + inline bool diff_soln() const {return diff_soln_;} + inline int8_t carr_soln() const {return carr_soln_;} inline Fix fix() const {return fix_;} inline int8_t num_sv() const {return num_sv_;} inline int16_t utc_year() const {return year_;} @@ -101,7 +104,10 @@ class Ubx { inline float ndop() const {return ndop_;} inline float edop() const {return edop_;} /* Relative position data */ + inline bool rel_pos_gnss_fix_ok() const {return rel_pos_gnss_fix_ok_;} + inline bool rel_pos_diff_soln() const {return rel_pos_diff_soln_;} inline bool rel_pos_avail() const {return rel_pos_avail_;} + inline int8_t rel_pos_carr_soln() const {return rel_pos_carr_soln_;} inline bool rel_pos_moving_baseline() const {return rel_pos_moving_baseline_;} inline bool rel_pos_ref_pos_miss() const {return rel_pos_ref_pos_miss_;} inline bool rel_pos_ref_obs_miss() const {return rel_pos_ref_obs_miss_;} @@ -174,7 +180,10 @@ class Ubx { bool tow_valid_, week_valid_, leap_valid_; bool confirmed_date_, confirmed_time_, valid_time_and_date_; bool invalid_llh_, invalid_ecef_; + bool rel_pos_gnss_fix_ok_ = false; + bool rel_pos_diff_soln_ = false; bool rel_pos_avail_ = false; + int8_t rel_pos_carr_soln_ = 0; bool rel_pos_moving_baseline_ = false; bool rel_pos_ref_pos_miss_ = false; bool rel_pos_ref_obs_miss_ = false;