README moves to markdown
[nepi.git] / src / nepi / resources / ns3 / classes / multi_model_spectrum_channel.py
1 #
2 #    NEPI, a framework to manage network experiments
3 #    Copyright (C) 2014 INRIA
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, see <http://www.gnu.org/licenses/>.
16 #
17
18 from nepi.execution.attribute import Attribute, Flags, Types
19 from nepi.execution.trace import Trace, TraceAttr
20 from nepi.execution.resource import ResourceManager, clsinit_copy, \
21         ResourceState
22 from nepi.resources.ns3.ns3channel import NS3BaseChannel 
23
24 @clsinit_copy
25 class NS3MultiModelSpectrumChannel(NS3BaseChannel):
26     _rtype = "ns3::MultiModelSpectrumChannel"
27
28     @classmethod
29     def _register_attributes(cls):
30         
31         attr_maxlossdb = Attribute("MaxLossDb",
32             "If a single-frequency PropagationLossModel is used, this value represents the maximum loss in dB for which transmissions will be passed to the receiving PHY. Signals for which the PropagationLossModel returns a loss bigger than this value will not be propagated to the receiver. This parameter is to be used to reduce the computational load by not propagating signals that are far beyond the interference range. Note that the default value corresponds to considering all signals for reception. Tune this value with care. ",
33             type = Types.Double,
34             default = "1e+09",  
35             allowed = None,
36             range = None,    
37             flags = Flags.Reserved | Flags.Construct)
38
39         cls._register_attribute(attr_maxlossdb)
40
41         attr_id = Attribute("Id",
42             "The id (unique integer) of this Channel.",
43             type = Types.Integer,
44             default = "0",  
45             allowed = None,
46             range = None,    
47             flags = Flags.Reserved | Flags.NoWrite)
48
49         cls._register_attribute(attr_id)
50
51
52
53     @classmethod
54     def _register_traces(cls):
55         
56         pathloss = Trace("PathLoss", "This trace is fired whenever a new path loss value is calculated. The first and second parameters to the trace are pointers respectively to the TX and RX SpectrumPhy instances, whereas the third parameters is the loss value in dB. Note that the loss value reported by this trace is the single-frequency loss value obtained by evaluating only the TX and RX AntennaModels and the PropagationLossModel. In particular, note that SpectrumPropagationLossModel (even if present) is never used to evaluate the loss value reported in this trace. ")
57
58         cls._register_trace(pathloss)
59
60
61
62     def __init__(self, ec, guid):
63         super(NS3MultiModelSpectrumChannel, self).__init__(ec, guid)
64         self._home = "ns3-multi-model-spectrum-channel-%s" % self.guid