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
Generated on Sat Apr 19 10:57:51 2008 for IT++ by Doxygen 1.5.5