[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] [gnuradio] 04/06: digital: pfb_clock_sync_ccf tag offs
From: |
git |
Subject: |
[Commit-gnuradio] [gnuradio] 04/06: digital: pfb_clock_sync_ccf tag offset update. |
Date: |
Wed, 15 Jun 2016 04:11:15 +0000 (UTC) |
This is an automated email from the git hooks/post-receive script.
jcorgan pushed a commit to branch packet3
in repository gnuradio.
commit c475f14e4604b9bca25c08f1d30a2e8ff9bbcf26
Author: Tom Rondeau <address@hidden>
Date: Tue Jun 14 10:37:46 2016 -0700
digital: pfb_clock_sync_ccf tag offset update.
This seems to work correctly regardless of the sps.
---
gr-digital/lib/pfb_clock_sync_ccf_impl.cc | 32 ++++++++++++++++++++++++++-----
gr-digital/lib/pfb_clock_sync_ccf_impl.h | 2 ++
2 files changed, 29 insertions(+), 5 deletions(-)
diff --git a/gr-digital/lib/pfb_clock_sync_ccf_impl.cc
b/gr-digital/lib/pfb_clock_sync_ccf_impl.cc
index 314ff94..6ac39fb 100644
--- a/gr-digital/lib/pfb_clock_sync_ccf_impl.cc
+++ b/gr-digital/lib/pfb_clock_sync_ccf_impl.cc
@@ -72,7 +72,8 @@ namespace gr {
throw std::runtime_error("pfb_clock_sync_ccf: please specify a
filter.\n");
// Let scheduler adjust our relative_rate.
- enable_update_rate(true);
+ //enable_update_rate(true);
+ set_tag_propagation_policy(TPP_DONT);
d_nfilters = filter_size;
d_sps = floor(sps);
@@ -108,6 +109,10 @@ namespace gr {
set_taps(taps, d_taps, d_filters);
set_taps(dtaps, d_dtaps, d_diff_filters);
+ d_old_in = 0;
+ d_new_in = 0;
+ d_last_out = 0;
+
set_relative_rate((float)d_osps/(float)d_sps);
}
@@ -420,8 +425,8 @@ namespace gr {
}
std::vector<tag_t> tags;
- get_tags_in_range(tags, 0, nitems_read(0),
- nitems_read(0)+d_sps*noutput_items,
+ get_tags_in_window(tags, 0, 0,
+ d_sps*noutput_items,
pmt::intern("time_est"));
int i = 0, count = 0;
@@ -433,7 +438,8 @@ namespace gr {
size_t offset = tags[0].offset-nitems_read(0);
if((offset >= (size_t)count) && (offset < (size_t)(count + d_sps))) {
float center = (float)pmt::to_double(tags[0].value);
- d_k = (offset-count - d_sps/2.0) * d_nfilters +
(M_PI*center*d_nfilters);
+ d_k = d_nfilters*(center + (offset - count));
+
tags.erase(tags.begin());
}
}
@@ -458,7 +464,23 @@ namespace gr {
out[i+d_out_idx] = d_filters[d_filtnum]->filter(&in[count+d_out_idx]);
d_k = d_k + d_rate_i + d_rate_f; // update phase
- d_out_idx++;
+
+
+ // Manage Tags
+ std::vector<tag_t> xtags;
+ std::vector<tag_t>::iterator itags;
+ d_new_in = nitems_read(0) + count + d_out_idx + d_sps;
+ get_tags_in_range(xtags, 0, d_old_in, d_new_in);
+ for(itags = xtags.begin(); itags != xtags.end(); itags++) {
+ tag_t new_tag = *itags;
+ //new_tag.offset = d_last_out + d_taps_per_filter/(2*d_sps) - 2;
+ new_tag.offset = d_last_out + d_taps_per_filter/4 - 2;
+ add_item_tag(0, new_tag);
+ }
+ d_old_in = d_new_in;
+ d_last_out = nitems_written(0) + i + d_out_idx;
+
+ d_out_idx++;
if(output_items.size() == 4) {
err[i] = d_error;
diff --git a/gr-digital/lib/pfb_clock_sync_ccf_impl.h
b/gr-digital/lib/pfb_clock_sync_ccf_impl.h
index 5356281..b23b8fe 100644
--- a/gr-digital/lib/pfb_clock_sync_ccf_impl.h
+++ b/gr-digital/lib/pfb_clock_sync_ccf_impl.h
@@ -59,6 +59,8 @@ namespace gr {
float d_error;
int d_out_idx;
+ uint64_t d_old_in, d_new_in, d_last_out;
+
void create_diff_taps(const std::vector<float> &newtaps,
std::vector<float> &difftaps);
- [Commit-gnuradio] [gnuradio] branch packet3 created (now b9c0d10), git, 2016/06/15
- [Commit-gnuradio] [gnuradio] 04/06: digital: pfb_clock_sync_ccf tag offset update.,
git <=
- [Commit-gnuradio] [gnuradio] 01/06: runtime: executor fixes for tag propagation, git, 2016/06/15
- [Commit-gnuradio] [gnuradio] 02/06: blocks: Add `multiply tag by value' and `test tag variable rate' blocks, git, 2016/06/15
- [Commit-gnuradio] [gnuradio] 03/06: digital: Updated corr_est, git, 2016/06/15
- [Commit-gnuradio] [gnuradio] 05/06: digital: Complete overhaul of protocol handling, git, 2016/06/15
- [Commit-gnuradio] [gnuradio] 06/06: digital: Added lots and lots of examples for overhauled packet format, git, 2016/06/15