00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
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