|
|
|
@@ -37,20 +37,27 @@ void mRAL_rx_rrc_ral_system_information_indication(instance_t instanceP, Message
|
|
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
{
|
|
|
|
|
MIH_C_LINK_DET_INFO_T link_det_info;
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
memset(&link_det_info, 0, sizeof(MIH_C_LINK_DET_INFO_T));
|
|
|
|
|
// link id
|
|
|
|
|
link_det_info.link_tuple_id.link_id.link_type = MIH_C_WIRELESS_LTE;
|
|
|
|
|
link_det_info.link_tuple_id.link_id.link_addr.choice = MIH_C_CHOICE_3GPP_3G_CELL_ID;
|
|
|
|
|
|
|
|
|
|
link_det_info.link_tuple_id.choice = MIH_C_LINK_TUPLE_ID_CHOICE_LINK_ADDR;
|
|
|
|
|
|
|
|
|
|
// save cell parameters
|
|
|
|
|
g_ue_ral_obj[instanceP].cell_id = RRC_RAL_SYSTEM_INFORMATION_IND(msg_p).cell_id;
|
|
|
|
|
memcpy(&g_ue_ral_obj[instanceP].plmn_id, &RRC_RAL_SYSTEM_INFORMATION_IND(msg_p).plmn_id, sizeof(g_ue_ral_obj[instanceP].plmn_id));
|
|
|
|
|
|
|
|
|
|
// preserve byte order of plmn id
|
|
|
|
|
memcpy(link_det_info.link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val, &RRC_RAL_SYSTEM_INFORMATION_IND(msg_p).plmn_id, 3);
|
|
|
|
|
|
|
|
|
|
link_det_info.link_tuple_id.link_id.link_addr.choice = MIH_C_CHOICE_3GPP_3G_CELL_ID;
|
|
|
|
|
link_det_info.link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.cell_id = RRC_RAL_SYSTEM_INFORMATION_IND(msg_p).cell_id;
|
|
|
|
|
|
|
|
|
|
LOG_D(RAL_UE, "PLMN ID %d.%d.%d\n", link_det_info.link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val[0],
|
|
|
|
|
link_det_info.link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val[1],
|
|
|
|
|
link_det_info.link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val[2]);
|
|
|
|
|
LOG_D(RAL_UE, "CELL ID %d\n", link_det_info.link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.cell_id);
|
|
|
|
|
|
|
|
|
|
MIH_C_NETWORK_ID_set(&link_det_info.network_id, (u_int8_t *)PREDEFINED_MIH_NETWORK_ID, strlen(PREDEFINED_MIH_NETWORK_ID));
|
|
|
|
|
|
|
|
|
@@ -82,9 +89,25 @@ void mRAL_rx_rrc_ral_connection_establishment_indication(instance_t instanceP, M
|
|
|
|
|
uint64_t ue_id; //EUI-64
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
memset(&link_tuple_id, 0, sizeof(MIH_C_LINK_TUPLE_ID_T));
|
|
|
|
|
// The LINK_ID contains the MN LINK_ADDR
|
|
|
|
|
link_tuple_id.link_id.link_type = MIH_C_WIRELESS_LTE;
|
|
|
|
|
link_tuple_id.link_id.link_addr.choice = MIH_C_CHOICE_3GPP_ADDR;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TEST
|
|
|
|
|
link_tuple_id.link_id.link_type = MIH_C_WIRELESS_LTE;
|
|
|
|
|
link_tuple_id.link_id.link_addr.choice = MIH_C_CHOICE_3GPP_3G_CELL_ID;
|
|
|
|
|
link_tuple_id.choice = MIH_C_LINK_TUPLE_ID_CHOICE_LINK_ADDR;
|
|
|
|
|
// preserve byte order of plmn id
|
|
|
|
|
memcpy(link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val, &g_ue_ral_obj[instanceP].plmn_id, 3);
|
|
|
|
|
link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.cell_id = g_ue_ral_obj[instanceP].cell_id;
|
|
|
|
|
// TEST END
|
|
|
|
|
|
|
|
|
|
LOG_D(RAL_UE, "PLMN ID %d.%d.%d\n", link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val[0],
|
|
|
|
|
link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val[1],
|
|
|
|
|
link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val[2]);
|
|
|
|
|
LOG_D(RAL_UE, "CELL ID %d\n", link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.cell_id);
|
|
|
|
|
/*link_tuple_id.link_id.link_addr.choice = MIH_C_CHOICE_3GPP_ADDR;
|
|
|
|
|
memset(ue_id_array, 0, MIH_C_3GPP_ADDR_LENGTH);
|
|
|
|
|
#warning "TO DO FIX UE_ID TYPE in rrc_ral_connection_establishment_ind_t"
|
|
|
|
|
ue_id = (uint64_t)RRC_RAL_CONNECTION_ESTABLISHMENT_IND(msg_p).ue_id;
|
|
|
|
@@ -97,6 +120,7 @@ void mRAL_rx_rrc_ral_connection_establishment_indication(instance_t instanceP, M
|
|
|
|
|
|
|
|
|
|
//The optional LINK_ADDR may contains a link address of PoA.
|
|
|
|
|
link_tuple_id.choice = MIH_C_LINK_TUPLE_ID_CHOICE_NULL;
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
mRAL_send_link_up_indication(instanceP, &g_ue_ral_obj[instanceP].transaction_id,
|
|
|
|
|
&link_tuple_id,
|
|
|
|
@@ -118,7 +142,21 @@ void mRAL_rx_rrc_ral_connection_reestablishment_indication(instance_t instanceP,
|
|
|
|
|
uint64_t ue_id; //EUI-64
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
// The LINK_ID contains the MN LINK_ADDR
|
|
|
|
|
memset(&link_tuple_id, 0, sizeof(MIH_C_LINK_TUPLE_ID_T));
|
|
|
|
|
link_tuple_id.link_id.link_type = MIH_C_WIRELESS_LTE;
|
|
|
|
|
link_tuple_id.link_id.link_addr.choice = MIH_C_CHOICE_3GPP_3G_CELL_ID;
|
|
|
|
|
link_tuple_id.choice = MIH_C_LINK_TUPLE_ID_CHOICE_LINK_ADDR;
|
|
|
|
|
// preserve byte order of plmn id
|
|
|
|
|
memcpy(link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val, &g_ue_ral_obj[instanceP].plmn_id, 3);
|
|
|
|
|
link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.cell_id = g_ue_ral_obj[instanceP].cell_id;
|
|
|
|
|
// TEST END
|
|
|
|
|
|
|
|
|
|
LOG_D(RAL_UE, "PLMN ID %d.%d.%d\n", link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val[0],
|
|
|
|
|
link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val[1],
|
|
|
|
|
link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val[2]);
|
|
|
|
|
LOG_D(RAL_UE, "CELL ID %d\n", link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.cell_id);
|
|
|
|
|
|
|
|
|
|
/* // The LINK_ID contains the MN LINK_ADDR
|
|
|
|
|
link_tuple_id.link_id.link_type = MIH_C_WIRELESS_LTE;
|
|
|
|
|
link_tuple_id.link_id.link_addr.choice = MIH_C_CHOICE_3GPP_ADDR;
|
|
|
|
|
memset(ue_id_array, 0, MIH_C_3GPP_ADDR_LENGTH);
|
|
|
|
@@ -133,7 +171,7 @@ void mRAL_rx_rrc_ral_connection_reestablishment_indication(instance_t instanceP,
|
|
|
|
|
|
|
|
|
|
//The optional LINK_ADDR may contains a link address of PoA.
|
|
|
|
|
link_tuple_id.choice = MIH_C_LINK_TUPLE_ID_CHOICE_NULL;
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
LOG_D(RAL_UE, "RRC_RAL_CONNECTION_ESTABLISHMENT_IND num srb %d num drb %d\n", RRC_RAL_CONNECTION_REESTABLISHMENT_IND(msg_p).num_srb,RRC_RAL_CONNECTION_REESTABLISHMENT_IND(msg_p).num_drb);
|
|
|
|
|
if ((RRC_RAL_CONNECTION_REESTABLISHMENT_IND(msg_p).num_drb > 0) && (RRC_RAL_CONNECTION_REESTABLISHMENT_IND(msg_p).num_srb > 0)) {
|
|
|
|
|
mRAL_send_link_up_indication(instanceP, &g_ue_ral_obj[instanceP].transaction_id,
|
|
|
|
@@ -155,7 +193,63 @@ void mRAL_rx_rrc_ral_connection_reestablishment_indication(instance_t instanceP,
|
|
|
|
|
void mRAL_rx_rrc_ral_connection_reconfiguration_indication(instance_t instanceP, MessageDef *msg_p)
|
|
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
{
|
|
|
|
|
MIH_C_LINK_TUPLE_ID_T link_tuple_id;
|
|
|
|
|
uint8_t ue_id_array[MIH_C_3GPP_ADDR_LENGTH];
|
|
|
|
|
uint8_t mn_link_addr[MIH_C_3GPP_ADDR_LENGTH];
|
|
|
|
|
uint64_t ue_id; //EUI-64
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
memset(&link_tuple_id, 0, sizeof(MIH_C_LINK_TUPLE_ID_T));
|
|
|
|
|
link_tuple_id.link_id.link_type = MIH_C_WIRELESS_LTE;
|
|
|
|
|
link_tuple_id.link_id.link_addr.choice = MIH_C_CHOICE_3GPP_3G_CELL_ID;
|
|
|
|
|
link_tuple_id.choice = MIH_C_LINK_TUPLE_ID_CHOICE_LINK_ADDR;
|
|
|
|
|
// preserve byte order of plmn id
|
|
|
|
|
memcpy(link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val, &g_ue_ral_obj[instanceP].plmn_id, 3);
|
|
|
|
|
link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.cell_id = g_ue_ral_obj[instanceP].cell_id;
|
|
|
|
|
// TEST END
|
|
|
|
|
|
|
|
|
|
LOG_D(RAL_UE, "PLMN ID %d.%d.%d\n", link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val[0],
|
|
|
|
|
link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val[1],
|
|
|
|
|
link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.plmn_id.val[2]);
|
|
|
|
|
LOG_D(RAL_UE, "CELL ID %d\n", link_tuple_id.link_id.link_addr._union._3gpp_3g_cell_id.cell_id);
|
|
|
|
|
/*
|
|
|
|
|
// The LINK_ID contains the MN LINK_ADDR
|
|
|
|
|
link_tuple_id.link_id.link_type = MIH_C_WIRELESS_LTE;
|
|
|
|
|
link_tuple_id.link_id.link_addr.choice = MIH_C_CHOICE_3GPP_ADDR;
|
|
|
|
|
memset(ue_id_array, 0, MIH_C_3GPP_ADDR_LENGTH);
|
|
|
|
|
#warning "TO DO FIX UE_ID TYPE in rrc_ral_connection_establishment_ind_t"
|
|
|
|
|
ue_id = (uint64_t)RRC_RAL_CONNECTION_ESTABLISHMENT_IND(msg_p).ue_id;
|
|
|
|
|
for (i = 0; i < MIH_C_3GPP_ADDR_LENGTH; i++) {
|
|
|
|
|
ue_id_array[MIH_C_3GPP_ADDR_LENGTH-1-i] = (ue_id & 0x00000000000000FF);
|
|
|
|
|
ue_id = ue_id >> 8;
|
|
|
|
|
}
|
|
|
|
|
ueid2eui48(mn_link_addr, ue_id_array);
|
|
|
|
|
MIH_C_3GPP_ADDR_set(&(link_tuple_id.link_id.link_addr._union._3gpp_addr), NULL, 8);
|
|
|
|
|
|
|
|
|
|
//The optional LINK_ADDR may contains a link address of PoA.
|
|
|
|
|
link_tuple_id.choice = MIH_C_LINK_TUPLE_ID_CHOICE_NULL;
|
|
|
|
|
*/
|
|
|
|
|
LOG_D(RAL_UE, "RRC_RAL_CONNECTION_RECONFIGURATION_IND num srb %d num drb %d\n",
|
|
|
|
|
RRC_RAL_CONNECTION_RECONFIGURATION_IND(msg_p).num_srb,
|
|
|
|
|
RRC_RAL_CONNECTION_RECONFIGURATION_IND(msg_p).num_drb);
|
|
|
|
|
|
|
|
|
|
if ((RRC_RAL_CONNECTION_RECONFIGURATION_IND(msg_p).num_drb > 0) &&
|
|
|
|
|
(RRC_RAL_CONNECTION_RECONFIGURATION_IND(msg_p).num_srb > 0)) {
|
|
|
|
|
mRAL_send_link_up_indication(instanceP, &g_ue_ral_obj[instanceP].transaction_id,
|
|
|
|
|
&link_tuple_id,
|
|
|
|
|
NULL, //MIH_C_LINK_ADDR_T *old_arP,(Optional) Old Access Router link address.
|
|
|
|
|
NULL, //MIH_C_LINK_ADDR_T *new_arP,(Optional) New Access Router link address.
|
|
|
|
|
NULL, //MIH_C_IP_RENEWAL_FLAG_T *flagP, (Optional) Indicates whether the MN needs to change IP Address in the new PoA.
|
|
|
|
|
NULL); //MIH_C_IP_MOB_MGMT_T *mobil_mngtP, (Optional) Indicates the type of Mobility Management Protocol supported by the new PoA.
|
|
|
|
|
} else {
|
|
|
|
|
MIH_C_LINK_DN_REASON_T reason_code = MIH_C_LINK_DOWN_REASON_EXPLICIT_DISCONNECT;
|
|
|
|
|
|
|
|
|
|
mRAL_send_link_down_indication(instanceP, &g_ue_ral_obj[instanceP].transaction_id,
|
|
|
|
|
&link_tuple_id,
|
|
|
|
|
NULL,
|
|
|
|
|
&reason_code);
|
|
|
|
|
}
|
|
|
|
|
g_ue_ral_obj[instanceP].transaction_id ++;
|
|
|
|
|
}
|
|
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
void mRAL_rx_rrc_ral_connection_release_indication(instance_t instanceP, MessageDef *msg_p)
|
|
|
|
|