From f4f1d975043223b6a5fb512946f6d7c0e3ee791f Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Sun, 11 Sep 2022 13:45:06 +0200 Subject: [PATCH] Update platform definition --- esds/helpers/platform.py | 3 +++ esds/simulator.py | 4 ++-- example/platform.yaml | 30 +++++++++++++++++++++++++++++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/esds/helpers/platform.py b/esds/helpers/platform.py index e2f780d..341baed 100644 --- a/esds/helpers/platform.py +++ b/esds/helpers/platform.py @@ -51,6 +51,7 @@ class YAMLPlatformFile: "breakpoints_file": None, "breakpoints_callback": None, "debug": False, + "debug_file": "./esds.debug", "interferences": True, "node_count": 0, "implementations": [], @@ -188,6 +189,8 @@ class YAMLPlatformFile: if type(general["debug"]) != bool: self.parsing_error("debug should be on or off") self.default["debug"]=general["debug"] + if "debug_file" in general: + self.default["debug_file"]=general["debug"] if "interferences" in general: if type(general["interferences"]) != bool: self.parsing_error("interferences should be on or off") diff --git a/esds/simulator.py b/esds/simulator.py index adb2011..2e69884 100644 --- a/esds/simulator.py +++ b/esds/simulator.py @@ -26,7 +26,7 @@ class Simulator: be handle before any other one. That way after a wait, nodes a ready perform receivet() with timeout=0. """ - def __init__(self,netmat): + def __init__(self,netmat,debug_file_path="./esds.debug"): """ Format of netmat: { "interface": {"bandwidth": numpy_matrix_2D, "latency": numpy_matrix_2D, "is_wired":bool}} For wireless interfaces the diagonals of the bandwidth and latency matrices are very important. @@ -45,7 +45,7 @@ class Simulator: self.events_dirty=True # For optimization reasons self.startat=-1 self.time=0 - self.debug_file_path="./esds.debug" + self.debug_file_path=debug_file_path self.precision=".3f" self.interferences=True self.wait_end_nodes=list() # Keep track of nodes that wait for the end of the simulation diff --git a/example/platform.yaml b/example/platform.yaml index 0e1c820..45c6685 100644 --- a/example/platform.yaml +++ b/example/platform.yaml @@ -1,24 +1,52 @@ +##### General Section ##### general: + # List of timestamps where the simulator will break + # and call the callback function (cf breakpoints_callback entry) breakpoints: [] + # Same as breakpoints but simulator will break every x second(s) breakpoints_every: 0 + # Define the callback to call when the simulator reach a breakpoint breakpoints_callback: file: "platform_test.py" callback: "callback" + # Turn on/off the debugging of esds debug: off + # Debug output file (default is ./esds.debug) + debug_file: "./esds.debug" + # Should esds take into account interferences interferences: on +##### Nodes Section ##### nodes: + # Number of nodes to simulate count: 5 + # List of files used has implementation for each node + # Example: + # - 0,1,2 sender.py + # - 3-4 receiver.py + # Note that @ will be replaced by the last node id ex: + # 0-@ receiver.py is equivalent to 0-4 receiver.py implementations: - all sender.py +##### Interfaces Section ##### interfaces: + # Each entry for each node interfaces wlan0: + # Interface type (wired/wireless) type: "wireless" + # List of links between nodes in this interface + # Syntax infos: + # 1MBps = 1 megaBYTE per seconds + # 1Mbps = 1 megabit per seconds + # Each entry has the following format: links: - - 0 1Bps 10s 0 + - 0 1Bps 10s 0 + # List of transmission performance for each nodes (only for wireless interfaces) + # Each entry has the following format: txperfs: - 0-4 1Bps 10s + # Example of a wired interface eth0: type: "wired" links: