|
|
| 36 |
* Implements the Adaptive Modulation And Coding Scheme. As proposed in 3GPP |
36 |
* Implements the Adaptive Modulation And Coding Scheme. As proposed in 3GPP |
| 37 |
* TSG-RAN WG1 [R1-081483 Conveying MCS and TB size via PDCCH] |
37 |
* TSG-RAN WG1 [R1-081483 Conveying MCS and TB size via PDCCH] |
| 38 |
* (http://www.3gpp.org/ftp/tsg_ran/WG1_RL1/TSGR1_52b/Docs/R1-081483.zip). |
38 |
* (http://www.3gpp.org/ftp/tsg_ran/WG1_RL1/TSGR1_52b/Docs/R1-081483.zip). |
| 39 |
* |
|
|
| 40 |
* \note All the methods of this class are static, so you'll never |
| 41 |
* need to create and manage instances of this class. |
| 42 |
*/ |
39 |
*/ |
| 43 |
class LteAmc : public Object |
40 |
class LteAmc : public Object |
| 44 |
{ |
41 |
{ |
|
|
| 71 |
}; |
68 |
}; |
| 72 |
|
69 |
|
| 73 |
/** |
70 |
/** |
| 74 |
* \brief Get the Modulation anc Coding Scheme for |
71 |
* \brief Get the Modulation and Coding Scheme for |
| 75 |
* a CQI value |
72 |
* a CQI value |
| 76 |
* \param cqi the cqi value |
73 |
* \param cqi the cqi value |
| 77 |
* \return the MCS value |
74 |
* \return the MCS value |
| 78 |
*/ |
75 |
*/ |
| 79 |
/*static*/ int GetMcsFromCqi (int cqi); |
76 |
int GetMcsFromCqi (int cqi); |
| 80 |
|
77 |
|
| 81 |
/** |
78 |
/** |
| 82 |
* \brief Get the Transport Block Size for a selected MCS and number of PRB (table 7.1.7.2.1-1 of 36.213) |
79 |
* \brief Get the Transport Block Size for a selected MCS and number of PRB (table 7.1.7.2.1-1 of 36.213) |
|
|
| 84 |
* \param nprb the no. of PRB |
81 |
* \param nprb the no. of PRB |
| 85 |
* \return the Transport Block Size in bits |
82 |
* \return the Transport Block Size in bits |
| 86 |
*/ |
83 |
*/ |
| 87 |
/*static*/ int GetDlTbSizeFromMcs (int mcs, int nprb); |
84 |
int GetDlTbSizeFromMcs (int mcs, int nprb); |
| 88 |
|
85 |
|
| 89 |
/** |
86 |
/** |
| 90 |
* \brief Get the Transport Block Size for a selected MCS and number of PRB (table 8.6.1-1 of 36.213) |
87 |
* \brief Get the Transport Block Size for a selected MCS and number of PRB (table 8.6.1-1 of 36.213) |
|
|
| 92 |
* \param nprb the no. of PRB |
89 |
* \param nprb the no. of PRB |
| 93 |
* \return the Transport Block Size in bits |
90 |
* \return the Transport Block Size in bits |
| 94 |
*/ |
91 |
*/ |
| 95 |
/*static*/ int GetUlTbSizeFromMcs (int mcs, int nprb); |
92 |
int GetUlTbSizeFromMcs (int mcs, int nprb); |
| 96 |
|
93 |
|
| 97 |
/** |
94 |
/** |
| 98 |
* \brief Get the spectral efficiency value associated |
95 |
* \brief Get the spectral efficiency value associated |
|
|
| 100 |
* \param cqi the cqi value |
97 |
* \param cqi the cqi value |
| 101 |
* \return the spectral efficiency in (bit/s)/Hz |
98 |
* \return the spectral efficiency in (bit/s)/Hz |
| 102 |
*/ |
99 |
*/ |
| 103 |
/*static*/ double GetSpectralEfficiencyFromCqi (int cqi); |
100 |
double GetSpectralEfficiencyFromCqi (int cqi); |
| 104 |
|
101 |
|
| 105 |
/** |
102 |
/** |
| 106 |
* \brief Create a message with CQI feedback |
103 |
* \brief Create a message with CQI feedback |
|
|
| 108 |
* \param rbgSize size of RB group (in RBs) for evaluating subband/wideband CQI |
105 |
* \param rbgSize size of RB group (in RBs) for evaluating subband/wideband CQI |
| 109 |
* \return a vector of CQI feedbacks |
106 |
* \return a vector of CQI feedbacks |
| 110 |
*/ |
107 |
*/ |
| 111 |
/*static*/ std::vector<int> CreateCqiFeedbacks (const SpectrumValue& sinr, |
108 |
std::vector<int> CreateCqiFeedbacks (const SpectrumValue& sinr, |
| 112 |
uint8_t rbgSize = 0); |
109 |
uint8_t rbgSize = 0); |
| 113 |
|
110 |
|
| 114 |
/** |
111 |
/** |
| 115 |
* \brief Get a proper CQI for the spectral efficiency value. |
112 |
* \brief Get a proper CQI for the spectral efficiency value. |
| 116 |
* In order to assure a fewer block error rate, the AMC chooses the lower CQI value |
113 |
* In order to assure a lower block error rate, the AMC chooses the lower CQI value |
| 117 |
* for a given spectral efficiency |
114 |
* for a given spectral efficiency |
| 118 |
* \param s the spectral efficiency |
115 |
* \param s the spectral efficiency |
| 119 |
* \return the CQI value |
116 |
* \return the CQI value |
| 120 |
*/ |
117 |
*/ |
| 121 |
/*static*/ int GetCqiFromSpectralEfficiency (double s); |
118 |
int GetCqiFromSpectralEfficiency (double s); |
| 122 |
|
119 |
|
| 123 |
private: |
120 |
private: |
| 124 |
|
121 |
|