Skip to content
Snippets Groups Projects
Commit 3a475cac authored by Joan Vallvé Navarro's avatar Joan Vallvé Navarro
Browse files

compiling

parent 29211151
No related branches found
No related tags found
2 merge requests!20new tag,!19new tag
......@@ -13,24 +13,6 @@ extern "C"
namespace GNSSUtils
{
//////////////////////////////// nav UTILS //////////////////////////////////////
template <typename T>
bool addToArray(const T &new_element, T *array, int &n, int &nmax);
template <typename T>
bool copyArray(const T *array_in, const int &n_in, T *array_out, int &n_out, int &nmax_out);
template <typename T>
void freeArray(T *array, int &n, int &nmax);
void freeNavArrays(nav_t& nav);
void freeEph(nav_t& nav);
void freeGeph(nav_t& nav);
void freeSeph(nav_t& nav);
void freePeph(nav_t& nav);
void freeAlm(nav_t& nav);
void freePclk(nav_t& nav);
void freeTec(nav_t& nav);
void freeFcb(nav_t& nav);
//////////////////////////////// Navigation Class //////////////////////////////////////
class Navigation;
typedef std::shared_ptr<Navigation> NavigationPtr;
typedef std::shared_ptr<const Navigation> NavigationConstPtr;
......@@ -84,6 +66,23 @@ class Navigation
void print();
//////////////////////////////// nav UTILS //////////////////////////////////////
template <typename T>
static bool addToArray(const T &new_element, T *array, int &n, int &nmax);
template <typename T>
static bool copyArray(const T *array_in, const int &n_in, T *array_out, int &n_out, int &nmax_out);
template <typename T>
static void freeArray(T *array, int &n, int &nmax);
static void freeEph(nav_t &nav);
static void freeGeph(nav_t &nav);
static void freeSeph(nav_t &nav);
static void freePeph(nav_t &nav);
static void freeAlm(nav_t &nav);
static void freePclk(nav_t &nav);
static void freeTec(nav_t &nav);
static void freeFcb(nav_t &nav);
static void freeNavArrays(nav_t &nav);
private:
// rtklib-like attribute to represent the different navigation msgs for a given epoch
......@@ -251,7 +250,7 @@ inline void Navigation::freeAlmanac()
//////////////////////////////// nav UTILS //////////////////////////////////////
template <typename T>
bool addToArray(const T &new_element, T *array, int &n, int &nmax)
bool Navigation::addToArray(const T &new_element, T *array, int &n, int &nmax)
{
// "inspired" from RTKLIB rinex.c
T *array_ref;
......@@ -273,7 +272,7 @@ bool addToArray(const T &new_element, T *array, int &n, int &nmax)
}
template<typename T>
bool copyArray(const T *array_in, const int &n_in, T *array_out, int &n_out, int &nmax_out)
bool Navigation::copyArray(const T *array_in, const int &n_in, T *array_out, int &n_out, int &nmax_out)
{
if (array_in == NULL)
return false;
......@@ -286,7 +285,7 @@ bool copyArray(const T *array_in, const int &n_in, T *array_out, int &n_out, int
}
template<typename T>
void freeArray(T *array, int &n, int &nmax)
void Navigation::freeArray(T *array, int &n, int &nmax)
{
if (array != NULL)
free(array);
......@@ -294,57 +293,58 @@ void freeArray(T *array, int &n, int &nmax)
n = nmax = 0;
}
void freeNavArrays(nav_t& nav)
{
// RTKLIB "freenav(&nav_,255)" doesn't check if is NULL before freeing
freeEph(nav);
freeGeph(nav);
freeSeph(nav);
freePeph(nav);
freePclk(nav);
freeAlm(nav);
freeTec(nav);
freeFcb(nav);
}
void freeEph(nav_t& nav)
inline void Navigation::freeEph(nav_t &nav)
{
freeArray<eph_t>(nav.eph, nav.n, nav.nmax);
}
void freeGeph(nav_t& nav)
inline void Navigation::freeGeph(nav_t &nav)
{
freeArray<geph_t>(nav.geph, nav.ng, nav.ngmax);
}
void freeSeph(nav_t& nav)
inline void Navigation::freeSeph(nav_t &nav)
{
freeArray<seph_t>(nav.seph, nav.ns, nav.nsmax);
}
void freePeph(nav_t& nav)
inline void Navigation::freePeph(nav_t &nav)
{
freeArray<peph_t>(nav.peph, nav.ne, nav.nemax);
}
void freeAlm(nav_t& nav)
inline void Navigation::freeAlm(nav_t &nav)
{
freeArray<alm_t>(nav.alm, nav.na, nav.namax);
}
void freePclk(nav_t& nav)
inline void Navigation::freePclk(nav_t &nav)
{
freeArray<pclk_t>(nav.pclk, nav.nc, nav.ncmax);
}
void freeTec(nav_t& nav)
inline void Navigation::freeTec(nav_t &nav)
{
freeArray<tec_t>(nav.tec, nav.nt, nav.ntmax);
}
void freeFcb(nav_t& nav)
inline void Navigation::freeFcb(nav_t &nav)
{
freeArray<fcbd_t>(nav.fcb, nav.nf, nav.nfmax);
}
inline void Navigation::freeNavArrays(nav_t &nav)
{
// RTKLIB "freenav(&nav_,255)" doesn't check if is NULL before freeing
freeEph(nav);
freeGeph(nav);
freeSeph(nav);
freePeph(nav);
freePclk(nav);
freeAlm(nav);
freeTec(nav);
freeFcb(nav);
}
}
#endif
#include "gnss_utils/navigation.h"
using namespace GNSSUtils;
Navigation::Navigation()
......
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