00001 00009 /*************************************************************************** 00010 * * 00011 * This library is free software; you can redistribute it and/or * 00012 * modify it under the terms of the GNU Lesser General Public * 00013 * License as published by the Free Software Foundation; either * 00014 * version 2.1 of the License, or (at your option) any later version. * 00015 * * 00016 * This library is distributed in the hope that it will be useful, * 00017 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 00019 * Lesser General Public License for more details. * 00020 * * 00021 * You should have received a copy of the GNU Lesser General Public * 00022 * License along with this library; if not, write to the Free Software * 00023 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * 00024 * MA 02111-1307 USA * 00025 * * 00026 ***************************************************************************/ 00027 00028 00029 #ifndef SIMTHLIB_CHANNELESTIM_H 00030 #define SIMTHLIB_CHANNELESTIM_H 00031 00032 #include "basicdevice.h" 00033 #include "phbib.h" 00034 #include "signals.h" 00035 00036 namespace simthlib { 00037 00038 using namespace simth; 00039 00040 class Channel; 00041 00045 class ChannelEstim : public Device 00046 { 00047 protected: 00048 ChannelEstim(int deviceID, DeviceSystemIntf* system, 00049 const simth::PropertyList& pl); 00050 size_t output_length; 00051 const Channel* channel; 00052 00053 // Assert that the connection setup was correct 00054 void assert_connections() const; 00055 public: 00056 virtual void updateInputLengths(); 00057 virtual void updateOutputLengths(); 00058 00059 void print(std::ostream &os) const; 00060 }; 00061 00062 class EstimSingleCarrier : public ChannelEstim 00063 { 00064 public: 00065 EstimSingleCarrier(int deviceID, DeviceSystemIntf* system, 00066 const simth::PropertyList& pl); 00067 void process(); 00068 }; 00069 00070 class EstimOFDM : public ChannelEstim 00071 { 00072 private: 00073 double delta_f; 00074 unsigned num_carrier; 00075 public: 00076 EstimOFDM(int deviceID, DeviceSystemIntf* system, 00077 const simth::PropertyList& pl); 00078 void process(); 00079 }; 00080 00081 } // namespace 00082 00083 #endif /* SIMTHLIB_CHANNELESTIM_H */