GNU Radio's IRIDIUM Package
fft_channelizer_impl.h
Go to the documentation of this file.
1/* -*- c++ -*- */
2/*
3 * Copyright 2022 gr-iridium author.
4 *
5 * SPDX-License-Identifier: GPL-3.0-or-later
6 */
7
8#ifndef INCLUDED_IRIDIUM_FFT_CHANNELIZER_IMPL_H
9#define INCLUDED_IRIDIUM_FFT_CHANNELIZER_IMPL_H
10
11#include <gnuradio/fft/fft.h>
12#include <fftw3.h>
14
15namespace gr {
16namespace iridium {
17
18struct burst_data {
19 uint64_t id;
20 double offset;
21 float magnitude;
25 uint64_t timestamp;
26 float noise;
27 size_t len;
28 gr_complex* data;
29};
30
31
33{
34private:
35 const int d_fft_size;
36 const int d_ifft_size;
37 const int d_inverse_overlap;
38 const int d_output_step;
39 const int d_decimation;
40 const int d_channels;
41 const int d_pdu_ports;
42 const int d_max_burst_size;
43
44 uint64_t d_channel_active;
45 fftwf_complex* d_out;
46 std::map<fftwf_complex*, fftwf_plan> d_fft_plans;
47
48 gr::fft::fft_complex_fwd d_fft;
49 gr::fft::fft_complex_rev d_ifft;
50
51 float channel_center(int channel);
52 float channel_lower_border(int channel);
53 float channel_upper_border(int channel);
54 uint64_t activated_channels(tag_t& new_burst);
55
56 std::vector<std::map<uint64_t, burst_data>> d_bursts;
57 burst_data create_burst(tag_t& new_burst, int channel);
58 void append_to_burst(burst_data& burst, const gr_complex* data, size_t n);
59 void publish_burst(burst_data& burst);
60
61 const int d_outstanding_limit;
62 int d_outstanding;
63 int d_max_outstanding;
64 uint64_t d_n_dropped_bursts;
65 bool d_drop_overflow;
66 void burst_handled(pmt::pmt_t msg);
67
68 int d_next_pdu_port;
69
70public:
72 int decimation,
73 bool activate_streams,
74 int pdu_ports,
75 int max_burst_size,
76 int outstanding_limit,
77 bool drop_overflow);
79
83
84
85 // Where all the action really happens
86 int work(int noutput_items,
87 gr_vector_const_void_star& input_items,
88 gr_vector_void_star& output_items);
89};
90
91} // namespace iridium
92} // namespace gr
93
94#endif /* INCLUDED_IRIDIUM_FFT_CHANNELIZER_IMPL_H */
int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
fft_channelizer_impl(int fft_size, int decimation, bool activate_streams, int pdu_ports, int max_burst_size, int outstanding_limit, bool drop_overflow)
<+description of block+>
Definition fft_channelizer.h:23
Definition burst_downmix.h:28
Definition burst_downmix.h:27
Definition fft_channelizer_impl.h:18
uint64_t timestamp
Definition fft_channelizer_impl.h:25
gr_complex * data
Definition fft_channelizer_impl.h:28
float relative_frequency
Definition fft_channelizer_impl.h:22
double offset
Definition fft_channelizer_impl.h:20
float noise
Definition fft_channelizer_impl.h:26
float magnitude
Definition fft_channelizer_impl.h:21
double center_frequency
Definition fft_channelizer_impl.h:23
uint64_t id
Definition fft_channelizer_impl.h:19
size_t len
Definition fft_channelizer_impl.h:27
float sample_rate
Definition fft_channelizer_impl.h:24
Definition fft_burst_tagger_impl.h:30