MME2 changes - Propped commits from openmme/paging branch. Added scripts
for code gen
Change-Id: Ie55032217232214ac8544ca76ea34335205329e4
diff --git a/src/mme-app/contextManager/bearerContextManager.cpp b/src/mme-app/contextManager/bearerContextManager.cpp
new file mode 100644
index 0000000..72fd2cf
--- /dev/null
+++ b/src/mme-app/contextManager/bearerContextManager.cpp
@@ -0,0 +1,52 @@
+ /*
+ * Copyright 2019-present Infosys Limited
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+/******************************************************************************
+ * bearerContextManager.cpp
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.cpp.tt>
+ ******************************************************************************/
+
+#include "memPoolManager.h"
+#include "contextManager/dataBlocks.h"
+#include "contextManager/bearerContextManager.h"
+
+using namespace cmn::memPool;
+
+namespace mme
+{
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ BearerContextManager::BearerContextManager(int numOfBlocks): poolManager_m(numOfBlocks)
+ {
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ BearerContextManager::~BearerContextManager()
+ {
+ }
+
+ /******************************************************************************
+ * allocate BearerContext data block
+ ******************************************************************************/
+ BearerContext* BearerContextManager::allocateBearerContext()
+ {
+ BearerContext* BearerContext_p = poolManager_m.allocate();
+ return BearerContext_p;
+ }
+
+ /******************************************************************************
+ * Deallocate a BearerContext data block
+ ******************************************************************************/
+ void BearerContextManager::deallocateBearerContext(BearerContext* BearerContextp )
+ {
+ poolManager_m.free( BearerContextp );
+ }
+}
diff --git a/src/mme-app/contextManager/dataBlocks.cpp b/src/mme-app/contextManager/dataBlocks.cpp
new file mode 100644
index 0000000..4134d7f
--- /dev/null
+++ b/src/mme-app/contextManager/dataBlocks.cpp
@@ -0,0 +1,970 @@
+/*
+ * Copyright 2019-present Infosys Limited
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/**************************************
+*
+* This is an auto generated file.
+* Please do not edit this file.
+* All edits to be made through template source file
+* <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/dataBlock.cpp.tt>
+***************************************/
+#include "contextManager/dataBlocks.h"
+
+namespace mme
+{
+ /******************************************************************************
+ *******************************************************************************
+ * UEContext
+ *******************************************************************************
+ ******************************************************************************/
+
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ UEContext::UEContext(): enbFd_m(0), s1apEnbUeId_m(0), subscriptionStatus_m(0),
+ netAccessMode_m(0), contextID_m(0), rauTauTimer_m(0),
+ accessRestrictionData_m(0), imsi_m(), msisdn_m(),
+ dwnLnkSeqNo_m(0), upLnkSeqNo_m(0), ueState_m(InvalidState),
+ tai_m(), utranCgi_m(), msNetCapab_m(), ueNetCapab_m(),
+ ueSecInfo_m(), ambr_m(), aiaSecInfo_m(),
+ mTmsi_m(0), MmContext_mp(NULL), SessionContext_mp(NULL)
+ {
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ UEContext::~UEContext()
+ {
+ }
+
+ /******************************************************************************
+ * sets enbFd
+ ******************************************************************************/
+ void UEContext::setEnbFd( int enbFd_i )
+ {
+ enbFd_m = enbFd_i;
+ }
+
+ /******************************************************************************
+ * returns enbFd
+ ******************************************************************************/
+ int UEContext::getEnbFd()
+ {
+ return enbFd_m;
+ }
+ /******************************************************************************
+ * sets s1apEnbUeId
+ ******************************************************************************/
+ void UEContext::setS1apEnbUeId( int s1apEnbUeId_i )
+ {
+ s1apEnbUeId_m = s1apEnbUeId_i;
+ }
+
+ /******************************************************************************
+ * returns s1apEnbUeId
+ ******************************************************************************/
+ int UEContext::getS1apEnbUeId()
+ {
+ return s1apEnbUeId_m;
+ }
+ /******************************************************************************
+ * sets subscriptionStatus
+ ******************************************************************************/
+ void UEContext::setSubscriptionStatus( int subscriptionStatus_i )
+ {
+ subscriptionStatus_m = subscriptionStatus_i;
+ }
+
+ /******************************************************************************
+ * returns subscriptionStatus
+ ******************************************************************************/
+ int UEContext::getSubscriptionStatus()
+ {
+ return subscriptionStatus_m;
+ }
+ /******************************************************************************
+ * sets netAccessMode
+ ******************************************************************************/
+ void UEContext::setNetAccessMode( int netAccessMode_i )
+ {
+ netAccessMode_m = netAccessMode_i;
+ }
+
+ /******************************************************************************
+ * returns netAccessMode
+ ******************************************************************************/
+ int UEContext::getNetAccessMode()
+ {
+ return netAccessMode_m;
+ }
+ /******************************************************************************
+ * sets contextID
+ ******************************************************************************/
+ void UEContext::setContextID( uint32_t contextID_i )
+ {
+ contextID_m = contextID_i;
+ }
+
+ /******************************************************************************
+ * returns contextID
+ ******************************************************************************/
+ uint32_t UEContext::getContextID()
+ {
+ return contextID_m;
+ }
+ /******************************************************************************
+ * sets rauTauTimer
+ ******************************************************************************/
+ void UEContext::setRauTauTimer( unsigned int rauTauTimer_i )
+ {
+ rauTauTimer_m = rauTauTimer_i;
+ }
+
+ /******************************************************************************
+ * returns rauTauTimer
+ ******************************************************************************/
+ unsigned int UEContext::getRauTauTimer()
+ {
+ return rauTauTimer_m;
+ }
+ /******************************************************************************
+ * sets accessRestrictionData
+ ******************************************************************************/
+ void UEContext::setAccessRestrictionData( unsigned int accessRestrictionData_i )
+ {
+ accessRestrictionData_m = accessRestrictionData_i;
+ }
+
+ /******************************************************************************
+ * returns accessRestrictionData
+ ******************************************************************************/
+ unsigned int UEContext::getAccessRestrictionData()
+ {
+ return accessRestrictionData_m;
+ }
+ /******************************************************************************
+ * sets imsi
+ ******************************************************************************/
+ void UEContext::setImsi( const DigitRegister15& imsi_i )
+ {
+ imsi_m = imsi_i;
+ }
+
+ /******************************************************************************
+ * returns imsi
+ ******************************************************************************/
+ const DigitRegister15& UEContext::getImsi()const
+ {
+ return imsi_m;
+ }
+ /******************************************************************************
+ * sets msisdn
+ ******************************************************************************/
+ void UEContext::setMsisdn( const DigitRegister15& msisdn_i )
+ {
+ msisdn_m = msisdn_i;
+ }
+
+ /******************************************************************************
+ * returns msisdn
+ ******************************************************************************/
+ const DigitRegister15& UEContext::getMsisdn()const
+ {
+ return msisdn_m;
+ }
+ /******************************************************************************
+ * sets dwnLnkSeqNo
+ ******************************************************************************/
+ void UEContext::setDwnLnkSeqNo( unsigned short dwnLnkSeqNo_i )
+ {
+ dwnLnkSeqNo_m = dwnLnkSeqNo_i;
+ }
+
+ /******************************************************************************
+ * returns dwnLnkSeqNo
+ ******************************************************************************/
+ unsigned short UEContext::getDwnLnkSeqNo()
+ {
+ return dwnLnkSeqNo_m;
+ }
+ /******************************************************************************
+ * sets upLnkSeqNo
+ ******************************************************************************/
+ void UEContext::setUpLnkSeqNo( unsigned short upLnkSeqNo_i )
+ {
+ upLnkSeqNo_m = upLnkSeqNo_i;
+ }
+
+ /******************************************************************************
+ * returns upLnkSeqNo
+ ******************************************************************************/
+ unsigned short UEContext::getUpLnkSeqNo()
+ {
+ return upLnkSeqNo_m;
+ }
+
+ /******************************************************************************
+ * sets ueState
+ ******************************************************************************/
+ void UEContext::setUeState( UE_State_e ueState_i )
+ {
+ ueState_m = ueState_i;
+ }
+
+ /******************************************************************************
+ * returns ueState
+ ******************************************************************************/
+ UE_State_e UEContext::getUeState()
+ {
+ return ueState_m;
+ }
+ /******************************************************************************
+ * sets tai
+ ******************************************************************************/
+ void UEContext::setTai( const Tai& tai_i )
+ {
+ tai_m = tai_i;
+ }
+
+ /******************************************************************************
+ * returns tai
+ ******************************************************************************/
+ const Tai& UEContext::getTai()const
+ {
+ return tai_m;
+ }
+ /******************************************************************************
+ * sets utranCgi
+ ******************************************************************************/
+ void UEContext::setUtranCgi( const Cgi& utranCgi_i )
+ {
+ utranCgi_m = utranCgi_i;
+ }
+
+ /******************************************************************************
+ * returns utranCgi
+ ******************************************************************************/
+ const Cgi& UEContext::getUtranCgi()const
+ {
+ return utranCgi_m;
+ }
+ /******************************************************************************
+ * sets msNetCapab
+ ******************************************************************************/
+ void UEContext::setMsNetCapab( const Ms_net_capab& msNetCapab_i )
+ {
+ msNetCapab_m = msNetCapab_i;
+ }
+
+ /******************************************************************************
+ * returns msNetCapab
+ ******************************************************************************/
+ const Ms_net_capab& UEContext::getMsNetCapab()const
+ {
+ return msNetCapab_m;
+ }
+ /******************************************************************************
+ * sets ueNetCapab
+ ******************************************************************************/
+ void UEContext::setUeNetCapab( const Ue_net_capab& ueNetCapab_i )
+ {
+ ueNetCapab_m = ueNetCapab_i;
+ }
+
+ /******************************************************************************
+ * returns ueNetCapab
+ ******************************************************************************/
+ const Ue_net_capab& UEContext::getUeNetCapab()const
+ {
+ return ueNetCapab_m;
+ }
+ /******************************************************************************
+ * sets ueSecInfo
+ ******************************************************************************/
+ void UEContext::setUeSecInfo( const Secinfo& ueSecInfo_i )
+ {
+ ueSecInfo_m = ueSecInfo_i;
+ }
+
+ /******************************************************************************
+ * returns ueSecInfo
+ ******************************************************************************/
+ const Secinfo& UEContext::getUeSecInfo()const
+ {
+ return ueSecInfo_m;
+ }
+ /******************************************************************************
+ * sets ambr
+ ******************************************************************************/
+ void UEContext::setAmbr( const Ambr& ambr_i )
+ {
+ ambr_m = ambr_i;
+ }
+
+ /******************************************************************************
+ * returns ambr
+ ******************************************************************************/
+ const Ambr& UEContext::getAmbr()const
+ {
+ return ambr_m;
+ }
+ /******************************************************************************
+ * sets aiaSecInfo
+ ******************************************************************************/
+ void UEContext::setAiaSecInfo( const E_utran_sec_vector& aiaSecInfo_i )
+ {
+ aiaSecInfo_m = aiaSecInfo_i;
+ }
+
+ /******************************************************************************
+ * returns aiaSecInfo
+ ******************************************************************************/
+ const E_utran_sec_vector& UEContext::getAiaSecInfo()const
+ {
+ return aiaSecInfo_m;
+ }
+
+ /******************************************************************************
+ * sets mTmsi
+ ******************************************************************************/
+ void UEContext::setMtmsi( uint32_t mTmsi_i )
+ {
+ mTmsi_m = mTmsi_i;
+ }
+
+ /******************************************************************************
+ * returns ambr
+ ******************************************************************************/
+ uint32_t UEContext::getMtmsi()
+ {
+ return mTmsi_m;
+ }
+
+ /******************************************************************************
+ * sets MmContext
+ ******************************************************************************/
+ void UEContext::setMmContext( MmContext* MmContextp )
+ {
+ MmContext_mp = MmContextp;
+ }
+
+ /******************************************************************************
+ * returns MmContext
+ ******************************************************************************/
+ MmContext* UEContext::getMmContext()
+ {
+ return MmContext_mp;
+ }
+ /******************************************************************************
+ * sets SessionContext
+ ******************************************************************************/
+ void UEContext::setSessionContext( SessionContext* SessionContextp )
+ {
+ SessionContext_mp = SessionContextp;
+ }
+
+ /******************************************************************************
+ * returns SessionContext
+ ******************************************************************************/
+ SessionContext* UEContext::getSessionContext()
+ {
+ return SessionContext_mp;
+ }
+ /******************************************************************************
+ *******************************************************************************
+ * MmContext
+ *******************************************************************************
+ ******************************************************************************/
+
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ MmContext::MmContext(): mmState_m(InvalidState)
+ {
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ MmContext::~MmContext()
+ {
+ }
+
+ /******************************************************************************
+ * sets mmState
+ ******************************************************************************/
+ void MmContext::setMmState( EmmState mmState_i )
+ {
+ mmState_m = mmState_i;
+ }
+
+ /******************************************************************************
+ * returns mmState
+ ******************************************************************************/
+ EmmState MmContext::getMmState()
+ {
+ return mmState_m;
+ }
+
+ /******************************************************************************
+ *******************************************************************************
+ * SessionContext
+ *******************************************************************************
+ ******************************************************************************/
+
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ SessionContext::SessionContext(): sessionId_m(0), s11SgwCtrlFteid_m(),
+ s5S8PgwCtrlFteid_m(), pdnAddr_m(), accessPtName_m(), apnConfigProfileCtxId_m(),
+ pti_m(0), BearerContext_mp(NULL)
+ {
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ SessionContext::~SessionContext()
+ {
+ }
+
+ /******************************************************************************
+ * sets sessionId
+ ******************************************************************************/
+ void SessionContext::setSessionId( uint8_t sessionId_i )
+ {
+ sessionId_m = sessionId_i;
+ }
+
+ /******************************************************************************
+ * returns sessionId
+ ******************************************************************************/
+ uint8_t SessionContext::getSessionId()
+ {
+ return sessionId_m;
+ }
+
+ /******************************************************************************
+ * sets s11SgwCtrlFteid
+ ******************************************************************************/
+ void SessionContext::setS11SgwCtrlFteid( const Fteid& s11SgwCtrlFteid_i )
+ {
+ s11SgwCtrlFteid_m = s11SgwCtrlFteid_i;
+ }
+
+ /******************************************************************************
+ * returns s11SgwCtrlFteid
+ ******************************************************************************/
+ const Fteid& SessionContext::getS11SgwCtrlFteid()const
+ {
+ return s11SgwCtrlFteid_m;
+ }
+ /******************************************************************************
+ * sets s5S8PgwCtrlFteid
+ ******************************************************************************/
+ void SessionContext::setS5S8PgwCtrlFteid( const Fteid& s5S8PgwCtrlFteid_i )
+ {
+ s5S8PgwCtrlFteid_m = s5S8PgwCtrlFteid_i;
+ }
+
+ /******************************************************************************
+ * returns s5S8PgwCtrlFteid
+ ******************************************************************************/
+ const Fteid& SessionContext::getS5S8PgwCtrlFteid()const
+ {
+ return s5S8PgwCtrlFteid_m;
+ }
+ /******************************************************************************
+ * sets pdnAddr
+ ******************************************************************************/
+ void SessionContext::setPdnAddr( const Paa& pdnAddr_i )
+ {
+ pdnAddr_m = pdnAddr_i;
+ }
+
+ /******************************************************************************
+ * returns pdnAddr
+ ******************************************************************************/
+ const Paa& SessionContext::getPdnAddr()const
+ {
+ return pdnAddr_m;
+ }
+ /******************************************************************************
+ * sets accessPtName
+ ******************************************************************************/
+ void SessionContext::setAccessPtName( const Apn_name& accessPtName_i )
+ {
+ accessPtName_m = accessPtName_i;
+ }
+
+ /******************************************************************************
+ * returns accessPtName
+ ******************************************************************************/
+ const Apn_name& SessionContext::getAccessPtName()const
+ {
+ return accessPtName_m;
+ }
+
+ /******************************************************************************
+ * sets apnConfigProfileCtxId
+ ******************************************************************************/
+ void SessionContext::setApnConfigProfileCtxId( unsigned int apnConfigProfileCtxId_i )
+ {
+ apnConfigProfileCtxId_m = apnConfigProfileCtxId_i;
+ }
+
+ /******************************************************************************
+ * returns apnConfigProfileCtxId
+ ******************************************************************************/
+ unsigned int SessionContext::getApnConfigProfileCtxId()
+ {
+ return apnConfigProfileCtxId_m;
+ }
+
+ /******************************************************************************
+ * sets pti
+ *******************************************************************************/
+ void SessionContext::setPti( uint8_t pti_i )
+ {
+ pti_m = pti_i;
+ }
+
+ /******************************************************************************
+ * returns pti
+ ******************************************************************************/
+ uint8_t SessionContext::getPti()
+ {
+ return pti_m;
+ }
+
+ /******************************************************************************
+ * sets BearerContext
+ ******************************************************************************/
+ void SessionContext::setBearerContext( BearerContext* BearerContextp )
+ {
+ BearerContext_mp = BearerContextp;
+ }
+
+ /******************************************************************************
+ * returns BearerContext
+ ******************************************************************************/
+ BearerContext* SessionContext::getBearerContext()
+ {
+ return BearerContext_mp;
+ }
+ /******************************************************************************
+ *******************************************************************************
+ * BearerContext
+ *******************************************************************************
+ ******************************************************************************/
+
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ BearerContext::BearerContext():s1uSgwUserFteid_m(), s5S8PgwUserFteid_m(),
+ s1uEnbUserFteid_m(), bearerId_m(0)
+ {
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ BearerContext::~BearerContext()
+ {
+ }
+
+ /******************************************************************************
+ * sets s1uSgwUserFteid
+ ******************************************************************************/
+ void BearerContext::setS1uSgwUserFteid( const Fteid& s1uSgwUserFteid_i )
+ {
+ s1uSgwUserFteid_m = s1uSgwUserFteid_i;
+ }
+
+ /******************************************************************************
+ * returns s1uSgwUserFteid
+ ******************************************************************************/
+ const Fteid& BearerContext::getS1uSgwUserFteid()const
+ {
+ return s1uSgwUserFteid_m;
+ }
+ /******************************************************************************
+ * sets s5S8PgwUserFteid
+ ******************************************************************************/
+ void BearerContext::setS5S8PgwUserFteid( const Fteid& s5S8PgwUserFteid_i )
+ {
+ s5S8PgwUserFteid_m = s5S8PgwUserFteid_i;
+ }
+
+ /******************************************************************************
+ * returns s5S8PgwUserFteid
+ ******************************************************************************/
+ const Fteid& BearerContext::getS5S8PgwUserFteid()const
+ {
+ return s5S8PgwUserFteid_m;
+ }
+ /******************************************************************************
+ * sets s1uEnbUserFteid
+ ******************************************************************************/
+ void BearerContext::setS1uEnbUserFteid( const Fteid& s1uEnbUserFteid_i )
+ {
+ s1uEnbUserFteid_m = s1uEnbUserFteid_i;
+ }
+
+ /******************************************************************************
+ * returns s1uEnbUserFteid
+ ******************************************************************************/
+ const Fteid& BearerContext::getS1uEnbUserFteid()const
+ {
+ return s1uEnbUserFteid_m;
+ }
+ /******************************************************************************
+ * sets bearerId
+ ******************************************************************************/
+ void BearerContext::setBearerId( unsigned char bearerId_i )
+ {
+ bearerId_m = bearerId_i;
+ }
+
+ /******************************************************************************
+ * returns bearerId
+ ******************************************************************************/
+ unsigned char BearerContext::getBearerId()
+ {
+ return bearerId_m;
+ }
+
+ /******************************************************************************
+ *******************************************************************************
+ * MmeProcedureCtxt
+ *******************************************************************************
+ ******************************************************************************/
+
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ MmeProcedureCtxt::MmeProcedureCtxt(): ctxtType_m(invalidProcedureType_c),
+ mmeErrorCause_m(noError_c), attachType_m(invalidAttachType_c),
+ pti_m(0), esmInfoTxRequired_m(false)
+ {
+ memset(pcoOptions_m, 0, sizeof(pcoOptions_m));
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ MmeProcedureCtxt::~MmeProcedureCtxt()
+ {
+ }
+
+ /******************************************************************************
+ * sets ctxtType
+ ******************************************************************************/
+ void MmeProcedureCtxt::setCtxtType( ProcedureType ctxtType_i )
+ {
+ ctxtType_m = ctxtType_i;
+ }
+
+ /******************************************************************************
+ * returns ctxtType
+ ******************************************************************************/
+ ProcedureType MmeProcedureCtxt::getCtxtType()
+ {
+ return ctxtType_m;
+ }
+
+ /******************************************************************************
+ * sets pcoOptions
+ ******************************************************************************/
+ void MmeProcedureCtxt::setPcoOptions(const unsigned short int* pcoOptions_i )
+ {
+ memcpy(pcoOptions_m,pcoOptions_i,10);
+ }
+
+ /******************************************************************************
+ * returns pcoOptions
+ ******************************************************************************/
+ const unsigned short int* MmeProcedureCtxt::getPcoOptions()const
+ {
+ return &pcoOptions_m[0];
+ }
+
+ /******************************************************************************
+ * sets esmInfoTxRequired
+ ******************************************************************************/
+ void MmeProcedureCtxt::setEsmInfoTxRequired ( bool esmInfoTxRequired_i )
+ {
+ esmInfoTxRequired_m = esmInfoTxRequired_i;
+ }
+
+ /******************************************************************************
+ * returns esmInfoTxRequired
+ ******************************************************************************/
+ bool MmeProcedureCtxt::getEsmInfoTxRequired()
+ {
+ return esmInfoTxRequired_m;
+ }
+
+ /******************************************************************************
+ * sets attachType
+ ******************************************************************************/
+ void MmeProcedureCtxt::setAttachType( AttachType attachType_i )
+ {
+ attachType_m = attachType_i;
+ }
+
+ /******************************************************************************
+ * returns attachType
+ ******************************************************************************/
+ AttachType MmeProcedureCtxt::getAttachType()
+ {
+ return attachType_m;
+ }
+
+ /******************************************************************************
+ * sets pti
+ * ******************************************************************************/
+ void MmeProcedureCtxt::setPti( uint8_t pti_i )
+ {
+ pti_m = pti_i;
+ }
+
+ /******************************************************************************
+ * returns pti
+ ******************************************************************************/
+ uint8_t MmeProcedureCtxt::getPti()
+ {
+ return pti_m;
+ }
+
+ /******************************************************************************
+ * sets mmeErrorCause
+ * ******************************************************************************/
+ void MmeProcedureCtxt::setMmeErrorCause( MmeErrorCause mmeErrorCause_i )
+ {
+ mmeErrorCause_m = mmeErrorCause_i;
+ }
+
+ /******************************************************************************
+ * returns mmeErrorCause
+ *******************************************************************************/
+ MmeErrorCause MmeProcedureCtxt::getMmeErrorCause()
+ {
+ return mmeErrorCause_m;
+ }
+
+
+ /******************************************************************************
+ *******************************************************************************
+ * MmeDetachProcedureCtxt
+ *******************************************************************************
+ ******************************************************************************/
+
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ MmeDetachProcedureCtxt::MmeDetachProcedureCtxt():
+ detachType_m(invalidDetachType_c), cancellationType_m(INVALID_TYPE)
+ {
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ MmeDetachProcedureCtxt::~MmeDetachProcedureCtxt()
+ {
+ }
+
+ /******************************************************************************
+ * sets detachType
+ ******************************************************************************/
+ void MmeDetachProcedureCtxt::setDetachType( DetachType detachType_i )
+ {
+ detachType_m = detachType_i;
+ }
+
+ /******************************************************************************
+ * returns detachType
+ *******************************************************************************/
+ DetachType MmeDetachProcedureCtxt::getDetachType()
+ {
+ return detachType_m;
+ }
+
+ /******************************************************************************
+ * sets cancellationType
+ *******************************************************************************/
+ void MmeDetachProcedureCtxt::setCancellationType( CancellationType cancellationType_i )
+ {
+ cancellationType_m = cancellationType_i;
+ }
+
+ /******************************************************************************
+ * returns cancellationType
+ *******************************************************************************/
+ CancellationType MmeDetachProcedureCtxt::getCancellationType()
+ {
+ return cancellationType_m;
+ }
+
+
+ /******************************************************************************
+ *******************************************************************************
+ MmeSvcReqProcedureContext
+ *******************************************************************************
+ ******************************************************************************/
+
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ MmeSvcReqProcedureCtxt::MmeSvcReqProcedureCtxt(): pagingTrigger_m(none_c),
+ epsBearerId_m(0), arp_m(), ddnSeqNum_m()
+ {
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ MmeSvcReqProcedureCtxt::~MmeSvcReqProcedureCtxt()
+ {
+ }
+
+ /******************************************************************************
+ * sets ddnSeqNo
+ *******************************************************************************/
+ void MmeSvcReqProcedureCtxt::setDdnSeqNo( uint32_t ddnSeqNum_i )
+ {
+ ddnSeqNum_m = ddnSeqNum_i;
+ }
+
+ /******************************************************************************
+ * returns ddnSeqNo
+ *******************************************************************************/
+ uint32_t MmeSvcReqProcedureCtxt::getDdnSeqNo()
+ {
+ return ddnSeqNum_m;
+ }
+
+ /******************************************************************************
+ * sets pagingTrigger
+ ******************************************************************************/
+ void MmeSvcReqProcedureCtxt::setPagingTrigger( PagingTrigger pagingTrigger_i )
+ {
+ pagingTrigger_m = pagingTrigger_i;
+ }
+
+ /******************************************************************************
+ * returns pagingTrigger
+ ******************************************************************************/
+ PagingTrigger MmeSvcReqProcedureCtxt::getPagingTrigger()
+ {
+ return pagingTrigger_m;
+ }
+
+ /******************************************************************************
+ * sets epsBearerId
+ ******************************************************************************/
+ void MmeSvcReqProcedureCtxt::setEpsBearerId( unsigned char epsBearerId_i )
+ {
+ epsBearerId_m = epsBearerId_i;
+ }
+
+ /******************************************************************************
+ * returns epsBearerId
+ ******************************************************************************/
+ unsigned char MmeSvcReqProcedureCtxt::getEpsBearerId()
+ {
+ return epsBearerId_m;
+ }
+
+
+ /******************************************************************************
+ * sets arp
+ ******************************************************************************/
+ void MmeSvcReqProcedureCtxt::setArp( const Arp& arp_i )
+ {
+ arp_m = arp_i;
+ }
+
+ /******************************************************************************
+ * returns arp
+ ******************************************************************************/
+ const Arp& MmeSvcReqProcedureCtxt::getArp()const
+ {
+ return arp_m;
+ }
+
+
+ /******************************************************************************
+ *******************************************************************************
+ MmeTauProcedureCtxt
+ *******************************************************************************
+ ******************************************************************************/
+
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ MmeTauProcedureCtxt::MmeTauProcedureCtxt():s1apEnbUeId_m(0), tai_m(), enbFd_m()
+ {
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ MmeTauProcedureCtxt::~MmeTauProcedureCtxt()
+ {
+ }
+
+ /******************************************************************************
+ * sets s1apEnbUeId
+ ******************************************************************************/
+ void MmeTauProcedureCtxt::setS1apEnbUeId( int s1apEnbUeId_i )
+ {
+ s1apEnbUeId_m = s1apEnbUeId_i;
+ }
+
+ /******************************************************************************
+ * returns s1apEnbUeId
+ ******************************************************************************/
+ int MmeTauProcedureCtxt::getS1apEnbUeId()
+ {
+ return s1apEnbUeId_m;
+ }
+
+ /******************************************************************************
+ * sets tai
+ ******************************************************************************/
+ void MmeTauProcedureCtxt::setTai( const Tai& tai_i )
+ {
+ tai_m = tai_i;
+ }
+
+ /******************************************************************************
+ * returns tai
+ ******************************************************************************/
+ const Tai& MmeTauProcedureCtxt::getTai()const
+ {
+ return tai_m;
+ }
+
+ /******************************************************************************
+ * sets enbFd
+ ******************************************************************************/
+ void MmeTauProcedureCtxt::setEnbFd( int enbFd_i )
+ {
+ enbFd_m = enbFd_i;
+ }
+
+ /******************************************************************************
+ * returns enbFd
+ ******************************************************************************/
+ int MmeTauProcedureCtxt::getEnbFd()
+ {
+ return enbFd_m;
+ }
+
+} // mme
diff --git a/src/mme-app/contextManager/mmContextManager.cpp b/src/mme-app/contextManager/mmContextManager.cpp
new file mode 100644
index 0000000..ad702f1
--- /dev/null
+++ b/src/mme-app/contextManager/mmContextManager.cpp
@@ -0,0 +1,52 @@
+ /*
+ * Copyright 2019-present Infosys Limited
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+/******************************************************************************
+ * mmContextManager.cpp
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.cpp.tt>
+ ******************************************************************************/
+
+#include "memPoolManager.h"
+#include "contextManager/dataBlocks.h"
+#include "contextManager/mmContextManager.h"
+
+using namespace cmn::memPool;
+
+namespace mme
+{
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ MmContextManager::MmContextManager( int numOfBlocks ):poolManager_m(numOfBlocks)
+ {
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ MmContextManager::~MmContextManager()
+ {
+ }
+
+ /******************************************************************************
+ * Allocate MmContext data block
+ ******************************************************************************/
+ MmContext* MmContextManager::allocateMmContext()
+ {
+ MmContext* MmContext_p = poolManager_m.allocate();
+ return MmContext_p;
+ }
+
+ /******************************************************************************
+ * Deallocate a MmContext data block
+ ******************************************************************************/
+ void MmContextManager::deallocateMmContext(MmContext* MmContextp )
+ {
+ poolManager_m.free( MmContextp );
+ }
+}
diff --git a/src/mme-app/contextManager/mmeDetachProcedureCtxtManager.cpp b/src/mme-app/contextManager/mmeDetachProcedureCtxtManager.cpp
new file mode 100644
index 0000000..d9f6997
--- /dev/null
+++ b/src/mme-app/contextManager/mmeDetachProcedureCtxtManager.cpp
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2019-present Infosys Limited
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+/******************************************************************************
+ * mmeDetachProcedureCtxtManager.cpp
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.cpp.tt>
+ ******************************************************************************/
+
+#include "memPoolManager.h"
+#include "contextManager/dataBlocks.h"
+#include "contextManager/mmeDetachProcedureCtxtManager.h"
+
+using namespace cmn::memPool;
+
+namespace mme
+{
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ MmeDetachProcedureCtxtManager::MmeDetachProcedureCtxtManager(int numOfBlocks):poolManager_m(numOfBlocks)
+ {
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ MmeDetachProcedureCtxtManager::~MmeDetachProcedureCtxtManager()
+ {
+ }
+
+ /******************************************************************************
+ * Allocate MmeDetachProcedureCtxt data block
+ ******************************************************************************/
+ MmeDetachProcedureCtxt* MmeDetachProcedureCtxtManager::allocateMmeDetachProcedureCtxt()
+ {
+ MmeDetachProcedureCtxt* MmeDetachProcedureCtxt_p = poolManager_m.allocate();
+ return MmeDetachProcedureCtxt_p;
+ }
+
+ /******************************************************************************
+ * Deallocate a MmeDetachProcedureCtxt data block
+ ******************************************************************************/
+ void MmeDetachProcedureCtxtManager::deallocateMmeDetachProcedureCtxt(MmeDetachProcedureCtxt* MmeDetachProcedureCtxtp )
+ {
+ poolManager_m.free( MmeDetachProcedureCtxtp );
+ }
+}
diff --git a/src/mme-app/contextManager/mmeProcedureCtxtManager.cpp b/src/mme-app/contextManager/mmeProcedureCtxtManager.cpp
new file mode 100644
index 0000000..84c25dc
--- /dev/null
+++ b/src/mme-app/contextManager/mmeProcedureCtxtManager.cpp
@@ -0,0 +1,52 @@
+ /*
+ * Copyright 2019-present Infosys Limited
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+/******************************************************************************
+ * mmeProcedureCtxtManager.cpp
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.cpp.tt>
+ ******************************************************************************/
+
+#include "memPoolManager.h"
+#include "contextManager/dataBlocks.h"
+#include "contextManager/mmeProcedureCtxtManager.h"
+
+using namespace cmn::memPool;
+
+namespace mme
+{
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ MmeProcedureCtxtManager::MmeProcedureCtxtManager(int numOfBlocks):poolManager_m(numOfBlocks)
+ {
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ MmeProcedureCtxtManager::~MmeProcedureCtxtManager()
+ {
+ }
+
+ /******************************************************************************
+ * Allocate MmeProcedureCtxt data block
+ ******************************************************************************/
+ MmeProcedureCtxt* MmeProcedureCtxtManager::allocateMmeProcedureCtxt()
+ {
+ MmeProcedureCtxt* MmeProcedureCtxt_p = poolManager_m.allocate();
+ return MmeProcedureCtxt_p;
+ }
+
+ /******************************************************************************
+ * Deallocate a MmeProcedureCtxt data block
+ ******************************************************************************/
+ void MmeProcedureCtxtManager::deallocateMmeProcedureCtxt(MmeProcedureCtxt* MmeProcedureCtxtp )
+ {
+ poolManager_m.free( MmeProcedureCtxtp );
+ }
+}
diff --git a/src/mme-app/contextManager/mmeSvcReqProcedureCtxtManager.cpp b/src/mme-app/contextManager/mmeSvcReqProcedureCtxtManager.cpp
new file mode 100644
index 0000000..fd70058
--- /dev/null
+++ b/src/mme-app/contextManager/mmeSvcReqProcedureCtxtManager.cpp
@@ -0,0 +1,52 @@
+ /*
+ * Copyright 2019-present Infosys Limited
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+/******************************************************************************
+ * mmeSvcReqProcedureCtxtManager.cpp
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.cpp.tt>
+ ******************************************************************************/
+
+#include "memPoolManager.h"
+#include "contextManager/dataBlocks.h"
+#include "contextManager/mmeSvcReqProcedureCtxtManager.h"
+
+using namespace cmn::memPool;
+
+namespace mme
+{
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ MmeSvcReqProcedureCtxtManager::MmeSvcReqProcedureCtxtManager(int numOfBlocks):poolManager_m(numOfBlocks)
+ {
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ MmeSvcReqProcedureCtxtManager::~MmeSvcReqProcedureCtxtManager()
+ {
+ }
+
+ /******************************************************************************
+ * Allocate MmeSvcReqProcedureCtxt data block
+ ******************************************************************************/
+ MmeSvcReqProcedureCtxt* MmeSvcReqProcedureCtxtManager::allocateMmeSvcReqProcedureCtxt()
+ {
+ MmeSvcReqProcedureCtxt* MmeSvcReqProcedureCtxt_p = poolManager_m.allocate();
+ return MmeSvcReqProcedureCtxt_p;
+ }
+
+ /******************************************************************************
+ * Deallocate a MmeSvcReqProcedureCtxt data block
+ ******************************************************************************/
+ void MmeSvcReqProcedureCtxtManager::deallocateMmeSvcReqProcedureCtxt(MmeSvcReqProcedureCtxt* MmeSvcReqProcedureCtxtp )
+ {
+ poolManager_m.free( MmeSvcReqProcedureCtxtp );
+ }
+}
diff --git a/src/mme-app/contextManager/mmeTauProcedureCtxtManager.cpp b/src/mme-app/contextManager/mmeTauProcedureCtxtManager.cpp
new file mode 100644
index 0000000..92149ac
--- /dev/null
+++ b/src/mme-app/contextManager/mmeTauProcedureCtxtManager.cpp
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2019-present Infosys Limited
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+/******************************************************************************
+ * mmeTauProcedureCtxtManager.cpp
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.cpp.tt>
+ ******************************************************************************/
+
+#include "memPoolManager.h"
+#include "contextManager/dataBlocks.h"
+#include "contextManager/mmeTauProcedureCtxtManager.h"
+
+using namespace cmn::memPool;
+
+namespace mme
+{
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ MmeTauProcedureCtxtManager::MmeTauProcedureCtxtManager(int numOfBlocks):poolManager_m(numOfBlocks)
+ {
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ MmeTauProcedureCtxtManager::~MmeTauProcedureCtxtManager()
+ {
+ }
+
+ /******************************************************************************
+ * Allocate MmeTauProcedureCtxt data block
+ ******************************************************************************/
+ MmeTauProcedureCtxt* MmeTauProcedureCtxtManager::allocateMmeTauProcedureCtxt()
+ {
+ MmeTauProcedureCtxt* MmeTauProcedureCtxt_p = poolManager_m.allocate();
+ return MmeTauProcedureCtxt_p;
+ }
+
+ /******************************************************************************
+ * Deallocate a MmeTauProcedureCtxt data block
+ ******************************************************************************/
+ void MmeTauProcedureCtxtManager::deallocateMmeTauProcedureCtxt(MmeTauProcedureCtxt* MmeTauProcedureCtxtp)
+ {
+ poolManager_m.free( MmeTauProcedureCtxtp );
+ }
+}
diff --git a/src/mme-app/contextManager/sessionContextManager.cpp b/src/mme-app/contextManager/sessionContextManager.cpp
new file mode 100644
index 0000000..0dad793
--- /dev/null
+++ b/src/mme-app/contextManager/sessionContextManager.cpp
@@ -0,0 +1,52 @@
+ /*
+ * Copyright 2019-present Infosys Limited
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+/******************************************************************************
+ * sessionContextManager.cpp
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.cpp.tt>
+ ******************************************************************************/
+
+#include "memPoolManager.h"
+#include "contextManager/dataBlocks.h"
+#include "contextManager/sessionContextManager.h"
+
+using namespace cmn::memPool;
+
+namespace mme
+{
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ SessionContextManager::SessionContextManager(int numOfBlocks):poolManager_m(numOfBlocks)
+ {
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ SessionContextManager::~SessionContextManager()
+ {
+ }
+
+ /******************************************************************************
+ * Allocate SessionContext data block
+ ******************************************************************************/
+ SessionContext* SessionContextManager::allocateSessionContext()
+ {
+ SessionContext* SessionContext_p = poolManager_m.allocate();
+ return SessionContext_p;
+ }
+
+ /******************************************************************************
+ * Deallocate a SessionContext data block
+ ******************************************************************************/
+ void SessionContextManager::deallocateSessionContext(SessionContext* SessionContextp )
+ {
+ poolManager_m.free( SessionContextp );
+ }
+}
diff --git a/src/mme-app/contextManager/subsDataGroupManager.cpp b/src/mme-app/contextManager/subsDataGroupManager.cpp
new file mode 100644
index 0000000..b3a5154
--- /dev/null
+++ b/src/mme-app/contextManager/subsDataGroupManager.cpp
@@ -0,0 +1,242 @@
+/*
+ * Copyright 2019-present Infosys Limited
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/**************************************
+ *
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/subsDataGroupManager.cpp.tt>
+ ***************************************/
+#include "contextManager/subsDataGroupManager.h"
+#include "log.h"
+#include "mmeStates/defaultMmeState.h"
+#include <sstream>
+
+namespace mme
+{
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ SubsDataGroupManager::SubsDataGroupManager()
+ {
+ UEContextManagerm_p = NULL;
+ MmContextManagerm_p = NULL;
+ SessionContextManagerm_p = NULL;
+ BearerContextManagerm_p = NULL;
+ MmeProcedureCtxtManagerm_p = NULL;
+ MmeDetachProcedureCtxtManagerm_p = NULL;
+ MmeSvcReqProcedureCtxtManagerm_p = NULL;
+ MmeTauProcedureCtxtManagerm_p = NULL;
+
+ initialize();
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ SubsDataGroupManager::~SubsDataGroupManager()
+ {
+ delete UEContextManagerm_p;
+ delete MmContextManagerm_p;
+ delete SessionContextManagerm_p;
+ delete BearerContextManagerm_p;
+ delete MmeProcedureCtxtManagerm_p;
+ delete MmeDetachProcedureCtxtManagerm_p;
+ delete MmeSvcReqProcedureCtxtManagerm_p;
+ delete MmeTauProcedureCtxtManagerm_p;
+ }
+
+ /******************************************
+ * Initializes control block and pool managers
+ ******************************************/
+ void SubsDataGroupManager::initialize()
+ {
+ initializeCBStore(8000);
+
+ UEContextManagerm_p = new UEContextManager(8000);
+ MmContextManagerm_p = new MmContextManager(8000);
+ SessionContextManagerm_p = new SessionContextManager(8000);
+ BearerContextManagerm_p = new BearerContextManager(8000);
+ MmeProcedureCtxtManagerm_p = new MmeProcedureCtxtManager(8000);
+ MmeDetachProcedureCtxtManagerm_p = new MmeDetachProcedureCtxtManager(8000);
+ MmeSvcReqProcedureCtxtManagerm_p = new MmeSvcReqProcedureCtxtManager(8000);
+ MmeTauProcedureCtxtManagerm_p = new MmeTauProcedureCtxtManager(8000);
+ }
+
+ /******************************************************************************
+ * creates and returns static instance
+ ******************************************************************************/
+ SubsDataGroupManager* SubsDataGroupManager::Instance()
+ {
+ static SubsDataGroupManager subDataGroupMgr;
+ return &subDataGroupMgr;
+ }
+
+ UEContext* SubsDataGroupManager::getUEContext()
+ {
+ return UEContextManagerm_p->allocateUEContext();
+ }
+
+ void SubsDataGroupManager::deleteUEContext(UEContext* UEContextp )
+ {
+ UEContextManagerm_p->deallocateUEContext( UEContextp );
+ }
+
+ MmContext* SubsDataGroupManager::getMmContext()
+ {
+ return MmContextManagerm_p->allocateMmContext();
+ }
+
+ void SubsDataGroupManager::deleteMmContext(MmContext* MmContextp )
+ {
+ MmContextManagerm_p->deallocateMmContext( MmContextp );
+ }
+
+ SessionContext* SubsDataGroupManager::getSessionContext()
+ {
+ return SessionContextManagerm_p->allocateSessionContext();
+ }
+
+ void SubsDataGroupManager::deleteSessionContext(SessionContext* SessionContextp )
+ {
+ SessionContextManagerm_p->deallocateSessionContext( SessionContextp );
+ }
+
+ BearerContext* SubsDataGroupManager::getBearerContext()
+ {
+ return BearerContextManagerm_p->allocateBearerContext();
+ }
+
+ void SubsDataGroupManager::deleteBearerContext(BearerContext* BearerContextp )
+ {
+ BearerContextManagerm_p->deallocateBearerContext( BearerContextp );
+ }
+
+ MmeProcedureCtxt* SubsDataGroupManager::getMmeProcedureCtxt()
+ {
+ return MmeProcedureCtxtManagerm_p->allocateMmeProcedureCtxt();
+ }
+
+ void SubsDataGroupManager::deleteMmeProcedureCtxt(MmeProcedureCtxt* MmeProcedureCtxtp )
+ {
+ MmeProcedureCtxtManagerm_p->deallocateMmeProcedureCtxt( MmeProcedureCtxtp );
+ }
+
+ MmeDetachProcedureCtxt* SubsDataGroupManager::getMmeDetachProcedureCtxt()
+ {
+ return MmeDetachProcedureCtxtManagerm_p->allocateMmeDetachProcedureCtxt();
+ }
+
+ void SubsDataGroupManager::deleteMmeDetachProcedureCtxt(MmeDetachProcedureCtxt* MmeDetachProcedureCtxtp )
+ {
+ MmeDetachProcedureCtxtManagerm_p->deallocateMmeDetachProcedureCtxt( MmeDetachProcedureCtxtp );
+ }
+
+ MmeSvcReqProcedureCtxt* SubsDataGroupManager::getMmeSvcReqProcedureCtxt()
+ {
+ return MmeSvcReqProcedureCtxtManagerm_p->allocateMmeSvcReqProcedureCtxt();
+ }
+
+ void SubsDataGroupManager::deleteMmeSvcReqProcedureCtxt(MmeSvcReqProcedureCtxt* MmeSvcReqProcedureCtxtp )
+ {
+ MmeSvcReqProcedureCtxtManagerm_p->deallocateMmeSvcReqProcedureCtxt( MmeSvcReqProcedureCtxtp );
+ }
+
+ MmeTauProcedureCtxt* SubsDataGroupManager::getMmeTauProcedureCtxt()
+ {
+ return MmeTauProcedureCtxtManagerm_p->allocateMmeTauProcedureCtxt();
+ }
+
+ void SubsDataGroupManager::deleteMmeTauProcedureCtxt(MmeTauProcedureCtxt* MmeTauProcedureCtxtp )
+ {
+ MmeTauProcedureCtxtManagerm_p->deallocateMmeTauProcedureCtxt( MmeTauProcedureCtxtp );
+ }
+
+ /******************************************
+ * Add a imsi as key and cb index as value to imsi_cb_id_map
+ ******************************************/
+ int SubsDataGroupManager::addimsikey( DigitRegister15 key, int cb_index )
+ {
+ std::lock_guard<std::mutex> lock(imsi_cb_id_map_mutex);
+
+ int rc = 1;
+ auto itr = imsi_cb_id_map.insert(std::pair<DigitRegister15, int>( key, cb_index ));
+ if (itr.second == false)
+ {
+ rc = -1;
+ }
+ return rc;
+ }
+
+ /******************************************
+ * Delete a imsi key from imsi_cb_id_map
+ ******************************************/
+ int SubsDataGroupManager::deleteimsikey( DigitRegister15 key )
+ {
+ std::lock_guard<std::mutex> lock(imsi_cb_id_map_mutex);
+
+ return imsi_cb_id_map.erase( key );
+ }
+
+ /******************************************
+ * Find cb with given imsi from imsi_cb_id_map
+ * returns -1 if not found, else cb index
+ ******************************************/
+ int SubsDataGroupManager::findCBWithimsi( DigitRegister15 key )
+ {
+ std::lock_guard<std::mutex> lock(imsi_cb_id_map_mutex);
+
+ auto itr = imsi_cb_id_map.find( key );
+ if( itr != imsi_cb_id_map.end())
+ {
+ return itr->second;
+ }
+ return -1;
+ }
+
+ /******************************************
+ * Add a mTmsi as key and cb index as value to mTmsi_cb_id_map
+ ******************************************/
+ int SubsDataGroupManager::addmTmsikey( uint32_t key, int cb_index )
+ {
+ std::lock_guard<std::mutex> lock(mTmsi_cb_id_map_mutex);
+
+ int rc = 1;
+ auto itr = mTmsi_cb_id_map.insert(std::pair<uint32_t, int>( key, cb_index ));
+ if (itr.second == false)
+ {
+ rc = -1;
+ }
+ return rc;
+ }
+
+ /******************************************
+ * Delete a mTmsi key from mTmsi_cb_id_map
+ ******************************************/
+ int SubsDataGroupManager::deletemTmsikey( uint32_t key )
+ {
+ std::lock_guard<std::mutex> lock(mTmsi_cb_id_map_mutex);
+
+ return mTmsi_cb_id_map.erase( key );
+ }
+
+ /******************************************
+ * Find cb with given mTmsi from mTmsi_cb_id_map
+ * returns -1 if not found, else cb index
+ ******************************************/
+ int SubsDataGroupManager::findCBWithmTmsi( uint32_t key )
+ {
+ std::lock_guard<std::mutex> lock(mTmsi_cb_id_map_mutex);
+
+ auto itr = mTmsi_cb_id_map.find( key );
+ if( itr != mTmsi_cb_id_map.end())
+ {
+ return itr->second;
+ }
+ return -1;
+ }
+}
diff --git a/src/mme-app/contextManager/uEContextManager.cpp b/src/mme-app/contextManager/uEContextManager.cpp
new file mode 100644
index 0000000..62362bc
--- /dev/null
+++ b/src/mme-app/contextManager/uEContextManager.cpp
@@ -0,0 +1,52 @@
+ /*
+ * Copyright 2019-present Infosys Limited
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+/******************************************************************************
+ * uEContextManager.cpp
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.cpp.tt>
+ ******************************************************************************/
+
+#include "memPoolManager.h"
+#include "contextManager/dataBlocks.h"
+#include "contextManager/uEContextManager.h"
+
+using namespace cmn::memPool;
+
+namespace mme
+{
+ /******************************************************************************
+ * Constructor
+ ******************************************************************************/
+ UEContextManager::UEContextManager(int numOfBlocks):poolManager_m(numOfBlocks)
+ {
+ }
+
+ /******************************************************************************
+ * Destructor
+ ******************************************************************************/
+ UEContextManager::~UEContextManager()
+ {
+ }
+
+ /******************************************************************************
+ * Allocate UEContext data block
+ ******************************************************************************/
+ UEContext* UEContextManager::allocateUEContext()
+ {
+ UEContext* UEContext_p = poolManager_m.allocate();
+ return UEContext_p;
+ }
+
+ /******************************************************************************
+ * Deallocate a UEContext data block
+ ******************************************************************************/
+ void UEContextManager::deallocateUEContext(UEContext* UEContextp )
+ {
+ poolManager_m.free( UEContextp );
+ }
+}