Rename FlexRAN RRC reconfiguration function, simplify function
This commit is contained in:
@@ -805,66 +805,35 @@ error:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int flexran_agent_rrc_measurement(mid_t mod_id, const void *params, Protocol__FlexranMessage **msg) {
|
int flexran_agent_rrc_reconfiguration(mid_t mod_id, const void *params, Protocol__FlexranMessage **msg) {
|
||||||
//protocol_ctxt_t ctxt;
|
|
||||||
Protocol__FlexranMessage *input = (Protocol__FlexranMessage *)params;
|
Protocol__FlexranMessage *input = (Protocol__FlexranMessage *)params;
|
||||||
Protocol__FlexRrcTriggering *triggering = input->rrc_triggering;
|
Protocol__FlexRrcTriggering *triggering = input->rrc_triggering;
|
||||||
//agent_reconf_rrc *rrc_reconf = malloc(sizeof(agent_reconf_rrc));
|
// Set the proper values using FlexRAN API (protected with mutex ?)
|
||||||
|
if (!flexran_agent_get_rrc_xface(mod_id)) {
|
||||||
#if 0
|
LOG_E(FLEXRAN_AGENT, "%s(): no RRC present, aborting\n", __func__);
|
||||||
reconf_param->trigger_policy = triggering->rrc_trigger;
|
return -1;
|
||||||
reconf_param->report_interval = 0;
|
|
||||||
reconf_param->report_amount = 0;
|
|
||||||
struct rrc_eNB_ue_context_s *ue_context_p = NULL;
|
|
||||||
RB_FOREACH(ue_context_p, rrc_ue_tree_s, &(RC.rrc[mod_id]->rrc_ue_head)) {
|
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, mod_id, ENB_FLAG_YES, ue_context_p->ue_context.rnti, flexran_get_current_frame(mod_id), flexran_get_current_subframe (mod_id), mod_id);
|
|
||||||
flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(&ctxt, ue_context_p, 0, reconf_param);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// TODO: Step 1 - Verification process
|
|
||||||
|
|
||||||
// Step 2 - Set the proper values using FlexRAN API (protected with mutex ?)
|
|
||||||
int num_ue = 0;
|
|
||||||
|
|
||||||
if (flexran_agent_get_rrc_xface(mod_id))
|
|
||||||
num_ue = flexran_get_rrc_num_ues(mod_id);
|
|
||||||
else if (flexran_agent_get_mac_xface(mod_id))
|
|
||||||
num_ue = flexran_get_mac_num_ues(mod_id);
|
|
||||||
|
|
||||||
if (flexran_agent_get_rrc_xface(mod_id) && flexran_agent_get_mac_xface(mod_id)
|
|
||||||
&& flexran_get_rrc_num_ues(mod_id) != flexran_get_mac_num_ues(mod_id)) {
|
|
||||||
const int nrrc = flexran_get_rrc_num_ues(mod_id);
|
|
||||||
const int nmac = flexran_get_mac_num_ues(mod_id);
|
|
||||||
num_ue = nrrc < nmac ? nrrc : nmac;
|
|
||||||
LOG_E(FLEXRAN_AGENT, "%s(): different numbers of UEs in RRC (%d) and MAC (%d), reporting for %d UEs\n",
|
|
||||||
__func__, nrrc, nmac, num_ue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int num_ue = flexran_get_rrc_num_ues(mod_id);
|
||||||
if (num_ue == 0)
|
if (num_ue == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
int error = 0;
|
|
||||||
rnti_t rntis[num_ue];
|
rnti_t rntis[num_ue];
|
||||||
flexran_get_rrc_rnti_list(mod_id, rntis, num_ue);
|
flexran_get_rrc_rnti_list(mod_id, rntis, num_ue);
|
||||||
for (int i = 0; i < num_ue; i++) {
|
for (int i = 0; i < num_ue; i++) {
|
||||||
const rnti_t rnti = rntis[i];
|
const rnti_t rnti = rntis[i];
|
||||||
if (flexran_agent_get_rrc_xface(mod_id))
|
const int error = update_rrc_reconfig(mod_id, rnti, triggering);
|
||||||
error = update_rrc_reconfig(mod_id, rnti, triggering);
|
|
||||||
if (error < 0) {
|
if (error < 0) {
|
||||||
LOG_E(FLEXRAN_AGENT, "Error in updating user %d\n", i);
|
LOG_E(FLEXRAN_AGENT, "Error in updating user %d\n", i);
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
else {
|
// Call the proper wrapper in FlexRAN API
|
||||||
// Step 3 - Call the proper wrapper in FlexRAN API
|
if (flexran_call_rrc_reconfiguration (mod_id, rnti) < 0) {
|
||||||
if (flexran_call_rrc_reconfiguration (mod_id, rnti) <0) {
|
LOG_E(FLEXRAN_AGENT, "Error in reconfiguring user %d\n", i);
|
||||||
LOG_E(FLEXRAN_AGENT, "Error in reconfiguring user %d\n", i);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*msg = NULL;
|
*msg = NULL;
|
||||||
//free(reconf_param);
|
|
||||||
//reconf_param = NULL;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ int flexran_agent_reconfiguration(mid_t mod_id, const void *params, Protocol__Fl
|
|||||||
int flexran_agent_destroy_agent_reconfiguration(Protocol__FlexranMessage *msg);
|
int flexran_agent_destroy_agent_reconfiguration(Protocol__FlexranMessage *msg);
|
||||||
|
|
||||||
/* rrc triggering measurement message constructor and destructor */
|
/* rrc triggering measurement message constructor and destructor */
|
||||||
int flexran_agent_rrc_measurement(mid_t mod_id, const void *params, Protocol__FlexranMessage **msg);
|
int flexran_agent_rrc_reconfiguration(mid_t mod_id, const void *params, Protocol__FlexranMessage **msg);
|
||||||
int flexran_agent_destroy_rrc_measurement(Protocol__FlexranMessage *msg);
|
int flexran_agent_destroy_rrc_measurement(Protocol__FlexranMessage *msg);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ flexran_agent_message_decoded_callback agent_messages_callback[][3] = {
|
|||||||
{0, 0, 0}, /*PROTOCOL__FLEXRAN_MESSAGE__MSG_UE_STATE_CHANGE_MSG*/
|
{0, 0, 0}, /*PROTOCOL__FLEXRAN_MESSAGE__MSG_UE_STATE_CHANGE_MSG*/
|
||||||
{flexran_agent_control_delegation, 0, 0}, /*PROTOCOL__FLEXRAN_MESSAGE__MSG_CONTROL_DELEGATION_MSG*/
|
{flexran_agent_control_delegation, 0, 0}, /*PROTOCOL__FLEXRAN_MESSAGE__MSG_CONTROL_DELEGATION_MSG*/
|
||||||
{flexran_agent_reconfiguration, 0, 0}, /*PROTOCOL__FLEXRAN_MESSAGE__MSG_AGENT_RECONFIGURATION_MSG*/
|
{flexran_agent_reconfiguration, 0, 0}, /*PROTOCOL__FLEXRAN_MESSAGE__MSG_AGENT_RECONFIGURATION_MSG*/
|
||||||
{flexran_agent_rrc_measurement, 0, 0}, /*PROTOCOL__FLEXRAN_MESSAGE__MSG_RRC_TRIGGERING_MSG*/
|
{flexran_agent_rrc_reconfiguration, 0, 0}, /*PROTOCOL__FLEXRAN_MESSAGE__MSG_RRC_TRIGGERING_MSG*/
|
||||||
};
|
};
|
||||||
|
|
||||||
flexran_agent_message_destruction_callback message_destruction_callback[] = {
|
flexran_agent_message_destruction_callback message_destruction_callback[] = {
|
||||||
|
|||||||
Reference in New Issue
Block a user