diff options
author | Tom Rondeau <tom@trondeau.com> | 2014-10-21 16:07:53 -0400 |
---|---|---|
committer | Tom Rondeau <tom@trondeau.com> | 2014-10-21 16:07:53 -0400 |
commit | fdf13bdc0640f4ffa892c9bebedf74274bc6ea82 (patch) | |
tree | 255ccf0c2dbddaba6b83ca9fc2ade8921be46cba /gr-digital/lib/costas_loop_cc_impl.h | |
parent | 5f4e68a60e96609fffe5478fb356798831201d87 (diff) |
digital: adding use of tanh and snr info to costas loop.
Diffstat (limited to 'gr-digital/lib/costas_loop_cc_impl.h')
-rw-r--r-- | gr-digital/lib/costas_loop_cc_impl.h | 45 |
1 files changed, 40 insertions, 5 deletions
diff --git a/gr-digital/lib/costas_loop_cc_impl.h b/gr-digital/lib/costas_loop_cc_impl.h index 665724236b..ebd05e2e93 100644 --- a/gr-digital/lib/costas_loop_cc_impl.h +++ b/gr-digital/lib/costas_loop_cc_impl.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2006,2011,2012 Free Software Foundation, Inc. + * Copyright 2006,2011,2012,2014 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -34,33 +34,68 @@ namespace gr { private: int d_order; float d_error; + float d_noise; - /*! \brief the phase detector circuit for 8th-order PSK loops + /*! \brief the phase detector circuit for 8th-order PSK loops. + * * \param sample complex sample * \return the phase error */ float phase_detector_8(gr_complex sample) const; // for 8PSK - /*! \brief the phase detector circuit for fourth-order loops + /*! \brief the phase detector circuit for fourth-order loops. + * * \param sample complex sample * \return the phase error */ float phase_detector_4(gr_complex sample) const; // for QPSK - /*! \brief the phase detector circuit for second-order loops + /*! \brief the phase detector circuit for second-order loops. + * * \param sample a complex sample * \return the phase error */ float phase_detector_2(gr_complex sample) const; // for BPSK + + /*! \brief the phase detector circuit for 8th-order PSK + * loops. Uses tanh instead of slicing and the noise estimate + * from the message port to estimated SNR of the samples. + * + * \param sample complex sample + * \return the phase error + */ + float phase_detector_snr_8(gr_complex sample) const; // for 8PSK + + /*! \brief the phase detector circuit for fourth-order + * loops. Uses tanh instead of slicing and the noise estimate + * from the message port to estimated SNR of the samples. + * + * \param sample complex sample + * \return the phase error + */ + float phase_detector_snr_4(gr_complex sample) const; // for QPSK + + /*! \brief the phase detector circuit for second-order + * loops. Uses tanh instead of slicing and the noise estimate + * from the message port to estimated SNR of the samples. + * + * \param sample a complex sample + * \return the phase error + */ + float phase_detector_snr_2(gr_complex sample) const; // for BPSK + + float (costas_loop_cc_impl::*d_phase_detector)(gr_complex sample) const; public: - costas_loop_cc_impl(float loop_bw, int order); + costas_loop_cc_impl(float loop_bw, int order, bool use_snr=false); ~costas_loop_cc_impl(); float error() const; + void handle_set_noise(pmt::pmt_t msg); + void setup_rpc(); int work(int noutput_items, |