00001
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef CHANNELESTIM_H
00030 #define CHANNELESTIM_H
00031
00032 #include "basicdevice.h"
00033 #include "phbib.h"
00034 #include "signals.h"
00035 #include "matrixseq.h"
00036 #include "arith.h"
00037
00038 namespace mimo {
00039
00040 using namespace simth;
00041
00042 class MIMOChannel;
00043
00054 class ChannelEstim : public Device
00055 {
00056 protected:
00057 ChannelEstim(int deviceID, DeviceSystemIntf* system,
00058 const simth::PropertyList& pl);
00059 const size_t nr_rx;
00060 const size_t nr_tx;
00061 size_t output_length;
00062 const MIMOChannel* channel;
00063
00064
00065 void assert_connections() const;
00066 void assert_matrix_dim(const cs::CMatrix &testvec,
00067 const std::string& which = "output vector")
00068 const;
00069 public:
00070 virtual void updateInputLengths();
00071 virtual void updateOutputLengths();
00072
00073 void print(std::ostream &os) const;
00074
00075 static void init(const std::string& fileName,
00076 Device** dev,
00077 DeviceSystemIntf* sysPtr,
00078 int ID,
00079 const std::string& regionQualifier);
00080 };
00081
00082 class EstimSingleCarrier : public ChannelEstim
00083 {
00084 public:
00085 EstimSingleCarrier(int deviceID, DeviceSystemIntf* system,
00086 const simth::PropertyList& pl);
00087 void process();
00088 };
00089
00090 class EstimOFDM : public ChannelEstim
00091 {
00092 private:
00093 double delta_f;
00094 unsigned num_carrier;
00095 public:
00096 EstimOFDM(int deviceID, DeviceSystemIntf* system,
00097 const simth::PropertyList& pl);
00098 void process();
00099 };
00100
00101 }
00102
00103 #endif