Starting to handle UE capability info indication

master
Pedro Alvarez 7 years ago
parent f7348e8ddf
commit ecb846717c

@ -44,6 +44,7 @@
#include "mme/s1ap_mngmt_proc.h"
#include "mme/s1ap_nas_transport.h"
#include "mme/s1ap_ctx_mngmt_proc.h"
#include "mme/s1ap_ue_cap_info.h"
#include "mme/mme_gtpc.h"
#include "hss/hss.h"
@ -102,6 +103,7 @@ public:
s1ap_mngmt_proc* m_s1ap_mngmt_proc;
s1ap_nas_transport* m_s1ap_nas_transport;
s1ap_ctx_mngmt_proc* m_s1ap_ctx_mngmt_proc;
s1ap_ue_cap_info* m_s1ap_ue_cap_info;
std::map<uint32_t, uint64_t> m_tmsi_to_imsi;

@ -0,0 +1,60 @@
/**
*
* \section COPYRIGHT
*
* Copyright 2013-2017 Software Radio Systems Limited
*
* \section LICENSE
*
* This file is part of srsLTE.
*
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* A copy of the GNU Affero General Public License can be found in
* the LICENSE file in the top-level directory of this distribution
* and at http://www.gnu.org/licenses/.
*
*/
#ifndef S1AP_UE_CAP_INFO_H
#define S1AP_UE_CAP_INFO_H
#include "srslte/asn1/liblte_s1ap.h"
#include "srslte/common/common.h"
#include "mme/s1ap_common.h"
#include "srslte/common/log_filter.h"
namespace srsepc{
class s1ap;
class s1ap_ue_cap_info
{
public:
static s1ap_ue_cap_info *m_instance;
static s1ap_ue_cap_info* get_instance(void);
static void cleanup(void);
void init(void);
bool handle_ue_capability_info_indication(LIBLTE_S1AP_MESSAGE_UECAPABILITYINFOINDICATION_STRUCT *msg, sctp_sndrcvinfo *enb_sri, srslte::byte_buffer_t *reply_buffer, bool *reply_flag);
private:
s1ap_ue_cap_info();
virtual ~s1ap_ue_cap_info();
s1ap* m_s1ap;
srslte::log_filter *m_s1ap_log;
};
} //namespace srsepc
#endif //S1AP_MNGMT_PROC

@ -249,6 +249,10 @@ s1ap::handle_initiating_message(LIBLTE_S1AP_INITIATINGMESSAGE_STRUCT *msg, stru
m_s1ap_log->info("Received UE Context Release Request Message.\n");
m_s1ap_ctx_mngmt_proc->handle_ue_context_release_request(&msg->choice.UEContextReleaseRequest, enb_sri, reply_buffer, &reply_flag);
break;
case LIBLTE_S1AP_PROC_ID_UECAPABILITYINFOINDICATION:
m_s1ap_log->info("Received UE Context Release Request Message.\n");
m_s1ap_ue_cap_info->handle_ue_capability_info_indication(&msg->choice.UECapabilityInfoIndication, enb_sri, reply_buffer, &reply_flag);
break;
default:
m_s1ap_log->error("Unhandled S1AP intiating message: %s\n", liblte_s1ap_initiatingmessage_choice_text[msg->choice_type]);
m_s1ap_log->console("Unhandled S1APintiating message: %s\n", liblte_s1ap_initiatingmessage_choice_text[msg->choice_type]);

@ -0,0 +1,77 @@
/**
*
* \section COPYRIGHT
*
* Copyright 2013-2017 Software Radio Systems Limited
*
* \section LICENSE
*
* This file is part of srsLTE.
*
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* A copy of the GNU Affero General Public License can be found in
* the LICENSE file in the top-level directory of this distribution
* and at http://www.gnu.org/licenses/.
*
*/
#include "mme/s1ap.h"
#include "mme/s1ap_ue_cap_info.h"
namespace srsepc{
s1ap_ue_cap_info* s1ap_ue_cap_info::m_instance = NULL;
boost::mutex s1ap_ue_cap_info_instance_mutex;
s1ap_ue_cap_info::s1ap_ue_cap_info()
{
}
s1ap_ue_cap_info::~s1ap_ue_cap_info()
{
}
s1ap_ue_cap_info*
s1ap_ue_cap_info::get_instance(void)
{
boost::mutex::scoped_lock lock(s1ap_ue_cap_info_instance_mutex);
if(NULL == m_instance) {
m_instance = new s1ap_ue_cap_info();
}
return(m_instance);
}
void
s1ap_ue_cap_info::cleanup(void)
{
boost::mutex::scoped_lock lock(s1ap_ue_cap_info_instance_mutex);
if(NULL != m_instance) {
delete m_instance;
m_instance = NULL;
}
}
void
s1ap_ue_cap_info::init(void)
{
m_s1ap = s1ap::get_instance();
m_s1ap_log = m_s1ap->m_s1ap_log;
}
bool
s1ap_ue_cap_info::handle_ue_capability_info_indication(LIBLTE_S1AP_MESSAGE_UECAPABILITYINFOINDICATION_STRUCT *msg, struct sctp_sndrcvinfo *enb_sri, srslte::byte_buffer_t *reply_buffer, bool *reply_flag)
{
m_s1ap_log->info("UE Capability Info Indication\n");
return true;
}
} //namespace srsepc
Loading…
Cancel
Save