1 /* -*- c++ -*- */
2 /*
3  * Copyright 2015,2016 Free Software Foundation, Inc.
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_DTV_DVBT_REED_SOLOMON_DEC_IMPL_H
22 #define INCLUDED_DTV_DVBT_REED_SOLOMON_DEC_IMPL_H
23 
24 #include <gnuradio/dtv/dvbt_reed_solomon_dec.h>
25 
26 extern "C" {
27 #include <gnuradio/fec/rs.h>
28 }
29 
30 namespace gr {
31 namespace dtv {
32 
33 class dvbt_reed_solomon_dec_impl : public dvbt_reed_solomon_dec
34 {
35 private:
36     int d_n;
37     int d_k;
38     int d_s;
39     int d_blocks;
40 
41     int d_nerrors_corrected_count;
42     int d_bad_packet_count;
43     int d_total_packets;
44 
45     void* d_rs; /* Reed-Solomon characteristics structure */
46     int decode(unsigned char& out, const unsigned char& in);
47 
48 public:
49     dvbt_reed_solomon_dec_impl(
50         int p, int m, int gfpoly, int n, int k, int t, int s, int blocks);
51     ~dvbt_reed_solomon_dec_impl();
52 
53     void forecast(int noutput_items, gr_vector_int& ninput_items_required);
54 
55     int general_work(int noutput_items,
56                      gr_vector_int& ninput_items,
57                      gr_vector_const_void_star& input_items,
58                      gr_vector_void_star& output_items);
59 };
60 
61 } // namespace dtv
62 } // namespace gr
63 
64 #endif /* INCLUDED_DTV_DVBT_REED_SOLOMON_DEC_IMPL_H */
65