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) {
|
||||
LTE_eNB_UE_stats *eNB_UE_stats = NULL;
|
||||
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);
|
||||
|
||||
if (eNB_UE_stats == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(eNB_UE_stats->Po_PUCCH_update == 1) {
|
||||
return eNB_UE_stats->Po_PUCCH_dBm;
|
||||
}
|
||||
else
|
||||
return -1;
|
||||
LTE_eNB_UE_stats *eNB_UE_stats = NULL;
|
||||
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);
|
||||
|
||||
if (eNB_UE_stats == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// if(eNB_UE_stats->Po_PUCCH_update == 1) {
|
||||
return eNB_UE_stats->Po_PUCCH_dBm;
|
||||
//}
|
||||
//else
|
||||
// return -1;
|
||||
}
|
||||
|
||||
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);
|
||||
return pucch_rx_received;
|
||||
int32_t pucch_rx_received = mac_xface->get_target_pucch_rx_power(mod_id, CC_id);
|
||||
return pucch_rx_received;
|
||||
}
|
||||
|
||||
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;
|
||||
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);
|
||||
return eNB_UE_stats->Po_PUCCH_update;
|
||||
LTE_eNB_UE_stats *eNB_UE_stats = NULL;
|
||||
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);
|
||||
return eNB_UE_stats->Po_PUCCH_update;
|
||||
}
|
||||
|
||||
int flexran_update_p0_pucch(mid_t mod_id, mid_t ue_id, int CC_id) {
|
||||
LTE_eNB_UE_stats *eNB_UE_stats = NULL;
|
||||
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->Po_PUCCH_update = 0;
|
||||
|
||||
return 0;
|
||||
LTE_eNB_UE_stats *eNB_UE_stats = NULL;
|
||||
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->Po_PUCCH_update = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1390,21 +1390,17 @@ flexran_schedule_ue_spec_common(mid_t mod_id,
|
||||
|
||||
// do PUCCH power control
|
||||
// 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;
|
||||
// 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;
|
||||
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;
|
||||
|
||||
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) + 20; //mac_xface->get_target_pucch_rx_power(mod_id, CC_id) + 20;
|
||||
// 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_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
|
||||
((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) {
|
||||
// flexran_update_p0_pucch(mod_id, UE_id, CC_id);
|
||||
eNB_UE_stats->Po_PUCCH_update = 0;
|
||||
if (flexran_get_p0_pucch_status(mod_id, UE_id, CC_id) == 1) {
|
||||
flexran_update_p0_pucch(mod_id, UE_id, CC_id);
|
||||
|
||||
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user