IT++ Logo Newcom Logo

channel_code.h

Go to the documentation of this file.
00001 
00033 #ifndef CHANNEL_CODE_H
00034 #define CHANNEL_CODE_H
00035 
00036 #include <itpp/base/vec.h>
00037 #include <itpp/comm/modulator.h>
00038 
00039 
00040 namespace itpp {
00041 
00046   //---------------------- BCH --------------------------------------
00047 
00053   class Channel_Code {
00054   public:
00056     Channel_Code() {}
00058     virtual ~Channel_Code() {}
00059 
00061     virtual void encode(const bvec &uncoded_bits, bvec &coded_bits) = 0;
00063     virtual bvec encode(const bvec &uncoded_bits) = 0;
00064 
00066     virtual void decode(const bvec &codedbits, bvec &decoded_bits) = 0;
00068     //virtual bvec decode(const bvec &coded_bits);
00069     virtual bvec decode(const bvec &coded_bits) = 0;
00070 
00072     virtual void decode(const vec &received_signal, bvec &decoded_bits) = 0;
00074     //virtual bvec decode(const vec &received_signal);
00075     virtual bvec decode(const vec &received_signal) = 0;
00076 
00078     virtual double get_rate() = 0;
00079   };
00080 
00081 
00088   class Dummy_Code : public Channel_Code {
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() { return 1.0; }
00112   };
00113 
00114 
00115 
00116 } // namespace itpp
00117 
00118 #endif // #ifndef CHANNEL_CODE_H
SourceForge Logo

Generated on Fri Jan 11 08:51:38 2008 for IT++ by Doxygen 1.3.9.1