periodic cqi procedures
This commit is contained in:
@@ -742,7 +742,8 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
|
||||
phy_vars_ue->dlsch_received_last[eNB_id]=0;
|
||||
phy_vars_ue->dlsch_fer[eNB_id]=0;
|
||||
|
||||
|
||||
phy_vars_ue->cqi_report_config[eNB_id].CQI_ReportPeriodic.ri_ConfigIndex = -1;
|
||||
phy_vars_ue->cqi_report_config[eNB_id].CQI_ReportPeriodic.cqi_PMI_ConfigIndex = -1;
|
||||
|
||||
if (physicalConfigDedicated) {
|
||||
LOG_D(PHY,"[UE %d] Received physicalConfigDedicated from eNB %d\n",Mod_id, eNB_id);
|
||||
@@ -852,6 +853,31 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
|
||||
|
||||
}
|
||||
|
||||
if (physicalConfigDedicated->cqi_ReportConfig) {
|
||||
if (physicalConfigDedicated->cqi_ReportConfig->cqi_ReportModeAperiodic) {
|
||||
// configure PUSCH CQI reporting
|
||||
phy_vars_ue->cqi_report_config[eNB_id].cqi_ReportModeAperiodic = *physicalConfigDedicated->cqi_ReportConfig->cqi_ReportModeAperiodic;
|
||||
if ((phy_vars_ue->cqi_report_config[eNB_id].cqi_ReportModeAperiodic != rm12) &&
|
||||
(phy_vars_ue->cqi_report_config[eNB_id].cqi_ReportModeAperiodic != rm30) &&
|
||||
(phy_vars_ue->cqi_report_config[eNB_id].cqi_ReportModeAperiodic != rm31))
|
||||
LOG_E(PHY,"Unsupported Aperiodic CQI Feedback Mode : %d\n",phy_vars_ue->cqi_report_config[eNB_id].cqi_ReportModeAperiodic);
|
||||
}
|
||||
if (physicalConfigDedicated->cqi_ReportConfig->cqi_ReportPeriodic) {
|
||||
if (physicalConfigDedicated->cqi_ReportConfig->cqi_ReportPeriodic->present == CQI_ReportPeriodic_PR_setup) {
|
||||
// configure PUCCH CQI reporting
|
||||
phy_vars_ue->cqi_report_config[eNB_id].CQI_ReportPeriodic.cqi_PUCCH_ResourceIndex = physicalConfigDedicated->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_PUCCH_ResourceIndex;
|
||||
phy_vars_ue->cqi_report_config[eNB_id].CQI_ReportPeriodic.cqi_PMI_ConfigIndex = physicalConfigDedicated->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_pmi_ConfigIndex;
|
||||
if (physicalConfigDedicated->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.ri_ConfigIndex)
|
||||
phy_vars_ue->cqi_report_config[eNB_id].CQI_ReportPeriodic.ri_ConfigIndex = *physicalConfigDedicated->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.ri_ConfigIndex;
|
||||
}
|
||||
else if (physicalConfigDedicated->cqi_ReportConfig->cqi_ReportPeriodic->present == CQI_ReportPeriodic_PR_release) {
|
||||
// handle release
|
||||
phy_vars_ue->cqi_report_config[eNB_id].CQI_ReportPeriodic.ri_ConfigIndex = -1;
|
||||
phy_vars_ue->cqi_report_config[eNB_id].CQI_ReportPeriodic.cqi_PMI_ConfigIndex = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CBA
|
||||
|
||||
if (physicalConfigDedicated->pusch_CBAConfigDedicated_vlola) {
|
||||
@@ -868,6 +894,9 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
|
||||
return;
|
||||
}
|
||||
|
||||
// fill cqi parameters for periodic CQI reporting
|
||||
get_cqipmiri_params(phy_vars_ue,eNB_id);
|
||||
|
||||
}
|
||||
|
||||
void phy_config_cba_rnti (module_id_t Mod_id,int CC_id,eNB_flag_t eNB_flag, uint8_t index, rnti_t cba_rnti, uint8_t cba_group_id, uint8_t num_active_cba_groups)
|
||||
|
||||
@@ -1445,6 +1445,9 @@ int32_t generate_ue_ulsch_params_from_rar(PHY_VARS_UE *phy_vars_ue,
|
||||
uint8_t eNB_id);
|
||||
double sinr_eff_cqi_calc(PHY_VARS_UE *phy_vars_ue,
|
||||
uint8_t eNB_id);
|
||||
|
||||
uint8_t sinr2cqi(double sinr,uint8_t trans_mode);
|
||||
|
||||
int generate_eNB_ulsch_params_from_dci(PHY_VARS_eNB *PHY_vars_eNB,
|
||||
eNB_rxtx_proc_t *proc,
|
||||
void *dci_pdu,
|
||||
@@ -1712,6 +1715,21 @@ void generate_pucch1x(int32_t **txdataF,
|
||||
int16_t amp,
|
||||
uint8_t subframe);
|
||||
|
||||
void generate_pucch2x(int32_t **txdataF,
|
||||
LTE_DL_FRAME_PARMS *fp,
|
||||
uint8_t ncs_cell[20][7],
|
||||
PUCCH_FMT_t fmt,
|
||||
PUCCH_CONFIG_DEDICATED *pucch_config_dedicated,
|
||||
uint16_t n2_pucch,
|
||||
uint8_t shortened_format,
|
||||
uint16_t *payload,
|
||||
int A,
|
||||
int B2,
|
||||
int16_t amp,
|
||||
uint8_t subframe,
|
||||
uint16_t rnti);
|
||||
|
||||
|
||||
void generate_pucch_emul(PHY_VARS_UE *phy_vars_ue,
|
||||
UE_rxtx_proc_t *proc,
|
||||
PUCCH_FMT_t format,
|
||||
|
||||
@@ -460,10 +460,13 @@ inline void pucch2x_modulation(uint8_t *btilde,int16_t *d,int16_t amp) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
uint32_t pucch_code[13] = {0xFFFFF,0x5A933,0x10E5A,0x6339C,0x73CE0,
|
||||
0xFFC00,0xD8E64,0x4F6B0,0x218EC,0x1B746,
|
||||
0x0FFFF,0x33FFF,0x3FFFC};
|
||||
|
||||
|
||||
void generate_pucch2x(int32_t **txdataF,
|
||||
LTE_DL_FRAME_PARMS *fp,
|
||||
uint8_t ncs_cell[20][7],
|
||||
@@ -471,7 +474,7 @@ void generate_pucch2x(int32_t **txdataF,
|
||||
PUCCH_CONFIG_DEDICATED *pucch_config_dedicated,
|
||||
uint16_t n2_pucch,
|
||||
uint8_t shortened_format,
|
||||
uint32_t *payload,
|
||||
uint16_t *payload,
|
||||
int A,
|
||||
int B2,
|
||||
int16_t amp,
|
||||
@@ -559,10 +562,13 @@ void generate_pucch2x(int32_t **txdataF,
|
||||
nprime = (n2_pucch < 12*NRB2) ?
|
||||
n2_pucch % 12 :
|
||||
(n2_pucch+Ncs1 + 1)%12;
|
||||
else
|
||||
else {
|
||||
nprime = (n2_pucch < 12*NRB2) ?
|
||||
((12*(nprime+1)) % 13)-1 :
|
||||
(10-n2_pucch)%12;
|
||||
if (shortened_format == 1)
|
||||
N_UL_symb--;
|
||||
}
|
||||
|
||||
//loop over symbols in slot
|
||||
for (l=0; l<N_UL_symb; l++) {
|
||||
@@ -631,6 +637,10 @@ void generate_pucch2x(int32_t **txdataF,
|
||||
}
|
||||
|
||||
|
||||
//#define Amax 13
|
||||
//void init_pucch2x_rx() {};
|
||||
|
||||
|
||||
uint32_t rx_pucch(PHY_VARS_eNB *eNB,
|
||||
PUCCH_FMT_t fmt,
|
||||
uint8_t UE_id,
|
||||
|
||||
@@ -836,3 +836,5 @@ void print_CQI(void *o,UCI_format_t uci_format,unsigned char eNB_id,int N_RB_DL)
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -418,16 +418,20 @@ typedef struct {
|
||||
|
||||
/// CQI-ReportPeriodic
|
||||
typedef struct {
|
||||
/// Parameter: \f$n^{(2)}_\text{PUCCH}\f$, see TS 36.213 (7.2). \vr{[0..1185]}
|
||||
uint16_t cqi_PUCCH_ResourceIndex;
|
||||
/// Parameter: \f$n^{(2)}_\text{PUCCH}\f$, see TS 36.213 (7.2). \vr{[0..1185]}, -1 indicates inactivity
|
||||
int16_t cqi_PUCCH_ResourceIndex;
|
||||
/// Parameter: CQI/PMI Periodicity and Offset Configuration Index \f$I_\text{CQI/PMI}\f$, see TS 36.213 (tables 7.2.2-1A and 7.2.2-1C). \vr{[0..1023]}
|
||||
uint16_t cqi_PMI_ConfigIndex;
|
||||
int16_t cqi_PMI_ConfigIndex;
|
||||
/// Parameter: K, see 36.213 (4.2.2). \vr{[1..4]}
|
||||
uint8_t K;
|
||||
/// Parameter: RI Config Index \f$I_\text{RI}\f$, see TS 36.213 (7.2.2-1B). \vr{[0..1023]}
|
||||
uint16_t ri_ConfigIndex;
|
||||
/// Parameter: RI Config Index \f$I_\text{RI}\f$, see TS 36.213 (7.2.2-1B). \vr{[0..1023]}, -1 indicates inactivity
|
||||
int16_t ri_ConfigIndex;
|
||||
/// Parameter: Simultaneous-AN-and-CQI, see TS 36.213 (10.1). \vr{[0..1]} 1 indicates that simultaneous transmission of ACK/NACK and CQI is allowed.
|
||||
uint8_t simultaneousAckNackAndCQI;
|
||||
/// parameter computed from Tables 7.2.2-1A and 7.2.2-1C
|
||||
uint16_t Npd;
|
||||
/// parameter computed from Tables 7.2.2-1A and 7.2.2-1C
|
||||
uint16_t N_OFFSET_CQI;
|
||||
} CQI_REPORTPERIODIC;
|
||||
|
||||
/// Enumeration for parameter reporting mode \ref CQI_REPORT_CONFIG::cqi_ReportModeAperiodic.
|
||||
|
||||
Reference in New Issue
Block a user