![]() |
User Manual, Developers Guide and API Documentation |
![]() |
00001 /****************************************************************************** 00002 * WiFiMac * 00003 * This file is part of openWNS (open Wireless Network Simulator) 00004 * _____________________________________________________________________________ 00005 * 00006 * Copyright (C) 2004-2007 00007 * Chair of Communication Networks (ComNets) 00008 * Kopernikusstr. 16, D-52074 Aachen, Germany 00009 * phone: ++49-241-80-27910, 00010 * fax: ++49-241-80-22242 00011 * email: info@openwns.org 00012 * www: http://www.openwns.org 00013 * _____________________________________________________________________________ 00014 * 00015 * openWNS is free software; you can redistribute it and/or modify it under the 00016 * terms of the GNU Lesser General Public License version 2 as published by the 00017 * Free Software Foundation; 00018 * 00019 * openWNS is distributed in the hope that it will be useful, but WITHOUT ANY 00020 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 00021 * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 00022 * details. 00023 * 00024 * You should have received a copy of the GNU Lesser General Public License 00025 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00026 * 00027 ******************************************************************************/ 00028 00029 #ifndef WIFIMAC_MANAGEMENT_PROTOCOLCALCULATORPLUGINS_DURATION_HPP 00030 #define WIFIMAC_MANAGEMENT_PROTOCOLCALCULATORPLUGINS_DURATION_HPP 00031 00032 // must be the first include! 00033 #include <WNS/Python.hpp> 00034 00035 #include <WIFIMAC/management/protocolCalculatorPlugins/ConfigGetter.hpp> 00036 #include <WIFIMAC/management/protocolCalculatorPlugins/FrameLength.hpp> 00037 #include <WIFIMAC/convergence/PhyMode.hpp> 00038 00039 #include <WNS/pyconfig/View.hpp> 00040 #include <WNS/simulator/Time.hpp> 00041 00042 00043 namespace wifimac { namespace management { 00044 class ProtocolCalculator; 00045 }} 00046 00047 namespace wifimac { namespace management { namespace protocolCalculatorPlugins { 00056 class Duration 00057 { 00058 public: 00059 Duration( wifimac::management::protocolCalculatorPlugins::FrameLength* fl_, const wns::pyconfig::View& config ); 00060 00061 Duration( wifimac::management::protocolCalculatorPlugins::FrameLength* fl_, const ConfigGetter& config); 00062 00063 virtual ~Duration() {}; 00064 00065 unsigned int 00066 ofdmSymbols(Bit length, const wifimac::convergence::PhyMode& pm) const; 00067 00068 wns::simulator::Time 00069 frame(Bit psduLength, const wifimac::convergence::PhyMode& pm) const; 00070 wns::simulator::Time 00071 frame(Bit psduLength, const double grossBitRate, const wifimac::convergence::PhyMode& pm) const; 00072 00073 wns::simulator::Time 00074 ack(const wifimac::convergence::PhyMode& pm) const; 00075 00076 wns::simulator::Time 00077 aifs(unsigned int n) const; 00078 00079 wns::simulator::Time 00080 eifs(const wifimac::convergence::PhyMode& pm, unsigned int aifsn) const; 00081 00082 wns::simulator::Time 00083 rts(const wifimac::convergence::PhyMode& pm) const; 00084 00085 wns::simulator::Time 00086 cts(const wifimac::convergence::PhyMode& pm) const; 00087 00088 wns::simulator::Time 00089 preamble(const wifimac::convergence::PhyMode& pm) const; 00090 00091 wns::simulator::Time 00092 preambleProcessing(const wifimac::convergence::PhyMode& pm) const; 00093 00094 wns::simulator::Time 00095 blockACK(const wifimac::convergence::PhyMode& pm) const; 00096 00097 wns::simulator::Time 00098 MSDU_PPDU(Bit msduFrameSize, const wifimac::convergence::PhyMode& pm) const; 00099 wns::simulator::Time 00100 MSDU_PPDU(Bit msduFrameSize, const double grossBitRate, const wifimac::convergence::PhyMode& pm) const; 00101 00102 wns::simulator::Time 00103 MPDU_PPDU(Bit mpduSize, const wifimac::convergence::PhyMode& pm) const; 00104 wns::simulator::Time 00105 MPDU_PPDU(Bit mpduSize, const double grossBitRate, const wifimac::convergence::PhyMode& pm) const; 00106 00107 wns::simulator::Time 00108 A_MPDU_PPDU(Bit mpduFrameSize, unsigned int n_aggFrames, const wifimac::convergence::PhyMode& pm) const; 00109 wns::simulator::Time 00110 A_MPDU_PPDU(Bit mpduFrameSize, unsigned int n_aggFrames, const double grossBitRate, const wifimac::convergence::PhyMode& pm) const; 00111 wns::simulator::Time 00112 A_MPDU_PPDU(const std::vector<Bit>& mpduFrameSize, const wifimac::convergence::PhyMode& pm) const; 00113 00114 wns::simulator::Time 00115 A_MSDU_PPDU(Bit msduFrameSize, unsigned int n_aggFrames, const wifimac::convergence::PhyMode& pm) const; 00116 wns::simulator::Time 00117 A_MSDU_PPDU(Bit msduFrameSize, unsigned int n_aggFrames, const double grossBitRate, const wifimac::convergence::PhyMode& pm) const; 00118 wns::simulator::Time 00119 A_MSDU_PPDU(const std::vector<Bit>& msduFrameSize, const wifimac::convergence::PhyMode& pm) const; 00120 00121 wns::simulator::Time 00122 symbol(const wifimac::convergence::PhyMode &pm) const; 00123 00124 const wns::simulator::Time sifs; 00125 const wns::simulator::Time slot; 00126 00127 private: 00128 const wns::simulator::Time symbolWithoutGI; 00129 const wifimac::management::protocolCalculatorPlugins::FrameLength* fl; 00130 00131 00132 }; 00133 } // protocolCalculatorPlugins 00134 } // management 00135 } // wifimac 00136 00137 #endif
1.5.5