telephonyserver/etelpacketdata/inc/pcktptr.h
changeset 0 3553901f7fa8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserver/etelpacketdata/inc/pcktptr.h	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,223 @@
+// Copyright (c) 2001-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:
+// ETel Multimode Packet Data API 
+// MBMS Broadcast,GPRS Rel97/98, CDMAOne, CDMA2000, Release 99 and Release 4.
+// 
+//
+
+/**
+ @file
+ @internalAll 
+*/
+
+#if !defined(__PCKTPTR_H__)
+#define __PCKTPTR_H__
+
+#if !defined(__ETELPCKT_H__)
+#include "etelpckt.h"
+#endif
+
+
+class CEtelPacketPtrHolder : public CBase
+/**
+Holder class. 
+Non-descriptor parameters in API methods will be copied into a 
+descriptor and held in a descriptor array iPtrArray. 
+This class type also stores copies of API parameters that are passed in by value as opposed
+to by reference. This keeps the size of the R-classes constant as the API evolves, thus
+maintaining Binary Compatibility (BC).
+@internalAll
+*/
+	{
+public:
+	virtual ~CEtelPacketPtrHolder();
+
+	// The ptr holder slot numbers used by RPacketService asynchronous requests
+	enum TPacketPtrHolderSlots
+	{
+		ESlotPacketStatus=0,
+		ESlotRegStatus,
+		ESlotGetNtwkReg,
+		ESlotProtocolType,
+		ESlotPpdAddress,
+		ESlotNrcaApn,
+		ESlotDynamicCaps,
+		ESlotEnumerateCount,
+		ESlotEnumerateMaxCount,
+		ESlotContextInfoIndex,
+		ESlotContextInfo,
+		ESlotSetMsClass,
+		ESlotNtfMsClass,
+		ESlotCurrentMsClass,
+		ESlotMaxMsClass,
+		ESlotSetPrefBearer,
+		ESlotSetAttachMode,
+		ESlotGetAttachMode,
+		ESlotGetCurrentReleaseMode,
+		ESlotNotifyModeChange,
+		ESlotEnumerateNifs,
+		ESlotGetNifInfo,
+		ESlotEnumerateContextsInNif,
+		ESlotGetContextNameInNif,
+		ESlotNotifyAttachModeChange,
+		ESlotGetPrefBearer,
+		ESlotGetMbmsNetworkServiceStatus,
+		ESlotGetMbmsNetworkServiceStatus2,
+		ESlotNotifyMbmsNetworkServiceStatusChange,
+		ESlotEnumerateMbmsMonitorCount,
+		ESlotEnumerateMbmsMonitorMaxCount,
+		ESlotEnumerateMbmsActiveCount,
+		ESlotEnumerateMbmsActiveMaxCount,
+		EMaxNumPacketPtrSlots
+	};
+	
+	// The ptrC holder slot numbers used by RPacketService asynchronous requests
+	enum TPacketPtrCHolderSlots
+		{
+		ESlotUpdateMbmsMonitorServiceListL=0,
+		EMaxNumPacketPtrCSlots
+		};
+
+	// The ptr holder slot numbers used by RPacketContext asynchronous requests
+	enum TPacketContextPtrHolderSlots
+	{
+		ESlotDataPort=0,
+		ESlotContextStatus,
+		ESlotDataVolume,
+		ESlotGranularity,
+		ESlotGetSpeed,
+		ESlotNotifySpeed,
+		ESlotGetDataVolumeTransferred,
+		ESlotEnumeratePacketFilters,
+		ESlotGetPacketFilterInfo,
+		ESlotRemovePacketFilter,
+		ESlotCreateTFT,
+		ESlotRemoveMediaAuthorization,
+		EMaxNumPacketContextPtrSlots
+	};
+	
+	// The ptrC holder slot numbers used by RPacketMbmsContext asynchronous requests
+	enum TPacketMbmsContextPtrCHolderSlots
+		{
+		ESlotUpdateMbmsSessionList=0,
+		ESlotUpdateMbmsSessionList2,
+		EMaxNumPacketContextPtrCSlots
+		};
+
+	// The ptr holder slot numbers used by RPacketQoS asynchronous requests
+	enum TPacketQoSPtrHolderSlots
+		{
+		EMaxNumPacketQoSPtrSlots
+		};
+	
+	// The ptrC holder slot numbers used by RPacketQoS asynchronous requests
+	enum TPacketQoSPtrCHolderSlots
+		{
+		EMaxNumPacketQoSPtrCSlots
+		};	
+
+public:
+	template <typename T> inline TPtr8& Set(TInt aSlot,T& aObject)
+		{
+		TPtr8& ptr=Ptr(aSlot);
+		ptr.Set(reinterpret_cast<TText8*>(&aObject),sizeof(T),sizeof(T));
+		return ptr;
+		};
+		
+	template <typename T> inline TPtrC8& SetC(TInt aSlot, const T& aObject)
+		{
+		TPtrC8& ptr=PtrC(aSlot);
+		ptr.Set(REINTERPRET_CAST(const TText8*,(&aObject)),sizeof(T));
+		return ptr;
+		};
+
+protected:
+	virtual void ConstructL(const TInt aSizeOfPtrArray,TInt aSizeOfPtrCArray);	
+	CEtelPacketPtrHolder();
+private:
+	TPtr8& Ptr(const TInt aIndex);
+	TPtrC8& PtrC(const TInt aIndex);
+
+protected:
+	RArray<TPtr8> iPtrArray;
+	RArray<TPtrC8> iPtrCArray;
+	};
+
+
+
+class CPacketQoSPtrHolder : public CEtelPacketPtrHolder
+/**
+QoS profile ptr holder class.
+This class inherits from the CEtelPacketPtrHolder class.
+Currently, there are no asynch. requests in RPacketQoS that pass argument by value.
+@internalAll
+*/
+	{
+public:
+	static CPacketQoSPtrHolder* NewL(const TInt aSizeOfPtrArray, TInt aSizeOfPtrCArray);
+	~CPacketQoSPtrHolder();
+protected:
+	CPacketQoSPtrHolder();
+	};
+
+
+class CPacketContextPtrHolder : public CEtelPacketPtrHolder
+/**
+Packet Context ptr holder class.
+This class inherits from the CEtelPacketPtrHolder class.
+@internalAll
+*/
+	{
+public:
+	static CPacketContextPtrHolder* NewL(const TInt aSizeOfPtrArray, TInt aSizeOfPtrCArray);
+	~CPacketContextPtrHolder();
+protected:
+	CPacketContextPtrHolder();
+public:
+	RPacketContext::TNotifyDataTransferredRequest iNotifyDataTransferRequest;	//< used in RPacketContext::NotifyDataTransferred
+	TInt iGetPacketFilterInfoIndex;												//< used in RPacketContext::GetPacketFilterInfo(*,*,*)
+	TInt iRemovePacketFilterId;													//< used in RPacketContext::RemovePacketFilter(*,*)
+	TInt iCreateTFTSize;														//< used in RPacketContext::CreateNewTFT
+	HBufC8* iStoreNetworkBuf;													//< used in RPacketContext::AddMediaAuthorizationL
+	TPtr8 iStoreNetworkPtr;														//< used in RPacketContext::AddMediaAuthorizationL
+	TMbmsAction iMbmsAction;													//< used in RPacketContext::UpdateMbmsSessionList
+	TMbmsSessionId	iSessionId;													//< used in RPacketContext::UpdateMbmsSessionList
+	};	
+
+/**
+Packet Service ptr holder class.
+This class inherits from the CEtelPacketPtrHolder class.
+@internalAll
+*/
+class CPacketPtrHolder : public CEtelPacketPtrHolder
+	{
+public:
+	static CPacketPtrHolder* NewL(const TInt aSizeOfPtrArray, TInt aSizeOfPtrCArray);
+	~CPacketPtrHolder();
+protected:
+	CPacketPtrHolder();
+public:
+	TInt iGetContextInfoIndex;								//< used in RPacketService::GetContextInfo() async. version
+	RPacketService::TMSClass iMSClass;						//< used in RPacketService::SetMSClass() async. version
+	RPacketService::TPreferredBearer iPrefBearer;			//< used in RPacketService::SetPreferredBearer() async. version
+	RPacketService::TAttachMode iAttachMode;				//< used in RPacketService::SetAttachMode(), async. version
+	TInt iGetNifInfoIndex;									//< used in RPacketService::GetNifInfo(*,*,*)
+	RPacketService::TContextNameInNif iGetContextNameInNif; //< used in RPacketService::GetContextNameInNif() 
+	CBufBase* iStoreMbmsBuf;								//< used in RPacketService::UpdateMbmsMonitorServiceListL
+	TPtr8 iStoreMbmsPtr;									//< used in RPacketService::UpdateMbmsMonitorServiceListL
+	TBool iMbmsAttemptAttach;								//< used in RPacketService::GetMbmsNetworkServiceStatus
+	TMbmsAction iMbmsAction;								//< used in RPacketService::UpdateMbmsMonitorServiceListL
+	};	
+
+#endif