add variables TPC command interval and forgetting filter of UL SNR.
This commit is contained in:
committed by
shono.takafumi
parent
dbb8a8924e
commit
04d6de7d58
@@ -2003,9 +2003,10 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
|
||||
// this assumes accumulated tpc
|
||||
// make sure that we are only sending a tpc update once a frame, otherwise the control loop will freak out
|
||||
int32_t framex10psubframe = UE_info->UE_template[CC_id][UE_id].pucch_tpc_tx_frame*10+UE_info->UE_template[CC_id][UE_id].pucch_tpc_tx_subframe;
|
||||
int pucch_tpc_interval=10;
|
||||
|
||||
if (((framex10psubframe+10)<=(frameP*10+subframeP)) || //normal case
|
||||
((framex10psubframe>(frameP*10+subframeP)) && (((10240-framex10psubframe+frameP*10+subframeP)>=10)))) //frame wrap-around
|
||||
if (((framex10psubframe+pucch_tpc_interval)<=(frameP*10+subframeP)) || //normal case
|
||||
((framex10psubframe>(frameP*10+subframeP)) && (((10240-framex10psubframe+frameP*10+subframeP)>=pucch_tpc_interval)))) //frame wrap-around
|
||||
if (ue_sched_ctl->pucch1_cqi_update[CC_id] == 1) {
|
||||
ue_sched_ctl->pucch1_cqi_update[CC_id] = 0;
|
||||
UE_info->UE_template[CC_id][UE_id].pucch_tpc_tx_frame=frameP;
|
||||
@@ -3087,9 +3088,10 @@ void schedule_ulsch_rnti_fairRR(module_id_t module_idP,
|
||||
// this assumes accumulated tpc
|
||||
// make sure that we are only sending a tpc update once a frame, otherwise the control loop will freak out
|
||||
int32_t framex10psubframe = UE_template->pusch_tpc_tx_frame*10+UE_template->pusch_tpc_tx_subframe;
|
||||
int pusch_tpc_interval=10;
|
||||
|
||||
if (((framex10psubframe+10)<=(frameP*10+subframeP)) || //normal case
|
||||
((framex10psubframe>(frameP*10+subframeP)) && (((10240-framex10psubframe+frameP*10+subframeP)>=10)))) { //frame wrap-around
|
||||
if (((framex10psubframe+pusch_tpc_interval)<=(frameP*10+subframeP)) || //normal case
|
||||
((framex10psubframe>(frameP*10+subframeP)) && (((10240-framex10psubframe+frameP*10+subframeP)>=pusch_tpc_interval)))) { //frame wrap-around
|
||||
UE_template->pusch_tpc_tx_frame=frameP;
|
||||
UE_template->pusch_tpc_tx_subframe=subframeP;
|
||||
|
||||
|
||||
@@ -166,12 +166,12 @@ rx_sdu(const module_id_t enb_mod_idP,
|
||||
* maybe it's even not correct at all?
|
||||
*/
|
||||
UE_scheduling_control->ta_update = (UE_scheduling_control->ta_update * 3 + timing_advance) / 4;
|
||||
|
||||
double tpc_forgetting_filter=0.75;
|
||||
if(UE_scheduling_control->pusch_snr[CC_idP] == 0) {
|
||||
UE_scheduling_control->pusch_snr[CC_idP] = ul_cqi;
|
||||
}
|
||||
else {
|
||||
UE_scheduling_control->pusch_snr[CC_idP] = (UE_scheduling_control->pusch_snr[CC_idP] * 3 + ul_cqi) / 4;
|
||||
UE_scheduling_control->pusch_snr[CC_idP] = (int)((double)UE_scheduling_control->pusch_snr[CC_idP] * tpc_foggot_filter + (double)ul_cqi * (1-tpc_foggot_filter));
|
||||
}
|
||||
|
||||
UE_scheduling_control->ul_consecutive_errors = 0;
|
||||
|
||||
Reference in New Issue
Block a user