GNU Radio Manual and C++ API Reference 3.7.14.0
The Free & Open Software Radio Ecosystem
ldpc_decoder.h
Go to the documentation of this file.
1/* -*- c++ -*- */
2/*
3 * Copyright 2015 Free Software Foundation, Inc.
4 *
5 * This file is part of GNU Radio
6 *
7 * GNU Radio is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 3, or (at your option)
10 * any later version.
11 *
12 * GNU Radio is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with GNU Radio; see the file COPYING. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street,
20 * Boston, MA 02110-1301, USA.
21 */
22
23#ifndef INCLUDED_LDPC_DECODER_H
24#define INCLUDED_LDPC_DECODER_H
25
26typedef float INPUT_DATATYPE;
27typedef unsigned char OUTPUT_DATATYPE;
28
30#include <map>
31#include <string>
32#include <vector>
33
34#include <gnuradio/fec/alist.h>
36#include <gnuradio/fec/cldpc.h>
37
38namespace gr {
39namespace fec {
40
41
42#define MAXLOG 1e7
43
45{
46private:
47 // private constructor
48 ldpc_decoder(std::string alist_file, float sigma, int max_iterations);
49
50 // plug into the generic fec api
51 int get_history();
52 float get_shift();
53 const char* get_conversion();
54 void generic_work(void* inBuffer, void* outbuffer);
55 float d_iterations;
56 int d_input_size, d_output_size;
57 double d_rate;
58
59 alist d_list;
60 cldpc d_code;
61 awgn_bp d_spa;
62
63public:
65
66 double rate();
67 bool set_frame_size(unsigned int frame_size);
68
70 make(std::string alist_file, float sigma = 0.5, int max_iterations = 50);
71
76 float get_iterations() { return d_iterations; }
77};
78
79} // namespace fec
80} // namespace gr
81
82#endif /* INCLUDED_LDPC_DECODER_H */
Definition: alist.h:45
Definition: awgn_bp.h:47
Definition: cldpc.h:36
Parent class for FECAPI objects.
Definition: generic_decoder.h:61
boost::shared_ptr< generic_decoder > sptr
Definition: generic_decoder.h:75
Definition: ldpc_decoder.h:45
bool set_frame_size(unsigned int frame_size)
float get_iterations()
Definition: ldpc_decoder.h:76
static generic_decoder::sptr make(std::string alist_file, float sigma=0.5, int max_iterations=50)
#define FEC_API
Definition: gr-fec/include/gnuradio/fec/api.h:30
float INPUT_DATATYPE
Definition: ldpc_decoder.h:26
unsigned char OUTPUT_DATATYPE
Definition: ldpc_decoder.h:27
FEC_API int get_history(generic_decoder::sptr my_decoder)
FEC_API float get_shift(generic_decoder::sptr my_decoder)
Include this header to use the message passing features.
Definition: basic_block.h:45