Changing reschedule_delay internals
[nepi.git] / src / nepi / resources / ns3 / classes / single_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 as published by
7 #    the Free Software Foundation, either version 3 of the License, or
8 #    (at your option) any later version.
9 #
10 #    This program is distributed in the hope that it will be useful,
11 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 #    GNU General Public License for more details.
14 #
15 #    You should have received a copy of the GNU General Public License
16 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 #
18
19 from nepi.execution.attribute import Attribute, Flags, Types
20 from nepi.execution.trace import Trace, TraceAttr
21 from nepi.execution.resource import ResourceManager, clsinit_copy, \
22         ResourceState
23 from nepi.resources.ns3.ns3channel import NS3BaseChannel 
24
25 @clsinit_copy
26 class NS3SingleModelSpectrumChannel(NS3BaseChannel):
27     _rtype = "ns3::SingleModelSpectrumChannel"
28
29     @classmethod
30     def _register_attributes(cls):
31         
32         attr_maxlossdb = Attribute("MaxLossDb",
33             "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. ",
34             type = Types.Double,
35             default = "1e+09",  
36             allowed = None,
37             range = None,    
38             flags = Flags.Reserved | Flags.Construct)
39
40         cls._register_attribute(attr_maxlossdb)
41
42         attr_id = Attribute("Id",
43             "The id (unique integer) of this Channel.",
44             type = Types.Integer,
45             default = "0",  
46             allowed = None,
47             range = None,    
48             flags = Flags.Reserved | Flags.NoWrite)
49
50         cls._register_attribute(attr_id)
51
52
53
54     @classmethod
55     def _register_traces(cls):
56         
57         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. ")
58
59         cls._register_trace(pathloss)
60
61
62
63     def __init__(self, ec, guid):
64         super(NS3SingleModelSpectrumChannel, self).__init__(ec, guid)
65         self._home = "ns3-single-model-spectrum-channel-%s" % self.guid