IT++ Logo

channel_code.h

Go to the documentation of this file.
00001 
00030 #ifndef CHANNEL_CODE_H
00031 #define CHANNEL_CODE_H
00032 
00033 #include <itpp/base/vec.h>
00034 #include <itpp/comm/modulator.h>
00035 
00036 
00037 namespace itpp
00038 {
00039 
00044 //---------------------- BCH --------------------------------------
00045 
00051 class Channel_Code
00052 {
00053 public:
00055   Channel_Code() {}
00057   virtual ~Channel_Code() {}
00058 
00060   virtual void encode(const bvec &uncoded_bits, bvec &coded_bits) = 0;
00062   virtual bvec encode(const bvec &uncoded_bits) = 0;
00063 
00065   virtual void decode(const bvec &codedbits, bvec &decoded_bits) = 0;
00067   //virtual bvec decode(const bvec &coded_bits);
00068   virtual bvec decode(const bvec &coded_bits) = 0;
00069 
00071   virtual void decode(const vec &received_signal, bvec &decoded_bits) = 0;
00073   //virtual bvec decode(const vec &received_signal);
00074   virtual bvec decode(const vec &received_signal) = 0;
00075 
00077   virtual double get_rate() const = 0;
00078 };
00079 
00080 
00087 class Dummy_Code : public Channel_Code
00088 {
00089 public:
00091   Dummy_Code() {}
00093   virtual ~Dummy_Code() {}
00094 
00096   virtual void encode(const bvec &uncoded_bits, bvec &coded_bits) { coded_bits = uncoded_bits; }
00098   virtual bvec encode(const bvec &uncoded_bits) { return uncoded_bits; }
00099 
00101   virtual void decode(const bvec &coded_bits, bvec &decoded_bits) { decoded_bits = coded_bits; }
00103   virtual bvec decode(const bvec &coded_bits) { return coded_bits; }
00104 
00106   virtual void decode(const vec &received_signal, bvec &decoded_bits) { BPSK bpsk; bpsk.demodulate_bits(received_signal, decoded_bits); }
00108   virtual bvec decode(const vec &received_signal) { bvec out; decode(received_signal, out); return out; }
00109 
00111   virtual double get_rate() const { return 1.0; }
00112 };
00113 
00114 
00115 
00116 } // namespace itpp
00117 
00118 #endif // #ifndef CHANNEL_CODE_H
SourceForge Logo

Generated on Thu Apr 23 20:07:45 2009 for IT++ by Doxygen 1.5.8