summaryrefslogtreecommitdiff
path: root/gr-atsc/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'gr-atsc/src/lib')
-rw-r--r--gr-atsc/src/lib/atsc_bit_timing_loop.cc8
-rw-r--r--gr-atsc/src/lib/atsci_sssr.cc6
2 files changed, 11 insertions, 3 deletions
diff --git a/gr-atsc/src/lib/atsc_bit_timing_loop.cc b/gr-atsc/src/lib/atsc_bit_timing_loop.cc
index 7abd907cc..dc43d28bc 100644
--- a/gr-atsc/src/lib/atsc_bit_timing_loop.cc
+++ b/gr-atsc/src/lib/atsc_bit_timing_loop.cc
@@ -44,7 +44,7 @@ atsc_make_bit_timing_loop()
atsc_bit_timing_loop::atsc_bit_timing_loop()
: gr_block("atsc_bit_timing_loop",
gr_make_io_signature(1, 1, sizeof(float)),
- gr_make_io_signature(2, 2, sizeof(float))),
+ gr_make_io_signature3(2, 3, sizeof(float), sizeof(float), sizeof(float))),
d_interp(ratio_of_rx_clock_to_symbol_freq), d_next_input(0),
d_rx_clock_to_symbol_freq (ratio_of_rx_clock_to_symbol_freq),
d_si(0)
@@ -82,6 +82,7 @@ atsc_bit_timing_loop::work (int noutput_items,
const float *in = (const float *) input_items[0];
float *out_sample = (float *) output_items[0];
atsc::syminfo *out_tag = (atsc::syminfo *) output_items[1];
+ float *out_timing_error = (float *) output_items[2];
assert(sizeof(float) == sizeof(atsc::syminfo));
@@ -110,12 +111,15 @@ atsc_bit_timing_loop::work (int noutput_items,
}
d_sssr.update (interp_sample, &seg_locked, &symbol_index, &timing_adjustment);
+ if (output_items.size() == 3) {
+ out_timing_error[k] = timing_adjustment;
+ }
out_sample[k] = interp_sample;
tag.valid = seg_locked;
tag.symbol_num = symbol_index;
out_tag[k] = tag;
}
-
+
return k;
}
diff --git a/gr-atsc/src/lib/atsci_sssr.cc b/gr-atsc/src/lib/atsci_sssr.cc
index 48c0c51fb..7a9791467 100644
--- a/gr-atsc/src/lib/atsci_sssr.cc
+++ b/gr-atsc/src/lib/atsci_sssr.cc
@@ -29,6 +29,7 @@
#include <gr_math.h>
#include <stdio.h>
#include <boost/math/special_functions/sign.hpp>
+#include <iostream>
/*
* ----------------------------------------------------------------
@@ -142,7 +143,9 @@ atsci_sssr::update (sssr::sample_t sample_in, // input
double qo = d_quad_filter.update (sample_in);
d_quad_output[d_counter] = qo;
- int bit = boost::math::signbit (sample_in) ^ 1; // slice on sign: + => 1, - => 0
+ int bit = boost::math::signbit (sample_in);
+ if (bit != 0)
+ bit = 1;
int corr_out = d_correlator.update (bit);
int weight = sipp (corr_out);
int corr_value = d_integrator.update (weight, d_counter);
@@ -153,6 +156,7 @@ atsci_sssr::update (sssr::sample_t sample_in, // input
int best_correlation_value;
best_correlation_index = d_integrator.find_max (&best_correlation_value);
d_seg_locked = best_correlation_value >= MIN_SEG_LOCK_CORRELATION_VALUE;
+ std::cout << "best = " << best_correlation_value << " min is " << MIN_SEG_LOCK_CORRELATION_VALUE << std::endl;
d_timing_adjust = d_quad_output[best_correlation_index];
d_symbol_index = SYMBOL_INDEX_OFFSET - 1 - best_correlation_index;