Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

channelestim.h

Go to the documentation of this file.
00001 
00010 /***************************************************************************
00011  *                                                                         *
00012  *   This library is free software; you can redistribute it and/or         *
00013  *   modify it under the terms of the GNU Lesser General Public            *
00014  *   License as published by the Free Software Foundation; either          *
00015  *   version 2.1 of the License, or (at your option) any later version.    *
00016  *                                                                         *
00017  *   This library is distributed in the hope that it will be useful,       *
00018  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00019  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
00020  *   Lesser General Public License for more details.                       *
00021  *                                                                         *
00022  *   You should have received a copy of the GNU Lesser General Public      *
00023  *   License along with this library; if not, write to the Free Software   *
00024  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston,                 *
00025  *   MA  02111-1307  USA                                                   *
00026  *                                                                         *
00027  ***************************************************************************/
00028 
00029 
00030 #ifndef CHANNELESTIM_H
00031 #define CHANNELESTIM_H
00032 
00033 #include "basicdevice.h"
00034 #include "phbib.h"
00035 #include "signals.h"
00036 #include "matrixseq.h"
00037 #include "arith.h"
00038 
00039 namespace mimo {
00040 
00041 using namespace simth;
00042 
00043 class MIMOChannel;
00044 
00055 class ChannelEstim : public Device
00056 {
00057    protected:
00058       ChannelEstim(int deviceID, DeviceSystemIntf* system,
00059            const simth::PropertyList& pl);
00060       const size_t nr_rx;
00061       const size_t nr_tx;
00062       size_t output_length;
00063       const MIMOChannel* channel;
00064 
00065       // Assert that the connection setup was correct
00066       void assert_connections() const;
00067       void assert_matrix_dim(const mimo::CMatrix &testvec,
00068                  const std::string& which = "output vector")
00069      const;
00070   public:
00071       virtual void updateInputLengths();
00072       virtual void updateOutputLengths();
00073       
00074       void print(std::ostream &os) const;
00075 
00076       static void init(const std::string& fileName, 
00077                Device** dev, 
00078                DeviceSystemIntf* sysPtr, 
00079                int ID,
00080                const std::string& regionQualifier);
00081 
00084     static simth::Device *findChannel(simth::DeviceSystemIntf* sys);
00085 };
00086 
00087 class EstimSingleCarrier : public ChannelEstim
00088 {
00089    public:
00090       EstimSingleCarrier(int deviceID, DeviceSystemIntf* system,
00091              const simth::PropertyList& pl);
00092       void process();
00093 };
00094 
00095 class EstimOFDM : public ChannelEstim
00096 {
00097    private:
00098       double delta_f;
00099       unsigned num_carrier;
00100    public:
00101       EstimOFDM(int deviceID, DeviceSystemIntf* system,
00102         const simth::PropertyList& pl);
00103       void process();
00104 };
00105 
00106 } // namespace
00107 
00108 #endif /* EQUALIZER_H */

Generated on Tue Aug 9 14:43:09 2005 for mimolib by  doxygen 1.4.1