1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2011 CTTC
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  *
18  * Author: Nicola Baldo <nbaldo@cttc.es>
19  * Modified by Marco Miozzo <mmiozzo@cttc.es> (add data and ctrl diversity)
20  */
21 
22 #ifndef LTE_SPECTRUM_SIGNAL_PARAMETERS_H
23 #define LTE_SPECTRUM_SIGNAL_PARAMETERS_H
24 
25 
26 #include <ns3/spectrum-signal-parameters.h>
27 
28 namespace ns3 {
29 
30 class PacketBurst;
31 class LteControlMessage;
32 
33 
34 /**
35  * \ingroup lte
36  *
37  * Signal parameters for Lte
38  */
39 struct LteSpectrumSignalParameters : public SpectrumSignalParameters
40 {
41 
42   // inherited from SpectrumSignalParameters
43   virtual Ptr<SpectrumSignalParameters> Copy ();
44 
45   /**
46    * default constructor
47    */
48   LteSpectrumSignalParameters ();
49 
50   /**
51    * copy constructor
52    * \param p the LteSpectrumSignalParameters to copy
53    */
54   LteSpectrumSignalParameters (const LteSpectrumSignalParameters& p);
55 
56   /**
57    * The packet burst being transmitted with this signal
58    */
59   Ptr<PacketBurst> packetBurst;
60 };
61 
62 
63 /**
64 * \ingroup lte
65 *
66 * Signal parameters for Lte Data Frame (PDSCH), and eventually after some
67 * control messages through other control channel embedded in PDSCH
68 * (i.e. PBCH)
69 */
70 struct LteSpectrumSignalParametersDataFrame : public SpectrumSignalParameters
71 {
72 
73   // inherited from SpectrumSignalParameters
74   virtual Ptr<SpectrumSignalParameters> Copy ();
75 
76   /**
77   * default constructor
78   */
79   LteSpectrumSignalParametersDataFrame ();
80 
81   /**
82   * copy constructor
83   * \param p the LteSpectrumSignalParametersDataFrame to copy
84   */
85   LteSpectrumSignalParametersDataFrame (const LteSpectrumSignalParametersDataFrame& p);
86 
87   /**
88   * The packet burst being transmitted with this signal
89   */
90   Ptr<PacketBurst> packetBurst;
91 
92   std::list<Ptr<LteControlMessage> > ctrlMsgList; ///< the control message list
93 
94   uint16_t cellId; ///< cell ID
95 };
96 
97 
98 /**
99 * \ingroup lte
100 *
101 * Signal parameters for Lte DL Ctrl Frame (RS, PCFICH and PDCCH)
102 */
103 struct LteSpectrumSignalParametersDlCtrlFrame : public SpectrumSignalParameters
104 {
105 
106   // inherited from SpectrumSignalParameters
107   virtual Ptr<SpectrumSignalParameters> Copy ();
108 
109   /**
110   * default constructor
111   */
112   LteSpectrumSignalParametersDlCtrlFrame ();
113 
114   /**
115   * copy constructor
116   * \param p the LteSpectrumSignalParametersDlCtrlFrame to copy
117   */
118   LteSpectrumSignalParametersDlCtrlFrame (const LteSpectrumSignalParametersDlCtrlFrame& p);
119 
120 
121   std::list<Ptr<LteControlMessage> > ctrlMsgList; ///< control message list
122 
123   uint16_t cellId; ///< cell ID
124   bool pss; ///< primary synchronization signal
125 };
126 
127 
128 
129 /**
130 * \ingroup lte
131 *
132 * Signal parameters for Lte SRS Frame
133 */
134 struct LteSpectrumSignalParametersUlSrsFrame : public SpectrumSignalParameters
135 {
136 
137   // inherited from SpectrumSignalParameters
138   virtual Ptr<SpectrumSignalParameters> Copy ();
139 
140   /**
141   * default constructor
142   */
143   LteSpectrumSignalParametersUlSrsFrame ();
144 
145   /**
146   * copy constructor
147   * \param p the LteSpectrumSignalParametersUlSrsFrame to copy
148   */
149   LteSpectrumSignalParametersUlSrsFrame (const LteSpectrumSignalParametersUlSrsFrame& p);
150 
151   uint16_t cellId; ///< cell ID
152 };
153 
154 
155 }  // namespace ns3
156 
157 
158 #endif /* LTE_SPECTRUM_SIGNAL_PARAMETERS_H */
159