wireless_channel.cpp

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    // Account for fading if such a model exists
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    // This is just a placeholder function for now.
00054    // In the future, there should be a PacketLoss object
00055    // contained in WirelessChannel that computes this
00056    // based on some model.
00057    return false;
00058 }
00059 
00060 

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