From d643029f281f6a12309bd904dca200fbe06f4d2b Mon Sep 17 00:00:00 2001
From: jlaplaza <jlaplaza@iri.upc.edu>
Date: Thu, 27 Jun 2019 13:01:42 +0200
Subject: [PATCH] Single Point Position computed successfuly

---
 src/examples/gnss_utils_test.cpp | 81 +++++++++++++++++++-------------
 src/getPos.cpp                   |  2 +-
 src/navigation.cpp               |  2 +-
 3 files changed, 51 insertions(+), 34 deletions(-)

diff --git a/src/examples/gnss_utils_test.cpp b/src/examples/gnss_utils_test.cpp
index 3626687..ad1074b 100644
--- a/src/examples/gnss_utils_test.cpp
+++ b/src/examples/gnss_utils_test.cpp
@@ -39,19 +39,22 @@ int createObsAndNav(Observations* observations, char* obs_path,  Navigation* nav
   obs_t obs;
   obs.data = (obsd_t *) malloc(sizeof(obsd_t)*MAXSAT);
 
-
+  /* header */
+  std::cout << "------------" << std::endl;
+  std::cout << "Observations" << std::endl;
+  std::cout << "------------" << std::endl;
 
   if (readrnx(obs_path, rcv, opt, &obs, NULL, NULL))
   {
-    obs.data[0].P[0] = 22352029.710;
-    obs.data[1].P[0] = 20876138.578;
-    obs.data[2].P[0] = 20922649.533;
-    obs.data[3].P[0] = 24736002.147;
-    obs.data[4].P[0] = 21596022.619;
+    sortobs(&obs);
+    obs.data[0].P[0] = 21597659.275;
+    obs.data[1].P[0] = 22348322.550;
+    obs.data[2].P[0] = 20873167.574;
+    obs.data[3].P[0] = 20920707.830;
     
     std::cout << "Obs number: " << obs.n << std::endl;
     
-    sortobs(&obs); 
+     
   }
   
 
@@ -65,7 +68,7 @@ int createObsAndNav(Observations* observations, char* obs_path,  Navigation* nav
 
   for (int i=0; i < obs.n; i++)
   {
-    std::cout << "time: " << obs.data[i].time.time <<  " | sat: " << int(obs.data[i].sat) << " | rcv: " << obs.data[i].rcv << 
+    std::cout << "time: " << time_str(obs.data[i].time, 3) <<  " | sat: " << int(obs.data[i].sat) << " | rcv: " << obs.data[i].rcv << 
                " | SNR: " << obs.data[i].SNR[0] << " | LLI: " << obs.data[i].LLI[0] << " | code: " << obs.data[i].code[0] << 
                  " | L: " << obs.data[i].L[0] <<  " | P: " << obs.data[i].P[0] << " | D: " << obs.data[i].D[0] << std::endl;
     observations->pushObservation(obs.data[i]);
@@ -73,17 +76,22 @@ int createObsAndNav(Observations* observations, char* obs_path,  Navigation* nav
 
   free(obs.data);
 
+  /* header */
+  std::cout << "----------" << std::endl;
+  std::cout << "Navigation" << std::endl;
+  std::cout << "----------" << std::endl;
 
   /* Load _nav attribute into nav variable */
   nav_t nav = navigation->getNavigation();
 
+
   if (readrnx(nav_path, rcv, opt, NULL, &nav, NULL))
   {
-    std::cout << "Navigation file loaded" << std::endl;
-    std::cout << "GPS satellites: " << nav.n << std::endl;
-    std::cout << "GLONASS satellites: " << nav.ng << std::endl;
-    std::cout << "SBAS satellites: " << nav.ns << std::endl;
-    std::cout << "Almanac satellites: " << nav.na << std::endl;
+    std::cout << "Navigation file loaded." << std::endl;
+    std::cout << "GPS satellites in navigation file: " << nav.n << std::endl;
+    std::cout << "GLONASS satellites in navigation file: " << nav.ng << std::endl;
+    std::cout << "SBAS satellites in navigation file: " << nav.ns << std::endl;
+    std::cout << "Almanac satellites in navigation file: " << nav.na << std::endl;
     uniqnav(&nav);   
   }
   
@@ -110,17 +118,13 @@ int createObsAndNav(Observations* observations, char* obs_path,  Navigation* nav
   {
     std::cout <<  i << " SBAS Sat Id: " << nav.seph[i].sat << std::endl;
   }
-
-
   
+
+  /* Load nav into Navigation object*/
   navigation->setNavigation(nav);
 
   std::cout << "Navigation message loaded to Navigation class." << std::endl;
 
-  
-  
-  
-  
   return 1;
 }
 
@@ -142,22 +146,25 @@ int main(int argc, char *argv[])
   // create Navigation object
   Navigation navigation;
 
-  createObsAndNav(&observations, "/home/jlaplaza/gitlab/gnss_utils/src/examples/raw_201805171357.obs" ,&navigation, "/home/jlaplaza/gitlab/gnss_utils/src/examples/raw_201805171357.nav");
-
-
+  createObsAndNav(&observations, "/home/jlaplaza/gitlab/gnss_utils/src/examples/raw_201805171357.obs", &navigation, "/home/jlaplaza/gitlab/gnss_utils/src/examples/raw_201805171357.nav");
 
-  nav_t nav2 = navigation.getNavigation();
+  nav_t nav = navigation.getNavigation();
 
-  std::cout << "Navigation eph number " << nav2.n << std::endl;
+  std::cout << "Navigation eph number " << nav.n << std::endl;
 
   /* Set processing options */
+
+  /* header */
+  std::cout << "------------------" << std::endl;
+  std::cout << "Processing options" << std::endl;
+  std::cout << "------------------" << std::endl;
   
   prcopt_t prcopt = prcopt_default;  
   prcopt.mode = PMODE_SINGLE;
   prcopt.soltype = 0;
   prcopt.nf = 1;
   prcopt.navsys = SYS_GPS;
-  prcopt.elmin = 1.05;  // 60 degrees = 1.05 rad
+  //prcopt.elmin = 1.05;  // 60 degrees = 1.05 rad
   prcopt.sateph = EPHOPT_BRDC;
   prcopt.ionoopt = IONOOPT_OFF;
   prcopt.tropopt = TROPOPT_OFF;
@@ -171,8 +178,13 @@ int main(int argc, char *argv[])
   std::cout << "Processing options defined" << std::endl;
   
   
-  //Compute fix
-  
+  //Compute spp
+
+  /* header */
+  std::cout << "-----------" << std::endl;
+  std::cout << "pntpos call" << std::endl;
+  std::cout << "-----------" << std::endl;
+
   int stat;
 
   sol_t solb={{0}};
@@ -181,15 +193,20 @@ int main(int argc, char *argv[])
 
   std::vector<obsd_t> obs = observations.getObservations();
 
-  std::cout << "obs: " << obs[0].P[0] << std::endl;
-
-  nav_t nav = navigation.getNavigation();
+  for (int i=0; i < obs.size(); i++)
+  {
+    std::cout << "time: " << time_str(obs[i].time, 3) <<  " | sat: " << int(obs[i].sat) << " | rcv: " << obs[i].rcv << 
+               " | SNR: " << obs[i].SNR[0] << " | LLI: " << obs[i].LLI[0] << " | code: " << obs[i].code[0] << 
+                 " | L: " << obs[i].L[0] <<  " | P: " << obs[i].P[0] << " | D: " << obs[i].D[0] << std::endl;
+  }
 
-  stat = pntpos(&(obs[0]), obs.size(), &nav, &prcopt, &solb, NULL, NULL, msg);
+  std::cout << "obs.size(): " << obs.size() << std::endl;
+  
+  stat = pntpos(&obs[0], obs.size(), &nav, &prcopt, &solb, NULL, NULL, msg);
 
   std::cout << "msg: " << msg << std::endl;
 
-  std::cout << "Stat: " << stat << std::endl;
+  std::cout << "sol.stat: " << solb.stat << std::endl;
 
   std::cout << "Position: " << solb.rr[0] << ", " << solb.rr[1] << ", " << solb.rr[2] << std::endl;
 
diff --git a/src/getPos.cpp b/src/getPos.cpp
index 86b0416..e250bb0 100644
--- a/src/getPos.cpp
+++ b/src/getPos.cpp
@@ -16,7 +16,7 @@ static int getPos(Observations observations, Navigation navigation, sol_t sol)
   prcopt.soltype = 0;
   prcopt.nf = 1;
   prcopt.navsys = SYS_GPS;
-  prcopt.elmin = 1.05;  // 60 degrees = 1.05 rad
+  //prcopt.elmin = 1.05;  // 60 degrees = 1.05 rad
   prcopt.sateph = EPHOPT_BRDC;
   prcopt.ionoopt = IONOOPT_OFF;
   prcopt.tropopt = TROPOPT_OFF;
diff --git a/src/navigation.cpp b/src/navigation.cpp
index e2a64f4..72ae965 100644
--- a/src/navigation.cpp
+++ b/src/navigation.cpp
@@ -87,7 +87,7 @@ void Navigation::setNavigation(nav_t nav)
   */
 
 
-  // _nav = nav;
+  _nav = nav;
 }
 
 const nav_t & Navigation::getNavigation() const
-- 
GitLab