Skip to content

GSoC 2024: Refactor band configuration and initialization with a modular approach (Enhancement)

This MR enhances our original GSoC approach (!167 (closed)), with some improvements (!173 (closed)).

In this enhancement, I propose creating a new class called ChannelHelper, which is responsible for configuring the spectrum, propagation, and condition. Because of this, the SimpleOperationBandConf struct will be detached from the scenario, condition, and spectrum information but will continue to hold some band information such as {central frequency, bandwidth, number of component carriers}. (It can be extended to hold numerology if we want it, as Tom suggested).

To install this configured channel in the user-created band, I propose a method called InstallChannel in the Band struct. This function is modular enough to deal with SpectrumChannels created by the ChannelHelper->SetChannel() or a manually created one.

At a high level, the user must:

Ptr<ChannelHelper> channelHelper = CreateObject<ChannelHelper>();
auto channel = channelHelper->SetChannel("UMi");
auto band1 = ccBwpCreator.CreateOperationBandContiguousCc({28e9, 400e6, 1});
band1.InstallChannel(channel);
auto band2 = ccBwpCreator.CreateOperationBandContiguousCc({10e9, 400e6, 1});
band2.InstallChannel(channel);

If the user wants to create multiple channels, each channel will be stored in a vector, and the user can call channelHelper->GetChannel(channelIndex) to get a pointer to the channel.

NOTE: Because the channel configuration is being made out of NrHelper scope, the functions:

SetPhasedArraySpectrumPropagationLossModelAttribute()
SetChannelConditionModelAttribute()
SetPathlossAttribute()

need to be moved to the channelHelper.

Merge request reports

Loading