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 
00043   //---------------------- BCH --------------------------------------
00044 
00050   class Channel_Code {
00051   public:
00053     Channel_Code() {}
00055     virtual ~Channel_Code() {}
00056 
00058     virtual void encode(const bvec &uncoded_bits, bvec &coded_bits) = 0;
00060     virtual bvec encode(const bvec &uncoded_bits) = 0;
00061 
00063     virtual void decode(const bvec &codedbits, bvec &decoded_bits) = 0;
00065     //virtual bvec decode(const bvec &coded_bits);
00066     virtual bvec decode(const bvec &coded_bits) = 0;
00067 
00069     virtual void decode(const vec &received_signal, bvec &decoded_bits) = 0;
00071     //virtual bvec decode(const vec &received_signal);
00072     virtual bvec decode(const vec &received_signal) = 0;
00073 
00075     virtual double get_rate() const = 0;
00076   };
00077 
00078 
00085   class Dummy_Code : public Channel_Code {
00086   public:
00088     Dummy_Code() {}
00090     virtual ~Dummy_Code() {}
00091 
00093     virtual void encode(const bvec &uncoded_bits, bvec &coded_bits) { coded_bits = uncoded_bits; }
00095     virtual bvec encode(const bvec &uncoded_bits) { return uncoded_bits; }
00096 
00098     virtual void decode(const bvec &coded_bits, bvec &decoded_bits) { decoded_bits = coded_bits; }
00100     virtual bvec decode(const bvec &coded_bits) { return coded_bits; }
00101 
00103     virtual void decode(const vec &received_signal, bvec &decoded_bits) { BPSK bpsk; bpsk.demodulate_bits(received_signal, decoded_bits); }
00105     virtual bvec decode(const vec &received_signal) { bvec out; decode(received_signal,out); return out; }
00106 
00108     virtual double get_rate() const { return 1.0; }
00109   };
00110 
00111 
00112 
00113 } // namespace itpp
00114 
00115 #endif // #ifndef CHANNEL_CODE_H
SourceForge Logo

Generated on Sun Sep 14 18:54:53 2008 for IT++ by Doxygen 1.5.6