LEFT | RIGHT |
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ | 1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
2 /* | 2 /* |
3 * Copyright (c) 2014 Piotr Gawlowicz | 3 * Copyright (c) 2014 Piotr Gawlowicz |
4 * | 4 * |
5 * This program is free software; you can redistribute it and/or modify | 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 | 6 * it under the terms of the GNU General Public License version 2 as |
7 * published by the Free Software Foundation; | 7 * published by the Free Software Foundation; |
8 * | 8 * |
9 * This program is distributed in the hope that it will be useful, | 9 * This program is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 m_PoUePusch[0] = value; | 210 m_PoUePusch[0] = value; |
211 m_PoUePusch[1] = value; | 211 m_PoUePusch[1] = value; |
212 m_PoUePusch[2] = 0; | 212 m_PoUePusch[2] = 0; |
213 } | 213 } |
214 } | 214 } |
215 void | 215 void |
216 LteUePowerControl::SetAlpha (double value) | 216 LteUePowerControl::SetAlpha (double value) |
217 { | 217 { |
218 NS_LOG_FUNCTION (this); | 218 NS_LOG_FUNCTION (this); |
219 | 219 |
220 uint32_t temp = (uint32_t)(value * 10); | 220 uint32_t temp = static_cast<uint32_t>(value * 10); |
221 switch (temp) | 221 switch (temp) |
222 { | 222 { |
223 case 0: | 223 case 0: |
224 case 4: | 224 case 4: |
225 case 5: | 225 case 5: |
226 case 6: | 226 case 6: |
227 case 7: | 227 case 7: |
228 case 8: | 228 case 8: |
229 case 9: | 229 case 9: |
230 case 10: | 230 case 10: |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 double coeff = 0.7; | 263 double coeff = 0.7; |
264 m_rsrp = coeff * m_rsrp + (1 - coeff) * value; | 264 m_rsrp = coeff * m_rsrp + (1 - coeff) * value; |
265 m_pathLoss = m_referenceSignalPower - m_rsrp; | 265 m_pathLoss = m_referenceSignalPower - m_rsrp; |
266 } | 266 } |
267 | 267 |
268 void | 268 void |
269 LteUePowerControl::ReportTpc (uint8_t tpc) | 269 LteUePowerControl::ReportTpc (uint8_t tpc) |
270 { | 270 { |
271 NS_LOG_FUNCTION (this); | 271 NS_LOG_FUNCTION (this); |
272 | 272 |
273 int delta = 0; | 273 int8_t delta = 0; |
274 if (m_accumulationEnabled) | 274 if (m_accumulationEnabled) |
275 { | 275 { |
276 switch (tpc) | 276 switch (tpc) |
277 { | 277 { |
278 case 0: | 278 case 0: |
279 delta = -1; | 279 delta = -1; |
280 break; | 280 break; |
281 case 1: | 281 case 1: |
282 delta = 0; | 282 delta = 0; |
283 break; | 283 break; |
(...skipping 21 matching lines...) Expand all Loading... |
305 delta = 1; | 305 delta = 1; |
306 break; | 306 break; |
307 case 3: | 307 case 3: |
308 delta = 4; | 308 delta = 4; |
309 break; | 309 break; |
310 default: | 310 default: |
311 NS_FATAL_ERROR ("Unexpected TPC value"); | 311 NS_FATAL_ERROR ("Unexpected TPC value"); |
312 } | 312 } |
313 } | 313 } |
314 | 314 |
315 m_deltaPusch.push_back ((int8_t)delta); | 315 m_deltaPusch.push_back (delta); |
316 | 316 |
317 if (m_closedLoop) | 317 if (m_closedLoop) |
318 { | 318 { |
319 if (m_accumulationEnabled) | 319 if (m_accumulationEnabled) |
320 { | 320 { |
321 if (m_deltaPusch.size () == 4) | 321 if (m_deltaPusch.size () == 4) |
322 { | 322 { |
323 if ((m_curPuschTxPower <= m_Pcmin && m_deltaPusch.at (0) < 0) | 323 if ((m_curPuschTxPower <= m_Pcmin && m_deltaPusch.at (0) < 0) |
324 || (m_curPuschTxPower >= m_Pcmax && m_deltaPusch.at (0) > 0)) | 324 || (m_curPuschTxPower >= m_Pcmax && m_deltaPusch.at (0) > 0)) |
325 { | 325 { |
(...skipping 22 matching lines...) Expand all Loading... |
348 m_fc = 0; | 348 m_fc = 0; |
349 } | 349 } |
350 | 350 |
351 NS_LOG_INFO ("ReportTpc: " << (int)tpc << " delta: " << delta << " Fc: " << m_
fc); | 351 NS_LOG_INFO ("ReportTpc: " << (int)tpc << " delta: " << delta << " Fc: " << m_
fc); |
352 } | 352 } |
353 | 353 |
354 void | 354 void |
355 LteUePowerControl::SetSubChannelMask (std::vector <int> mask) | 355 LteUePowerControl::SetSubChannelMask (std::vector <int> mask) |
356 { | 356 { |
357 NS_LOG_FUNCTION (this); | 357 NS_LOG_FUNCTION (this); |
358 m_M_Pusch = (uint16_t)mask.size (); | 358 m_M_Pusch = static_cast<uint16_t>(mask.size ()); |
359 } | 359 } |
360 | 360 |
361 void | 361 void |
362 LteUePowerControl::CalculatePuschTxPower () | 362 LteUePowerControl::CalculatePuschTxPower () |
363 { | 363 { |
364 NS_LOG_FUNCTION (this); | 364 NS_LOG_FUNCTION (this); |
365 int32_t j = 1; | 365 int32_t j = 1; |
366 int32_t PoPusch = m_PoNominalPusch[j] + m_PoUePusch[j]; | 366 int32_t PoPusch = m_PoNominalPusch[j] + m_PoUePusch[j]; |
367 | 367 |
368 NS_LOG_INFO ("RB: " << m_M_Pusch << " m_PoPusch: " << PoPusch | 368 NS_LOG_INFO ("RB: " << m_M_Pusch << " m_PoPusch: " << PoPusch |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 m_curSrsTxPower = m_Pcmax < m_curSrsTxPower ? m_Pcmax : m_curSrsTxPower; | 416 m_curSrsTxPower = m_Pcmax < m_curSrsTxPower ? m_Pcmax : m_curSrsTxPower; |
417 NS_LOG_INFO ("SrsTxPower: " << m_curSrsTxPower); | 417 NS_LOG_INFO ("SrsTxPower: " << m_curSrsTxPower); |
418 } | 418 } |
419 | 419 |
420 | 420 |
421 double | 421 double |
422 LteUePowerControl::GetPuschTxPower (std::vector <int> dlRb) | 422 LteUePowerControl::GetPuschTxPower (std::vector <int> dlRb) |
423 { | 423 { |
424 NS_LOG_FUNCTION (this); | 424 NS_LOG_FUNCTION (this); |
425 | 425 |
426 m_M_Pusch = (uint16_t)dlRb.size (); | 426 m_M_Pusch = static_cast<uint16_t>(dlRb.size ()); |
427 CalculatePuschTxPower (); | 427 CalculatePuschTxPower (); |
428 | 428 |
429 m_reportPuschTxPower (m_cellId, m_rnti, m_curPuschTxPower); | 429 m_reportPuschTxPower (m_cellId, m_rnti, m_curPuschTxPower); |
430 | 430 |
431 return m_curPuschTxPower; | 431 return m_curPuschTxPower; |
432 } | 432 } |
433 | 433 |
434 double | 434 double |
435 LteUePowerControl::GetPucchTxPower (std::vector <int> dlRb) | 435 LteUePowerControl::GetPucchTxPower (std::vector <int> dlRb) |
436 { | 436 { |
437 NS_LOG_FUNCTION (this); | 437 NS_LOG_FUNCTION (this); |
438 | 438 |
439 CalculatePucchTxPower (); | 439 CalculatePucchTxPower (); |
440 | 440 |
441 m_reportPucchTxPower (m_cellId, m_rnti, m_curPucchTxPower); | 441 m_reportPucchTxPower (m_cellId, m_rnti, m_curPucchTxPower); |
442 | 442 |
443 return m_curPucchTxPower; | 443 return m_curPucchTxPower; |
444 } | 444 } |
445 | 445 |
446 double | 446 double |
447 LteUePowerControl::GetSrsTxPower (std::vector <int> dlRb) | 447 LteUePowerControl::GetSrsTxPower (std::vector <int> dlRb) |
448 { | 448 { |
449 NS_LOG_FUNCTION (this); | 449 NS_LOG_FUNCTION (this); |
450 | 450 |
451 m_srsBandwidth = (uint16_t)dlRb.size (); | 451 m_srsBandwidth = static_cast<uint16_t>(dlRb.size ()); |
452 CalculateSrsTxPower (); | 452 CalculateSrsTxPower (); |
453 | 453 |
454 m_reportSrsTxPower (m_cellId, m_rnti, m_curSrsTxPower); | 454 m_reportSrsTxPower (m_cellId, m_rnti, m_curSrsTxPower); |
455 | 455 |
456 return m_curSrsTxPower; | 456 return m_curSrsTxPower; |
457 } | 457 } |
458 | 458 |
459 } // namespace ns3 | 459 } // namespace ns3 |
LEFT | RIGHT |