mirror of https://github.com/PentHertz/srsLTE.git
Merge branch 'est_cause' into next
This commit is contained in:
commit
90bdb730ee
|
@ -274,8 +274,8 @@ public:
|
|||
class s1ap_interface_rrc
|
||||
{
|
||||
public:
|
||||
virtual void initial_ue(uint16_t rnti, srslte::byte_buffer_t *pdu) = 0;
|
||||
virtual void initial_ue(uint16_t rnti, srslte::byte_buffer_t *pdu, uint32_t m_tmsi, uint8_t mmec) = 0;
|
||||
virtual void initial_ue(uint16_t rnti, LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM cause, srslte::byte_buffer_t *pdu) = 0;
|
||||
virtual void initial_ue(uint16_t rnti, LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM cause, srslte::byte_buffer_t *pdu, uint32_t m_tmsi, uint8_t mmec) = 0;
|
||||
virtual void write_pdu(uint16_t rnti, srslte::byte_buffer_t *pdu) = 0;
|
||||
virtual bool user_exists(uint16_t rnti) = 0;
|
||||
virtual bool user_release(uint16_t rnti, LIBLTE_S1AP_CAUSERADIONETWORK_ENUM cause_radio) = 0;
|
||||
|
|
|
@ -251,6 +251,8 @@ public:
|
|||
|
||||
struct timeval t_last_activity;
|
||||
|
||||
LIBLTE_RRC_CON_REQ_EST_CAUSE_ENUM establishment_cause;
|
||||
|
||||
// S-TMSI for this UE
|
||||
bool has_tmsi;
|
||||
uint32_t m_tmsi;
|
||||
|
|
|
@ -72,8 +72,8 @@ public:
|
|||
void run_thread();
|
||||
|
||||
// RRC interface
|
||||
void initial_ue(uint16_t rnti, srslte::byte_buffer_t *pdu);
|
||||
void initial_ue(uint16_t rnti, srslte::byte_buffer_t *pdu, uint32_t m_tmsi, uint8_t mmec);
|
||||
void initial_ue(uint16_t rnti, LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM cause, srslte::byte_buffer_t *pdu);
|
||||
void initial_ue(uint16_t rnti, LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM cause, srslte::byte_buffer_t *pdu, uint32_t m_tmsi, uint8_t mmec);
|
||||
void write_pdu(uint16_t rnti, srslte::byte_buffer_t *pdu);
|
||||
bool user_exists(uint16_t rnti);
|
||||
bool user_release(uint16_t rnti, LIBLTE_S1AP_CAUSERADIONETWORK_ENUM cause_radio);
|
||||
|
@ -128,7 +128,7 @@ private:
|
|||
bool handle_s1setupfailure(LIBLTE_S1AP_MESSAGE_S1SETUPFAILURE_STRUCT *msg);
|
||||
bool handle_erabsetuprequest(LIBLTE_S1AP_MESSAGE_E_RABSETUPREQUEST_STRUCT *msg);
|
||||
|
||||
bool send_initialuemessage(uint16_t rnti, srslte::byte_buffer_t *pdu, bool has_tmsi, uint32_t m_tmsi=0, uint8_t mmec=0);
|
||||
bool send_initialuemessage(uint16_t rnti, LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM cause, srslte::byte_buffer_t *pdu, bool has_tmsi, uint32_t m_tmsi=0, uint8_t mmec=0);
|
||||
bool send_ulnastransport(uint16_t rnti, srslte::byte_buffer_t *pdu);
|
||||
bool send_uectxtreleaserequest(uint16_t rnti, LIBLTE_S1AP_CAUSE_STRUCT *cause);
|
||||
bool send_uectxtreleasecomplete(uint16_t rnti, uint32_t mme_ue_id, uint32_t enb_ue_id);
|
||||
|
|
|
@ -1043,6 +1043,7 @@ void rrc::ue::handle_rrc_con_req(LIBLTE_RRC_CONNECTION_REQUEST_STRUCT *msg)
|
|||
m_tmsi = msg->ue_id.s_tmsi.m_tmsi;
|
||||
has_tmsi = true;
|
||||
}
|
||||
establishment_cause = msg->cause;
|
||||
send_connection_setup();
|
||||
state = RRC_STATE_WAIT_FOR_CON_SETUP_COMPLETE;
|
||||
}
|
||||
|
@ -1069,9 +1070,9 @@ void rrc::ue::handle_rrc_con_setup_complete(LIBLTE_RRC_CONNECTION_SETUP_COMPLETE
|
|||
parent->mac->phy_config_enabled(rnti, true);
|
||||
|
||||
if(has_tmsi) {
|
||||
parent->s1ap->initial_ue(rnti, pdu, m_tmsi, mmec);
|
||||
parent->s1ap->initial_ue(rnti, (LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM)establishment_cause, pdu, m_tmsi, mmec);
|
||||
} else {
|
||||
parent->s1ap->initial_ue(rnti, pdu);
|
||||
parent->s1ap->initial_ue(rnti, (LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM)establishment_cause, pdu);
|
||||
}
|
||||
state = RRC_STATE_WAIT_FOR_CON_RECONF_COMPLETE;
|
||||
}
|
||||
|
|
|
@ -174,22 +174,22 @@ void s1ap::build_tai_cgi()
|
|||
/*******************************************************************************
|
||||
/* RRC interface
|
||||
********************************************************************************/
|
||||
void s1ap::initial_ue(uint16_t rnti, srslte::byte_buffer_t *pdu)
|
||||
void s1ap::initial_ue(uint16_t rnti, LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM cause, srslte::byte_buffer_t *pdu)
|
||||
{
|
||||
ue_ctxt_map[rnti].eNB_UE_S1AP_ID = next_eNB_UE_S1AP_ID++;
|
||||
ue_ctxt_map[rnti].stream_id = 1;
|
||||
ue_ctxt_map[rnti].release_requested = false;
|
||||
enbid_to_rnti_map[ue_ctxt_map[rnti].eNB_UE_S1AP_ID] = rnti;
|
||||
send_initialuemessage(rnti, pdu, false);
|
||||
send_initialuemessage(rnti, cause, pdu, false);
|
||||
}
|
||||
|
||||
void s1ap::initial_ue(uint16_t rnti, srslte::byte_buffer_t *pdu, uint32_t m_tmsi, uint8_t mmec)
|
||||
void s1ap::initial_ue(uint16_t rnti, LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM cause, srslte::byte_buffer_t *pdu, uint32_t m_tmsi, uint8_t mmec)
|
||||
{
|
||||
ue_ctxt_map[rnti].eNB_UE_S1AP_ID = next_eNB_UE_S1AP_ID++;
|
||||
ue_ctxt_map[rnti].stream_id = 1;
|
||||
ue_ctxt_map[rnti].release_requested = false;
|
||||
enbid_to_rnti_map[ue_ctxt_map[rnti].eNB_UE_S1AP_ID] = rnti;
|
||||
send_initialuemessage(rnti, pdu, true, m_tmsi, mmec);
|
||||
send_initialuemessage(rnti, cause, pdu, true, m_tmsi, mmec);
|
||||
}
|
||||
|
||||
void s1ap::write_pdu(uint16_t rnti, srslte::byte_buffer_t *pdu)
|
||||
|
@ -609,7 +609,7 @@ bool s1ap::handle_s1setupfailure(LIBLTE_S1AP_MESSAGE_S1SETUPFAILURE_STRUCT *msg)
|
|||
/* S1AP message senders
|
||||
********************************************************************************/
|
||||
|
||||
bool s1ap::send_initialuemessage(uint16_t rnti, srslte::byte_buffer_t *pdu, bool has_tmsi, uint32_t m_tmsi, uint8_t mmec)
|
||||
bool s1ap::send_initialuemessage(uint16_t rnti, LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM cause, srslte::byte_buffer_t *pdu, bool has_tmsi, uint32_t m_tmsi, uint8_t mmec)
|
||||
{
|
||||
if(!mme_connected) {
|
||||
return false;
|
||||
|
@ -662,7 +662,7 @@ bool s1ap::send_initialuemessage(uint16_t rnti, srslte::byte_buffer_t *pdu, bool
|
|||
|
||||
// RRC Establishment Cause
|
||||
initue->RRC_Establishment_Cause.ext = false;
|
||||
initue->RRC_Establishment_Cause.e = LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_MO_SIGNALLING;
|
||||
initue->RRC_Establishment_Cause.e = cause;
|
||||
|
||||
liblte_s1ap_pack_s1ap_pdu(&tx_pdu, (LIBLTE_BYTE_MSG_STRUCT*)&msg);
|
||||
s1ap_log->info_hex(msg.msg, msg.N_bytes, "Sending InitialUEMessage for RNTI:0x%x", rnti);
|
||||
|
|
Loading…
Reference in New Issue