[hamradio-commits] [gnss-sdr] 189/303: Add RINEX validations

Carles Fernandez carles_fernandez-guest at moszumanska.debian.org
Mon Feb 13 22:36:00 UTC 2017


This is an automated email from the git hooks/post-receive script.

carles_fernandez-guest pushed a commit to branch master
in repository gnss-sdr.

commit 2c393af75a39eff98a9a010009a904c450518fc3
Author: Carles Fernandez <carlesfernandez at gmail.com>
Date:   Thu Dec 22 16:58:09 2016 +0100

    Add RINEX validations
---
 src/tests/system-tests/trk_system_test.cc | 117 ++++++++++++++++++++++++++----
 1 file changed, 101 insertions(+), 16 deletions(-)

diff --git a/src/tests/system-tests/trk_system_test.cc b/src/tests/system-tests/trk_system_test.cc
index 527af63..f9f972e 100644
--- a/src/tests/system-tests/trk_system_test.cc
+++ b/src/tests/system-tests/trk_system_test.cc
@@ -1,8 +1,11 @@
 
+#include <exception>
 #include <iostream>
-#include <unistd.h>
+#include <cstring>
+#include <stdio.h>
+#include <stdlib.h>
 #include <sys/wait.h>
-#include <exception>
+#include <unistd.h>
 #include <gflags/gflags.h>
 #include <glog/logging.h>
 #include <gtest/gtest.h>
@@ -12,7 +15,12 @@
 #include "concurrent_queue.h"
 #include "in_memory_configuration.h"
 
-
+DEFINE_string(generator_binary, std::string(SW_GENERATOR_BIN), "Path of Software Geenrator binary");
+DEFINE_string(rinex_nav_file, std::string(DEFAULT_RINEX_NAV), "Input RINEX navigation file");
+DEFINE_int32(duration, 100, "Duration of the experiment [in seconds]");
+DEFINE_string(static_position, "30.286502,120.032669,100", "Static receiver position [log,lat,height]");
+DEFINE_string(filename_rinex_obs, "sim.16o", "Filename of output RINEX navigation file");
+DEFINE_string(filename_raw_data, "signal_out.bin", "Filename of output raw data file");
 
 // For GPS NAVIGATION (L1)
 concurrent_queue<Gps_Acq_Assist> global_gps_acq_assist_queue;
@@ -31,18 +39,19 @@ public:
 
     const int baseband_sampling_freq = 2.6e6;
 
-    std::string filename_rinex_obs = "sim.16o";
-    std::string filename_raw_data = "signal_out.bin";
+    std::string filename_rinex_obs = FLAGS_filename_rinex_obs;
+    std::string filename_raw_data = FLAGS_filename_raw_data;
 
     int configure_generator();
     int generate_signal();
     int configure_receiver();
     int run_receiver();
-    int check_results();
+    void check_results();
     bool check_valid_rinex_nav(std::string filename);  // return true if the file is a valid Rinex navigation file.
     bool check_valid_rinex_obs(std::string filename);  // return true if the file is a valid Rinex observation file.
 
     std::shared_ptr<InMemoryConfiguration> config;
+    std::string generated_rinex_obs;
 };
 
 
@@ -64,16 +73,14 @@ bool Trk_System_Test::check_valid_rinex_obs(std::string filename)
 
 int Trk_System_Test::configure_generator()
 {
-    // Configure signal
-    generator_binary = std::string(SW_GENERATOR_BIN);
-
-    EXPECT_EQ(true, check_valid_rinex_nav(std::string(DEFAULT_RINEX_NAV)));
+    // Configure signal generator
+    generator_binary = FLAGS_generator_binary;
 
-    p1 = std::string("-rinex_nav_file=") + std::string(DEFAULT_RINEX_NAV);
-    p2_static = std::string("-static_position=30.286502,120.032669,100,1000");
+    p1 = std::string("-rinex_nav_file=") + FLAGS_rinex_nav_file;
+    p2_static = std::string("-static_position=") + FLAGS_static_position + std::string(",") + std::to_string(FLAGS_duration * 10);
     p2_dynamic = std::string("-obs_pos_file=") + std::string(DEFAULT_POSITION_FILE); // Observer positions file, in .csv or .nmea format"
-    p3 = std::string("-rinex_obs_file=") + filename_rinex_obs; // RINEX 2.10 observation file output
-    p4 = std::string("-sig_out_file=") + filename_raw_data; // Baseband signal output file. Will be stored in int8_t IQ multiplexed samples
+    p3 = std::string("-rinex_obs_file=") + FLAGS_filename_rinex_obs; // RINEX 2.10 observation file output
+    p4 = std::string("-sig_out_file=") + FLAGS_filename_raw_data; // Baseband signal output file. Will be stored in int8_t IQ multiplexed samples
     p5 = std::string("-sampling_freq=") + std::to_string(baseband_sampling_freq); //Baseband sampling frequency [MSps]
     return 0;
 }
@@ -277,16 +284,79 @@ int Trk_System_Test::run_receiver()
     {
             std::cout  << "STD exception: " << ex.what();
     }
+
+    // Get the name of the RINEX obs file generated by the receiver
+    FILE *fp;
+    std::string argum2 = std::string("/bin/ls *O | tail -1");
+    char buffer[1035];
+    fp = popen(&argum2[0], "r");
+    if (fp == NULL)
+        {
+          printf("Failed to run command\n" );
+        }
+    char * without_trailing;
+    while (fgets(buffer, sizeof(buffer), fp) != NULL)
+        {
+            std::string aux = std::string(buffer);
+            without_trailing = strtok(&aux[0], "\n");
+        }
+    generated_rinex_obs = std::string(without_trailing);
+    pclose(fp);
     return 0;
 }
 
 
-int Trk_System_Test::check_results()
+void Trk_System_Test::check_results()
 {
     // Open reference RINEX observables file
+    pid_t wait_result;
+    int child_status;
+    std::string RinDump = std::string("RinDump");
+    std::string path_RinDump = std::string(GPSTK_BINDIR) + RinDump;
+    std::string arg1 = std::string("--obs");
+    std::string arg2 = std::string("./") + FLAGS_filename_rinex_obs;
+    std::string arg3 = std::string("9");
+    std::string arg4 = std::string("C1C");
+    std::string arg5 = std::string("--headless");
+
+    FILE *fp;
+    FILE *fp2;
+    int status;
+    char buffer[1035];
+
+    /* Open the command for reading. */
+    std::string argum = path_RinDump + " " + arg1 + " " + arg2 + " " + arg3 + " " + arg4 + " " + arg5;
+
+    fp = popen(&argum[0], "r");
+    if (fp == NULL)
+     {
+       printf("Failed to run command\n" );
+     }
+
+     /* Read the output a line at a time - output it. */
+     while (fgets(buffer, sizeof(buffer), fp) != NULL)
+     {
+       printf("Reading line: %s", buffer);
+     }
+     pclose(fp);
 
     // Open generated RINEX observables file
+    std::string arg2_gen = "./" + generated_rinex_obs;
+    std::string argum2 = path_RinDump + " " + arg1 + " " + arg2_gen + " " + arg3 + " " + arg4 + " " + arg5;
+
+    fp2 = popen(&argum2[0], "r");
+    if (fp2 == NULL)
+    {
+      printf("Failed to run command\n" );
+    }
 
+    /* Read the output a line at a time - output it. */
+    while (fgets(buffer, sizeof(buffer), fp2) != NULL)
+    {
+      printf("Reading generated line: %s", buffer);
+    }
+
+    pclose(fp2);
     // Time alignment!
 
     // Read reference pseudoranges from a given satellite
@@ -300,24 +370,39 @@ int Trk_System_Test::check_results()
     // Read obtained carrier phase from a given satellite
 
     // Compute carrier phase error
-    return 0;
+    //return 0;
 }
 
 
 TEST_F(Trk_System_Test, Tracking_system_test)
 {
+    std::cout << "Validating input RINEX nav file: " << FLAGS_rinex_nav_file << " ..." << std::endl;
+    bool is_rinex_nav_valid = check_valid_rinex_nav(FLAGS_rinex_nav_file);
+    ASSERT_EQ(true, is_rinex_nav_valid);
+    std::cout << "The file is valid." << std::endl;
+
     // Configure the signal generator
     configure_generator();
 
     // Generate signal raw signal samples and observations RINEX file
     generate_signal();
 
+    std::cout << "Validating generated reference RINEX obs file: " << FLAGS_filename_rinex_obs << " ..." << std::endl;
+    bool is_gen_rinex_obs_valid = check_valid_rinex_obs( "./" + FLAGS_filename_rinex_obs);
+    ASSERT_EQ(true, is_gen_rinex_obs_valid);
+    std::cout << "The file is valid." << std::endl;
+
     // Configure receiver
     configure_receiver();
 
     // Run the receiver
     run_receiver();
 
+    std::cout << "Validating RINEX obs file obtained by GNSS-SDR: " << generated_rinex_obs << " ..." << std::endl;
+    is_gen_rinex_obs_valid = check_valid_rinex_obs( "./" + generated_rinex_obs);
+    ASSERT_EQ(true, is_gen_rinex_obs_valid);
+    std::cout << "The file is valid." << std::endl;
+
     // Check results
     check_results();
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/gnss-sdr.git



More information about the pkg-hamradio-commits mailing list