  
/*
 * Copyright 2019-present Infosys Limited  
 *   
 * SPDX-License-Identifier: Apache-2.0    
 */
 
/**************************************
 * attachWfSecCmp.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/stateMachineTmpls/state.cpp.tt>
 **************************************/

#include "smEnumTypes.h"
#include "actionTable.h"
#include "actionHandlers/actionHandlers.h"

#include "mmeStates/attachWfSecCmp.h"	
#include "mmeStates/attachWfEsmInfoCheck.h"

using namespace mme;
using namespace SM;

/******************************************************************************
* Constructor
******************************************************************************/
AttachWfSecCmp::AttachWfSecCmp():State(State_e::attach_wf_sec_cmp)
{
}

/******************************************************************************
* Destructor
******************************************************************************/
AttachWfSecCmp::~AttachWfSecCmp()
{
}

/******************************************************************************
* creates and returns static instance
******************************************************************************/
AttachWfSecCmp* AttachWfSecCmp::Instance()
{
        static AttachWfSecCmp state;
        return &state;
}

/******************************************************************************
* initializes eventToActionsMap
******************************************************************************/
void AttachWfSecCmp::initialize()
{
        {
                ActionTable actionTable;
                actionTable.addAction(&ActionHandlers::process_sec_mode_resp);
                actionTable.addAction(&ActionHandlers::check_esm_info_req_required);
                actionTable.setNextState(AttachWfEsmInfoCheck::Instance());
                eventToActionsMap.insert(pair<Event_e, ActionTable>(Event_e::SEC_MODE_RESP_FROM_UE, actionTable));
        }
}
