Unipisa / Unipisa/Simu5G

RSSI, RSRP, RSRQ, SINR in LteRealisticChannelModel

Open
#181 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
235
Forks
116
PR merge metrics
No merged PRs in 30d

Description

Hello,

I need to estimate these values in runtime in simu5g but I'm quite confused by how these values are partially presented in the model. With RSRP and SINR it is more or less clear and for SINR there are already proper signals. But when we move to RSRQ and RSSI I'm a bit lost.

For RSSI there is a block at the beginning of LtePhyUe::initialize(...) method:

std::vector<double> rssiV = primaryChannelModel_->getRSRP(frame, cInfo);

From my understanding, RSSI can't be just RSRP, especially measuring this from a UE perspective, it needs to take channel width and other stuff into account..

Then we go to RSRQ. There is a very strange block of code that is duplicated in both getSINR and getRSRP methods. Is there any example of such a log? Where should one get it? And what are rsrqScale and rsrqShift?

   {
       int time = -1, rsrq = oldRsrq_;
       double currentTime = simTime().dbl();
       if (currentTime > oldTime_+1)
       {
           std::ifstream file;

           // open the rsrq file
           file.clear();
           file.open("rsrqFile.dat");

           file >> time;
           file >> rsrq;

           file.close();

           oldTime_ = simTime().dbl();
           oldRsrq_ = rsrq;

           std::cout << "LteRealisticChannelModel::getRSRP - time["<<time<<"] rsrq["<<rsrq<<"]" << endl;
       }

       double sinr = rsrqScale_ * (rsrq + rsrqShift_);
       std::vector<double> snrVector;
       snrVector.resize(numBands_, sinr);

       return snrVector;
   }

In short, my question is very simple: how to calculate RSSI and RSRQ parameters in runtime as it is done with both SINR and RSRP using the incoming airframes and appropriate methods from LteRealisticChannelModel.cc? Is there a way to calculate them in order to further propagate in the form of signals? If yes, then could you express how because I'm a bit lost.

With best regards
Nikita

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading LteRealisticChannelModel.cc, especially getSINR and getRSRP, and LtePhyUe::initialize(...) where the RSRP-based RSSI value is obtained. Trace how incoming airframes and existing SINR/RSRP signals are handled, then inspect the rsrqFile.dat path and rsrqScale_/rsrqShift_. Done means runtime RSSI and RSRQ values have a defined calculation and signal path.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
networking
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.