This file is indexed.

/usr/include/ns3/ideal-control-messages.h is in libns3-dev 3.13+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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
 * Copyright (c) 2010 TELEMATICS LAB, DEE - Politecnico di Bari
 *
 * 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: Giuseppe Piro  <g.piro@poliba.it>
 */

#ifndef IDEAL_CONTROL_MESSAGES_H
#define IDEAL_CONTROL_MESSAGES_H

#include "ns3/ptr.h"
#include "ns3/simple-ref-count.h"
#include <list>

namespace ns3 {

class LteNetDevice;


/**
 * \ingroup lte
 *
 * The IdealControlMessage provides a basic implementations for
 * control messages (such as PDCCH allocation map, CQI feedbacks)
 * that are exchanged among eNodeB and UEs.
 */
class IdealControlMessage : public SimpleRefCount<IdealControlMessage>
{
public:

  /**
   * The type of the message
   */
  enum MessageType
  {
    CQI_FEEDBACKS, ALLOCATION_MAP
  };

  IdealControlMessage (void);
  virtual ~IdealControlMessage (void);

  /**
   * \brief Set the source  device of the message
   * \param src the device that sends the message
   */
  void SetSourceDevice (Ptr<LteNetDevice> src);
  /**
   * \brief Set the destination  device of the message
   * \param dst the device that receives the message
   */
  void SetDestinationDevice (Ptr<LteNetDevice> dst);

  /**
   * \brief Get the source  device of the message
   * \return the pointer to the device that sends the message
   */
  Ptr<LteNetDevice> GetSourceDevice (void);
  /**
   * \brief Get the destination device of the message
   * \return the pointer to the device that receives the message
   */
  Ptr<LteNetDevice> GetDestinationDevice (void);

  /**
   * \brief Set the type of the message
   * \param type the type of the message
   */
  void SetMessageType (MessageType type);
  /**
   * \brief Get the type of the message
   * \return the type of the message
   */
  MessageType GetMessageType (void);

private:
  Ptr<LteNetDevice> m_source;
  Ptr<LteNetDevice> m_destination;
  MessageType m_type;
};
} // namespace ns3

#endif /* IDEAL_CONTROL_MESSAGES_H */



// ----------------------------------------------------------------------------------------------------------



#ifndef PDCCH_MAP_IDEAL_CONTROL_MESSAGES_H
#define PDCCH_MAP_IDEAL_CONTROL_MESSAGES_H

#include "ns3/object.h"
#include <list>

namespace ns3 {

class LteNetDevice;

/**
 * \ingroup lte
 *
 * \brief The PdcchMapIdealControlMessage defines an ideal allocation map
 * for both UL and DL sends by the eNodeB to all UE,
 * using an ideal PDCCH control channel.
 * IdealPdcchMessage is composed by a list of IdealPdcchRecord
 * where is indicated the UE that can use a particular sub channel
 * with a proper MCS scheme.
 * This records are the same for both UL and DL, and are created by the
 * packet scheduler at the beginning of each sub frame.
 * When the IdealPdcchMessage is sent under an ideal control channel,
 * all UE stores into a proper variables the informations about
 * the resource mapping.
 */
class PdcchMapIdealControlMessage : public IdealControlMessage
{
public:

  PdcchMapIdealControlMessage (void);
  virtual ~PdcchMapIdealControlMessage (void);

  /**
   * Direction for which the message is created 
   */
  enum Direction
  {
    DOWNLINK, UPLINK
  };

  /**
   * The PDCCH ideal record
   */
  struct IdealPdcchRecord
  {
    /** the direction */
    Direction m_direction;
    /** the sub channel */ 
    int m_idSubChannel;
    /** the ue that receive the mapping */
    Ptr<LteNetDevice> m_ue;
    /** the selected msc */
    double m_mcsIndex;
  };

  /**
   * The PDCCH ideal message
   */
  typedef std::list<struct IdealPdcchRecord>  IdealPdcchMessage;

  /**
   * \brief add a PDCCH record into the message.
   * \param direction the direction of the map
   * \param subChannel the scheduled sub channel
   * \param ue the ue the can use the sub channel for transmission
   * \param mcs the selected MCS scheme
   */
  void AddNewRecord (Direction direction,
                     int subChannel, Ptr<LteNetDevice> ue, double mcs);

  /**
   * \brief Get the message
   * \return the pointer to the message
   */
  IdealPdcchMessage* GetMessage (void);

private:
  IdealPdcchMessage *m_idealPdcchMessage;
};

} // namespace ns3

#endif /* PDCCH_MAP_IDEAL_CONTROL_MESSAGES_H */



// ----------------------------------------------------------------------------------------------------------



#ifndef CQI_IDEAL_CONTROL_MESSAGES_H
#define CQI_IDEAL_CONTROL_MESSAGES_H

#include "ns3/object.h"
#include <list>

namespace ns3 {

class LteNetDevice;

/**
 * \ingroup lte
 *
 * The CqiIdealControlMessage defines an ideal list of feedback about
 * the channel quality sent by the UE to the eNodeB.
 */
class CqiIdealControlMessage : public IdealControlMessage
{
public:

  CqiIdealControlMessage (void);
  virtual ~CqiIdealControlMessage (void);

  /**
   * The CQI feedback ideal record
   */
  struct CqiFeedback
  {
    /** the sub channel */
    int m_idSubChannel; 
    /** the cqi feedback */
    double m_cqi;
  };

  /**
   * The ideal CQI feedback message
   */
  typedef std::list<struct CqiFeedback>  CqiFeedbacks;

  /**
   * \brief add a CQI feedback record into the message.
   * \param subChannel the scheduled sub channel
   * \param cqi the cqi feedback
   */
  void AddNewRecord (int subChannel, double cqi);

  /**
   * \brief Get cqi informations
   * \return cqi messages
   */
  CqiFeedbacks* GetMessage (void);


private:
  CqiFeedbacks *m_cqiFeedbacks;
};
} // namespace ns3

#endif /* CQI_IDEAL_CONTROL_MESSAGES_H */