GNU Radio's DPD Package
predistorter_training_impl.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2020 Alekh Gupta
4  *
5  * SPDX-License-Identifier: GPL-3.0-or-later
6  */
7 
8 #ifndef INCLUDED_DPD_PREDISTORTER_TRAINING_IMPL_H
9 #define INCLUDED_DPD_PREDISTORTER_TRAINING_IMPL_H
10 
12 #include <armadillo>
13 
14 namespace gr {
15 namespace dpd {
16 
18 {
19 private:
20  // Nothing to declare in this block.
21  const int K_a;
22  const int L_a;
23  const int K_b;
24  const int M_b;
25  const int L_b;
26  const int d_M;
27  std::string d_mode;
28  bool d_update_predistorter_training, update_predistorter_training;
29  arma::cx_colvec d_predistorter_training_colvec, predistorter_training_colvec;
30 
31 public:
32  predistorter_training_impl(const std::vector<int>& dpd_params,
33  std::string mode,
34  const std::vector<gr_complex>& taps);
36  // Copies 'taps' from message PMT to local colvec variable
37  void get_taps(pmt::pmt_t P);
38  // Generates shift-structured GMP vector based on parameters
39  void gen_GMPvector(const gr_complex* const in,
40  int item,
41  int K_a,
42  int L_a,
43  int K_b,
44  int M_b,
45  int L_b,
46  arma::cx_fcolvec& GMP_vector);
47  // Where all the action really happens
48  int work(int noutput_items,
49  gr_vector_const_void_star& input_items,
50  gr_vector_void_star& output_items);
51 };
52 
53 } // namespace dpd
54 } // namespace gr
55 
56 #endif /* INCLUDED_DPD_PREDISTORTER_TRAINING_IMPL_H */
Definition: gain_phase_calibrate.h:14
predistorter_training_impl(const std::vector< int > &dpd_params, std::string mode, const std::vector< gr_complex > &taps)
void gen_GMPvector(const gr_complex *const in, int item, int K_a, int L_a, int K_b, int M_b, int L_b, arma::cx_fcolvec &GMP_vector)
Definition: predistorter_training_impl.h:17
int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
Performs predistortion of the input stream to be fed to the Power Amplifier (PA). ...
Definition: predistorter_training.h:43