RadioPlan

From Maria GDK Wiki
Revision as of 11:15, 6 March 2026 by Asp (talk | contribs) (Describe the current domain model better)
Jump to navigation Jump to search

General

RadioPlan is the module for radioplanning. Radioplanning involves to define the radio equipment, optimize positions and parameters to ensure succesful radio communication. The Radioplan module offers a set of tools to achieve this:

  • Radio and RadioNet coverage predictions
  • RadioNet connectivity predictions
  • Equipment templates
  • Antenna models
  • Propagation models for VHF, UHF, SHF

Functionality is controlled via the interface IMariaRadioPlanLayer

public interface IMariaRadioPlanLayer : IMariaLayer

Data model

RadioPlan Datamodel

Radio

The radio is a general purpose radio. It can have different properties like frequency and technology.


Radio is attached to a Site and a RadioNet

Property Type Description
Id Guid Unique identifier for the radio.
Name string Name of the radio.
RadioSystem RadioSystem Identifies the radio system or waveform standard used by the device.
TxPower SignalPower The transmitter output power of the radio.
Loss Decibel Total signal loss between the radio and the antenna system.

This includes cable loss, connector loss, filters, and other inline components.

RxSensitivity SignalPower The receiver sensitivity threshold.

Represents the minimum signal strength the receiver can reliably detect while maintaining required performance metrics (e.g., BER or SINR). Lower (more negative) values indicate a more sensitive receiver.

Antenna Antenna? The antenna connected to the radio. Will not be able to calculate coverage if no antenna is assigned to the radio.
Frequency Frequency The operating frequency or frequency band of the radio.
Status Status The current operational status of the radio.
Site Site The site or physical location where the radio is installed or registered.
RadioNet RadioNet? The radio network to which this radio belongs.

Site

The site holds the position for one or more radios.

Property Type Description
Id Guid Unique identifier for the site.
Name string Name of the site.
Location GeoPos The geographical position of the site.
Radios ImmutableArray<Radio> The radios deployed at this site.

RadioNet

The radio net holds a group of radios of same technology

Property Type Description
Id Guid Unique identifier for the radio net.
Name string Name of the radio net.
NetworkType NetworkType Defines the type of network the radios operate within.
RadioSystem RadioSystem Identifies the radio system used for this network. Available radio systems is restricted by the network type.
TerminalProperties TerminalProperties? Terminal‑specific configuration for radios that are part of this network.
CoverageCalculationSettings CoverageCalculationSettings? Configuration settings used when performing coverage calculations for this network.

Overrides application settings when this is set.

MasterRadio Radio? The identifier of the designated master radio for this network.

The master radio typically provides synchronization, control, or timing functions depending on the network type

Radios ImmutableArray<Radio> The collection of radios participating in this network.
Frequencies ImmutableArray<Frequency> The set of frequencies allocated to this network.

Radios in the network can only use one of the allocated frequencies.

Antenna

A single antenna can be applied to the cell, with properties like

Property Type Description
Id Guid Unique identifier for the antenna.
AntennaTypeName string The name or model identifier of the antenna type.
Height double The antenna height measured in meters above ground level (AGL).

This defines the elevation of the antenna relative to the local terrain surface and is a key parameter in propagation and coverage calculations.

Direction Azimuth The azimuth direction the antenna is oriented toward, expressed as a bearing in degrees (0–360).

Defines the horizontal pointing direction of directional antennas.

ElectricalTilt Tilt The electrical downtilt of the antenna, defined in degrees.
MechanicalTilt Tilt The mechanical downtilt of the antenna, defined in degrees.
PositionOffsetDirection Azimuth The horizontal direction (bearing in degrees) of the antenna’s position offset relative to the owning radio’s site location.
PositionOffsetDistance double he horizontal distance (in meters) of the antenna’s position offset relative to the owning radio’s site location.

TerminalProperties

Terminal‑specific configuration for radios that are part of this network.

Property Type Description
Id Guid Unique identifier for the terminal properties.
TxPower SignalPower The transmitter output power of the terminal.
RxSensitivity SignalPower The receiver sensitivity of the terminal.
AntennaGain Decibel The gain of the terminal’s antenna.

AntennaType

The list of available antenna types is available from the Antenna Service which are handled by the AntennaCache:

var antennaTypes = await RadioPlanLayer.AntennaCache.GetAsync();

From the AntennaType we get the string AntennaTypeName which is set on the Antenna object. Antenna cache can return antenna types valid for a specific radio frequency.

Task<IEnumerable<AntennaType>> GetAntennaTypeForFrequencyAsync(Frequency frequency);

Data model store

Site store

Sites are stored IRadioPlanSiteStore IMariaRadioPlanLayer.RadioStore

Save a new Site:

 Site = new Site(Guid.NewGuid(), Name, Location);
 _radioPlanLayer.SiteStore.AddOrUpdate(Site);

Get all sites:

var sites = _radioPlanLayer.SiteStore.Get();

Get a speficic site:

var site = _radioPlanLayer.SiteStore.Get(siteId);

Remove a site from store:

RadioPlanLayer.SiteStore.Remove(site);

Radio store

Radios are stored to IRadioPlanRadioStore IMariaRadioPlanLayer.RadioStore

Similar to SiteStore, this interface uses AddOrUpdate, Get and Remove.

Radio net store

A radio net is a collection of radios connected.

Similar to SiteStore, this interface uses AddOrUpdate, Get and Remove.

Situation

The collections of site, radios and radio nets can be saved to a situation file.

Situation data can be stored in to persistent storage system with help of IMariaRadioPlanLayer.Serialize

Example saving to a file:

byte[] situationBytes = _radioPlanLayer.Serialize(_parent.DrawObjectCommonFactory);
File.WriteAllBytesAsync(filePath, situationBytes);

Situation data can be restored from persistent storage system with help of IMariaRadioPlanLayer.DeSerialize Example reading from a file:

byte[] situationBytes =  await System.IO.File.ReadAllBytesAsync(filePath);
_radioPlanLayer.DeSerialize(situationBytes, _parent.DrawObjectCommonFactory);


comment:

Coverage predictions

Calculate coverage

Coverage calculations are controlled via the interce IRadioCoverage in IMariaRadioPlanLayer.RadioCoverage

To create a coverage file, we need to define some parameters, the most important is the selection of propagation model.

The list of propagation models can be found like this:

_propagationModels = new ReadOnlyCollection<string>(_radioPlanLayer.RadioCoverage.RadioPropagationModelRepository.PropagationModels.Select(m => m.Name).ToList());

Properties for the Coverage calculation is stored in

record CoverageProperties(int Resolution, int Size, AreaShape CalculationAreaShape, string PropagationModel, RxHeight RxHeight);

Coverage calculation is started with

var jobIdString = await _radioPlanLayer.RadioCoverage.StartCoverageCalculationForRadio(radio, coverageProperties);

If successfull, jobIdString returns a Guid as string for the job. Else the text string return error message. Progress can be checked with RequestCalculationJobStatus.

CalculationJobStatus status = await _radioPlanLayer.RadioCoverage.RequestCalculationJobStatus(jobId);

Coverage plotting

To show coverage plots in the map some setup is needed

For which radios coverage plot is requested is handeled with IMariaRadioPlanLayer.IRadioCoverage.Add

Example adding all radios in a radionet:

foreach (var radio in radioNet.Radios)
{
    _radioPlanLayer.RadioCoverage.Add(radio);
}

Example removing a single radio from the plot:

RadioPlanLayer.RadioCoverage.Remove(radio);

IMariaRadioPlanLayer.IRadioCoverage.Visible must be set to true, to show plot

IMariaRadioPlanLayer.IRadioCoverage.PlotType controls the type of plot to be shown

See: Radio plan Coverage plots page

Coverage contours

For coverage plots, or group of coverage plots, coverage contours can be calculated and displayerd

See: Radio plan coverage contours page

See: Radio plan Coverage contours page

Connectivity Lines

Connectivity lines can be shown between radios in a radio net.

See: Radio plan connectirvity line page

See: Radio plan Connectivity lines page

Settings

RadioPlanSettings

Radio plan settings is available from IMariaRadioPlanLayer.Settings

These settings is used to control:

  • Setting for creating coverage predictions
  • Colour schemas for plots

See: Radio plan Settings pages

SettingsServices

The radioplan module uses external services for

  • Antenna store
  • Coverage calculations