Skip to content
Snippets Groups Projects
Commit 3a51234a authored by Pep Martí Saumell's avatar Pep Martí Saumell
Browse files

[ubloxraw] added class to manage raw data stream

parent 954352c3
No related branches found
No related tags found
2 merge requests!20new tag,!19new tag
...@@ -53,7 +53,8 @@ SET(SOURCES ...@@ -53,7 +53,8 @@ SET(SOURCES
src/observations.cpp src/observations.cpp
src/navigation.cpp src/navigation.cpp
src/TDCP.cpp src/TDCP.cpp
src/utils.cpp) src/utils.cpp
src/ublox_raw.cpp)
SET(RTKLIB_SRC SET(RTKLIB_SRC
${RTKLIB_SRC_DIR}/pntpos.c ${RTKLIB_SRC_DIR}/pntpos.c
...@@ -92,6 +93,7 @@ SET(HEADERS ...@@ -92,6 +93,7 @@ SET(HEADERS
include/gnss_utils/observations.h include/gnss_utils/observations.h
include/gnss_utils/navigation.h include/gnss_utils/navigation.h
include/gnss_utils/TDCP.h include/gnss_utils/TDCP.h
include/gnss_utils/ublox_raw.h
${RTKLIB_SRC_DIR}/rtklib.h) ${RTKLIB_SRC_DIR}/rtklib.h)
# Eigen ####### # Eigen #######
......
...@@ -30,6 +30,8 @@ class Navigation ...@@ -30,6 +30,8 @@ class Navigation
void clearNavigation(); void clearNavigation();
void freeNavigation();
void setNavigation(nav_t nav); void setNavigation(nav_t nav);
void loadFromRinex(const std::string& rnx_file, gtime_t t_start, gtime_t t_end, double dt = 0.0, const char* opt = ""); void loadFromRinex(const std::string& rnx_file, gtime_t t_start, gtime_t t_end, double dt = 0.0, const char* opt = "");
......
#ifndef UBLOX_RAW_H
#define UBLOX_RAW_H
#include "gnss_utils/gnss_utils.h"
namespace GNSSUtils
{
class UBloxRaw
{
public:
UBloxRaw();
~UBloxRaw();
int addDataStream(const std::vector<u_int8_t>& data_stream);
const Observations& getObservations() const;
const Navigation& getNavigation() const;
private:
raw_t raw_data_;
Observations obs_;
Navigation nav_;
void updateObservations();
void updateNavigation();
};
}
#endif
\ No newline at end of file
...@@ -14,6 +14,7 @@ Navigation::Navigation() ...@@ -14,6 +14,7 @@ Navigation::Navigation()
nav_.pclk=NULL; nav_.pclk=NULL;
nav_.alm =NULL; nav_.alm =NULL;
nav_.tec =NULL; nav_.tec =NULL;
nav_.fcb =NULL;
nav_.n =nav_.nmax =0; nav_.n =nav_.nmax =0;
nav_.ng=nav_.ngmax=0; nav_.ng=nav_.ngmax=0;
nav_.ns=nav_.nsmax=0; nav_.ns=nav_.nsmax=0;
...@@ -21,6 +22,7 @@ Navigation::Navigation() ...@@ -21,6 +22,7 @@ Navigation::Navigation()
nav_.nc=nav_.ncmax=0; nav_.nc=nav_.ncmax=0;
nav_.na=nav_.namax=0; nav_.na=nav_.namax=0;
nav_.nt=nav_.ntmax=0; nav_.nt=nav_.ntmax=0;
nav_.nf=nav_.nfmax=0;
// allocateEphemeris(0); // allocateEphemeris(0);
// allocateGLONASSEphemeris(0); // allocateGLONASSEphemeris(0);
...@@ -30,16 +32,32 @@ Navigation::Navigation() ...@@ -30,16 +32,32 @@ Navigation::Navigation()
Navigation::~Navigation() Navigation::~Navigation()
{ {
clearNavigation(); freeNavigation();
} }
void Navigation::clearNavigation() void Navigation::freeNavigation()
{ {
freenav(&nav_,255); freenav(&nav_,255);
// deleteEphemeris(); }
// deleteGLONASSEphemeris();
// deleteSBASEphemeris(); void Navigation::clearNavigation()
// deleteAlmanac(); {
// nav_.eph =NULL;
// nav_.geph=NULL;
// nav_.seph=NULL;
// nav_.peph=NULL;
// nav_.pclk=NULL;
// nav_.alm =NULL;
// nav_.tec =NULL;
// nav_.fcb =NULL;
// nav_.n =nav_.nmax =0;
// nav_.ng=nav_.ngmax=0;
// nav_.ns=nav_.nsmax=0;
// nav_.ne=nav_.nemax=0;
// nav_.nc=nav_.ncmax=0;
// nav_.na=nav_.namax=0;
// nav_.nt=nav_.ntmax=0;
// nav_.nf=nav_.nfmax=0;
} }
void Navigation::setNavigation(nav_t _nav) void Navigation::setNavigation(nav_t _nav)
......
#include "gnss_utils/ublox_raw.h"
using namespace GNSSUtils;
UBloxRaw::UBloxRaw()
{
if (init_raw(&raw_data_, STRFMT_UBX) == 0)
{
assert("Failed when allocating memory for raw_t");
return;
}
};
UBloxRaw::~UBloxRaw(){};
int UBloxRaw::addDataStream(const std::vector<u_int8_t>& data_stream)
{
// Update type based on RTKLIB
int update_type = 0;
for (auto data_byte = data_stream.begin(); data_byte != data_stream.end(); ++data_byte)
{
update_type = input_ubx(&raw_data_, (unsigned char)*data_byte);
}
switch (update_type)
{
case 1:
updateObservations();
break;
case 2:
// Ephemeris
updateNavigation();
break;
case 3:
// SBAS Message (we should update observations, right?)
updateObservations();
break;
case 9:
// Almanac
updateNavigation();
break;
}
return update_type;
}
const Observations& UBloxRaw::getObservations() const {return obs_;}
const Navigation& UBloxRaw::getNavigation() const {return nav_;}
void UBloxRaw::updateObservations()
{
obs_.clearObservations();
for (int ii = 0; ii < raw_data_.obs.n; ++ii)
{
obs_.addObservation(raw_data_.obs.data[ii]);
}
}
void UBloxRaw::updateNavigation()
{
nav_.setNavigation(raw_data_.nav);
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment