亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wireless_channel_manager.cpp

?? RFID reader 語 tag 模擬器
?? CPP
字號:
 #include "wireless_channel_manager.hpp" #include "wireless_channel.hpp" #include "physical_layer.hpp" #include "event.hpp" #include "simulator.hpp" // Event Subclasses class SignalEndEvent : public Event { public:    SignalEndEvent(ConstWirelessChannelManagerPtr channelManager,       PhysicalLayerPtr receiver, WirelessCommSignalPtr signal)       : Event(), m_channelManager(channelManager),       m_receiver(receiver), m_signal(signal)    {       assert(m_channelManager.get() != 0);       assert(m_receiver != 0);       assert(m_signal.get() != 0);    }    void execute()    {       m_channelManager->passSignalToReceiver(m_receiver, m_signal);    } private:    ConstWirelessChannelManagerPtr m_channelManager;    PhysicalLayerPtr m_receiver;    WirelessCommSignalPtr m_signal; }; typedef boost::shared_ptr<SignalEndEvent> SignalEndEventPtr; // Wireless Channel Manager Implementation WirelessChannelManager::WirelessChannelManager() { } void WirelessChannelManager::recvSignal(PhysicalLayerPtr sender,    WirelessCommSignalPtr signal) {    assert(sender.get() != 0);    assert(signal.get() != 0);    typedef SenderChannel::const_iterator senderIterator;    pair<senderIterator,senderIterator> iteratorRange =       m_senders.equal_range(sender);    for(senderIterator i = iteratorRange.first;          i != iteratorRange.second; ++i) {       WirelessChannelPtr channel = i->second;       sendSignalOnChannel(sender, signal, channel);    } } t_uint WirelessChannelManager::getChannelId(    WirelessChannelPtr channel) const {    t_uint channelId = 0;    bool wasFound = false;    ChannelIdMap::const_iterator p;    for(p = m_channels.begin(); p != m_channels.end(); ++p) {       if(p->second == channel) {          // Make sure we only find this channel once.          assert(!wasFound);          wasFound = true;          channelId = p->first;       }    }    assert(wasFound);    return channelId; } void WirelessChannelManager::sendSignalOnChannel(    ConstPhysicalLayerPtr sender, WirelessCommSignalPtr signal,    WirelessChannelPtr channel) {    assert(sender != 0);    assert(signal.get() != 0);    assert(channel.get() != 0);    typedef ChannelObserver::const_iterator observerIterator;    pair<observerIterator,observerIterator> iteratorRange =       m_listeners.equal_range(channel);    SimTime signalEndTime = signal->getDuration();    // Let receivers know on which channel the signal is received.    signal->setChannelId(getChannelId(channel));    for(observerIterator i = iteratorRange.first;          i != iteratorRange.second; ++i) {       PhysicalLayerPtr listener = i->second;       // Make sure that we don't calculate the receiving power       // for the sender.       if(listener != sender) {          // Calculate the SINR of the signal for each listener          // based on its location.  Add this value to a hash table.          double signalStrength =             channel->getRecvdStrength(*signal, *listener);          if(m_DEBUG_SIGNAL_STRENGTH) {             ostringstream debugStream;             debugStream << "listener: " << listener->getNodeId() <<                ", ss: " << signalStrength << " RXThresh: " <<                listener->getRxThreshold();             LogStreamManager::instance()->logDebugItem(debugStream.str());          }          // If the signal strength is sufficiently strong to          // receive the signal, set it as the packet which will          // be received by this physical layer.          if(listener->captureSignal(signalStrength)) {             listener->setPendingSignal(signal);          }          // Add the signal to the existing culmulative signal          // strength being received.          listener->addSignal(signal, signalStrength);          // We need to determine if the currently pending          // signal (if one exists) is still sufficiently strong          // after this new signal has been added.  If the          // currently received signal is the pending          // signal, this check is unnecessary since it was          // essentially performed via the captureSignal          // call above.          if(signal != listener->getPendingSignal() &&                listener->pendingSignalIsWeak()) {             listener->resetPendingSignal();          }          // This is based on the QualNet model for bit error          // computations.  When the signal is received or          // any time the interference changes, compute the          // probability of packet error for that interference          // level.  Thus, if p_i is the probability that the packet          // is not in error for the i-th computation on the signal,          // the PER for the signal is:          // PER = 1 - (p_1 * p_2 * ... * p_n)          // where n is the number of interference changes during          // the packet.          if(listener->getPendingSignal().get() != 0 &&                !listener->getPendingSignalError()) {             listener->setPendingSignalError(                channel->signalHasError(                   listener->getPendingSignalSinr(),                   *listener->getPendingSignal()                )             );          }          // Schedule an event for when this signal will finish.          SignalEndEventPtr signalEnd(             new SignalEndEvent(shared_from_this(), listener, signal));          SimTime recvTime = signalEndTime +             channel->propagationDelay(*sender, *listener);          Simulator::instance()->scheduleEvent(signalEnd, recvTime);       }    } } void WirelessChannelManager::passSignalToReceiver(    PhysicalLayerPtr receiver, WirelessCommSignalPtr signal) const {    assert(receiver != 0);    // If signal == to receiver's strongest signal, then pass it up.    if(signal == receiver->getPendingSignal()) {       WirelessCommSignalPtr signalDeepCopy =          WirelessCommSignal::create(*signal);       double recvdSignalStrength = receiver->getPendingSignalStrength();       receiver->recvPendingSignal(signalDeepCopy, recvdSignalStrength);       receiver->resetPendingSignal();    }    // Remove the signal from the receier's culmulative interference.    receiver->removeSignal(signal); } bool WirelessChannelManager::attachAsSender(PhysicalLayerPtr physicalLayer,    t_uint channelId) {    assert(physicalLayer != 0);    ChannelIdMap::iterator channelIterator = m_channels.find(channelId);    bool wasSuccessful = false;    bool channelFound = (channelIterator != m_channels.end());    if(channelFound) {       WirelessChannelPtr channel = channelIterator->second;       assert(channel.get() != 0);       m_senders.insert(make_pair(physicalLayer, channel));       wasSuccessful = true;    }    return wasSuccessful; } bool WirelessChannelManager::detachAsSender(PhysicalLayerPtr physicalLayer,    t_uint channelId) {    assert(physicalLayer != 0);    ChannelIdMap::iterator channelIterator = m_channels.find(channelId);    bool channelFound = (channelIterator != m_channels.end());    bool wasSuccessful = false;    if(channelFound) {       WirelessChannelPtr channel = channelIterator->second;       typedef SenderChannel::iterator senderIterator;       pair<senderIterator,senderIterator> iteratorRange =          m_senders.equal_range(physicalLayer);       for(senderIterator i = iteratorRange.first;             i != iteratorRange.second; ++i) {          if(i->second == channel) {             m_senders.erase(i);             wasSuccessful = true;             break;          }       }    }    return wasSuccessful; } bool WirelessChannelManager::attachAsListener(PhysicalLayerPtr physicalLayer,    t_uint channelId) {    assert(physicalLayer != 0);    ChannelIdMap::iterator channelIterator = m_channels.find(channelId);    bool wasSuccessful = false;    bool channelFound = (channelIterator != m_channels.end());    if(channelFound) {       WirelessChannelPtr channel = channelIterator->second;       assert(channel.get() != 0);       m_listeners.insert(make_pair(channel, physicalLayer));       wasSuccessful = true;    }    return wasSuccessful; } bool WirelessChannelManager::detachAsListener(PhysicalLayerPtr physicalLayer,    t_uint channelId) {    assert(physicalLayer != 0);    ChannelIdMap::iterator channelIterator = m_channels.find(channelId);    bool channelFound = (channelIterator != m_channels.end());    bool wasSuccessful = false;    if(channelFound) {       WirelessChannelPtr channel = channelIterator->second;       typedef ChannelObserver::iterator observerIterator;       pair<observerIterator,observerIterator> iteratorRange =          m_listeners.equal_range(channel);       for(observerIterator i = iteratorRange.first;             i != iteratorRange.second; ++i) {          if(i->second == physicalLayer) {             m_listeners.erase(i);             wasSuccessful = true;             break;          }       }    }    return wasSuccessful; } void WirelessChannelManager::addChannel(t_uint channelId,    WirelessChannelPtr channel) {    assert(channel.get() != 0);    m_channels[channelId] = channel; } bool WirelessChannelManager::removeChannel(t_uint channelId) {    int numChannelsRemoved = m_channels.erase(channelId);    bool wasSuccessful = (numChannelsRemoved > 0);    return wasSuccessful; }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美精品在线观看| 日韩av网站在线观看| 国产成人精品一区二区三区四区 | 看片网站欧美日韩| 欧美色图在线观看| 亚洲一区二区三区四区在线免费观看| 韩国女主播成人在线观看| 日韩一区二区电影网| 秋霞国产午夜精品免费视频| 欧美日韩国产首页| 男男gaygay亚洲| 欧美变态tickle挠乳网站| 国产一区二区三区在线观看精品 | 成人av网站在线| 国产日韩欧美综合在线| 成人中文字幕电影| 依依成人精品视频| 欧美性大战久久久| 激情六月婷婷综合| 国产精品全国免费观看高清| 91麻豆福利精品推荐| 欧美日韩高清在线| 久久久久久久久久久99999| 国产在线精品一区二区夜色| 国产嫩草影院久久久久| 在线看国产日韩| 国模娜娜一区二区三区| 国产精品色眯眯| 欧美猛男gaygay网站| 精品无人区卡一卡二卡三乱码免费卡 | 精品国产一区二区精华| 色婷婷狠狠综合| 精品一区二区成人精品| 亚洲在线视频网站| 国产欧美在线观看一区| 69av一区二区三区| 99久久777色| 懂色av一区二区在线播放| 午夜精品福利一区二区蜜股av| 中文字幕av一区二区三区| 在线不卡中文字幕播放| 色综合久久88色综合天天免费| 国精产品一区一区三区mba桃花| 午夜精品久久久久久久久| 国产亚洲1区2区3区| 欧美大肚乱孕交hd孕妇| 在线免费精品视频| 99久久99久久精品国产片果冻| 国产在线视频一区二区三区| 免费成人性网站| 青娱乐精品在线视频| 午夜av电影一区| 秋霞电影一区二区| 青青草91视频| 久久精品国产亚洲a| 日韩国产在线一| 日本不卡一区二区三区| 亚洲va韩国va欧美va| 一区二区三区四区激情| 综合中文字幕亚洲| 亚洲国产综合色| 午夜影视日本亚洲欧洲精品| 日产欧产美韩系列久久99| 日本午夜精品视频在线观看| 天堂影院一区二区| 美女脱光内衣内裤视频久久影院| 天天综合色天天| 精品在线观看免费| 亚洲一区二区av在线| 在线观看免费成人| 日韩欧美电影一二三| 国产日本欧美一区二区| 亚洲免费看黄网站| 婷婷夜色潮精品综合在线| 国模冰冰炮一区二区| 欧洲在线/亚洲| 精品88久久久久88久久久| 亚洲人xxxx| 国产综合久久久久影院| 欧美日韩亚洲综合在线| 久久精品一二三| 午夜精品在线视频一区| 粉嫩av亚洲一区二区图片| 欧美精品xxxxbbbb| 亚洲欧美激情插| 国产福利视频一区二区三区| 欧美二区在线观看| 日韩理论片在线| 国产精品一区二区在线观看网站| 欧美性大战久久久| 亚洲人成伊人成综合网小说| 日本成人在线电影网| 欧美三级电影一区| 亚洲精品国产品国语在线app| 国产精品小仙女| 精品国产乱码久久久久久1区2区 | proumb性欧美在线观看| 欧美一区二区三区日韩| 国产精品私房写真福利视频| 国产精品一卡二卡| 久久综合狠狠综合久久激情| 精品一区二区在线观看| 51午夜精品国产| 免费人成黄页网站在线一区二区| 在线播放日韩导航| 日韩精品三区四区| 日韩欧美国产一二三区| 久久99国产精品久久99果冻传媒| 91精品国产综合久久福利软件| 婷婷激情综合网| 26uuu另类欧美亚洲曰本| 狠狠v欧美v日韩v亚洲ⅴ| 欧美激情中文不卡| 色综合激情久久| 麻豆精品蜜桃视频网站| 国产女同性恋一区二区| 成人av影视在线观看| 国产偷国产偷亚洲高清人白洁| 夜夜揉揉日日人人青青一国产精品 | 26uuu欧美| av电影在线观看一区| 亚洲图片有声小说| 国产三级一区二区三区| 91片在线免费观看| 亚瑟在线精品视频| 欧美videofree性高清杂交| 国产成人av影院| 亚洲国产综合在线| 国产蜜臀97一区二区三区| 欧美在线视频日韩| 国产高清不卡一区二区| 一区二区三区在线免费播放| 国产视频在线观看一区二区三区 | 日韩久久免费av| 欧美丝袜自拍制服另类| 99在线精品视频| 国产在线精品一区二区| 日本在线不卡一区| 亚洲精品高清视频在线观看| 精品福利在线导航| 91麻豆精品国产无毒不卡在线观看 | 日本中文字幕一区| 亚洲五码中文字幕| 亚洲精品日韩一| 亚洲欧美日韩国产另类专区| 久久久久久一二三区| 日韩欧美亚洲国产另类| 欧美日韩国产影片| 欧美日韩日日骚| 欧美日韩成人一区| 制服丝袜中文字幕亚洲| 欧美日韩一区在线观看| 欧美午夜片在线看| 在线播放中文一区| 精品蜜桃在线看| 久久久久久综合| 国产精品欧美久久久久无广告| 日韩一区在线看| 亚洲国产综合色| 激情图片小说一区| 粉嫩av亚洲一区二区图片| yourporn久久国产精品| 91丨九色丨国产丨porny| 欧美日韩卡一卡二| ww久久中文字幕| 亚洲欧美国产高清| 精品中文字幕一区二区| 成人精品小蝌蚪| 欧美日韩高清一区二区不卡 | 亚洲国产成人在线| 一区二区高清视频在线观看| 亚洲国产综合色| 国产不卡在线一区| 欧美日韩一级大片网址| 欧美高清在线一区二区| 亚洲综合精品久久| 国产成人福利片| 欧美一激情一区二区三区| 国产精品全国免费观看高清| 日韩电影免费在线| 欧美视频中文字幕| 国产婷婷一区二区| 老司机精品视频线观看86 | 免费观看久久久4p| 91美女视频网站| 中文一区在线播放| 美女视频网站久久| 欧美三级韩国三级日本一级| ...av二区三区久久精品| 国产一区二区三区免费播放| 欧美高清视频一二三区| 一区二区三区四区精品在线视频| 成人一级片网址| 日本一区二区免费在线观看视频| 蜜桃视频在线观看一区| 欧美丰满一区二区免费视频| 午夜久久久久久久久| 欧美日韩国产影片| 蜜芽一区二区三区| 久久久久久久久久久久久女国产乱|