1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2010 TELEMATICS LAB, DEE - Politecnico di Bari
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: Giuseppe Piro  <g.piro@poliba.it>
19  *         Marco Miozzo <marco.miozzo@cttc.es>
20  */
21 
22 #include "lte-control-messages.h"
23 #include "ns3/address-utils.h"
24 #include "ns3/uinteger.h"
25 #include "ns3/log.h"
26 #include "lte-net-device.h"
27 #include "lte-ue-net-device.h"
28 
29 namespace ns3 {
30 
31 NS_LOG_COMPONENT_DEFINE ("LteControlMessage");
32 
LteControlMessage(void)33 LteControlMessage::LteControlMessage (void)
34 {
35 }
36 
37 
~LteControlMessage(void)38 LteControlMessage::~LteControlMessage (void)
39 {
40 }
41 
42 
43 void
SetMessageType(LteControlMessage::MessageType type)44 LteControlMessage::SetMessageType (LteControlMessage::MessageType type)
45 {
46   m_type = type;
47 }
48 
49 
50 LteControlMessage::MessageType
GetMessageType(void)51 LteControlMessage::GetMessageType (void)
52 {
53   return m_type;
54 }
55 
56 
57 // ----------------------------------------------------------------------------------------------------------
58 
59 
DlDciLteControlMessage(void)60 DlDciLteControlMessage::DlDciLteControlMessage (void)
61 {
62   SetMessageType (LteControlMessage::DL_DCI);
63 }
64 
65 
~DlDciLteControlMessage(void)66 DlDciLteControlMessage::~DlDciLteControlMessage (void)
67 {
68 
69 }
70 
71 void
SetDci(DlDciListElement_s dci)72 DlDciLteControlMessage::SetDci (DlDciListElement_s dci)
73 {
74   m_dci = dci;
75 
76 }
77 
78 
79 DlDciListElement_s
GetDci(void)80 DlDciLteControlMessage::GetDci (void)
81 {
82   return m_dci;
83 }
84 
85 
86 // ----------------------------------------------------------------------------------------------------------
87 
88 
UlDciLteControlMessage(void)89 UlDciLteControlMessage::UlDciLteControlMessage (void)
90 {
91   SetMessageType (LteControlMessage::UL_DCI);
92 }
93 
94 
~UlDciLteControlMessage(void)95 UlDciLteControlMessage::~UlDciLteControlMessage (void)
96 {
97 
98 }
99 
100 void
SetDci(UlDciListElement_s dci)101 UlDciLteControlMessage::SetDci (UlDciListElement_s dci)
102 {
103   m_dci = dci;
104 
105 }
106 
107 
108 UlDciListElement_s
GetDci(void)109 UlDciLteControlMessage::GetDci (void)
110 {
111   return m_dci;
112 }
113 
114 
115 // ----------------------------------------------------------------------------------------------------------
116 
117 
DlCqiLteControlMessage(void)118 DlCqiLteControlMessage::DlCqiLteControlMessage (void)
119 {
120   SetMessageType (LteControlMessage::DL_CQI);
121 }
122 
123 
~DlCqiLteControlMessage(void)124 DlCqiLteControlMessage::~DlCqiLteControlMessage (void)
125 {
126 
127 }
128 
129 void
SetDlCqi(CqiListElement_s dlcqi)130 DlCqiLteControlMessage::SetDlCqi (CqiListElement_s dlcqi)
131 {
132   m_dlCqi = dlcqi;
133 
134 }
135 
136 
137 CqiListElement_s
GetDlCqi(void)138 DlCqiLteControlMessage::GetDlCqi (void)
139 {
140   return m_dlCqi;
141 }
142 
143 
144 
145 // ----------------------------------------------------------------------------------------------------------
146 
147 
BsrLteControlMessage(void)148 BsrLteControlMessage::BsrLteControlMessage (void)
149 {
150   SetMessageType (LteControlMessage::BSR);
151 }
152 
153 
~BsrLteControlMessage(void)154 BsrLteControlMessage::~BsrLteControlMessage (void)
155 {
156 
157 }
158 
159 void
SetBsr(MacCeListElement_s bsr)160 BsrLteControlMessage::SetBsr (MacCeListElement_s bsr)
161 {
162   m_bsr = bsr;
163 
164 }
165 
166 
167 MacCeListElement_s
GetBsr(void)168 BsrLteControlMessage::GetBsr (void)
169 {
170   return m_bsr;
171 }
172 
173 
174 
175 // ----------------------------------------------------------------------------------------------------------
176 
177 
RachPreambleLteControlMessage(void)178 RachPreambleLteControlMessage::RachPreambleLteControlMessage (void)
179 {
180   SetMessageType (LteControlMessage::RACH_PREAMBLE);
181 }
182 
183 void
SetRapId(uint32_t rapId)184 RachPreambleLteControlMessage::SetRapId (uint32_t rapId)
185 {
186   m_rapId = rapId;
187 }
188 
189 uint32_t
GetRapId() const190 RachPreambleLteControlMessage::GetRapId () const
191 {
192   return m_rapId;
193 }
194 
195 
196 // ----------------------------------------------------------------------------------------------------------
197 
198 
RarLteControlMessage(void)199 RarLteControlMessage::RarLteControlMessage (void)
200 {
201   SetMessageType (LteControlMessage::RAR);
202 }
203 
204 
205 void
SetRaRnti(uint16_t raRnti)206 RarLteControlMessage::SetRaRnti (uint16_t raRnti)
207 {
208   m_raRnti = raRnti;
209 }
210 
211 uint16_t
GetRaRnti() const212 RarLteControlMessage::GetRaRnti () const
213 {
214   return m_raRnti;
215 }
216 
217 
218 void
AddRar(Rar rar)219 RarLteControlMessage::AddRar (Rar rar)
220 {
221   m_rarList.push_back (rar);
222 }
223 
224 std::list<RarLteControlMessage::Rar>::const_iterator
RarListBegin() const225 RarLteControlMessage::RarListBegin () const
226 {
227   return m_rarList.begin ();
228 }
229 
230 std::list<RarLteControlMessage::Rar>::const_iterator
RarListEnd() const231 RarLteControlMessage::RarListEnd () const
232 {
233   return m_rarList.end ();
234 }
235 
236 
237 // ----------------------------------------------------------------------------------------------------------
238 
239 
240 
MibLteControlMessage(void)241 MibLteControlMessage::MibLteControlMessage (void)
242 {
243   SetMessageType (LteControlMessage::MIB);
244 }
245 
246 
247 void
SetMib(LteRrcSap::MasterInformationBlock mib)248 MibLteControlMessage::SetMib (LteRrcSap::MasterInformationBlock  mib)
249 {
250   m_mib = mib;
251 }
252 
253 LteRrcSap::MasterInformationBlock
GetMib() const254 MibLteControlMessage::GetMib () const
255 {
256   return m_mib;
257 }
258 
259 
260 // ----------------------------------------------------------------------------------------------------------
261 
262 
263 
Sib1LteControlMessage(void)264 Sib1LteControlMessage::Sib1LteControlMessage (void)
265 {
266   SetMessageType (LteControlMessage::SIB1);
267 }
268 
269 
270 void
SetSib1(LteRrcSap::SystemInformationBlockType1 sib1)271 Sib1LteControlMessage::SetSib1 (LteRrcSap::SystemInformationBlockType1 sib1)
272 {
273   m_sib1 = sib1;
274 }
275 
276 LteRrcSap::SystemInformationBlockType1
GetSib1() const277 Sib1LteControlMessage::GetSib1 () const
278 {
279   return m_sib1;
280 }
281 
282 
283 // ---------------------------------------------------------------------------
284 
285 
286 
DlHarqFeedbackLteControlMessage(void)287 DlHarqFeedbackLteControlMessage::DlHarqFeedbackLteControlMessage (void)
288 {
289   SetMessageType (LteControlMessage::DL_HARQ);
290 }
291 
292 
~DlHarqFeedbackLteControlMessage(void)293 DlHarqFeedbackLteControlMessage::~DlHarqFeedbackLteControlMessage (void)
294 {
295 
296 }
297 
298 void
SetDlHarqFeedback(DlInfoListElement_s m)299 DlHarqFeedbackLteControlMessage::SetDlHarqFeedback (DlInfoListElement_s m)
300 {
301   m_dlInfoListElement = m;
302 }
303 
304 
305 DlInfoListElement_s
GetDlHarqFeedback(void)306 DlHarqFeedbackLteControlMessage::GetDlHarqFeedback (void)
307 {
308   return m_dlInfoListElement;
309 }
310 
311 
312 } // namespace ns3
313 
314