[General]
tkenv-plugin-path = ../../../etc/plugins
debug-on-errors = true
record-eventlog = true

# physical environment parameters
*.physicalEnvironment.objectCacheType = ""

# network configurator parameters
*.configurator.addDefaultRoutes = false

# radio medium parameters
*.radioMedium.obstacleLossType = "DielectricObstacleLoss"

# wlan parameters
*.*.wlan[*].classifierType = "ExampleQoSClassifier"
*.*.wlan[*].mac.EDCA = true
*.*.wlan[*].mgmt.numChannels = 3
*.*.wlan[*].agent.default_ssid = ""
*.*.wlan[*].radio.transmitter.power = 1mW
*.accessPoint[0].wlan[*].mgmt.ssid = "ssid1"
*.accessPoint[1].wlan[*].mgmt.ssid = "ssid2"
*.accessPoint[2].wlan[*].mgmt.ssid = "ssid3"
*.accessPoint[0].wlan[*].radio.channelNumber = 0
*.accessPoint[1].wlan[*].radio.channelNumber = 1
*.accessPoint[2].wlan[*].radio.channelNumber = 2

# arp parameters
*.*.networkLayer.arpType = "GlobalARP"

# application parameters
*.server[*].numUdpApps = 1
*.server[*].udpApp[0].typename = "UDPBasicApp"
*.server[*].udpApp[0].destPort = 4000
*.server[0].udpApp[0].destAddresses = "car[0]"
*.server[1].udpApp[0].destAddresses = "car[1]"
*.server[*].udpApp[0].messageLength = 1000B
*.server[*].udpApp[0].sendInterval = exponential(1ms)
*.server[*].udpApp[0].packetName = "VideoStream"
*.server[0].udpApp[0].startTime = 25s
*.server[1].udpApp[0].startTime = 26.0005s
*.car[*].numUdpApps = 1
*.car[*].udpApp[0].typename = "UDPSink"
*.car[*].udpApp[0].localPort = 4000
*.pedestrian[*].numUdpApps = 1
*.pedestrian[*].udpApp[0].typename = "UDPBasicApp"
*.pedestrian[0].udpApp[0].destAddresses = "pedestrian[1]"
*.pedestrian[1].udpApp[0].destAddresses = "pedestrian[0]"
*.pedestrian[*].udpApp[0].destPort = 5000
*.pedestrian[*].udpApp[0].localPort = 5000
*.pedestrian[*].udpApp[0].messageLength = 100B
*.pedestrian[*].udpApp[0].sendInterval = uniform(90ms, 110ms)
*.pedestrian[*].udpApp[0].packetName = "VoiceStream"

[Config VisualizationTutorial01]
network = VisualizationTutorialA
description = Without adding a visualizer module

# no visualization added yet

[Config VisualizationTutorial02]
network = VisualizationTutorialB
description = Add default visualizer module

# use default visualization parameters

[Config VisualizationTutorial03]
network = VisualizationTutorialC
description = Add map

# coordinate system parameters
*.coordinateSystem.playgroundLongitude = -71.070421deg
*.coordinateSystem.playgroundLatitude = 42.357824deg
*.coordinateSystem.playgroundAltitude = 0.1m
*.coordinateSystem.playgroundHeading = 68.3deg

# scene visualizer parameters
*.visualizer.osgVisualizer.sceneVisualizerType = "SceneOsgEarthVisualizer"
*.visualizer.osgVisualizer.sceneVisualizer.mapFile = "boston.earth"
*.visualizer.osgVisualizer.sceneVisualizer.playgroundShading = false
*.visualizer.osgVisualizer.sceneVisualizer.playgroundColor = "#000000"
*.visualizer.osgVisualizer.sceneVisualizer.playgroundOpacity = 0.1
*.visualizer.osgVisualizer.sceneVisualizer.axisLength = 100m

[Config VisualizationTutorial04]
extends = VisualizationTutorial03
description = Add obstacles

# physical environment parameters
*.physicalEnvironment.coordinateSystemModule = "coordinateSystem"
*.physicalEnvironment.spaceMinX = 0m
*.physicalEnvironment.spaceMinY = 0m
*.physicalEnvironment.spaceMinZ = 0m
*.physicalEnvironment.spaceMaxX = 1000m
*.physicalEnvironment.spaceMaxY = 1000m
*.physicalEnvironment.spaceMaxZ = 100m
*.physicalEnvironment.objectCacheType = "" # TODO: delete
*.physicalEnvironment.config = xmldoc("obstacle.xml")

[Config VisualizationTutorial05]
extends = VisualizationTutorial04
description = Add cars

# network node visualizer parameters
*.car[*].osgModel = "car.osgb.20.scale"
*.car[*].osgModelColor = "#CB4154"

[Config VisualizationTutorial06]
extends = VisualizationTutorial05
description = Add movement trail

# mobility parameters
*.router[*].mobilityType = "StationaryMobility"
*.router[*].mobility.coordinateSystemModule = "coordinateSystem"
*.router[0].mobility.initialLatitude = 42.35433deg
*.router[0].mobility.initialLongitude = -71.06551deg
*.router[1].mobility.initialLatitude = 42.35586deg
*.router[1].mobility.initialLongitude = -71.06560deg
*.router[2].mobility.initialLatitude = 42.35749deg
*.router[2].mobility.initialLongitude = -71.06350deg
*.server[*].mobilityType = "StationaryMobility"
*.server[*].mobility.coordinateSystemModule = "coordinateSystem"
*.server[0].mobility.initialLatitude = 42.35530deg
*.server[0].mobility.initialLongitude = -71.06355deg
*.server[1].mobility.initialLatitude = 42.35619deg
*.server[1].mobility.initialLongitude = -71.06310deg
*.accessPoint[*].mobilityType = "StationaryMobility"
*.accessPoint[*].mobility.coordinateSystemModule = "coordinateSystem"
*.accessPoint[0].mobility.initialLatitude = 42.35374deg
*.accessPoint[0].mobility.initialLongitude = -71.06608deg
*.accessPoint[1].mobility.initialLatitude = 42.35547deg
*.accessPoint[1].mobility.initialLongitude = -71.06642deg
*.accessPoint[2].mobility.initialLatitude = 42.35925deg
*.accessPoint[2].mobility.initialLongitude = -71.06386deg
*.car[*].mobilityType = "VehicleMobility"
*.car[*].mobility.coordinateSystemModule = "coordinateSystem"
*.car[*].mobility.updateInterval = 100ms
*.car[0].mobility.waypointFile = "waypoint1.txt"
*.car[1].mobility.waypointFile = "waypoint2.txt"
*.car[*].mobility.waypointProximity = 4m
*.car[*].mobility.speed = 10mps
*.pedestrian[*].mobilityType = "MassMobility"
*.pedestrian[0].mobility.initialX = 500m
*.pedestrian[0].mobility.initialY = 50m
*.pedestrian[1].mobility.initialX = 300m
*.pedestrian[1].mobility.initialY = 100m
*.pedestrian[*].mobility.initialZ = 0.5m
*.pedestrian[*].mobility.constraintAreaMinX = 300m
*.pedestrian[*].mobility.constraintAreaMinY = 50m
*.pedestrian[*].mobility.constraintAreaMaxY = 150m
*.pedestrian[*].mobility.changeInterval = 0.1s
*.pedestrian[*].mobility.changeAngleBy = uniform(-30deg, 30deg)
*.pedestrian[*].mobility.speed = 10mps
*.*.mobility.constraintAreaMinX = 0m
*.*.mobility.constraintAreaMinY = 0m
*.*.mobility.constraintAreaMinZ = 0m
*.*.mobility.constraintAreaMaxX = 1000m
*.*.mobility.constraintAreaMaxY = 1000m
*.*.mobility.constraintAreaMaxZ = 1m
*.*.mobility.initFromDisplayString = false
*.*.mobility.initialAltitude = 0.5m

# mobility visualizer parameters
*.visualizer.*.mobilityVisualizer.displayMovementTrail = true

[Config VisualizationTutorial07]
extends = VisualizationTutorial06
description = Add ranges

# medium visualizer parameters
*.visualizer.*.mediumVisualizer.displayCommunicationRanges = true
*.visualizer.*.mediumVisualizer.displayInterferenceRanges = true

[Config VisualizationTutorial08]
extends = VisualizationTutorial07
description = Add transmissions/receptions

# medium visualizer parameters
*.visualizer.*.mediumVisualizer.displayTransmissions = true
*.visualizer.*.mediumVisualizer.displayReceptions = true
*.visualizer.*.mediumVisualizer.transmissionImage = "transmission.png"
*.visualizer.*.mediumVisualizer.receptionImage = "reception.png"
*.visualizer.osgVisualizer.mediumVisualizer.signalShape = "both"

[Config VisualizationTutorial09]
extends = VisualizationTutorial08
description = Add links

# link visualizer parameters
*.visualizer.*.dataLinkVisualizer.packetNameFilter = "*Stream*"

[Config VisualizationTutorial10]
extends = VisualizationTutorial09
description = Add routes

# route visualizer parameters
*.visualizer.*.networkRouteVisualizer.packetNameFilter = "*Stream*"

[Config VisualizationTutorial11]
extends = VisualizationTutorial10
description = Add statistic

# statistic visualizer parameters
*.visualizer.*.statisticVisualizer.signalName = "rcvdPk"
*.visualizer.*.statisticVisualizer.statisticName = "throughput"
*.visualizer.*.statisticVisualizer.prefix = "rcvd"
*.visualizer.*.statisticVisualizer.unit = "Mbps kbps"
*.visualizer.*.statisticVisualizer.color = "yellow"
*.visualizer.*.statisticVisualizer.sourcePathFilter = "**.udpApp[0]"
*.visualizer.*.statisticVisualizer.minValue = 0
*.visualizer.*.statisticVisualizer.maxValue = 4E+6

[Config VisualizationTutorial12]
extends = VisualizationTutorial11
description = Add signals

# medium visualizer parameters
*.visualizer.*.mediumVisualizer.displaySignals = true
*.visualizer.*.mediumVisualizer.signalPropagationUpdateInterval = 25ns

[Config VisualizationTutorial13]
extends = VisualizationTutorial12
description = Add obstacle loss

# medium visualizer parameters
*.visualizer.*.obstacleLossVisualizer.displayIntersectionTrail = true
*.visualizer.*.obstacleLossVisualizer.displayFaceNormalVectorTrail = true
