summaryrefslogtreecommitdiff
path: root/gr-dtv/lib/atsc/atsc_viterbi_decoder_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-dtv/lib/atsc/atsc_viterbi_decoder_impl.cc')
-rw-r--r--gr-dtv/lib/atsc/atsc_viterbi_decoder_impl.cc25
1 files changed, 25 insertions, 0 deletions
diff --git a/gr-dtv/lib/atsc/atsc_viterbi_decoder_impl.cc b/gr-dtv/lib/atsc/atsc_viterbi_decoder_impl.cc
index 430eb55a17..2284372dfb 100644
--- a/gr-dtv/lib/atsc/atsc_viterbi_decoder_impl.cc
+++ b/gr-dtv/lib/atsc/atsc_viterbi_decoder_impl.cc
@@ -77,6 +77,15 @@ namespace gr {
fifo[i]->reset();
}
+ std::vector<float>
+ atsc_viterbi_decoder_impl::decoder_metrics() const
+ {
+ std::vector<float> metrics(NCODERS);
+ for (int i = 0; i < NCODERS; i++)
+ metrics[i] = viterbi[i].best_state_metric();
+ return metrics;
+ }
+
int
atsc_viterbi_decoder_impl::work(int noutput_items,
gr_vector_const_void_star &input_items,
@@ -135,5 +144,21 @@ namespace gr {
return noutput_items;
}
+ void
+ atsc_viterbi_decoder_impl::setup_rpc()
+ {
+#ifdef GR_CTRLPORT
+ add_rpc_variable(
+ rpcbasic_sptr(new rpcbasic_register_get<atsc_viterbi_decoder, std::vector<float> >(
+ alias(), "decoder_metrics",
+ &atsc_viterbi_decoder::decoder_metrics,
+ pmt::make_f32vector(1,0),
+ pmt::make_f32vector(1,100000),
+ pmt::make_f32vector(1,0),
+ "", "Viterbi decoder metrics", RPC_PRIVLVL_MIN,
+ DISPTIME)));
+#endif /* GR_CTRLPORT */
+ }
+
} /* namespace dtv */
} /* namespace gr */