wireless_channel.hpp

00001 
00002 #ifndef WIRELESS_CHANNEL_H
00003 #define WIRELESS_CHANNEL_H
00004 
00005 #include <boost/shared_ptr.hpp>
00006 
00007 #include "channel.hpp"
00008 
00009 class PathLoss;
00010 typedef boost::shared_ptr<PathLoss> PathLossPtr;
00011 class Fading;
00012 typedef boost::shared_ptr<Fading> FadingPtr;
00013 class WirelessCommSignal;
00014 typedef boost::shared_ptr<WirelessCommSignal> WirelessCommSignalPtr;
00015 
00020 class WirelessChannel : public Channel {
00021 public:
00023    typedef boost::shared_ptr<WirelessChannel> WirelessChannelPtr;
00024 
00031    static inline WirelessChannelPtr create(PathLossPtr pathLossModel);
00032 
00040    static inline WirelessChannelPtr create(PathLossPtr pathLossModel, 
00041       FadingPtr fadingModel);
00042 
00051    virtual double getRecvdStrength(const WirelessCommSignal& signal, 
00052       const PhysicalLayer& receiver) const;
00053 
00066    virtual bool signalHasError(double signalSinr, 
00067       const WirelessCommSignal& signal) const;
00068 
00069 protected:
00070 
00076    WirelessChannel(PathLossPtr pathLossModel);
00077 
00084    WirelessChannel(PathLossPtr pathLossModel, FadingPtr fadingModel);
00085 
00086 private:
00087 
00089    static const bool m_DEBUG_SIGNAL_STRENGTH = false;
00090 
00091    PathLossPtr m_pathLossModel;
00092    FadingPtr m_fadingModel;
00093 
00094 };
00095 typedef boost::shared_ptr<WirelessChannel> WirelessChannelPtr;
00096 
00098 // Inline Functions
00100 
00101 inline WirelessChannelPtr WirelessChannel::create(
00102    PathLossPtr pathLossModel)
00103 {
00104    WirelessChannelPtr p(new WirelessChannel(pathLossModel));
00105    return p;
00106 }
00107 
00108 inline WirelessChannelPtr WirelessChannel::create(
00109    PathLossPtr pathLossModel, FadingPtr fadingModel)
00110 {
00111    WirelessChannelPtr p(new WirelessChannel(pathLossModel, fadingModel));
00112    return p;
00113 }
00114 
00116 // Overloaded Operators
00118 
00119 #endif // WIRELESS_CHANNEL_H
00120 

Generated on Tue Dec 12 17:04:39 2006 for rfidsim by  doxygen 1.4.7