Skip to content

Configuration

FLoRaSat scenarios are configured through two complementary file types:

  • .ned files — define the network structure (which modules exist and how they connect)
  • .ini files — set parameter values for each module

In practice, you mostly edit .ini files. The .ned file for each scenario (package.ned) is usually shared across runs.

.ini File Structure

A top-level .ini file imports sub-files and defines one or more named configurations:

[General]
network = Florasat.Custom_default.Custom
rng-class = "cMersenneTwister"
repeat = 1

# Import shared settings
include configurations/Scenarios.ini
include stations/WorldWide-20.ini

Named configurations use extends to compose from abstract base configurations:

[Config MyRun]
extends = TenDevices, BlindKineis, ServiceEveryHour, UHF, ConstellationIridium

Abstract configurations (marked abstract = true) cannot be run directly but serve as reusable building blocks.

OMNeT++ Parameter Notation

Parameters are addressed using module path wildcards:

Pattern Meaning
*.terminal[*].dlk.mac.Ntx = 4 Set Ntx on all terminals' MAC layer
*.terminal[0].mob.centerLatitude = 43.6 Set latitude of terminal 0 only
**.Ntx = 4 Match Ntx anywhere in the hierarchy
${Ntx = 2, 4, 6, 8} Parameter sweep — runs a separate simulation for each value

Terminal Parameters

Positioning (*.terminal[*].mob.*)

Parameter Description Example
centerLatitude Latitude of the center of the deployment zone 43.6 (Toulouse)
centerLongitude Longitude of the center 1.433333
deploymentRadius Radius (degrees) for random placement around the center; 0.0 places all terminals at the exact center 0.0

Packet Generation (*.terminal[*].app.*)

Parameter Description Example
timeToFirstPacket Delay before the first packet is generated 0s
timeToNextPacket Interval between successive packets 3600s

MAC Layer — Blind Mode (*.terminal[*].dlk.mac.*)

Parameter Description Example
ttwDuration Total transmission time window per packet 1800s
Ntx Number of transmission slots within the window 4
numConcurrentTx Number of packets handled simultaneously 1
ttxStart_min Minimum random delay before transmitting in a slot 0s
ttxStart_max Maximum random delay before transmitting in a slot 30s
ttxIdle_min Minimum idle time between transmissions within a slot 0s
ttxIdle_max Maximum idle time between transmissions within a slot 0s

The slot duration is ttwDuration / Ntx. The terminal transmits once per slot at a uniformly random offset within [ttxStart_min, ttxStart_max].

MAC Layer — Satellite Detection Mode (*.terminal[*].dlk.mac.*)

Parameter Description Example
enableSatDetect Enable satellite detection before transmitting true
satelliteDetectionProbability Probability of detecting a satellite that is actually in view 0.9
minimumElevation Minimum elevation angle (degrees) for a satellite to be considered detectable 5.0
Ndetect Number of detection batches per slot 1
NsdSync Detection periods per batch 1
detectInitialListen Initial listening duration (seconds) 0.330
neededLocalisation true = spread transmissions over successful detection windows; false = burst on first detection true
satDetectMaxSuccessfulWindows Maximum number of slots to transmit in when in localisation mode 2
enableSatDetectFallback Automatically switch back to blind mode when detection success rate falls below a threshold true

Radio Physical Layer (*.terminal[*].phy.radio.*)

Parameter Description Example
transmitter.power Uplink transmit power 300mW
transmitter.centerFrequency Carrier frequency 402MHz
transmitter.bandwidth Channel bandwidth 100kHz
receiver.centerFrequency Receive center frequency 402MHz
receiver.bandwidth Receive bandwidth 100kHz

Satellite Parameters

Orbital Parameters (*.satellite[*].NoradModule.*)

These are set per-satellite and define each satellite's initial orbital state.

Parameter Description Example
raan Right Ascension of Ascending Node (degrees) 0.0
meanAnomaly Mean anomaly at epoch (degrees) 0.0
inclination Orbital inclination (degrees) 86.4
altitude Orbital altitude (km) 781
eccentricity Orbital eccentricity 0.0
epochYear Epoch year (2-digit) 20
epochDay Epoch day of year (decimal) 1.5

Satellite Radio — DSL (*.satellite[*].phyDSL.radio.*)

Parameter Description Example
receiver.centerFrequency Center frequency to listen on 402MHz
receiver.bandwidth Receive bandwidth 100kHz

Radio Medium (**.radioMedium.*)

Parameter Description Example
typename Medium type "CustomMedium"
minimumElevationTermSat Minimum elevation for terminal-satellite links 5.0
useFieldMask Enable the terminal-side field mask (local horizon obstruction) on terminal-satellite links false
fieldMaskFile CSV describing the field mask (Azimuth,Elevation,Attenuation); only read when useFieldMask is true "devices/field_mask/wall_north.csv"
backgroundNoise.power Background noise power 0dBm

Terminal Field Mask

The field mask models a local horizon obstruction around the terminals (a wall, a valley, terrain). For every terminal-satellite link the medium computes the direction to the satellite as an (azimuth, elevation) pair and looks up the mask:

  • A satellite whose direction falls in a fully blocked region is treated as not visible, and the link is suppressed (no reception attempted).
  • A satellite in a partially obstructed region keeps the link, but the obstruction attenuation is subtracted from the received power in the link budget (Analog Model).

The mask is a CSV with a header row and three columns:

Azimuth, Elevation, Attenuation
2.5, 90.0, -1.0
5.5, 90.0, -1.0
7.5, 90.0, -1.0
Column Meaning
Azimuth Bearing in degrees, [0, 360), clockwise from North
Elevation Elevation threshold in degrees. Each azimuth profile applies below its threshold; values are interpolated linearly in elevation between samples, and across neighbouring azimuth profiles (with wrap-around at 360°). Above the highest threshold of a profile, no obstruction is applied.
Attenuation Obstruction loss in dB. The special value -1.0 is the blocked sentinel (link fully obstructed and dropped). Any other positive value is applied as partial attenuation to the received power.

Configure it in the .ini:

**.radioMedium.useFieldMask = true
**.radioMedium.fieldMaskFile = "devices/field_mask/wall_north.csv"

Analog Model (**.radioMedium.analogModel.*)

Parameter Description Example
pathLossExponent Path loss exponent (2 = free space) 2.0
rxAntennaGain_a, _b, _c Coefficients of the receive antenna gain polynomial in elevation angle 0, 0, 1
txAntennaPatternAdjustement_dB Fixed gain adjustment for the transmit antenna pattern 0.0
obstructionLossdB Additional obstruction loss 0dB
enableDoppler Enable Doppler shift modelling false

Path Loss Model (**.radioMedium.pathLoss.*)

Parameter Description Example
typename Path loss module "CustomPHYPathLoss"
polarizationLoss Polarization mismatch loss 3dB
fadingSigma Log-normal fading standard deviation 4dB
receiverSystemLoss Receiver chain implementation loss 4dB
decodingImplementation Demodulation/decoding implementation loss 1.5dB
noiseFigureEnhancement Noise figure penalty 3dB

Topology Control

Parameter Description Example
*.topologyControl.updateInterval How often satellite positions and links are recomputed 1s
*.topologyControl.walkerType Constellation type: "STAR" or "DELTA" "STAR"
**.minimumElevation Minimum elevation for satellite-to-ground-station links 5.0
**.intraPlaneIslDisabled Disable intra-plane ISLs false
**.interPlaneIslDisabled Disable inter-plane ISLs false
*.**.numGroundLinks Maximum number of simultaneous ground links per satellite 40

Ground Station Parameters

Parameter Description Example
*.station[*].mobility.latitude Station latitude (degrees) 49.235
*.station[*].mobility.longitude Station longitude (degrees) 6.982
*.station[*].mobility.altitude Station altitude above sea level, in meters 199
*.station[*].fieldMaskFile Per-station field mask CSV (Azimuth,Elevation,Attenuation). Empty string disables the mask "stations/field_mask/valley5deg.csv"

Station Field Mask

Each ground station can have its own field mask describing the local horizon obstruction (surrounding terrain or buildings). It uses the same CSV format as the Terminal Field Mask. When a satellite's (azimuth, elevation) as seen from the station falls in a blocked region (attenuation -1), no station-satellite feeder link is created during topology updates.

*.station[0].fieldMaskFile = "stations/field_mask/valley5deg.csv"
*.station[0].mobility.altitude = 199   # meters above sea level

Note

The station field mask acts as a binary visibility filter on feeder links — the -1 blocked sentinel suppresses the link. (Partial dB attenuation of the feeder-link budget is applied on the terminal-satellite side only.) Station altitude is given in meters and is used both for the elevation/azimuth geometry and the slant-range distance.


Simulation Control

Parameter Description Example
sim-time-limit Total simulated time 86400s
repeat Number of independent replications 10
seed-0-mt Random seed for the first RNG stream ${runnumber}
simtime-resolution Simulation time precision (negative = sub-second) -11 (picoseconds)

Parameter Sweeps

Use OMNeT++'s ${} syntax to iterate over values:

[Config Sweep]
# Run 5 × 3 = 15 simulations
*.terminal[*].dlk.mac.Ntx = ${Ntx = 2, 4, 6, 8, 10}
*.terminal[*].mob.centerLatitude = ${lat = 30.0, 50.0, 70.0}

Use ! to pair values instead of taking the full product:

# Run 5 simulations, one per pair
*.terminal[*].dlk.mac.Ntx = ${Ntx = 2, 4, 6, 8, 10 ! lat}
*.terminal[*].mob.centerLatitude = ${lat = 30.0, 40.0, 50.0, 60.0, 70.0}

See Parameters Reference for the complete parameter list.