GNU Radio's DVBS2RX Package
rotator_cc_impl.h
Go to the documentation of this file.
1/* -*- c++ -*- */
2/*
3 * Copyright 2014 Free Software Foundation, Inc.
4 *
5 * SPDX-License-Identifier: GPL-3.0-or-later
6 */
7
8#ifndef INCLUDED_DVBS2RX_ROTATOR_CC_IMPL_H
9#define INCLUDED_DVBS2RX_ROTATOR_CC_IMPL_H
10
11#include <gnuradio/blocks/rotator.h>
13#include <queue>
14
15namespace gr {
16namespace dvbs2rx {
17
19 uint64_t offset;
20 double phase_inc;
21};
22
27
28typedef std::priority_queue<phase_inc_update_t,
29 std::vector<phase_inc_update_t>,
32
33/*!
34 * \brief Complex rotator
35 * \ingroup math_blk
36 */
38{
39private:
40 gr::blocks::rotator d_r;
41 bool d_tag_inc_updates;
42 phase_inc_queue_t d_inc_update_queue;
43 gr::thread::mutex d_mutex;
44
45 void handle_cmd_msg(pmt::pmt_t msg);
46
47public:
48 rotator_cc_impl(double phase_inc = 0.0, bool tag_inc_updates = false);
49 ~rotator_cc_impl() override;
50
51 void set_phase_inc(double phase_inc) override;
52
53 int work(int noutput_items,
54 gr_vector_const_void_star& input_items,
55 gr_vector_void_star& output_items) override;
56};
57
58} // namespace dvbs2rx
59} // namespace gr
60
61#endif /* INCLUDED_DVBS2RX_ROTATOR_CC_IMPL_H */
Complex rotator.
Definition rotator_cc_impl.h:38
rotator_cc_impl(double phase_inc=0.0, bool tag_inc_updates=false)
int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) override
void set_phase_inc(double phase_inc) override
Complex rotator.
Definition rotator_cc.h:39
std::priority_queue< phase_inc_update_t, std::vector< phase_inc_update_t >, decltype(&cmp_phase_inc_update_offset)> phase_inc_queue_t
Definition rotator_cc_impl.h:31
bool cmp_phase_inc_update_offset(phase_inc_update_t lhs, phase_inc_update_t rhs)
Definition rotator_cc_impl.h:23
Fixed-length double-ended queue with contiguous volk-aligned elements.
Definition gr_bch.h:22
Definition rotator_cc_impl.h:18
double phase_inc
Definition rotator_cc_impl.h:20
uint64_t offset
Definition rotator_cc_impl.h:19