View | Details | Raw Unified | Return to bug 2734
Collapse All | Expand All

(-)a/bindings/python/ns3modulegen.py (-1 / +1 lines)
 Lines 81-87   class MyMultiSectionFactory(MultiSectionFactory): Link Here 
81
    def close(self):
81
    def close(self):
82
        self.header_sink.file.close()
82
        self.header_sink.file.close()
83
        self.main_sink.file.close()
83
        self.main_sink.file.close()
84
        for sink in self.section_sinks.itervalues():
84
        for sink in self.section_sinks.values():
85
            sink.file.close()
85
            sink.file.close()
86
86
87
87
(-)a/src/lte/examples/d2d-examples/wns3-2017-pssch.cc (-1 / +1 lines)
 Lines 139-145   main (int argc, char *argv[]) Link Here 
139
  NS_LOG_LOGIC ("UL freq: " << ulFreq);
139
  NS_LOG_LOGIC ("UL freq: " << ulFreq);
140
  Ptr<Object> uplinkPathlossModel = lteHelper->GetUplinkPathlossModel ();
140
  Ptr<Object> uplinkPathlossModel = lteHelper->GetUplinkPathlossModel ();
141
  Ptr<PropagationLossModel> lossModel = uplinkPathlossModel->GetObject<PropagationLossModel> ();
141
  Ptr<PropagationLossModel> lossModel = uplinkPathlossModel->GetObject<PropagationLossModel> ();
142
  NS_ASSERT_MSG (lossModel > 0, "No PathLossModel");
142
  NS_ASSERT_MSG (lossModel != nullptr, "No PathLossModel");
143
  bool ulFreqOk = uplinkPathlossModel->SetAttributeFailSafe ("Frequency", DoubleValue (ulFreq));
143
  bool ulFreqOk = uplinkPathlossModel->SetAttributeFailSafe ("Frequency", DoubleValue (ulFreq));
144
  if (!ulFreqOk)
144
  if (!ulFreqOk)
145
    {
145
    {
(-)a/src/lte/examples/lte-wrap-around-hex-topology.cc (-1 / +1 lines)
 Lines 543-549   int main (int argc, char *argv[]) Link Here 
543
  Ptr<Object> downlinkPathlossModel = lteHelper->GetDownlinkPathlossModel ();
543
  Ptr<Object> downlinkPathlossModel = lteHelper->GetDownlinkPathlossModel ();
544
  Ptr<PropagationLossModel> lossModel = downlinkPathlossModel->GetObject<PropagationLossModel> ();
544
  Ptr<PropagationLossModel> lossModel = downlinkPathlossModel->GetObject<PropagationLossModel> ();
545
545
546
  NS_ASSERT_MSG (lossModel > 0, "No PathLossModel");
546
  NS_ASSERT_MSG (lossModel != nullptr, "No PathLossModel");
547
  topoHelper->AttachWithWrapAround (lossModel, ueDevs, enbDevs);
547
  topoHelper->AttachWithWrapAround (lossModel, ueDevs, enbDevs);
548
  NS_LOG_DEBUG ("Attached UE's to the eNB with wrap-around");
548
  NS_LOG_DEBUG ("Attached UE's to the eNB with wrap-around");
549
549
(-)a/src/lte/test/test-wrap-around-hex-topology.cc (-1 / +1 lines)
 Lines 237-243   WrapAroundTopologyTestCase::DoRun () Link Here 
237
  Ptr<Object> downlinkPathlossModel = lteHelper->GetDownlinkPathlossModel ();
237
  Ptr<Object> downlinkPathlossModel = lteHelper->GetDownlinkPathlossModel ();
238
  Ptr<PropagationLossModel> lossModel = downlinkPathlossModel->GetObject<PropagationLossModel> ();
238
  Ptr<PropagationLossModel> lossModel = downlinkPathlossModel->GetObject<PropagationLossModel> ();
239
239
240
  NS_ASSERT_MSG (lossModel > 0, "No PathLossModel");
240
  NS_ASSERT_MSG (lossModel != nullptr, "No PathLossModel");
241
  topoHelper->AttachWithWrapAround (lossModel, ueDevs, enbDevs);
241
  topoHelper->AttachWithWrapAround (lossModel, ueDevs, enbDevs);
242
  NS_LOG_INFO ("Attached UE's to the eNB with wrap-around");
242
  NS_LOG_INFO ("Attached UE's to the eNB with wrap-around");
243
243
(-)a/src/visualizer/model/visual-simulator-impl.cc (-4 / +10 lines)
 Lines 112-122   VisualSimulatorImpl::IsFinished (void) const Link Here 
112
void
112
void
113
VisualSimulatorImpl::Run (void)
113
VisualSimulatorImpl::Run (void)
114
{
114
{
115
  if (!Py_IsInitialized ()) 
115
  if (!Py_IsInitialized ())
116
    {
116
    {
117
      const char *argv[] = { "python", NULL};
117
      #if PY_MAJOR_VERSION >= 3
118
      Py_Initialize ();
118
        const wchar_t *argv[] = { L"python", NULL};
119
      PySys_SetArgv (1, (char**) argv);
119
        Py_Initialize ();
120
        PySys_SetArgv (1, (wchar_t**) argv);
121
      #else
122
        const char *argv[] = { "python", NULL};
123
        Py_Initialize ();
124
        PySys_SetArgv (1, (char**) argv);
125
      #endif
120
      PyRun_SimpleString (
126
      PyRun_SimpleString (
121
                          "import visualizer\n"
127
                          "import visualizer\n"
122
                          "visualizer.start();\n"
128
                          "visualizer.start();\n"
(-)a/src/visualizer/visualizer/__init__.py (-1 / +1 lines)
 Lines 1-3    Link Here 
1
1
2
from core import start, register_plugin, set_bounds, add_initialization_hook
2
from .core import start, register_plugin, set_bounds, add_initialization_hook
3
3
(-)a/src/visualizer/visualizer/base.py (-5 / +4 lines)
 Lines 9-15   try: Link Here 
9
except:
9
except:
10
    ns_mesh_loaded = False
10
    ns_mesh_loaded = False
11
import ns.wimax
11
import ns.wimax
12
import ns.wimax
13
import ns.lte
12
import ns.lte
14
13
15
from gi.repository import GObject
14
from gi.repository import GObject
 Lines 131-145   def load_plugins(): Link Here 
131
            continue
130
            continue
132
        try:
131
        try:
133
            plugin_module = __import__(name)
132
            plugin_module = __import__(name)
134
        except ImportError, ex:
133
        except ImportError as ex:
135
            print >> sys.stderr, "Could not load plugin %r: %s" % (filename, str(ex))
134
            print("Could not load plugin %r: %s" % (filename, str(ex)), file=sys.stderr)
136
            continue
135
            continue
137
        try:
136
        try:
138
            plugin_func = plugin_module.register
137
            plugin_func = plugin_module.register
139
        except AttributeError:
138
        except AttributeError:
140
            print >> sys.stderr, "Plugin %r has no 'register' function" % name
139
            print("Plugin %r has no 'register' function" % name, file=sys.stderr)
141
        else:
140
        else:
142
            #print >> sys.stderr, "Plugin %r registered" % name
141
            #print("Plugin %r registered" % name, file=sys.stderr)
143
            register_plugin(plugin_func, name, plugin_module)
142
            register_plugin(plugin_func, name, plugin_module)
144
    sys.path = old_path
143
    sys.path = old_path
145
144
(-)a/src/visualizer/visualizer/core.py (-12 / +16 lines)
 Lines 31-36   import math Link Here 
31
import os
31
import os
32
import sys
32
import sys
33
33
34
if sys.version_info > (3,):
35
    long = int
36
34
try:
37
try:
35
    import gi
38
    import gi
36
    gi.require_version('GooCanvas', '2.0')
39
    gi.require_version('GooCanvas', '2.0')
 Lines 45-57   try: Link Here 
45
    from gi.repository import Pango
48
    from gi.repository import Pango
46
    from gi.repository import GooCanvas
49
    from gi.repository import GooCanvas
47
    import threading
50
    import threading
48
    import hud
51
    from . import hud
49
    #import time
52
    #import time
50
    try:
53
    try:
51
        import svgitem
54
        import svgitem
52
    except ImportError:
55
    except ImportError:
53
        svgitem = None
56
        svgitem = None
54
except ImportError as _import_error:
57
except ImportError as e:
58
    _import_error = e
55
    import dummy_threading as threading
59
    import dummy_threading as threading
56
else:
60
else:
57
    _import_error = None
61
    _import_error = None
 Lines 61-70   try: Link Here 
61
except ImportError:
65
except ImportError:
62
    ipython_view = None
66
    ipython_view = None
63
67
64
from base import InformationWindow, PyVizObject, Link, lookup_netdevice_traits, PIXELS_PER_METER
68
from .base import InformationWindow, PyVizObject, Link, lookup_netdevice_traits, PIXELS_PER_METER
65
from base import transform_distance_simulation_to_canvas, transform_point_simulation_to_canvas
69
from .base import transform_distance_simulation_to_canvas, transform_point_simulation_to_canvas
66
from base import transform_distance_canvas_to_simulation, transform_point_canvas_to_simulation
70
from .base import transform_distance_canvas_to_simulation, transform_point_canvas_to_simulation
67
from base import load_plugins, register_plugin, plugins
71
from .base import load_plugins, register_plugin, plugins
68
72
69
PI_OVER_2 = math.pi/2
73
PI_OVER_2 = math.pi/2
70
PI_TIMES_2 = math.pi*2
74
PI_TIMES_2 = math.pi*2
 Lines 773-779   class Visualizer(GObject.GObject): Link Here 
773
        assert isinstance(mode, ShowTransmissionsMode)
777
        assert isinstance(mode, ShowTransmissionsMode)
774
        self._show_transmissions_mode = mode
778
        self._show_transmissions_mode = mode
775
        if self._show_transmissions_mode == ShowTransmissionsMode.ALL:
779
        if self._show_transmissions_mode == ShowTransmissionsMode.ALL:
776
            self.simulation.set_nodes_of_interest(range(ns.network.NodeList.GetNNodes()))
780
            self.simulation.set_nodes_of_interest(list(range(ns.network.NodeList.GetNNodes())))
777
        elif self._show_transmissions_mode == ShowTransmissionsMode.NONE:
781
        elif self._show_transmissions_mode == ShowTransmissionsMode.NONE:
778
            self.simulation.set_nodes_of_interest([])
782
            self.simulation.set_nodes_of_interest([])
779
        elif self._show_transmissions_mode == ShowTransmissionsMode.SELECTED:
783
        elif self._show_transmissions_mode == ShowTransmissionsMode.SELECTED:
 Lines 854-860   class Visualizer(GObject.GObject): Link Here 
854
        settings_hbox.pack_start(vbox, False, False, 6)
858
        settings_hbox.pack_start(vbox, False, False, 6)
855
        self.node_size_adjustment = scale.get_adjustment()
859
        self.node_size_adjustment = scale.get_adjustment()
856
        def node_size_changed(adj):
860
        def node_size_changed(adj):
857
            for node in self.nodes.itervalues():
861
            for node in self.nodes.values():
858
                node.set_size(adj.get_value())
862
                node.set_size(adj.get_value())
859
        self.node_size_adjustment.connect("value-changed", node_size_changed)
863
        self.node_size_adjustment.connect("value-changed", node_size_changed)
860
        self.node_size_adjustment.set_lower(0.01)
864
        self.node_size_adjustment.set_lower(0.01)
 Lines 1237-1243   class Visualizer(GObject.GObject): Link Here 
1237
        self.emit("update-view")
1241
        self.emit("update-view")
1238
1242
1239
    def _update_node_positions(self):
1243
    def _update_node_positions(self):
1240
        for node in self.nodes.itervalues():
1244
        for node in self.nodes.values():
1241
            if node.has_mobility:
1245
            if node.has_mobility:
1242
                ns3_node = ns.network.NodeList.GetNode(node.node_index)
1246
                ns3_node = ns.network.NodeList.GetNode(node.node_index)
1243
                mobility = ns.mobility.MobilityModel.GetMobilityModel (ns3_node)
1247
                mobility = ns.mobility.MobilityModel.GetMobilityModel (ns3_node)
 Lines 1319-1325   class Visualizer(GObject.GObject): Link Here 
1319
1323
1320
        k = self.node_size_adjustment.get_value()/5
1324
        k = self.node_size_adjustment.get_value()/5
1321
1325
1322
        for (transmitter_id, receiver_id), (rx_bytes, rx_count) in transmissions_average.iteritems():
1326
        for (transmitter_id, receiver_id), (rx_bytes, rx_count) in transmissions_average.items():
1323
            transmitter = self.get_node(transmitter_id)
1327
            transmitter = self.get_node(transmitter_id)
1324
            receiver = self.get_node(receiver_id)
1328
            receiver = self.get_node(receiver_id)
1325
            try:
1329
            try:
 Lines 1405-1411   class Visualizer(GObject.GObject): Link Here 
1405
1409
1406
        k = self.node_size_adjustment.get_value()/5
1410
        k = self.node_size_adjustment.get_value()/5
1407
1411
1408
        for transmitter_id, (drop_bytes, drop_count) in drops_average.iteritems():
1412
        for transmitter_id, (drop_bytes, drop_count) in drops_average.items():
1409
            transmitter = self.get_node(transmitter_id)
1413
            transmitter = self.get_node(transmitter_id)
1410
            try:
1414
            try:
1411
                arrow, label = old_arrows.pop()
1415
                arrow, label = old_arrows.pop()
 Lines 1521-1527   class Visualizer(GObject.GObject): Link Here 
1521
        if not self.nodes:
1525
        if not self.nodes:
1522
            return
1526
            return
1523
        self._update_node_positions()
1527
        self._update_node_positions()
1524
        positions = [node.get_position() for node in self.nodes.itervalues()]
1528
        positions = [node.get_position() for node in self.nodes.values()]
1525
        min_x, min_y = min(x for (x,y) in positions), min(y for (x,y) in positions)
1529
        min_x, min_y = min(x for (x,y) in positions), min(y for (x,y) in positions)
1526
        max_x, max_y = max(x for (x,y) in positions), max(y for (x,y) in positions)
1530
        max_x, max_y = max(x for (x,y) in positions), max(y for (x,y) in positions)
1527
        min_x_px, min_y_px = self.canvas.convert_to_pixels(min_x, min_y)
1531
        min_x_px, min_y_px = self.canvas.convert_to_pixels(min_x, min_y)
(-)a/src/visualizer/visualizer/hud.py (-1 / +1 lines)
 Lines 1-5    Link Here 
1
import core
2
import math
1
import math
2
from . import core
3
from gi.repository import Pango
3
from gi.repository import Pango
4
from gi.repository import Gtk
4
from gi.repository import Gtk
5
from gi.repository import GooCanvas
5
from gi.repository import GooCanvas
(-)a/src/visualizer/visualizer/ipython_view.py (-2 / +2 lines)
 Lines 319-329   class IterableIPShell: Link Here 
319
    @return none
319
    @return none
320
    """
320
    """
321
    stat = 0
321
    stat = 0
322
    if verbose or debug: print header+cmd
322
    if verbose or debug: print(header+cmd)
323
    # flush stdout so we don't mangle python's buffering
323
    # flush stdout so we don't mangle python's buffering
324
    if not debug:
324
    if not debug:
325
      input, output = os.popen4(cmd)
325
      input, output = os.popen4(cmd)
326
      print output.read()
326
      print(output.read())
327
      output.close()
327
      output.close()
328
      input.close()
328
      input.close()
329
329
(-)a/src/visualizer/visualizer/plugins/olsr.py (-1 / +1 lines)
 Lines 120-126   def populate_node_menu(viz, node, menu): Link Here 
120
    ns3_node = ns.network.NodeList.GetNode(node.node_index)
120
    ns3_node = ns.network.NodeList.GetNode(node.node_index)
121
    olsr = ns3_node.GetObject(ns.olsr.olsr.RoutingProtocol.GetTypeId())
121
    olsr = ns3_node.GetObject(ns.olsr.olsr.RoutingProtocol.GetTypeId())
122
    if olsr is None:
122
    if olsr is None:
123
        print "No OLSR"
123
        print("No OLSR")
124
        return
124
        return
125
125
126
    menu_item = Gtk.MenuItem("Show OLSR Routing Table")
126
    menu_item = Gtk.MenuItem("Show OLSR Routing Table")
(-)a/src/visualizer/visualizer/plugins/wifi_intrastructure_link.py (-1 / +1 lines)
 Lines 131-137   class WifiLinkMonitor(object): Link Here 
131
        self.access_points = {}
131
        self.access_points = {}
132
        self.stations = []
132
        self.stations = []
133
133
134
        for node in viz.nodes.itervalues():
134
        for node in viz.nodes.values():
135
            ns3_node = ns.network.NodeList.GetNode(node.node_index)
135
            ns3_node = ns.network.NodeList.GetNode(node.node_index)
136
            for devI in range(ns3_node.GetNDevices()):
136
            for devI in range(ns3_node.GetNDevices()):
137
                dev = ns3_node.GetDevice(devI)
137
                dev = ns3_node.GetDevice(devI)
(-)a/src/visualizer/visualizer/svgitem.py (-3 / +2 lines)
 Lines 120-126   class SvgItem(GooCanvas.ItemSimple): Link Here 
120
            self.changed(True)
120
            self.changed(True)
121
121
122
        else:
122
        else:
123
            raise AttributeError, 'unknown property %s' % pspec.name
123
            raise AttributeError('unknown property %s' % pspec.name)
124
124
125
    def _size_changed(self):
125
    def _size_changed(self):
126
        """!
126
        """!
 Lines 172-178   class SvgItem(GooCanvas.ItemSimple): Link Here 
172
            return self.height
172
            return self.height
173
173
174
        else:
174
        else:
175
            raise AttributeError, 'unknown property %s' % pspec.name
175
            raise AttributeError('unknown property %s' % pspec.name)
176
176
177
    def do_simple_paint(self, cr, bounds):
177
    def do_simple_paint(self, cr, bounds):
178
        """!
178
        """!
179
- 

Return to bug 2734