/usr/include/ns3.27/ns3/bs-scheduler.h is in libns3-dev 3.27+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2007,2008 INRIA
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Jahanzeb Farooq <jahanzeb.farooq@sophia.inria.fr>
*/
/* BS outbound scheduler as per in Section 6.3.5.1 */
#ifndef BS_SCHEDULER_H
#define BS_SCHEDULER_H
#include <list>
#include "ns3/packet.h"
#include "wimax-phy.h"
#include "ns3/packet-burst.h"
#include "dl-mac-messages.h"
#include "service-flow.h"
namespace ns3 {
class BaseStationNetDevice;
class GenericMacHeader;
class WimaxConnection;
class Cid;
/**
* \ingroup wimax
*/
class BSScheduler : public Object
{
public:
BSScheduler ();
/**
* Constructor
*
* \param bs base station device
*/
BSScheduler (Ptr<BaseStationNetDevice> bs);
~BSScheduler (void);
/**
* \brief Get the type ID.
* \return the object TypeId
*/
static TypeId GetTypeId (void);
/**
* \brief This function returns all the downlink bursts scheduled for the next
* downlink sub-frame
* \returns all the downlink bursts scheduled for the next downlink sub-frame
*/
virtual std::list<std::pair<OfdmDlMapIe*, Ptr<PacketBurst> > >*
GetDownlinkBursts (void) const = 0;
/**
* \brief This function adds a downlink burst to the list of downlink bursts
* scheduled for the next downlink sub-frame
* \param connection a pointer to connection in wich the burst will be sent
* \param diuc downlink iuc
* \param modulationType the modulation type of the burst
* \param burst the downlink burst to add to the downlink sub frame
*/
virtual void AddDownlinkBurst (Ptr<const WimaxConnection> connection,
uint8_t diuc,
WimaxPhy::ModulationType modulationType,
Ptr<PacketBurst> burst) = 0;
/**
* \brief the scheduling function for the downlink subframe.
*/
virtual void Schedule (void) = 0;
/**
* \brief Selects a connection from the list of connections having packets to be sent .
* \param connection will point to a connection that have packets to be sent
* \returns false if no connection has packets to be sent, true otherwise
*/
virtual bool SelectConnection (Ptr<WimaxConnection> &connection) = 0;
/**
* \brief Creates a downlink UGS burst
* \param serviceFlow the service flow of the burst
* \param modulationType the modulation type to be used for the burst
* \param availableSymbols maximum number of OFDM symbols to be used by the burst
* \returns a Burst (list of packets)
*/
virtual Ptr<PacketBurst> CreateUgsBurst (ServiceFlow *serviceFlow,
WimaxPhy::ModulationType modulationType,
uint32_t availableSymbols) = 0;
/**
* \brief Get the base station.
* \returns the base station net device
*/
virtual Ptr<BaseStationNetDevice> GetBs (void);
/**
* \brief Set the base station.
* \param bs the base station net device
*/
virtual void SetBs (Ptr<BaseStationNetDevice> bs);
/**
* \brief Check if the packet fragmentation is possible for transport connection.
* \param connection the downlink connection
* \param availableSymbols maximum number of OFDM symbols to be used by the burst
* \param modulationType the modulation type to be used for the burst
* \returns false if packet fragmentation is not possible, true otherwise
*/
bool CheckForFragmentation (Ptr<WimaxConnection> connection,
int availableSymbols,
WimaxPhy::ModulationType modulationType);
private:
Ptr<BaseStationNetDevice> m_bs; ///< base station
std::list<std::pair<OfdmDlMapIe*, Ptr<PacketBurst> > > *m_downlinkBursts; ///< down link bursts
};
} // namespace ns3
#endif /* BS_SCHEDULER_H */
|