Commit 2fa1ed78 authored by knopp's avatar knopp

UE component for PUCCH power control

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7615 818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent 7db355dd
...@@ -207,9 +207,6 @@ void phy_config_sib2_eNB(uint8_t Mod_id, ...@@ -207,9 +207,6 @@ void phy_config_sib2_eNB(uint8_t Mod_id,
lte_frame_parms->ul_power_control_config_common.p0_NominalPUSCH = radioResourceConfigCommon->uplinkPowerControlCommon.p0_NominalPUSCH; lte_frame_parms->ul_power_control_config_common.p0_NominalPUSCH = radioResourceConfigCommon->uplinkPowerControlCommon.p0_NominalPUSCH;
lte_frame_parms->ul_power_control_config_common.alpha = radioResourceConfigCommon->uplinkPowerControlCommon.alpha; lte_frame_parms->ul_power_control_config_common.alpha = radioResourceConfigCommon->uplinkPowerControlCommon.alpha;
lte_frame_parms->ul_power_control_config_common.p0_NominalPUCCH = radioResourceConfigCommon->uplinkPowerControlCommon.p0_NominalPUCCH; lte_frame_parms->ul_power_control_config_common.p0_NominalPUCCH = radioResourceConfigCommon->uplinkPowerControlCommon.p0_NominalPUCCH;
lte_frame_parms->ul_power_control_config_common.deltaPreambleMsg3 = radioResourceConfigCommon->uplinkPowerControlCommon.deltaPreambleMsg3; lte_frame_parms->ul_power_control_config_common.deltaPreambleMsg3 = radioResourceConfigCommon->uplinkPowerControlCommon.deltaPreambleMsg3;
lte_frame_parms->ul_power_control_config_common.deltaF_PUCCH_Format1 = radioResourceConfigCommon->uplinkPowerControlCommon.deltaFList_PUCCH.deltaF_PUCCH_Format1; lte_frame_parms->ul_power_control_config_common.deltaF_PUCCH_Format1 = radioResourceConfigCommon->uplinkPowerControlCommon.deltaFList_PUCCH.deltaF_PUCCH_Format1;
lte_frame_parms->ul_power_control_config_common.deltaF_PUCCH_Format1b = radioResourceConfigCommon->uplinkPowerControlCommon.deltaFList_PUCCH.deltaF_PUCCH_Format1b; lte_frame_parms->ul_power_control_config_common.deltaF_PUCCH_Format1b = radioResourceConfigCommon->uplinkPowerControlCommon.deltaFList_PUCCH.deltaF_PUCCH_Format1b;
......
...@@ -3775,6 +3775,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe, ...@@ -3775,6 +3775,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe,
rballoc = ((DCI1_1_5MHz_TDD_t *)dci_pdu)->rballoc; rballoc = ((DCI1_1_5MHz_TDD_t *)dci_pdu)->rballoc;
rah = ((DCI1_1_5MHz_TDD_t *)dci_pdu)->rah; rah = ((DCI1_1_5MHz_TDD_t *)dci_pdu)->rah;
rv = ((DCI1_1_5MHz_TDD_t *)dci_pdu)->rv; rv = ((DCI1_1_5MHz_TDD_t *)dci_pdu)->rv;
TPC = ((DCI1_1_5MHz_TDD_t *)dci_pdu)->TPC;
ndi = ((DCI1_1_5MHz_TDD_t *)dci_pdu)->ndi; ndi = ((DCI1_1_5MHz_TDD_t *)dci_pdu)->ndi;
harq_pid = ((DCI1_1_5MHz_TDD_t *)dci_pdu)->harq_pid; harq_pid = ((DCI1_1_5MHz_TDD_t *)dci_pdu)->harq_pid;
} else { } else {
...@@ -3782,6 +3783,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe, ...@@ -3782,6 +3783,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe,
rah = ((DCI1_1_5MHz_FDD_t *)dci_pdu)->rah; rah = ((DCI1_1_5MHz_FDD_t *)dci_pdu)->rah;
rballoc = ((DCI1_1_5MHz_FDD_t *)dci_pdu)->rballoc; rballoc = ((DCI1_1_5MHz_FDD_t *)dci_pdu)->rballoc;
rv = ((DCI1_1_5MHz_FDD_t *)dci_pdu)->rv; rv = ((DCI1_1_5MHz_FDD_t *)dci_pdu)->rv;
TPC = ((DCI1_1_5MHz_FDD_t *)dci_pdu)->TPC;
ndi = ((DCI1_1_5MHz_FDD_t *)dci_pdu)->ndi; ndi = ((DCI1_1_5MHz_FDD_t *)dci_pdu)->ndi;
harq_pid = ((DCI1_1_5MHz_FDD_t *)dci_pdu)->harq_pid; harq_pid = ((DCI1_1_5MHz_FDD_t *)dci_pdu)->harq_pid;
} }
...@@ -3794,6 +3796,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe, ...@@ -3794,6 +3796,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe,
rballoc = ((DCI1_5MHz_TDD_t *)dci_pdu)->rballoc; rballoc = ((DCI1_5MHz_TDD_t *)dci_pdu)->rballoc;
rah = ((DCI1_5MHz_TDD_t *)dci_pdu)->rah; rah = ((DCI1_5MHz_TDD_t *)dci_pdu)->rah;
rv = ((DCI1_5MHz_TDD_t *)dci_pdu)->rv; rv = ((DCI1_5MHz_TDD_t *)dci_pdu)->rv;
TPC = ((DCI1_5MHz_TDD_t *)dci_pdu)->TPC;
ndi = ((DCI1_5MHz_TDD_t *)dci_pdu)->ndi; ndi = ((DCI1_5MHz_TDD_t *)dci_pdu)->ndi;
harq_pid = ((DCI1_5MHz_TDD_t *)dci_pdu)->harq_pid; harq_pid = ((DCI1_5MHz_TDD_t *)dci_pdu)->harq_pid;
} else { } else {
...@@ -3801,6 +3804,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe, ...@@ -3801,6 +3804,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe,
rah = ((DCI1_5MHz_FDD_t *)dci_pdu)->rah; rah = ((DCI1_5MHz_FDD_t *)dci_pdu)->rah;
rballoc = ((DCI1_5MHz_FDD_t *)dci_pdu)->rballoc; rballoc = ((DCI1_5MHz_FDD_t *)dci_pdu)->rballoc;
rv = ((DCI1_5MHz_FDD_t *)dci_pdu)->rv; rv = ((DCI1_5MHz_FDD_t *)dci_pdu)->rv;
TPC = ((DCI1_5MHz_FDD_t *)dci_pdu)->TPC;
ndi = ((DCI1_5MHz_FDD_t *)dci_pdu)->ndi; ndi = ((DCI1_5MHz_FDD_t *)dci_pdu)->ndi;
harq_pid = ((DCI1_5MHz_FDD_t *)dci_pdu)->harq_pid; harq_pid = ((DCI1_5MHz_FDD_t *)dci_pdu)->harq_pid;
} }
...@@ -3813,6 +3817,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe, ...@@ -3813,6 +3817,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe,
rballoc = ((DCI1_10MHz_TDD_t *)dci_pdu)->rballoc; rballoc = ((DCI1_10MHz_TDD_t *)dci_pdu)->rballoc;
rah = ((DCI1_10MHz_TDD_t *)dci_pdu)->rah; rah = ((DCI1_10MHz_TDD_t *)dci_pdu)->rah;
rv = ((DCI1_10MHz_TDD_t *)dci_pdu)->rv; rv = ((DCI1_10MHz_TDD_t *)dci_pdu)->rv;
TPC = ((DCI1_10MHz_TDD_t *)dci_pdu)->TPC;
ndi = ((DCI1_10MHz_TDD_t *)dci_pdu)->ndi; ndi = ((DCI1_10MHz_TDD_t *)dci_pdu)->ndi;
harq_pid = ((DCI1_10MHz_TDD_t *)dci_pdu)->harq_pid; harq_pid = ((DCI1_10MHz_TDD_t *)dci_pdu)->harq_pid;
} else { } else {
...@@ -3820,6 +3825,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe, ...@@ -3820,6 +3825,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe,
rah = ((DCI1_10MHz_FDD_t *)dci_pdu)->rah; rah = ((DCI1_10MHz_FDD_t *)dci_pdu)->rah;
rballoc = ((DCI1_10MHz_FDD_t *)dci_pdu)->rballoc; rballoc = ((DCI1_10MHz_FDD_t *)dci_pdu)->rballoc;
rv = ((DCI1_10MHz_FDD_t *)dci_pdu)->rv; rv = ((DCI1_10MHz_FDD_t *)dci_pdu)->rv;
TPC = ((DCI1_10MHz_FDD_t *)dci_pdu)->TPC;
ndi = ((DCI1_10MHz_FDD_t *)dci_pdu)->ndi; ndi = ((DCI1_10MHz_FDD_t *)dci_pdu)->ndi;
harq_pid = ((DCI1_10MHz_FDD_t *)dci_pdu)->harq_pid; harq_pid = ((DCI1_10MHz_FDD_t *)dci_pdu)->harq_pid;
} }
...@@ -3832,6 +3838,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe, ...@@ -3832,6 +3838,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe,
rballoc = ((DCI1_20MHz_TDD_t *)dci_pdu)->rballoc; rballoc = ((DCI1_20MHz_TDD_t *)dci_pdu)->rballoc;
rah = ((DCI1_20MHz_TDD_t *)dci_pdu)->rah; rah = ((DCI1_20MHz_TDD_t *)dci_pdu)->rah;
rv = ((DCI1_20MHz_TDD_t *)dci_pdu)->rv; rv = ((DCI1_20MHz_TDD_t *)dci_pdu)->rv;
TPC = ((DCI1_20MHz_TDD_t *)dci_pdu)->TPC;
ndi = ((DCI1_20MHz_TDD_t *)dci_pdu)->ndi; ndi = ((DCI1_20MHz_TDD_t *)dci_pdu)->ndi;
harq_pid = ((DCI1_20MHz_TDD_t *)dci_pdu)->harq_pid; harq_pid = ((DCI1_20MHz_TDD_t *)dci_pdu)->harq_pid;
} else { } else {
...@@ -3839,6 +3846,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe, ...@@ -3839,6 +3846,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe,
rah = ((DCI1_20MHz_FDD_t *)dci_pdu)->rah; rah = ((DCI1_20MHz_FDD_t *)dci_pdu)->rah;
rballoc = ((DCI1_20MHz_FDD_t *)dci_pdu)->rballoc; rballoc = ((DCI1_20MHz_FDD_t *)dci_pdu)->rballoc;
rv = ((DCI1_20MHz_FDD_t *)dci_pdu)->rv; rv = ((DCI1_20MHz_FDD_t *)dci_pdu)->rv;
TPC = ((DCI1_20MHz_FDD_t *)dci_pdu)->TPC;
ndi = ((DCI1_20MHz_FDD_t *)dci_pdu)->ndi; ndi = ((DCI1_20MHz_FDD_t *)dci_pdu)->ndi;
harq_pid = ((DCI1_20MHz_FDD_t *)dci_pdu)->harq_pid; harq_pid = ((DCI1_20MHz_FDD_t *)dci_pdu)->harq_pid;
} }
...@@ -3852,6 +3860,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe, ...@@ -3852,6 +3860,7 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe,
} }
dlsch0_harq = dlsch[0]->harq_processes[harq_pid]; dlsch0_harq = dlsch[0]->harq_processes[harq_pid];
dlsch0_harq->delta_PUCCH = delta_PUCCH_lut[TPC&3];
dlsch[0]->current_harq_pid = harq_pid; dlsch[0]->current_harq_pid = harq_pid;
dlsch[0]->harq_ack[subframe].harq_id = harq_pid; dlsch[0]->harq_ack[subframe].harq_id = harq_pid;
...@@ -3872,6 +3881,8 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe, ...@@ -3872,6 +3881,8 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe,
// printf("NPRB %d\n",NPRB); // printf("NPRB %d\n",NPRB);
dlsch0_harq->delta_PUCCH = delta_PUCCH_lut[TPC&3]; dlsch0_harq->delta_PUCCH = delta_PUCCH_lut[TPC&3];
if (TPC!=1)
LOG_I(PHY,"format1 TPC %d, dlsch0_harq->delta_PUCCH %d\n",TPC,dlsch0_harq->delta_PUCCH);
dlsch0_harq->rvidx = rv; dlsch0_harq->rvidx = rv;
......
...@@ -761,7 +761,6 @@ int32_t rx_pucch(PHY_VARS_eNB *phy_vars_eNB, ...@@ -761,7 +761,6 @@ int32_t rx_pucch(PHY_VARS_eNB *phy_vars_eNB,
LOG_D(PHY,"[eNB] PUCCH fmt0: stat_max : %d, sigma2_dB %d, phase_max : %d\n",dB_fixed(stat_max),sigma2_dB,phase_max); LOG_D(PHY,"[eNB] PUCCH fmt0: stat_max : %d, sigma2_dB %d, phase_max : %d\n",dB_fixed(stat_max),sigma2_dB,phase_max);
#endif #endif
// This is a moving average of the PUCCH1 statistics conditioned on being above or below the threshold // This is a moving average of the PUCCH1 statistics conditioned on being above or below the threshold
if (sigma2_dB<(dB_fixed(stat_max)-pucch1_thres)) { if (sigma2_dB<(dB_fixed(stat_max)-pucch1_thres)) {
*payload = 1; *payload = 1;
...@@ -871,6 +870,8 @@ int32_t rx_pucch(PHY_VARS_eNB *phy_vars_eNB, ...@@ -871,6 +870,8 @@ int32_t rx_pucch(PHY_VARS_eNB *phy_vars_eNB,
if (sigma2_dB<(dB_fixed(stat_max)-pucch1_thres)) {// if (sigma2_dB<(dB_fixed(stat_max)-pucch1_thres)) {//
*Po_PUCCH = ((*Po_PUCCH*1023) + stat_max)>>10;
for (aa=0; aa<frame_parms->nb_antennas_rx; aa++) { for (aa=0; aa<frame_parms->nb_antennas_rx; aa++) {
for (re=0; re<12; re++) { for (re=0; re<12; re++) {
chest_re=0; chest_re=0;
......
...@@ -56,7 +56,7 @@ int8_t pucch_power_cntl(PHY_VARS_UE *phy_vars_ue,uint8_t subframe,uint8_t eNB_id ...@@ -56,7 +56,7 @@ int8_t pucch_power_cntl(PHY_VARS_UE *phy_vars_ue,uint8_t subframe,uint8_t eNB_id
phy_vars_ue->g_pucch[eNB_id] += phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[harq_pid]->delta_PUCCH; phy_vars_ue->g_pucch[eNB_id] += phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[harq_pid]->delta_PUCCH;
} }
phy_vars_ue->g_pucch[eNB_id] = 0; // phy_vars_ue->g_pucch[eNB_id] = 0;
Po_PUCCH = get_PL(phy_vars_ue->Mod_id,phy_vars_ue->CC_id,eNB_id)+ Po_PUCCH = get_PL(phy_vars_ue->Mod_id,phy_vars_ue->CC_id,eNB_id)+
phy_vars_ue->lte_frame_parms.ul_power_control_config_common.p0_NominalPUCCH+ phy_vars_ue->lte_frame_parms.ul_power_control_config_common.p0_NominalPUCCH+
...@@ -97,7 +97,7 @@ int8_t pucch_power_cntl(PHY_VARS_UE *phy_vars_ue,uint8_t subframe,uint8_t eNB_id ...@@ -97,7 +97,7 @@ int8_t pucch_power_cntl(PHY_VARS_UE *phy_vars_ue,uint8_t subframe,uint8_t eNB_id
} }
if (pucch_fmt!=pucch_format1) { if (pucch_fmt!=pucch_format1) {
LOG_D(PHY,"[UE %d][PDSCH %x] frame %d, subframe %d: Po_PUCCH %d dBm : Po_NOMINAL_PUCCH %d dBm, PL %d dB, g_pucch %d dB\n", LOG_I(PHY,"[UE %d][PDSCH %x] frame %d, subframe %d: Po_PUCCH %d dBm : Po_NOMINAL_PUCCH %d dBm, PL %d dB, g_pucch %d dB\n",
phy_vars_ue->Mod_id, phy_vars_ue->Mod_id,
phy_vars_ue->dlsch_ue[eNB_id][0]->rnti,phy_vars_ue->frame_tx,subframe, phy_vars_ue->dlsch_ue[eNB_id][0]->rnti,phy_vars_ue->frame_tx,subframe,
Po_PUCCH, Po_PUCCH,
...@@ -105,7 +105,7 @@ int8_t pucch_power_cntl(PHY_VARS_UE *phy_vars_ue,uint8_t subframe,uint8_t eNB_id ...@@ -105,7 +105,7 @@ int8_t pucch_power_cntl(PHY_VARS_UE *phy_vars_ue,uint8_t subframe,uint8_t eNB_id
get_PL(phy_vars_ue->Mod_id,phy_vars_ue->CC_id,eNB_id), get_PL(phy_vars_ue->Mod_id,phy_vars_ue->CC_id,eNB_id),
phy_vars_ue->g_pucch[eNB_id]); phy_vars_ue->g_pucch[eNB_id]);
} else { } else {
LOG_D(PHY,"[UE %d][SR %x] frame %d, subframe %d: Po_PUCCH %d dBm : Po_NOMINAL_PUCCH %d dBm, PL %d dB g_pucch %d dB\n", LOG_I(PHY,"[UE %d][SR %x] frame %d, subframe %d: Po_PUCCH %d dBm : Po_NOMINAL_PUCCH %d dBm, PL %d dB g_pucch %d dB\n",
phy_vars_ue->Mod_id, phy_vars_ue->Mod_id,
phy_vars_ue->dlsch_ue[eNB_id][0]->rnti,phy_vars_ue->frame_tx,subframe, phy_vars_ue->dlsch_ue[eNB_id][0]->rnti,phy_vars_ue->frame_tx,subframe,
Po_PUCCH, Po_PUCCH,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment