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
Generated on Thu Apr 19 14:14:58 2007 for IT++ by Doxygen 1.5.1