RadioPlan
General
RadioPlan is the module for handling radios and radioplanning. Functionality is controlled via the interface IMariaRadioPlanLayer
public interface IMariaRadioPlanLayer : IMariaLayer
Data model
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
public Radio(Guid id, string name, Site site, RadioSystem radioSystem, SignalPower txPower, double loss, SignalPower rxSensitivity, Frequency frequency)
Site
The site holds the position for one or more radios.
public Site(Guid id, string name, GeoPos location)
RadioNet
The radio net holds a group of radios of same technology
public RadioNet(Guid id, string name, NetworkType networkType, RadioSystem radioSystem)
Antenna
A single antenna can be applied to the cell, with properties like
public string AntennaTypeName { get; }
public double Height { get; }
public Azimuth Direction { get; set; }
public Tilt ElectricalTilt { get; set; }
public Tilt MechanicalTilt { get; set; }
AntennaType
The list of availble antenna types is available from the Antenna Service which are handeled 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
- Settings for creating conectivity lines
- Settings for creating coverage contour polygons
See: Radio plan Settings pages
SettingsServices
The radioplan module uses external services for
- Antenna store
- Coverage calculations