diff options
author | Piotr Krysik <ptrkrysik@gmail.com> | 2017-11-11 11:12:02 +0100 |
---|---|---|
committer | Piotr Krysik <ptrkrysik@gmail.com> | 2017-11-11 11:12:02 +0100 |
commit | bfb47dca693c10a223dd3465449e00648b1b245f (patch) | |
tree | 21ca4654a46bdff5a9c9afb6d86134e4287a4bca /lib/receiver/receiver_impl.cc | |
parent | d8617a9064c7a5eed58501607f1d20cefaf074e2 (diff) |
Fix: don't send SCH burst to the output if it wasn't correctly decoded
This had very bad effect of incorrect fn_time values coming into txtime_setter block.
They, subsequently, might have caused busts with tx_time values in distant future. The result on uhd sink is deadlock.
Diffstat (limited to 'lib/receiver/receiver_impl.cc')
-rw-r--r-- | lib/receiver/receiver_impl.cc | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/lib/receiver/receiver_impl.cc b/lib/receiver/receiver_impl.cc index d57b4a1..cf080cb 100644 --- a/lib/receiver/receiver_impl.cc +++ b/lib/receiver/receiver_impl.cc @@ -209,7 +209,6 @@ namespace gr time_spec_t current_rx_time = time_spec_t(rx_time_full_part, rx_time_frac_part); uint64_t current_start_offset = rx_time_tag.offset; d_time_samp_ref.update(current_rx_time, current_start_offset); - std::cout << "Mam rx_time: " << current_rx_time.get_real_secs() << std::endl; } return d_samples_consumed; @@ -346,7 +345,7 @@ namespace gr case sch_burst: { - int d_ncc, d_bcc; + int ncc, bcc; int t1, t2, t3; int rc; @@ -358,12 +357,8 @@ namespace gr detect_burst(input, &channel_imp_resp[0], d_c0_burst_start, output_binary); - /* Compose a message with GSMTAP header and bits */ - send_burst(d_burst_nr, output_binary, - GSMTAP_BURST_SCH, input_nr, d_c0_burst_start); - /* Attempt to decode SCH burst */ - rc = decode_sch(&output_binary[3], &t1, &t2, &t3, &d_ncc, &d_bcc); + rc = decode_sch(&output_binary[3], &t1, &t2, &t3, &ncc, &bcc); if (rc) { if (++d_failed_sch >= MAX_SCH_ERRORS) { /* We have to resynchronize, change state */ @@ -374,10 +369,13 @@ namespace gr pmt::from_double(0.0),pmt::mp("sync_loss")); message_port_pub(pmt::mp("measurements"), msg); } - break; } + /* Compose a message with GSMTAP header and bits */ + send_burst(d_burst_nr, output_binary, + GSMTAP_BURST_SCH, input_nr, d_c0_burst_start); + /** * Decoding was successful, now * compute offset from burst_start, @@ -1073,6 +1071,7 @@ namespace gr message_port_pub(pmt::mp("C0"), msg); else message_port_pub(pmt::mp("CX"), msg); + } void |