Changed behavior of API for PUCCH power reports
This commit is contained in:
@@ -716,43 +716,43 @@ int flexran_get_harq(const mid_t mod_id,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int flexran_get_p0_pucch_dbm(mid_t mod_id, mid_t ue_id, int CC_id) {
|
int flexran_get_p0_pucch_dbm(mid_t mod_id, mid_t ue_id, int CC_id) {
|
||||||
LTE_eNB_UE_stats *eNB_UE_stats = NULL;
|
LTE_eNB_UE_stats *eNB_UE_stats = NULL;
|
||||||
uint32_t rnti = flexran_get_ue_crnti(mod_id,ue_id);
|
uint32_t rnti = flexran_get_ue_crnti(mod_id,ue_id);
|
||||||
|
|
||||||
eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id, CC_id, rnti);
|
eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id, CC_id, rnti);
|
||||||
|
|
||||||
if (eNB_UE_stats == NULL) {
|
if (eNB_UE_stats == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(eNB_UE_stats->Po_PUCCH_update == 1) {
|
// if(eNB_UE_stats->Po_PUCCH_update == 1) {
|
||||||
return eNB_UE_stats->Po_PUCCH_dBm;
|
return eNB_UE_stats->Po_PUCCH_dBm;
|
||||||
}
|
//}
|
||||||
else
|
//else
|
||||||
return -1;
|
// return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int flexran_get_p0_nominal_pucch(mid_t mod_id, int CC_id) {
|
int flexran_get_p0_nominal_pucch(mid_t mod_id, int CC_id) {
|
||||||
int32_t pucch_rx_received = mac_xface->get_target_pucch_rx_power(mod_id, CC_id);
|
int32_t pucch_rx_received = mac_xface->get_target_pucch_rx_power(mod_id, CC_id);
|
||||||
return pucch_rx_received;
|
return pucch_rx_received;
|
||||||
}
|
}
|
||||||
|
|
||||||
int flexran_get_p0_pucch_status(mid_t mod_id, mid_t ue_id, int CC_id) {
|
int flexran_get_p0_pucch_status(mid_t mod_id, mid_t ue_id, int CC_id) {
|
||||||
LTE_eNB_UE_stats *eNB_UE_stats = NULL;
|
LTE_eNB_UE_stats *eNB_UE_stats = NULL;
|
||||||
uint32_t rnti = flexran_get_ue_crnti(mod_id,ue_id);
|
uint32_t rnti = flexran_get_ue_crnti(mod_id,ue_id);
|
||||||
|
|
||||||
eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id, CC_id, rnti);
|
eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id, CC_id, rnti);
|
||||||
return eNB_UE_stats->Po_PUCCH_update;
|
return eNB_UE_stats->Po_PUCCH_update;
|
||||||
}
|
}
|
||||||
|
|
||||||
int flexran_update_p0_pucch(mid_t mod_id, mid_t ue_id, int CC_id) {
|
int flexran_update_p0_pucch(mid_t mod_id, mid_t ue_id, int CC_id) {
|
||||||
LTE_eNB_UE_stats *eNB_UE_stats = NULL;
|
LTE_eNB_UE_stats *eNB_UE_stats = NULL;
|
||||||
uint32_t rnti = flexran_get_ue_crnti(mod_id,ue_id);
|
uint32_t rnti = flexran_get_ue_crnti(mod_id,ue_id);
|
||||||
|
|
||||||
eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id, CC_id, rnti);
|
eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id, CC_id, rnti);
|
||||||
eNB_UE_stats->Po_PUCCH_update = 0;
|
eNB_UE_stats->Po_PUCCH_update = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1390,21 +1390,17 @@ flexran_schedule_ue_spec_common(mid_t mod_id,
|
|||||||
|
|
||||||
// do PUCCH power control
|
// do PUCCH power control
|
||||||
// this is the normalized RX power
|
// this is the normalized RX power
|
||||||
//normalized_rx_power = flexran_get_p0_pucch_dbm(mod_id,UE_id, CC_id); //eNB_UE_stats->Po_PUCCH_dBm;
|
normalized_rx_power = flexran_get_p0_pucch_dbm(mod_id,UE_id, CC_id); //eNB_UE_stats->Po_PUCCH_dBm;
|
||||||
// target_rx_power = flexran_get_p0_nominal_pucch(mod_id, CC_id) + 10; //mac_xface->get_target_pucch_rx_power(mod_id, CC_id) + 10;
|
target_rx_power = flexran_get_p0_nominal_pucch(mod_id, CC_id) + 20; //mac_xface->get_target_pucch_rx_power(mod_id, CC_id) + 20;
|
||||||
eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id, CC_id,rnti);
|
|
||||||
normalized_rx_power = eNB_UE_stats->Po_PUCCH_dBm;
|
|
||||||
target_rx_power = mac_xface->get_target_pucch_rx_power(mod_id,CC_id) + 20;
|
|
||||||
|
|
||||||
// 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
|
||||||
int32_t framex10psubframe = UE_list->UE_template[CC_id][UE_id].pucch_tpc_tx_frame*10+UE_list->UE_template[CC_id][UE_id].pucch_tpc_tx_subframe;
|
int32_t framex10psubframe = UE_list->UE_template[CC_id][UE_id].pucch_tpc_tx_frame*10+UE_list->UE_template[CC_id][UE_id].pucch_tpc_tx_subframe;
|
||||||
|
|
||||||
if (((framex10psubframe+10)<=(frame*10+subframe)) || //normal case
|
if (((framex10psubframe+10)<=(frame*10+subframe)) || //normal case
|
||||||
((framex10psubframe>(frame*10+subframe)) && (((10240-framex10psubframe+frame*10+subframe)>=10)))) //frame wrap-around
|
((framex10psubframe>(frame*10+subframe)) && (((10240-framex10psubframe+frame*10+subframe)>=10)))) //frame wrap-around
|
||||||
if (eNB_UE_stats->Po_PUCCH_update == 1){//flexran_get_p0_pucch_status(mod_id, UE_id, CC_id) == 1) {
|
if (flexran_get_p0_pucch_status(mod_id, UE_id, CC_id) == 1) {
|
||||||
// flexran_update_p0_pucch(mod_id, UE_id, CC_id);
|
flexran_update_p0_pucch(mod_id, UE_id, CC_id);
|
||||||
eNB_UE_stats->Po_PUCCH_update = 0;
|
|
||||||
|
|
||||||
UE_list->UE_template[CC_id][UE_id].pucch_tpc_tx_frame = frame;
|
UE_list->UE_template[CC_id][UE_id].pucch_tpc_tx_frame = frame;
|
||||||
UE_list->UE_template[CC_id][UE_id].pucch_tpc_tx_subframe = subframe;
|
UE_list->UE_template[CC_id][UE_id].pucch_tpc_tx_subframe = subframe;
|
||||||
|
|||||||
Reference in New Issue
Block a user