summaryrefslogtreecommitdiff
path: root/tests/mobility_wlan0_latency_1s1r/simulator.py
blob: 92668f767ee1ab8eced07f06e5add6bcda8b8f87 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/env python

# Load ESDS
import esds
import numpy as np

########## Scenario ##########
# Notations:
#   - Remaining communication duration (last communication ends minus current simulated time) = C
#   - Last communication duration (previous row) = U
#   - Last remaining data size (previous row) = D
#   - Current remaining data (current row) = R
#   - Initial data size (first row) = I
#   - Bandwidth = BW
#   - Latency = L
# |-------------------+------------+----------------+----------------------+---------------------------+--------------------------|
# | Simulated time(s) | Latency(s) | Bandwidth(bps) | Remaining data (bit) | Communication duration(s) | Communication ends at(s) |
# |-------------------+------------+----------------+----------------------+---------------------------+--------------------------|
# |                 0 |          0 |              8 | 8                    | 1                         |                        1 |
# |               0.5 |        0.5 |              8 | C/U*D = 4            | R/I * L + R/BW = 0.75     |                     1.25 |
# |                 1 |          1 |              8 | C/U*D = 1.33         | R/I * L + R/BW = 0.33     |                     1.33 |
# |              1.33 |          1 |              8 |                      |                           |                          |
# |-------------------+------------+----------------+----------------------+---------------------------+--------------------------|
##############################

B=np.full((2,2),8)
L=np.full((2,2),0)
s=esds.Simulator({"wlan0":{"bandwidth":B, "latency":L, "is_wired":False}, "eth0":{"bandwidth":B, "latency":L, "is_wired":True}})

s.create_node("sender")
s.create_node("receiver")

def callback(simulator):
    simulator.log("Network update!")
    new_lat_wlan0=simulator.netmat["wlan0"]["latency"]+1/2
    new_lat_eth0=simulator.netmat["eth0"]["latency"]+1/2
    simulator.update_network({"wlan0":{"bandwidth":B, "latency":new_lat_wlan0, "is_wired":False},"eth0":{"bandwidth":B, "latency":new_lat_eth0, "is_wired":True}})

    
s.run(breakpoints_every=1/2,breakpoint_callback=callback)