telephonyprotocols/psdagt/inc/psdstates.h
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyprotocols/psdagt/inc/psdstates.h	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,398 @@
+/**
+* Copyright (c) 2003-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:
+* Header for PSD States
+* 
+*
+*/
+
+
+
+/**
+ @file PSDStates.h
+ @internalComponent
+*/
+
+
+#ifndef __PSDSTATES_H__
+#define __PSDSTATES_H__
+
+#include <comms-infras/dialogprocessor.h>
+#include <etelpckt.h>
+#include "psdagt.h"
+#include "PSDAGTBase.h"
+
+class MPsdEnv;
+class MPsdCommDbAccess;
+class CPsdInitBase : public CAgentStateBase
+/**
+Base class for classes performing the initialisation state for both
+incomming and outgoing connections
+
+@internalComponent
+*/
+	{
+public:
+	CPsdInitBase(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdInitBase();
+	virtual void StartState();
+protected:
+	virtual void DoStartStateL();
+	void GetPhoneInfoL(const TDesC& aLoadedTsyName, RTelServer::TPhoneInfo& aInfo);
+	virtual void RunL();
+	virtual void DoCancel();
+protected:
+	MPsdEnv* iSM;
+	MPsdCommDbAccess* iDbPsd;
+	};
+
+class CPsdOutInit : public CPsdInitBase
+/**
+Class implementing the initialisation state for outgoing connections
+
+@internalComponent
+*/
+	{
+public:
+	CPsdOutInit(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdOutInit();
+	virtual CAgentStateBase* NextStateL(TBool aContinue);
+	};
+
+
+#ifndef INCOMING_NOT_SUPORTED
+
+class CPsdInInit : public CPsdInitBase
+/**
+Class implementing the initialisation state for incomming connections
+
+@internalComponent
+*/
+	{
+public:
+	CPsdInInit(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdInInit();
+	virtual CAgentStateBase* NextStateL(TBool aContinue);
+protected:
+	virtual void DoStartStateL();
+	};
+#endif // #ifndef INCOMING_NOT_SUPORTED
+
+
+class CPsdCheckConfig : public CAgentStateBase
+/**
+Base class for classes performing the config checking state for both
+incomming and outgoing connections
+
+@internalComponent
+*/
+	{
+public:
+	CPsdCheckConfig(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdCheckConfig();
+	virtual void StartState();
+protected:
+	virtual void DoInitL();
+	virtual void RunL();
+	virtual void DoCancel();
+protected:
+	MPsdEnv* iSM;
+	MPsdCommDbAccess* iDbPsd;
+	};
+
+class CPsdOutCheckConfig : public CPsdCheckConfig
+/**
+Class implementing the config checking state for outgoing connections
+
+@internalComponent
+*/
+	{
+public:
+	CPsdOutCheckConfig(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdOutCheckConfig();
+	virtual CAgentStateBase* NextStateL(TBool aContinue);
+	};
+
+
+#ifndef INCOMING_NOT_SUPORTED
+
+class CPsdInCheckConfig : public CPsdCheckConfig
+/**
+Class implementing the config checking state for incomming connections
+
+@internalComponent
+*/
+	{
+public:
+	CPsdInCheckConfig(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdInCheckConfig();
+	virtual CAgentStateBase* NextStateL(TBool aContinue);
+	};
+#endif // #ifndef INCOMING_NOT_SUPORTED
+
+
+class CPsdNetworkCheck : public CAgentStateBase
+/**
+Class implementing the network check state. Responsible for ensuring that 
+the network is in a suitable state before advancing the state machine
+
+@internalComponent
+*/
+	{
+public:
+	CPsdNetworkCheck(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdNetworkCheck();
+	virtual void StartState();
+	virtual CAgentStateBase* NextStateL(TBool aContinue);
+protected:
+	void RunL();
+	void DoCancel();
+private:
+	void DoNetworkCheck();
+private:
+	RPacketService::TRegistrationStatus iRegStatus;
+	MPsdEnv* iSM;
+	MPsdCommDbAccess* iDbPsd;
+	enum
+	{EGettingInitialStatus,EWaitingForStatusChange} iSubState;
+	};
+
+
+#ifndef INCOMING_NOT_SUPORTED
+
+class CPsdWaitForIncoming : public CAgentStateBase
+/**
+Class implementing the wait for incomming state. Used in incomming connections
+it is responsible for listening out for an incomming connection, validating the 
+connection and advancing the state machine.
+
+@internalComponent
+*/
+	{
+public:
+	CPsdWaitForIncoming(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdWaitForIncoming();
+	virtual void StartState();
+	virtual CAgentStateBase* NextStateL(TBool aContinue);
+protected:
+	void RunL();
+	void DoCancel();
+private:
+	RPacketContext::TProtocolType iPdpTypeRequested;
+	RPacketContext::TProtocolAddress iAddressRequested;
+	MPsdEnv* iSM;
+	MPsdCommDbAccess* iDbPsd;
+	};
+#endif // #ifndef INCOMING_NOT_SUPORTED
+
+
+class CPsdCreateContext : public CAgentStateBase
+/**
+Class implementing the create context state. Responsible for creating the 
+context and configuring it with the correct parameters
+
+@internalComponent
+*/
+	{
+public:
+	CPsdCreateContext(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdCreateContext();
+	virtual void StartState();
+	virtual CAgentStateBase* NextStateL(TBool aContinue);
+protected:
+	void RunL();
+	void DoCancel();
+private:
+	MPsdEnv* iSM;
+	MPsdCommDbAccess* iDbPsd;
+	};
+
+class CPsdCreateQoS : public CAgentStateBase
+/**
+Class implementing the create QoS state. Responsible for creating the 
+QoS and configuring it with the correct parameters
+
+@internalComponent
+*/
+	{
+public:
+	CPsdCreateQoS(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdCreateQoS();
+	virtual void StartState();
+	virtual CAgentStateBase* NextStateL(TBool aContinue);
+protected:
+	void RunL();
+	void DoCancel();
+private:
+	MPsdEnv* iSM;
+	MPsdCommDbAccess* iDbPsd;
+	};
+
+class CPsdActivateContext : public CAgentStateBase
+/**
+Class implementing the activate context state. Responsible for activating
+the previously configured context
+
+@internalComponent
+*/
+	{
+public:
+	CPsdActivateContext(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdActivateContext();
+	virtual void StartState();
+	virtual CAgentStateBase* NextStateL(TBool aContinue);
+protected:
+	void RunL();
+	void DoCancel();
+private:
+	MPsdEnv* iSM;
+	MPsdCommDbAccess* iDbPsd;
+	enum
+	{EActivatingContext,ELoaningCommPort} iSubState;
+	RCall::TCommPort iCommport;
+	};
+
+class CDataLogger;
+
+class CPsdOpen : public CAgentStateBase, public MPsdContextChangeObserver, public MDialogProcessorObserver
+/**
+Class implementing the open state. Responsible for maintaining the connection
+reporting progress and logging
+
+@internalComponent
+*/
+	{
+public:
+	static CPsdOpen* NewL(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdOpen();
+	// From CAgentStateBase
+	virtual void StartState();
+	virtual CAgentStateBase* NextStateL(TBool aContinue);
+	// from MPsdContextChangeObserver
+	virtual void ReportContextBelowAcceptableQuality();
+	virtual void ReportError(TInt aError);
+	 // from MDialogProcessorObserver
+	virtual void MDPOQoSWarningComplete(TInt aError, TBool aResponse);
+private:
+	void RequestStatusChange();
+	CPsdOpen(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	void ConstructL();
+	void LogActive();
+	void WatchForConfigChangesL();
+protected:
+	void RunL();
+	void DoCancel();
+private:
+	RPacketContext::TContextStatus iContextStatus;
+	MPsdEnv* iSM;
+	MPsdCommDbAccess* iDbPsd;
+	TBool iEventLoggerStarted;
+	CPsdContextChangeMonitor* iContextChangeMonitor;
+	};
+
+
+
+class CPsdRecoverCommPort : public CAgentStateBase
+/**
+Class implementing the recover comm port state. First state during
+disconnection it is responsible for recovering the previously loaned
+comm port
+
+@internalComponent
+*/
+	{
+public:
+	CPsdRecoverCommPort(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdRecoverCommPort();
+	virtual void StartState();
+	virtual CAgentStateBase* NextStateL(TBool aContinue);
+protected:
+	void RunL();
+	void DoCancel();
+private:
+	MPsdEnv* iSM;
+	MPsdCommDbAccess* iDbPsd;
+	};
+
+
+class CPsdCloseLog : public CAgentStateBase
+/**
+Class implementing the close log state. Responsible for the discontinuation
+of logging
+
+@internalComponent
+*/
+	{
+public:
+	CPsdCloseLog(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdCloseLog();
+	virtual void StartState();
+	virtual CAgentStateBase* NextStateL(TBool aContinue);
+protected:
+	void RunL();
+	void DoCancel();
+private:
+	MPsdEnv* iSM;
+	MPsdCommDbAccess* iDbPsd;
+	enum
+	{EStart,ELoggingFinalValues,EEndingLog} iSubState;
+	};
+
+
+class CPsdDeactivation : public CAgentStateBase
+/**
+Class implementing the deactivation state. Responsible for deactivating the
+context
+
+@internalComponent
+*/
+	{
+public:
+	CPsdDeactivation(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdDeactivation();
+	virtual void StartState();
+	virtual CAgentStateBase* NextStateL(TBool aContinue);
+protected:
+	void RunL();
+	void DoCancel();
+private:
+	MPsdEnv* iSM;
+	MPsdCommDbAccess* iDbPsd;
+	};
+
+
+class CPsdClosure : public CAgentStateBase
+/**
+Class implementing the closure state. Responsible for cleaning up all the
+resources used for the connection
+
+@internalComponent
+*/
+	{
+public:
+	CPsdClosure(MAgentStateMachineEnv* aObserver,MPsdEnv* aPsdSM, MPsdCommDbAccess* aDb);
+	virtual ~CPsdClosure();
+	virtual void StartState();
+	virtual CAgentStateBase* NextStateL(TBool aContinue);
+protected:
+	void RunL();
+	void DoCancel();
+private:
+	MPsdEnv* iSM;
+	MPsdCommDbAccess* iDbPsd;
+	enum
+	{EClosureStart,EDeletingContext,EClosureEnd} iSubState;
+	};
+
+#endif