GNU Radio's LTE Package
pre_decoder_vcvc_impl.h
Go to the documentation of this file.
1/* -*- c++ -*- */
2/*
3 * Copyright 2014 Communications Engineering Lab (CEL) / Karlsruhe Institute of Technology (KIT)
4 *
5 * This is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3, or (at your option)
8 * any later version.
9 *
10 * This software is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this software; see the file COPYING. If not, write to
17 * the Free Software Foundation, Inc., 51 Franklin Street,
18 * Boston, MA 02110-1301, USA.
19 */
20
21#ifndef INCLUDED_LTE_PRE_DECODER_VCVC_IMPL_H
22#define INCLUDED_LTE_PRE_DECODER_VCVC_IMPL_H
23
25
26namespace gr {
27 namespace lte {
28
30 {
31 private:
32 int d_N_ant;
33 int d_rxant;
34 int d_vlen;
35 std::string d_style;
36
37 void handle_msg(pmt::pmt_t msg);
38
39 void decode_1_ant(gr_complex* out, const gr_complex* rx, const gr_complex* h, int len);
40
41 void prepare_2_ant_vectors(gr_complex* h0,
42 gr_complex* h1,
43 gr_complex* r0,
44 gr_complex* r1,
45 const gr_complex* rx,
46 const gr_complex* ce0,
47 const gr_complex* ce1,
48 int len);
49
50 void decode_2_ant(gr_complex* out0,
51 gr_complex* out1,
52 gr_complex* h0,
53 gr_complex* h1,
54 gr_complex* r0,
55 gr_complex* r1,
56 const gr_complex* rx,
57 const gr_complex* ce0,
58 const gr_complex* ce1,
59 int len);
60
61 void prepare_4_ant_vectors(gr_complex* rx0,
62 const gr_complex* rx,
63 int len);
64
65
66 void decode_4_ant(gr_complex* out0,
67 gr_complex* out1,
68 gr_complex* out2,
69 gr_complex* out3,
70 gr_complex* h0,
71 gr_complex* h1,
72 gr_complex* r0,
73 gr_complex* r1,
74 gr_complex* rx_buf,
75 gr_complex* ce0_buf,
76 gr_complex* ce1_buf,
77 gr_complex* ce2_buf,
78 gr_complex* ce3_buf,
79 const gr_complex* rx,
80 const gr_complex* ce0,
81 const gr_complex* ce1,
82 const gr_complex* ce2,
83 const gr_complex* ce3,
84 int len);
85
86 void combine_output(gr_complex* out,
87 gr_complex* out0,
88 gr_complex* out1,
89 int len);
90
91 gr_complex* d_h0;
92 gr_complex* d_h1;
93 gr_complex* d_r0;
94 gr_complex* d_r1;
95 gr_complex* d_out;
96 gr_complex* d_out0;
97 gr_complex* d_out1;
98 gr_complex* d_out2;
99 gr_complex* d_out3;
100 gr_complex* d_mult0;
101 gr_complex* d_mult1;
102
103 gr_complex* d_rx0;
104 gr_complex* d_ce0;
105 gr_complex* d_ce1;
106 gr_complex* d_ce2;
107 gr_complex* d_ce3;
108
109 float* d_mag;
110 float* d_mag_h;
111 void setup_volk_vectors(int len);
112
113 public:
114 pre_decoder_vcvc_impl(int rxant, int N_ant, int vlen, std::string style);
116
117 // Where all the action really happens
118 int work(int noutput_items,
119 gr_vector_const_void_star &input_items,
120 gr_vector_void_star &output_items);
121
122 void set_N_ant(int N_ant);
123 int get_N_ant(){return d_N_ant;}
124 void set_decoding_style(std::string style);
125 std::string get_decoding_style(){return d_style;}
126
127 };
128
129 } // namespace lte
130} // namespace gr
131
132#endif /* INCLUDED_LTE_PRE_DECODER_VCVC_IMPL_H */
133
Definition pre_decoder_vcvc_impl.h:30
std::string get_decoding_style()
Definition pre_decoder_vcvc_impl.h:125
int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
pre_decoder_vcvc_impl(int rxant, int N_ant, int vlen, std::string style)
void set_decoding_style(std::string style)
int get_N_ant()
Definition pre_decoder_vcvc_impl.h:123
Pre Decoder for LTE.
Definition pre_decoder_vcvc.h:698
Definition bch_crc_check_ant_chooser_bb.h:28