00001 /*************************************************************************** 00002 singlecarrierreceiver.h - description 00003 ------------------- 00004 begin : Mit Mai 22 2002 00005 copyright : (C) 2002 by Peter Haase 00006 email : mail@p-haase.de 00007 ***************************************************************************/ 00008 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 #ifndef SINGLECARRIERRECEIVER_HEADER 00029 #define SINGLECARRIERRECEIVER_HEADER 00030 00031 #include <fstream> 00032 #include <string> 00033 #include <exception> 00034 00035 #include "receiver.h" 00036 00037 00038 namespace simthlib 00039 { 00040 00041 class SingleCarrierReceiver : public Receiver 00042 { 00043 private: 00044 00045 const double modulationSymbolDistance_; 00046 int samplesBetweenModulationSymbols_; 00047 00048 simth::TimeSignal::storage_type receiveFilter; 00049 00051 const Channel *_channel; 00052 bool warnedAboutChannel; 00053 00054 protected: 00055 00058 double modulationSymbolDistance() const {return modulationSymbolDistance_;} 00059 00062 int samplesBetweenModulationSymbols() const {return samplesBetweenModulationSymbols_;} 00063 00068 double deltaT() const {return receiveFilter.rAttributes().deltaT();} 00069 00072 int numSamplesOfReceiveFilter() const {return receiveFilter.size();} 00073 00078 int numTimeSamples(int numModSymbols) const; 00079 00084 virtual int numModSymbols(int numTimeSymbols) const; 00085 00086 00087 public: 00096 SingleCarrierReceiver(int deviceID, simth::DeviceSystemIntf* system, 00097 const simth::PropertyList& pl); 00098 00099 virtual ~SingleCarrierReceiver(){}; 00100 00101 00105 virtual void receiveSignal(const simth::TimeSignal& signalSamples_ptr, 00106 simth::ModSeq* modSeq, 00107 double* noise = NULL, simth::ModSeq* trans = NULL); 00108 00109 virtual void print(std::ostream &os) const; 00110 }; 00111 00112 } 00113 00114 #endif