00001
00002 #include "wireless_channel.hpp"
00003 #include "path_loss.hpp"
00004 #include "fading.hpp"
00005 #include "wireless_comm_signal.hpp"
00006 #include "log_stream_manager.hpp"
00007 #include "physical_layer.hpp"
00008
00009 WirelessChannel::WirelessChannel(PathLossPtr pathLossModel)
00010 {
00011 assert(pathLossModel.get() != 0);
00012 m_pathLossModel = pathLossModel;
00013 }
00014
00015 WirelessChannel::WirelessChannel(PathLossPtr pathLossModel,
00016 FadingPtr fadingModel)
00017 {
00018 assert(pathLossModel.get() != 0);
00019 assert(fadingModel.get() != 0);
00020 m_pathLossModel = pathLossModel;
00021 m_fadingModel = fadingModel;
00022 }
00023
00024 double WirelessChannel::getRecvdStrength(const WirelessCommSignal& signal,
00025 const PhysicalLayer& receiver) const
00026 {
00027 assert(m_pathLossModel.get() != 0);
00028 double recvdStrength =
00029 m_pathLossModel->getRecvdStrength(signal, receiver);
00030
00031 double debugRecvdStrength = recvdStrength;
00032
00033
00034 if(m_fadingModel.get() != 0) {
00035 recvdStrength *= m_fadingModel->fadingFactor(signal,
00036 receiver.getNodeId());
00037 }
00038
00039 if(m_DEBUG_SIGNAL_STRENGTH) {
00040 ostringstream debugStream;
00041 debugStream << __FUNCTION__ << " recvStrength1: " <<
00042 debugRecvdStrength;
00043 debugStream << " recvStrength2: " << recvdStrength;
00044 LogStreamManager::instance()->logDebugItem(debugStream.str());
00045 }
00046
00047 return recvdStrength;
00048 }
00049
00050 bool WirelessChannel::signalHasError(double signalSinr,
00051 const WirelessCommSignal& signal) const
00052 {
00053
00054
00055
00056
00057 return false;
00058 }
00059
00060