diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/simtsy/inc/CSimIncomingContextManager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/simtsy/inc/CSimIncomingContextManager.h Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,141 @@ +// 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: +// CSimIncomingContextManager.cpp +// Implements code to manage incoming PDP contexts. +// +// + +/** + @file +*/ + + +#ifndef __CSIMINCOMINGCONTEXTMANAGER_H__ +#define __CSIMINCOMINGCONTEXTMANAGER_H__ + + +#include +#include + +#include "csimtimer.h" +#include "CSimPacketContext.h" +#include "CSimPubSubChange.h" + + + +/** +Drives the incoming PDP contexts. +*/ +struct TDelayIncomingContext +{ +public: + TInt iExtensionId; + // can be + // TPacketDataConfigBase::KConfigGPRS= 0x01 + // TPacketDataConfigBase::KConfigRel99Rel4= 0x03 + // TPacketDataConfigBase::KConfigRel5= 0x04 + + TInt iIndex; + // the ExtensionId, Index and index are used to indicate which + // PDP context is incoming. + + TInt iDelay; // After this amount of time an incoming PDP context will be faked. +}; + +class CSimPhone; + +class CTestConfigSection; +class CTestConfigItem; + + +//Note Initialy only supports GPRS +NONSHARABLE_CLASS(CSimIncomingContextManager) : CBase +{ + +public : + CSimIncomingContextManager(CSimPhone* aPhone); + ~CSimIncomingContextManager(); + +public: + static CSimIncomingContextManager* NewL(CSimPhone* aPhone, CSimPacketService* aSimPacketService); + void ConstructL(CSimPacketService* aSimPacketService); + + void LoadIncomingContextsL( TPtrC8 aTag ); + void StartFirstIncomingEvent( ); + void NextIncomingEvent( TDes8* aPckg ); + // Call when we want the next timer event, if any to be run. + void Cancel( ); + + void ForcedIncoming(TInt aIndex, TDes8* aPckg); + TBool IsForcedIncoming(const CSimPubSub::TPubSubProperty aProperty ); + +public: + TBool IsUseTimerOn() { return iUseTimerOn; } + void SetUseTimerOn() { iUseTimerOn = ETrue; } + void SetUseTimerOff() { iUseTimerOn = EFalse; }; + +private: + static void GetConfigType( const CTestConfigItem& aItem, + TInt aIndex, TInt& aType, TInt& aError ); + static void GetContextIndex( const CTestConfigItem& aItem, + TInt aIndex, TInt& aContextIndex, TInt& aError ); + static void GetDelay( const CTestConfigItem& aItem, + TInt aIndex, TInt& aDelay, TInt& aError ); + + + const TContextConfigParam* FindContext( const CArrayFixFlat* aIncomingContextConfigParams, + const TInt aExtensionId, const TInt aIndex ); + + TBool GetContextInCorrectFormatForEtel(const TContextConfigParam* aContextConfig, + TDes8* aData); + + const CTestConfigSection* CfgFile(); + +private: + CSimPacketService* iSimPacketService; + // Back link to parent class. + + CArrayFixFlat* iDelayIncomingContext; + // Used to drive the timing of the Incoming PDP contexts. + int iCurrentDelayIndex; + // Index to the delay/instuction we are currenly executing. + + + CSimPhone* iPhone; //< Pointer to the phone object (The parent of this class) + CSimTimer* iTimer; // < Pointer to the owned timer class. + + CSimPubSub::TPubSubProperty iForceIncomingContextChangeProperty; + CSimPubSub* iForceIncomingContextChange; + // Used when CSimPubSub::TPubSubProperty(KUidPSSimTsyCategory, KPSSimTsyForceIncomingContextActivation, KPSSimTsyForceIncomingContextActivationType) + // is changed to force an incoming PDP in C++ code. + + CArrayFixFlat* iIncomingContextConfigParams; //< Pointer to a list of valid Context (GPRS/R99/R5) config parameters + // Note this is a duplicate of the config params in contexts. + // It should be noted that potential configs are only avaliable after a PDP has been + // created. This will not do as we need it when we get an incoming PDP i.e. + // before we even have created a PDP. + // Technically there should be only one copy of the TContextConfigParam's and that + // should be at this level. But it would take a while to reorganise and test the code. + + // At the moment only GPRS contexts are supported. + + +private: + TBool iUseTimerOn; + +}; + + +#endif //__CSIMINCOMINGCONTEXT_H__ +