~comnets/openwns-systemtest-wimac/systemtest-wimac--main--1.0

« back to all changes in this revision

Viewing changes to configBeamforming/configSDMA.py

  • Committer: Benedikt Wolz
  • Date: 2010-06-04 09:35:28 UTC
  • mto: This revision was merged to the branch mainline in revision 65.
  • Revision ID: bmw@comnets.rwth-aachen.de-20100604093528-l5oh7kcb7lv72opw
add beamforming test

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import openwns
 
2
from openwns.pyconfig import Frozen
 
3
import openwns.evaluation.default
 
4
 
 
5
import scenarios
 
6
import scenarios.builders
 
7
import scenarios.placer
 
8
import scenarios.antenna
 
9
 
 
10
import ip
 
11
import ip.BackboneHelpers
 
12
 
 
13
import wimac.support.nodecreators
 
14
import wimac.support.helper
 
15
import wimac.evaluation.default
 
16
import wimac.support.PostProcessor as PostProcessor
 
17
 
 
18
from wimac.support.Parameters16m import ParametersOFDMA, ParametersMAC
 
19
 
 
20
import random
 
21
random.seed(7)
 
22
 
 
23
# Global station id generator
 
24
def stationID():
 
25
    id = 1
 
26
    while (True):
 
27
        yield id
 
28
        id += 1
 
29
        
 
30
stationIDs = stationID()
 
31
 
 
32
associations = {}
 
33
 
 
34
####################################################
 
35
###  Distinguished Simulation Settings             #
 
36
####################################################
 
37
class Config(Frozen):
 
38
    # Set basic WiMAX Parameters
 
39
    parametersPhy         = ParametersOFDMA(_bandwidth = 5)
 
40
    parametersMAC         = ParametersMAC
 
41
    
 
42
    parametersPhy.slotDuration = 6 *  parametersPhy.symbolDuration
 
43
    
 
44
    # 3 * 6 = 18 symbols UD and 18 DL, total of 36 symbols. Other 47 - 36 = 11 symbols
 
45
    # are for PYH, control, and management traffic
 
46
    parametersPhy.maximalBeams = 4
 
47
    parametersPhy.beamforming = True
 
48
    numberOfTimeSlots = 3 
 
49
 
 
50
    packetSize = 2400.0 
 
51
    trafficUL = 5E5 # bit/s per station
 
52
    trafficDL = 5E5 # bit/s per station
 
53
    
 
54
    noIPHeader = True #Set to true to set IP header to 0
 
55
    probeWindowSize = 0.01 # Probe per frame
 
56
    scheduler = "RoundRobin" # "PropFair"
 
57
 
 
58
# General Setup
 
59
WNS = openwns.Simulator(simulationModel = openwns.node.NodeSimulationModel())
 
60
openwns.setSimulator(WNS)
 
61
WNS.maxSimTime = 0.07999 # seconds
 
62
WNS.masterLogger.backtrace.enabled = False
 
63
WNS.masterLogger.enabled = True
 
64
WNS.outputStrategy = openwns.simulator.OutputStrategy.DELETE
 
65
WNS.statusWriteInterval = 30 # in seconds
 
66
WNS.probesWriteInterval = 300 # in seconds
 
67
        
 
68
# Pass WiMAX Phy parameters to wimac::parameter::PHY singleton
 
69
WNS.modules.wimac.parametersPHY = Config.parametersPhy
 
70
                
 
71
WNS.modules.rise.debug.antennas = True                
 
72
                
 
73
# Create and place the nodes:
 
74
# One BS (25m omnidirectional antenna height) with two nodes, one near, one far
 
75
 
 
76
bsPlacer = scenarios.placer.HexagonalPlacer(numberOfCircles = 0, interSiteDistance = 1000.0, rotate=0.0)
 
77
uePlacer = scenarios.placer.PositionListPlacer(numberOfNodes = 3, positionsList = [
 
78
                                                openwns.geometry.position.Position(x = 0.0, y = 10.0), 
 
79
                                                openwns.geometry.position.Position(x = 10.0, y = 0.0),
 
80
                                                openwns.geometry.position.Position(x = 0.0, y = 500.0)], 
 
81
                                                rotate = 0.0)
 
82
bsAntenna = scenarios.antenna.IsotropicAntennaCreator([0.0, 0.0, 1.5])
 
83
bsCreator = wimac.support.nodecreators.WiMAXBSCreator(stationIDs, Config)
 
84
ueCreator = wimac.support.nodecreators.WiMAXUECreator(stationIDs, Config)
 
85
scenarios.builders.CreatorPlacerBuilder(bsCreator, bsPlacer, bsAntenna, ueCreator, uePlacer)
 
86
 
 
87
wimac.support.helper.setupPhy(WNS, Config, "LoS_Test")
 
88
 
 
89
# Set the scheduler
 
90
wimac.support.helper.setupScheduler(WNS, Config.scheduler)
 
91
 
 
92
# Set IP Header to 0 (else it is 20 byte)
 
93
if Config.noIPHeader:
 
94
    wimac.support.helper.disableIPHeader(WNS)
 
95
 
 
96
# Always create uplink traffic, if traffic UL is 0 we sent exacly 
 
97
# one packet for initialization
 
98
wimac.support.helper.createULPoissonTraffic(WNS, Config.trafficUL, Config.packetSize)
 
99
 
 
100
# Only create downlink traffic if we have any
 
101
if Config.trafficDL > 0.0:
 
102
    wimac.support.helper.createDLPoissonTraffic(WNS, Config.trafficDL, Config.packetSize)
 
103
 
 
104
# Configure the window probes
 
105
wimac.support.helper.setL2ProbeWindowSize(WNS, Config.probeWindowSize)
 
106
 
 
107
# DHCP, ARP, DNS for IP
 
108
ip.BackboneHelpers.createIPInfrastructure(WNS, "WIMAXRAN")
 
109
 
 
110
utNodes = WNS.simulationModel.getNodesByProperty("Type", "UE")
 
111
bsNodes = WNS.simulationModel.getNodesByProperty("Type", "BS")
 
112
 
 
113
# Probe configuration
 
114
loggingStationIDs = []
 
115
 
 
116
for node in utNodes + bsNodes:    
 
117
    loggingStationIDs.append(node.dll.stationID)
 
118
 
 
119
wimac.evaluation.default.installDebugEvaluation(WNS, loggingStationIDs, "Moments")
 
120
 
 
121
openwns.evaluation.default.installEvaluation(WNS)