Commit 3d14d571 authored by Cedric Roux's avatar Cedric Roux

trying to get better power management

- change target values
- change upper/lower limit to trigger a tpc
- don't use ul_cqi from SR

The value of ul_cqi is not convincing, for both PUSCH and PUCCH,
more work/analysis is required.
parent 5c607644
...@@ -1181,8 +1181,9 @@ schedule_ue_spec( ...@@ -1181,8 +1181,9 @@ schedule_ue_spec(
// this is the normalized RX power // this is the normalized RX power
eNB_UE_stats = &UE_list->eNB_UE_stats[CC_id][UE_id]; eNB_UE_stats = &UE_list->eNB_UE_stats[CC_id][UE_id];
/* TODO: fix how we deal with power, unit is not dBm, it's special from nfapi */
normalized_rx_power = ue_sched_ctl->pucch1_snr[CC_id]; normalized_rx_power = ue_sched_ctl->pucch1_snr[CC_id];
target_rx_power = 20; target_rx_power = 208;
// this assumes accumulated tpc // this assumes accumulated tpc
// make sure that we are only sending a tpc update once a frame, otherwise the control loop will freak out // make sure that we are only sending a tpc update once a frame, otherwise the control loop will freak out
...@@ -1195,10 +1196,10 @@ schedule_ue_spec( ...@@ -1195,10 +1196,10 @@ schedule_ue_spec(
UE_list->UE_template[CC_id][UE_id].pucch_tpc_tx_frame=frameP; UE_list->UE_template[CC_id][UE_id].pucch_tpc_tx_frame=frameP;
UE_list->UE_template[CC_id][UE_id].pucch_tpc_tx_subframe=subframeP; UE_list->UE_template[CC_id][UE_id].pucch_tpc_tx_subframe=subframeP;
if (normalized_rx_power>(target_rx_power+1)) { if (normalized_rx_power>(target_rx_power+4)) {
tpc = 0; //-1 tpc = 0; //-1
tpc_accumulated--; tpc_accumulated--;
} else if (normalized_rx_power<(target_rx_power-1)) { } else if (normalized_rx_power<(target_rx_power-4)) {
tpc = 2; //+1 tpc = 2; //+1
tpc_accumulated++; tpc_accumulated++;
} else { } else {
......
...@@ -3606,8 +3606,11 @@ void SR_indication(module_id_t mod_idP, int cc_idP, frame_t frameP, sub_frame_t ...@@ -3606,8 +3606,11 @@ void SR_indication(module_id_t mod_idP, int cc_idP, frame_t frameP, sub_frame_t
UE_sched_ctrl *sched_ctl = &UE_list->UE_sched_ctrl[UE_id]; UE_sched_ctrl *sched_ctl = &UE_list->UE_sched_ctrl[UE_id];
#if 0
/* for the moment don't use ul_cqi from SR, value is too different from harq */
sched_ctl->pucch1_snr[cc_idP] = ul_cqi; sched_ctl->pucch1_snr[cc_idP] = ul_cqi;
sched_ctl->pucch1_cqi_update[cc_idP] = 1; sched_ctl->pucch1_cqi_update[cc_idP] = 1;
#endif
UE_list->UE_template[cc_idP][UE_id].ul_SR = 1; UE_list->UE_template[cc_idP][UE_id].ul_SR = 1;
UE_list->UE_template[cc_idP][UE_id].ul_active = TRUE; UE_list->UE_template[cc_idP][UE_id].ul_active = TRUE;
......
...@@ -1008,7 +1008,7 @@ abort(); ...@@ -1008,7 +1008,7 @@ abort();
// this is the normalized RX power and this should be constant (regardless of mcs // this is the normalized RX power and this should be constant (regardless of mcs
normalized_rx_power = UE_sched_ctrl->pusch_snr[CC_id]; normalized_rx_power = UE_sched_ctrl->pusch_snr[CC_id];
target_rx_power = 200; target_rx_power = 178;
// this assumes accumulated tpc // this assumes accumulated tpc
// make sure that we are only sending a tpc update once a frame, otherwise the control loop will freak out // make sure that we are only sending a tpc update once a frame, otherwise the control loop will freak out
...@@ -1018,10 +1018,10 @@ abort(); ...@@ -1018,10 +1018,10 @@ abort();
{ {
UE_template->pusch_tpc_tx_frame=frameP; UE_template->pusch_tpc_tx_frame=frameP;
UE_template->pusch_tpc_tx_subframe=subframeP; UE_template->pusch_tpc_tx_subframe=subframeP;
if (normalized_rx_power>(target_rx_power+1)) { if (normalized_rx_power>(target_rx_power+4)) {
tpc = 0; //-1 tpc = 0; //-1
tpc_accumulated--; tpc_accumulated--;
} else if (normalized_rx_power<(target_rx_power-1)) { } else if (normalized_rx_power<(target_rx_power-4)) {
tpc = 2; //+1 tpc = 2; //+1
tpc_accumulated++; tpc_accumulated++;
} else { } else {
......
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