sipproviderplugins/sipprovider/sipconnectionplugins/inc/sipcprstates.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 13 Oct 2010 14:57:13 +0300
branchRCL_3
changeset 56 2c7192069824
parent 0 307788aac0a8
permissions -rw-r--r--
Revision: 201038 Kit: 201041

// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:
// sip Connection Provider states
// 
//

/**
 @file
 @internalComponent
*/
 
#ifndef SIPCPRSTATES_H_
#define SIPCPRSTATES_H_

#include <comms-infras/ss_log.h>
#include <ss_glob.h>
#include <comms-infras/corecprstates.h>
#include <comms-infras/ss_subconnprov.h>
#include <comms-infras/ss_metaconnprov.h>
#include <comms-infras/ss_nodemessages.h>
#include <comms-infras/corecprstates.h>
#include <comms-infras/ss_coreprstates.h>
#include "sipprovisioninfo.h"
#include "sipcpr.h"

enum SipCprSpecificActivities
	{
	//This activity handles the ErrorOccurred call back function
	ECFActivitySipErrorOccurred = ESock::ECFActivityCustom
	};

namespace SipCprActivities
{
    typedef MeshMachine::TNodeContext<CSipConnectionProvider, CprStates::TContext> TContext;
	namespace BinderRequest
		{					
		
        DECLARE_SMELEMENT_HEADER( TSubConnectionTypeTag, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
        	virtual TInt TransitionTag();
        DECLARE_SMELEMENT_FOOTER( TSubConnectionTypeTag )			
		}
}

namespace SipCprStates
{
typedef MeshMachine::TNodeContext<CSipConnectionProvider, CprStates::TContext> TContext;

enum {
	KDeRegister = 1, 
	KRegistered	
	};


//====================================================================================
//
// BinderRequest Activity
//
//===================================================================================

// Provision Activity
DECLARE_SMELEMENT_HEADER( TSendProvision, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext  )
	virtual void DoL();
DECLARE_SMELEMENT_FOOTER( TSendProvision )


//For comms binder request 
DECLARE_SMELEMENT_HEADER( TIntializeWaitForIncmgParams, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext  )
	virtual void DoL();
DECLARE_SMELEMENT_FOOTER( TIntializeWaitForIncmgParams )

//For comms binder request
DECLARE_SMELEMENT_HEADER(TWaitForIncomingOrUseExisting, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext)
	virtual TInt TransitionTag();
DECLARE_SMELEMENT_FOOTER(TWaitForIncomingOrUseExisting)

//For comms binder request
DECLARE_SMELEMENT_HEADER(TAwaitingIncomingConnection, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext)
	virtual TBool Accept();
DECLARE_SMELEMENT_FOOTER(TAwaitingIncomingConnection )


DECLARE_AGGREGATED_TRANSITION3(
   TProcessSCPRCreation,	
   CoreNetStates::TAddDataClient,
   SipCprStates::TSendProvision,
   PRActivities::CCommsBinderActivity::TStorePendingBinder
   )
  
DECLARE_AGGREGATED_TRANSITION2(
   TProcessWaitForIncmg,
   SipCprStates::TIntializeWaitForIncmgParams,
   PRStates::TCreateDataClient
   )


//===========================================================================================
//
// Provision Activity
//===========================================================================================
DECLARE_SMELEMENT_HEADER( TStoreProvision, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext  )
	virtual void DoL();
DECLARE_SMELEMENT_FOOTER( TStoreProvision )


//=============================================================================================
//
// Stop Activity
//
//==============================================================================================
DECLARE_SMELEMENT_HEADER( TDeRegisterCpr, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext  )
	virtual void DoL();
DECLARE_SMELEMENT_FOOTER( TDeRegisterCpr )

DECLARE_SMELEMENT_HEADER( TAwaitingDeRegistrationComplete, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext)
	virtual TBool Accept();
DECLARE_SMELEMENT_FOOTER(TAwaitingDeRegistrationComplete )

DECLARE_SMELEMENT_HEADER(TNoTagOrDeRegister, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext)
	virtual TInt TransitionTag();
DECLARE_SMELEMENT_FOOTER(TNoTagOrDeRegister)

DECLARE_SMELEMENT_HEADER( TSendStopped, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext  )
	virtual void DoL();
DECLARE_SMELEMENT_FOOTER(TSendStopped)


//=================================================================
//
// SipNoBearer activity
//
//=================================================================

DECLARE_SMELEMENT_HEADER(TAwaitingNoBearer, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext)
	virtual TBool Accept();
DECLARE_SMELEMENT_FOOTER(TAwaitingNoBearer )

//=================================================================
//
// SipCprStartActivity
//
//=================================================================
DECLARE_SMELEMENT_HEADER( TNoTagOrRegistered, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
	virtual TInt TransitionTag();
DECLARE_SMELEMENT_FOOTER( TNoTagOrRegistered )

DECLARE_SMELEMENT_HEADER( TRegisterCpr, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext  )
	virtual void DoL();
DECLARE_SMELEMENT_FOOTER( TRegisterCpr )

DECLARE_SMELEMENT_HEADER( TAwaitingRegistrationComplete, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext)
	virtual TBool Accept();
DECLARE_SMELEMENT_FOOTER( TAwaitingRegistrationComplete )

DECLARE_SERIALIZABLE_STATE(
	TNoTagOrRegisteredBlockedByStop,
	MeshMachine::TActivityIdMutex<ESock::ECFActivityStop>,
	SipCprStates::TNoTagOrRegistered
	)
	
//================================================================
//Others
//
//==============================================================

DECLARE_SMELEMENT_HEADER( TSetPostedToScpr, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext  )
	virtual void DoL();
DECLARE_SMELEMENT_FOOTER( TSetPostedToScpr )

} //namespace SipCprStates

#endif //SIPCPRSTATES_H_