[hamradio-commits] [gnss-sdr] 59/126: Added seconds_to_skip and header_size

Carles Fernandez carles_fernandez-guest at moszumanska.debian.org
Sat Dec 26 18:38:02 UTC 2015


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

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

commit e4ff3581789cb2c0c4693540474659914f8d0bdc
Author: Cillian O'Driscoll <cillian.odriscoll at gmail.com>
Date:   Thu Aug 6 09:31:39 2015 +0100

    Added seconds_to_skip and header_size
    
    Use these configuration parameters to skip ahead in the FileSignalSource
    Fixed bug in determining file duration
---
 .../signal_source/adapters/file_signal_source.cc   | 46 +++++++++++++++++++---
 1 file changed, 41 insertions(+), 5 deletions(-)

diff --git a/src/algorithms/signal_source/adapters/file_signal_source.cc b/src/algorithms/signal_source/adapters/file_signal_source.cc
index 780d93e..161afd0 100644
--- a/src/algorithms/signal_source/adapters/file_signal_source.cc
+++ b/src/algorithms/signal_source/adapters/file_signal_source.cc
@@ -58,6 +58,8 @@ FileSignalSource::FileSignalSource(ConfigurationInterface* configuration,
     std::string default_item_type = "short";
     std::string default_dump_filename = "./my_capture.dat";
 
+    double default_seconds_to_skip = 0.0;
+    size_t header_size = 0;
     samples_ = configuration->property(role + ".samples", 0);
     sampling_frequency_ = configuration->property(role + ".sampling_frequency", 0);
     filename_ = configuration->property(role + ".filename", default_filename);
@@ -72,6 +74,11 @@ FileSignalSource::FileSignalSource(ConfigurationInterface* configuration,
     enable_throttle_control_ = configuration->property(role + ".enable_throttle_control", false);
     std::string s = "InputFilter";
     //double IF = configuration->property(s + ".IF", 0.0);
+    double seconds_to_skip = configuration->property(role + ".seconds_to_skip", default_seconds_to_skip );
+    header_size = configuration->property( role + ".header_size", 0 );
+    long samples_to_skip = 0;
+
+    bool is_complex = false;
 
     if (item_type_.compare("gr_complex") == 0)
         {
@@ -88,6 +95,7 @@ FileSignalSource::FileSignalSource(ConfigurationInterface* configuration,
     else if (item_type_.compare("ishort") == 0)
         {
             item_size_ = sizeof(int16_t);
+            is_complex = true;
         }
     else if (item_type_.compare("byte") == 0)
         {
@@ -96,6 +104,7 @@ FileSignalSource::FileSignalSource(ConfigurationInterface* configuration,
     else if (item_type_.compare("ibyte") == 0)
         {
     		item_size_ = sizeof(int8_t);
+            is_complex = true;
         }
     else
         {
@@ -107,6 +116,30 @@ FileSignalSource::FileSignalSource(ConfigurationInterface* configuration,
     {
             file_source_ = gr::blocks::file_source::make(item_size_, filename_.c_str(), repeat_);
 
+            if( seconds_to_skip > 0 )
+            {
+                samples_to_skip = static_cast< long >(
+                        seconds_to_skip * sampling_frequency_ );
+
+                if( is_complex )
+                {
+                    samples_to_skip *= 2;
+                }
+            }
+            if( header_size > 0 )
+            {
+                samples_to_skip += header_size;
+            }
+
+            if( samples_to_skip > 0 )
+            {
+                LOG(INFO) << "Skipping " << samples_to_skip << " samples of the input file";
+                if( not file_source_->seek( samples_to_skip, SEEK_SET ) )
+                {
+                    LOG(INFO) << "Error skipping bytes!";
+                }
+            }
+
     }
     catch (const std::exception &e)
     {
@@ -174,7 +207,9 @@ FileSignalSource::FileSignalSource(ConfigurationInterface* configuration,
 
             if (size > 0)
                 {
-                    samples_ = floor(static_cast<double>(size) / static_cast<double>(item_size()) - ceil(0.002 * static_cast<double>(sampling_frequency_))); //process all the samples available in the file excluding at least the last 1 ms
+                    long bytes_to_skip = samples_to_skip*item_size_;
+                    long bytes_to_process = static_cast<long>(size) - bytes_to_skip;
+                    samples_ = floor(static_cast<double>(bytes_to_process) / static_cast<double>(item_size()) - ceil(0.002 * static_cast<double>(sampling_frequency_))); //process all the samples available in the file excluding at least the last 1 ms
                 }
         }
 
@@ -182,10 +217,11 @@ FileSignalSource::FileSignalSource(ConfigurationInterface* configuration,
     double signal_duration_s;
     signal_duration_s = static_cast<double>(samples_) * ( 1 / static_cast<double>(sampling_frequency_));
 
-    if ((item_type_.compare("gr_complex") != 0) || (item_type_.compare("ishort") != 0) || (item_type_.compare("ibyte") != 0) )  // signal is complex (interleaved)
-        {
-            signal_duration_s /= 2;
-        }
+    if( is_complex )
+    {
+        signal_duration_s /= 2.0;
+    }
+
     DLOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
     std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
 

-- 
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