Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(3478)

Unified Diff: src/devices/lte/lte-spectrum-value-helper.cc

Issue 1866042: LTE module - Giuseppe Piro
Patch Set: LTE module Created 13 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/devices/lte/lte-spectrum-value-helper.cc
===================================================================
new file mode 100644
--- /dev/null
+++ b/src/devices/lte/lte-spectrum-value-helper.cc
@@ -0,0 +1,87 @@
+/* -*- 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>
+ */
+
+
+#include "lte-spectrum-value-helper.h"
+#include <cmath>
+
+namespace ns3 {
+
+Ptr<SpectrumModel> LteSpectrumModel;
Nicola Baldo 2010/08/04 12:40:38 There is still a single LteSpectrumModel used both
GiuseppePiro 2010/08/06 14:09:47 Done.
+
+
+
+class static_LteSpectrumModel_initializer
+{
+public:
+ static_LteSpectrumModel_initializer ()
+ {
+
+ std::vector<double> freqs;
+ for (int i = 0; i < 100; ++i)
+ {
+
+ double centralFrequencyOfPRB = 1.99109 + (i * 0.00018);
+ freqs.push_back (centralFrequencyOfPRB * 1e9);
Nicola Baldo 2010/08/04 12:40:38 You have exactly the same code in lte-spectrum-mod
GiuseppePiro 2010/08/06 14:09:47 Done.
+ }
+
+ LteSpectrumModel = Create<SpectrumModel> (freqs);
+ }
+
+} static_LteSpectrumModel_initializer_instance;
+
+
+
+
+
+Ptr<SpectrumValue>
+LteSpectrumValueHelper::CreateTxPowerSpectralDensity (double powerTx, std::vector<int> channels)
+{
+ Ptr<SpectrumValue> txPsd = Create <SpectrumValue> (LteSpectrumModel);
+
+ // powerTx is expressed in dBm. We must convert it into natural unit.
+ powerTx = pow(10., (powerTx - 30)/10);
+
+ double txPowerDensity = (powerTx / channels.size ()) / 180000;
+
+ for (std::vector <int>::iterator it = channels.begin (); it != channels.end (); it++)
+ {
+ int idSubChannel = (*it);
+ (*txPsd)[idSubChannel] = txPowerDensity;
+ }
+
+ return txPsd;
+}
+
+
+Ptr<SpectrumValue>
+LteSpectrumValueHelper::CreateNoisePowerSpectralDensity (void)
+{
+ Ptr<SpectrumValue> txPsd = Create <SpectrumValue> (LteSpectrumModel);
+
+ double noise_db = 2.5 + (-174) + (10.*log10(180000)) - 30;
+ double noisePowerDensity = (pow(10.,noise_db/10)) / 180000;
+
+ (*txPsd) = noisePowerDensity;
+
+ return txPsd;
+}
+
+} //namespace ns3

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b