aboutsummaryrefslogtreecommitdiffstats
path: root/lib/receiver/receiver_impl.cc
diff options
context:
space:
mode:
authorPiotr Krysik <ptrkrysik@gmail.com>2017-11-11 11:12:02 +0100
committerPiotr Krysik <ptrkrysik@gmail.com>2017-11-11 11:12:02 +0100
commitbfb47dca693c10a223dd3465449e00648b1b245f (patch)
tree21ca4654a46bdff5a9c9afb6d86134e4287a4bca /lib/receiver/receiver_impl.cc
parentd8617a9064c7a5eed58501607f1d20cefaf074e2 (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.cc15
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