telephonyserver/etelmultimode/INC/mm_hold.h
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
equal deleted inserted replaced
-1:000000000000 0:3553901f7fa8
       
     1 // Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // Multimode ETel API v1.0
       
    15 // Header file for ptr holder classes, used to store client data
       
    16 // 
       
    17 //
       
    18 
       
    19 /**
       
    20  @file
       
    21 */
       
    22 
       
    23 #ifndef _MM_HOLD_H_
       
    24 #define _MM_HOLD_H_
       
    25 
       
    26 #include <etelmm.h>
       
    27 
       
    28 
       
    29 class CMmPtrHolder : public CBase
       
    30 /**
       
    31 A base class for all ptr holder classes
       
    32 
       
    33 The ptr holder classes contain the TPtr8's used by asynchronous client-side functions.
       
    34 The API code also uses them to ensure BC by keeping size of R-classes constant.
       
    35 
       
    36 @publishedPartner
       
    37 @released
       
    38 */
       
    39 	{
       
    40 public:
       
    41 //	static CMmPtrHolder* NewL(TInt aSizeOfPtrArray,TInt aSizeOfPtrCArray);
       
    42 	virtual ~CMmPtrHolder();
       
    43 public:
       
    44 	template <typename T> inline TPtr8& Set(TInt aSlot,T& aObject)
       
    45 		{
       
    46 		TPtr8& ptr=Ptr(aSlot);
       
    47 		ptr.Set(REINTERPRET_CAST(TText8*,(&aObject)),sizeof(T),sizeof(T));
       
    48 		return ptr;
       
    49 		};
       
    50 
       
    51 	template <typename T> inline TPtrC8& SetC(TInt aSlot, const T& aObject)
       
    52 		{
       
    53 		TPtrC8& ptr=PtrC(aSlot);
       
    54 		ptr.Set(REINTERPRET_CAST(const TText8*,(&aObject)),sizeof(T));
       
    55 		return ptr;
       
    56 		};
       
    57 
       
    58 protected:
       
    59 	virtual void ConstructL(TInt aSizeOfPtrArray,TInt aSizeOfPtrCArray);	
       
    60 	CMmPtrHolder();
       
    61 private:
       
    62 	TPtr8& Ptr(TInt aIndex);
       
    63 	TPtrC8& PtrC(TInt aIndex);
       
    64 protected:
       
    65 	RArray<TPtr8> iPtrArray;
       
    66 	RArray<TPtrC8> iPtrCArray;
       
    67 	};
       
    68 
       
    69 
       
    70 
       
    71 class CMobilePhonePtrHolder : public CMmPtrHolder
       
    72 /**
       
    73 Holds the TPtr8 arrays for all RMobilePhone requests
       
    74 
       
    75 This class is internal.
       
    76 
       
    77 @publishedPartner
       
    78 @released
       
    79 */
       
    80 
       
    81 	{
       
    82 public:
       
    83 
       
    84 	// The ptr holder slot numbers used by RMobilePhone asynchronous requests
       
    85 
       
    86 	enum TPhonePtrHolderSlots
       
    87 		{
       
    88 		ESlot1NotifyIccAccessCapsChange =0,
       
    89 		ESlot1GetServiceTable,
       
    90 		ESlot1GetBatteryInfo,
       
    91 		ESlot1NotifyBatteryInfoChange,
       
    92 		ESlot1GetSignalStrength,
       
    93 		ESlot2GetSignalStrength,
       
    94 		ESlot1NotifySignalStrengthChange,
       
    95 		ESlot2NotifySignalStrengthChange,
       
    96 		ESlot1GetIndicator,
       
    97 		ESlot1NotifyIndicatorChange,
       
    98 		ESlot1GetPhoneId,
       
    99 		ESlot1GetSubscriberId,
       
   100 		ESlot1NotifyDTMFCapsChange,
       
   101 		ESlot1NotifyModeChange,
       
   102 		ESlot1GetCurrentNetwork,
       
   103 		ESlot1NotifyCurrentNetworkChange,
       
   104 		ESlot1GetNetworkRegistrationStatus,
       
   105 		ESlot1NotifyNetworkRegistrationStatusChange,
       
   106 		ESlot1NotifyNetworkSelectionSettingChange,
       
   107 		ESlot1NotifyNITZInfoChange,
       
   108 		ESlot1NotifyDefaultPrivacyChange,
       
   109 		ESlot1NotifyCallServiceCapsChange,
       
   110 		ESlot1GetFeatureCode,
       
   111 		ESlot1NotifyCallForwardingStatusChange,
       
   112 		ESlot1PhoneNotifyCallForwardingActive,
       
   113 		ESlot2PhoneNotifyCallForwardingActive,
       
   114 		ESlot2GetIdentityServiceStatus,
       
   115 		ESlot1NotifyCallBarringStatusChange,
       
   116 		ESlot1GetCCBSStatus,
       
   117 		ESlot2GetCCBSStatus,
       
   118 		ESlot1NotifyCCBSStatusChange,
       
   119 		ESlot1NotifyAlternatingCallCapsChange,
       
   120 		ESlot1NotifyAlternatingCallModeChange,
       
   121 		ESlot2NotifyAlternatingCallModeChange,
       
   122 		ESlot1NotifyALSLineChange,
       
   123 		ESlot1NotifyCostCapsChange,
       
   124 		ESlot1NotifySecurityCapsChange,
       
   125 		ESlot1NotifyLockInfoChange,
       
   126 		ESlot1NotifySecurityEvent,
       
   127 		ESlot1NotifyMessageWaiting,
       
   128 		ESlot2NotifyMessageWaiting,
       
   129 		ESlot1NotifyFdnStatusChange,
       
   130 		ESlot1GetIncomingCallType,
       
   131 		ESlot1NotifyIncomingCallTypeChange,
       
   132 		ESlot1GetUUSSetting,
       
   133 		ESlot1NotifyUUSSettingChange,
       
   134 		ESlot1NotifyMultimediaCallPreferenceChange,
       
   135 		ESlot1GetNetworkSecurityLevel,
       
   136 		ESlot1NotifyNetworkSecurityLevelChange,
       
   137 		ESlot1NotifyUSimApplicationsInfoChange,
       
   138 		ESlot2NotifyUSimApplicationsInfoChange,
       
   139 		ESlot1NotifyUSimAppsSelectionModeChange,
       
   140 		ESlot1EnumerateUSimApplications,
       
   141 		ESlot2EnumerateUSimApplications,
       
   142 		ESlot1NotifyCCBSRecall,
       
   143 		ESlot1GetFdnStatus,
       
   144 		ESlot1GetHomeNetworkSearchPeriod,
       
   145 		ESlot1GetLastUsedAccessTechnology,
       
   146 		ESlot1NotifyNetworkInvScanChange,
       
   147 		ESlot1NotifyNetworkInvScanEvent,
       
   148 		ESlot1EnumerateAPNEntries,
       
   149 		ESlot1NotifyAirTimeDurationChange,
       
   150 		ESlot1NotifyDTMFEvent,
       
   151 		ESlot1GetPersonalisationStatus,
       
   152 		ESlot1GetCipheringIndicatorStatus,
       
   153 		ESlot1NotifyCipheringIndicatorStatus,
       
   154 		ESlot1EnumerateSmartCardApplications,
       
   155 		ESlot1GetCurrentActiveUSimApplication,
       
   156 		ESlot1GetIccIdentity,
       
   157 		ESlot1NotifySecurityCodeInfoChange,
       
   158 		ESlot1SmartCardAuthenticate,
       
   159 		ESlot1GetAPNControlListServiceStatus,
       
   160 		ESlot1NotifyAPNControlListServiceStatusChange,
       
   161 		EMaxNumberPhonePtrSlots
       
   162 		};
       
   163 
       
   164 	enum TPhonePtrCHolderSlots
       
   165 		{
       
   166 		ESlot1SetNetworkSelectionSetting = 0,
       
   167 		ESlot1SetDefaultPrivacy,
       
   168 		ESlot1ProgramFeatureCode,
       
   169 		ESlot1SetCallForwardingStatus,
       
   170 		ESlot2SetCallForwardingStatus,
       
   171 		ESlot1GetIdentityServiceStatus,
       
   172 		ESlot1SetCallBarringStatus,
       
   173 		ESlot2SetCallBarringStatus,
       
   174 		ESlot1SetCallBarringPassword,
       
   175 		ESlot1SetCallWaitingStatus,
       
   176 		ESlot2SetCallWaitingStatus,
       
   177 		ESlot1SetAlternatingCallMode,
       
   178 		ESlot2SetAlternatingCallMode,
       
   179 		ESlot1SetALSLine,
       
   180 		ESlot1ClearCostMeter,
       
   181 		ESlot1SetMaxCostMeter,
       
   182 		ESlot1GetLockInfo,
       
   183 		ESlot1SetLockSetting,
       
   184 		ESlot2SetLockSetting,
       
   185 		ESlot1ChangeSecurityCode,
       
   186 		ESlot2ChangeSecurityCode,
       
   187 		ESlot1VerifySecurityCode,
       
   188 		ESlot2VerifySecurityCode,
       
   189 		ESlot1SetFdnSetting,
       
   190 		ESlot1SelectNetwork,
       
   191 		ESlot2SelectNetwork,
       
   192 		ESlot1SetMulticallParams,
       
   193 		ESlot1SetIncomingCallType,
       
   194 		ESlot1SetUUSSetting,
       
   195 		ESlot1SetUSimApplicationStatus,
       
   196 		ESlot2SetUSimApplicationStatus,
       
   197 		ESlot1GetUSimApplicationInfo,
       
   198 		ESlot1SetMultimediaCallPreference,
       
   199 		ESlot1GetPhoneStoreInfo,
       
   200 		ESlot1AcceptCCBSRecall,		
       
   201 		ESlot1DeactivateCCBS,	
       
   202 		ESlot1SetService,
       
   203 		ESlot1GetMmsConfig,
       
   204 		ESlot1NotifyMmsConfig,
       
   205 		ESlot1GetCompMethodName,
       
   206 		ESlot1GetAPNnameIndex,
       
   207 		ESlot1DeleteAPNNameIndex,
       
   208 		ESlot1SetAPNControlListServiceStatus,
       
   209 		ESlot1SendSSOperation,
       
   210 		ESlot1SetPersonalisationStatus,
       
   211 		ESlot1SetIdentityServiceStatus,
       
   212 		ESlot2SetIdentityServiceStatus,
       
   213 		ESlot1NotifyIdentityServiceStatus,
       
   214 		ESlot2NotifyIdentityServiceStatus,
       
   215 		ESlot1NotifyMulticallIndicatorChange,
       
   216 		ESlot1GetSmartCardApplicationInfo,
       
   217 		ESlot1NotifySmartCardApplicationInfoChange,
       
   218 		ESlot2NotifySmartCardApplicationInfoChange,
       
   219 		ESlot1SetSmartCardApplicationStatus,
       
   220 		ESlot2SetSmartCardApplicationStatus,
       
   221 		ESlot1GetScFileInfo,
       
   222 		ESlot1ReadScFile,
       
   223 		ESlot1UpdateScFile,
       
   224 		ESlot1GetSecurityCodeInfo,
       
   225 		ESlot1SetGbaBootstrapParams,
       
   226 		EMaxNumberPhonePtrCSlots
       
   227 		};
       
   228 
       
   229 public:
       
   230 	static CMobilePhonePtrHolder* NewL(TInt aSizeOfPtrArray,TInt aSizeOfPtrCArray);
       
   231 	~CMobilePhonePtrHolder();
       
   232 protected:
       
   233 	CMobilePhonePtrHolder();
       
   234 public:
       
   235 	// Storage for parameters from client which were passed by value.
       
   236 	RMobilePhone::TMobilePhoneServiceTable iServiceTable;
       
   237 	RMobilePhone::TMobilePhonePrivacy iPrivacySetting;
       
   238 	RMobilePhone::TMobilePhoneCFCondition iSetCFCondition;
       
   239 	RMobilePhone::TNetworkServiceAndAction iProgramFeatureCode;
       
   240 	RMobilePhone::TNetworkServiceAndAction iGetFeatureCode;
       
   241 	RMobilePhone::TIdServiceAndLocation iGetIdentityServiceStatus;
       
   242 	RMobilePhone::TMobilePhoneCBCondition iSetCBStatusCondition;
       
   243 	RMobilePhone::TMobileInfoLocation iGetCCBSStatusLocation;
       
   244 	RMobilePhone::TMobileService iSetCallWaitingStatusGroup;
       
   245 	RMobilePhone::TMobilePhoneServiceAction iSetCallWaitingStatusAction;
       
   246 	RMobilePhone::TMobilePhoneAlternatingCallMode iSetAlternatingCallModeMode;
       
   247 	RMobilePhone::TMobileService iSetAlternatingCallModeService;
       
   248 	RMobilePhone::TMobilePhoneALSLine iSetALSLine;
       
   249 	TUint iSetMaxCostMeterUnits;
       
   250 	RMobilePhone::TMobilePhoneCostMeters iClearCostMeter;
       
   251 	RMobilePhone::TMobilePhoneLock iLock;
       
   252 	RMobilePhone::TMobilePhoneLock iSetLockSettingLock;
       
   253 	RMobilePhone::TMobilePhoneLockSetting iSetLockSettingSetting;
       
   254 	RMobilePhone::TMobilePhoneSecurityCode iVerifySecurityCodeType;
       
   255 	RMobilePhone::TCodeAndUnblockCode iVerifySecurityCodeData;
       
   256 	RMobilePhone::TMobilePhoneSecurityCode iChangeSecurityCodeType;
       
   257 	RMobilePhone::TMobilePhoneFdnSetting iSetFdnSetting;
       
   258 	TBool iIsManual;
       
   259 	TInt  iUserMaxBearers;
       
   260 	RMobilePhone::TMobilePhoneIncomingCallType iCallType;
       
   261 	RMobilePhone::TMobilePhoneUUSSetting iSetUUSSetting;
       
   262 
       
   263 	RMobilePhone::TMobilePhoneMultimediaSettings iMmSettings;
       
   264 	RMobilePhone::TUSimSelectionMode iUSimSelectionMode;
       
   265 	RMobilePhone::TUSimAppAction iUSimAppAction;
       
   266 	TInt iUSimAppIndex;
       
   267 	RMobilePhone::TPhoneStoreNameAndIccType iPhoneStoreNameAndIccType;
       
   268 	RMobilePhone::TAID iAID;
       
   269 	TInt iDeactivateCCBSIndex;
       
   270 	TInt iAcceptCCBSRecallIndex;
       
   271 	TInt iBarringService;
       
   272 	RMobilePhone::TMmsConnParams iGetMmsConfig;
       
   273 	RMobilePhone::TMmsConnParams iNotifyMmsConfig;
       
   274 	TUint8	iCompMethodIdentifier;
       
   275 	TUint32 iGetAPNnameIndex;
       
   276 	TUint32 iDeleteAPNNameIndex;
       
   277 	RMobilePhone::TAPNControlListServiceStatus iSetAPNControlListServiceStatus;
       
   278 	RMobilePhone::TMobilePhoneNotifySendSSOperation iSendSSOperation;
       
   279 	RMobilePhone::TMobilePhonePersonalisation iSetPersonalisationScheme;
       
   280 	CBufBase* iStoreNetworkBuf;
       
   281 	TPtr8 iStoreNetworkPtr;
       
   282 	RMobilePhone::TMobilePhoneIdService iSetIdService;
       
   283 	RMobilePhone::TMobilePhoneIdServiceSetting iSetIdServiceSetting;
       
   284 	RMobilePhone::TMobilePhoneIdService iNotifyIdService;
       
   285 	TInt iScAppIndex;
       
   286 	RMobilePhone::TSmartCardApplicationAction iScAppAction;
       
   287 	RMobilePhone::TMobilePhoneSecurityCode iGetSecurityCodeInfoType;
       
   288 	RMobilePhone::TAID iScAuthAID;
       
   289 	RMobilePhone::TAID iAuthAID;
       
   290 	CBufBase* iStoreWlanSIDBuf;
       
   291 	TPtr8 iStoreWlanSIDPtr;
       
   292 	};	
       
   293 
       
   294 
       
   295 
       
   296 class CMobileLinePtrHolder : public CMmPtrHolder
       
   297 /**
       
   298 Holds the TPtr8 arrays for all RMobileLine requests.
       
   299 
       
   300 @publishedPartner
       
   301 @released
       
   302 */
       
   303 	{
       
   304 public:
       
   305 	// The ptr holder slot numbers used by RMobileLine asynchronous requests
       
   306 
       
   307 	enum TLinePtrHolderSlots
       
   308 		{
       
   309 		ESlot1LineNotifyMobileLineStatusChange=0,
       
   310 		EMaxNumberLinePtrSlots
       
   311 		};
       
   312 
       
   313 	enum TLinePtrCHolderSlots
       
   314 		{
       
   315 		EMaxNumberLinePtrCSlots = 0
       
   316 		};
       
   317 
       
   318 public:
       
   319 	static CMobileLinePtrHolder* NewL(TInt aSizeOfPtrArray, TInt aSizeOfPtrCArray);
       
   320 public:
       
   321 	};	
       
   322 
       
   323 
       
   324 
       
   325 class CMobileCallPtrHolder : public CMmPtrHolder
       
   326 /**
       
   327 Holds the TPtr8 arrays for all RMobileCall requests.
       
   328 
       
   329 @publishedPartner
       
   330 @released
       
   331 */
       
   332 	{
       
   333 public:
       
   334 		// The ptr holder slot numbers used by RMobileCall asynchronous requests
       
   335 
       
   336 	enum TCallPtrHolderSlots
       
   337 		{
       
   338 		ESlot1NotifyMobileCallStatusChange = 0,
       
   339 		ESlot1NotifyCallEvent,
       
   340 		ESlot1NotifyPrivacyConfirmation,
       
   341 		ESlot1NotifyTrafficChannelConfirmation,
       
   342 		ESlot1NotifyUUSCapsChange,
       
   343 		ESlot1ReceiveUUI,
       
   344 		ESlot1ActivateCcbs,
       
   345 		ESlot1AnswerMultimediaCallAsVoice,
       
   346 		EMaxNumberCallPtrSlots
       
   347 		};
       
   348 
       
   349 	enum TCallPtrCHolderSlots
       
   350 		{
       
   351 		ESlot1Deflect = 0,
       
   352 		ESlot2Deflect,
       
   353 		ESlot1SetDynamicHscsdParams,
       
   354 		ESlot2SetDynamicHscsdParams,
       
   355 		ESlot1GetMobileDataCallRLPRange,
       
   356 		ESlot1SendUUI,
       
   357 		ESlot2SendUUI,
       
   358 		ESlot1HangupWithUUI,
       
   359 		ESlot1AnswerWithUUI,
       
   360 		ESlot1DialNoFdnCheck,
       
   361 		EMaxNumberCallPtrCSlots
       
   362 		};
       
   363 
       
   364 public:
       
   365 	static CMobileCallPtrHolder* NewL(TInt aSizeOfPtrArray,TInt aSizeOfPtrCArray);
       
   366 public:
       
   367 	RMobileCall::TMobileCallAiur iAiur;
       
   368 	TInt iRxTimeslots;
       
   369 	TInt iRLPVersion;
       
   370 	TBool iMoreUUI;
       
   371 	RMobileCall::TMobileCallDeflect iDeflectType;
       
   372 	TName iFallbackCallName;
       
   373 	};	
       
   374 
       
   375 
       
   376 
       
   377 class CMobileConferenceCallPtrHolder : public CMmPtrHolder
       
   378 /**
       
   379 Holds the TPtr8 arrays for all RMobileConferenceCall requests.
       
   380 
       
   381 This class is internal.
       
   382 
       
   383 @publishedPartner
       
   384 @released
       
   385 */
       
   386 	{
       
   387 public:
       
   388 
       
   389 	// The ptr holder slot numbers used by RMobileConferenceCall asynchronous requests
       
   390 
       
   391 	enum TConferenceCallPtrHolderSlots
       
   392 		{
       
   393 		ESlot1NotifyConferenceCallCapsChange = 0,
       
   394 		ESlot1NotifyConferenceStatusChange,
       
   395 		ESlot1NotifyConferenceEvent,
       
   396 		EMaxNumberConferenceCallPtrSlots	
       
   397 		};
       
   398 
       
   399 	enum TConferenceCallPtrCHolderSlots
       
   400 		{
       
   401 		EMaxNumberConferenceCallPtrCSlots
       
   402 		};
       
   403 
       
   404 public:
       
   405 	static CMobileConferenceCallPtrHolder* NewL(TInt aSizeOfPtrArray,TInt aSizeOfPtrCArray);	
       
   406 	};	
       
   407 
       
   408 
       
   409 class CSmsMessagingPtrHolder : public CMmPtrHolder
       
   410 /**
       
   411 Holds the TPtr8 arrays for all RMobileSmsMessaging requests.
       
   412 
       
   413 This class is internal.
       
   414 
       
   415 @publishedPartner
       
   416 @released
       
   417 */
       
   418 
       
   419 	{
       
   420 public:
       
   421 	// The ptr holder slot numbers used by RMobileSmsMessaging asynchronous requests
       
   422 
       
   423 	enum TSmsPtrHolderSlots
       
   424 		{
       
   425 		ESlot1NotifyReceiveModeChange = 0,
       
   426 		ESlot1NotifyMoSmsBearerChange,
       
   427 		EMaxNumberSmsPtrSlots
       
   428 		};
       
   429 
       
   430 	enum TSmsPtrCHolderSlots
       
   431 		{
       
   432 		ESlot1AckSmsStored = 0,
       
   433 		ESlot1NackSmsStored,
       
   434 		ESlot1GetMessageStoreInfo,
       
   435 		ESlot1SetReceiveMode,
       
   436 		ESlot1SetMoSmsBearer,
       
   437 		EMaxNumberSmsPtrCSlots
       
   438 		};
       
   439 
       
   440 public:
       
   441 	static CSmsMessagingPtrHolder* NewL(TInt aSizeOfPtrArray,TInt aSizeOfPtrCArray);
       
   442 	~CSmsMessagingPtrHolder();
       
   443 protected:
       
   444 	CSmsMessagingPtrHolder();
       
   445 public:
       
   446 	TBool iAckSmsStoredFull;
       
   447 	TInt iNackSmsStoredCause;
       
   448 	TInt iGetMessageStoreInfoIndex;
       
   449 	RMobileSmsMessaging::TMobileSmsReceiveMode iReceiveMode;
       
   450 	RMobileSmsMessaging::TMobileSmsBearer iSmsBearer;
       
   451 	CBufBase* iSmspBuf;
       
   452 	TPtr8 iSmspPtr;
       
   453 	};	
       
   454 
       
   455 
       
   456 
       
   457 class CCbsMessagingPtrHolder : public CMmPtrHolder
       
   458 /**
       
   459 Holds the TPtr8 arrays for all RMobileBroadcastMessaging requests.
       
   460 
       
   461 @publishedPartner
       
   462 @released
       
   463 */
       
   464 	{
       
   465 public:
       
   466 
       
   467 	// The ptr holder slot numbers used by RMobileBroadcastMessaging asynchronous requests
       
   468 
       
   469 	enum TBroadcastPtrHolderSlots
       
   470 		{
       
   471 		ESlot1NotifyFilterSettingChange=0,
       
   472 		ESlot1StoreCbmiList,
       
   473 		EMaxNumberBroadcastPtrSlots
       
   474 		};
       
   475 
       
   476 	enum TBroadcastPtrCHolderSlots
       
   477 		{
       
   478 		ESlot1SetFilterSetting=0,
       
   479 		ESlot1StoreBroadcastIdListL,
       
   480 		EMaxNumberBroadcastPtrCSlots	
       
   481 		};
       
   482 
       
   483 public:
       
   484 	static CCbsMessagingPtrHolder* NewL(TInt aSizeOfPtrArray,TInt aSizeOfPtrCArray);
       
   485 	~CCbsMessagingPtrHolder();
       
   486 protected:
       
   487 	CCbsMessagingPtrHolder();
       
   488 public:
       
   489 	RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter iSetFilterSetting;
       
   490 	RMobileBroadcastMessaging::TMobileBroadcastIdType iIdType;
       
   491 	CBufBase* iBroadcastIdBuf;
       
   492 	TPtr8 iBroadcastIdPtr;
       
   493 	};	
       
   494 
       
   495 class CUssdMessagingPtrHolder : public CMmPtrHolder
       
   496 /**
       
   497 @publishedPartner
       
   498 @released
       
   499 */
       
   500 	{
       
   501 public:
       
   502 
       
   503 	// The ptr holder slot numbers used by RMobileUssdMessaging asynchronous requests
       
   504 
       
   505 	enum TUssdPtrHolderSlots
       
   506 		{
       
   507 		EMaxNumberUssdPtrSlots=0,
       
   508 		};
       
   509 
       
   510 	enum TUssdPtrCHolderSlots
       
   511 		{
       
   512 		EMaxNumberUssdPtrCSlots=0
       
   513 		};
       
   514 
       
   515 public:
       
   516 	~CUssdMessagingPtrHolder();
       
   517 protected:
       
   518 	CUssdMessagingPtrHolder();
       
   519 public:
       
   520 	};	
       
   521 
       
   522 
       
   523 class CMobilePhoneStorePtrHolder : public CMmPtrHolder
       
   524 /** 
       
   525 A base class PtrHolder used by all classes which inherit from RMobilePhoneStore. 
       
   526 
       
   527 Holds the TPtr8 arrays for all RMobilePhoneStore requests.
       
   528 
       
   529 Each class derived from RMobilePhoneStore can create its own
       
   530 PtrHolder class derived from CMobilePhoneStorePtrHolder.  RMobilePhoneStore derived
       
   531 classes construct the appropriate PtrHolder class which is passed down to 
       
   532 RMobilePhoneStore via the RMobilePhoneStore::BaseConstruct method.  Both methods of 
       
   533 RMobilePhoneStore and a derived class must share the same PtrHolder.  It follows that
       
   534 they must cooperate to ensure that methods in the base and derived classes do not
       
   535 use the same slots.  The derived classes should use the slots that are equal to or
       
   536 greater than EMaxNumberPhoneStorePtrSlots & EMaxNumberPhoneStorePtrCSlots.
       
   537 
       
   538 
       
   539 @publishedPartner
       
   540 @released
       
   541 */
       
   542 	{
       
   543 public:
       
   544 	
       
   545 	// The ptr holder slot numbers used by RMobilePhoneStore asynchronous requests
       
   546 
       
   547 /** This member is internal. */
       
   548 	enum TPhoneStorePtrHolderSlots
       
   549 		{
       
   550 	/** This member is internal. */
       
   551 		ESlot1NotifyStoreEvent = 0,
       
   552 	/** This member is internal. */
       
   553 		ESlot2NotifyStoreEvent,
       
   554 	/** This member is internal. */
       
   555 		EMaxNumberPhoneStorePtrSlots
       
   556 		};
       
   557 
       
   558 /** This member is internal. */
       
   559 	enum TPhoneStorePtrCHolderSlots
       
   560 		{
       
   561 	/** This member is internal. */
       
   562 		ESlot1Delete = 0,
       
   563 	/** This member is internal. */
       
   564 		EMaxNumberPhoneStorePtrCSlots
       
   565 		};
       
   566 
       
   567 public:
       
   568 	static CMobilePhoneStorePtrHolder* NewL(TInt aSizeOfPtrArray,TInt aSizeOfPtrCArray);
       
   569 public:
       
   570 	TInt iDeleteIndex;
       
   571 	};	
       
   572 
       
   573 
       
   574 
       
   575 class CSmsStorePtrHolder : public CMobilePhoneStorePtrHolder
       
   576 /**
       
   577 Holds the TPtr8 arrays for all RMobileSmsStore requests.
       
   578 
       
   579 This class is internal.
       
   580 
       
   581 @publishedPartner
       
   582 @released
       
   583 */
       
   584 	{
       
   585 public:
       
   586 
       
   587 	// The ptr holder slot numbers used by RMobileSmsStore asynchronous requests
       
   588 
       
   589 	enum TSmsStorePtrHolderSlots
       
   590 		{
       
   591 		EMaxNumberSmsStorePtrSlots = EMaxNumberPhoneStorePtrSlots
       
   592 		};
       
   593 
       
   594 	enum TSmsStorePtrCHolderSlots
       
   595 		{
       
   596 		ESlot1GetStatusReport = EMaxNumberPhoneStorePtrCSlots,
       
   597 		EMaxNumberSmsStorePtrCSlots
       
   598 		};
       
   599 
       
   600 public:
       
   601 	static CSmsStorePtrHolder* NewL(TInt aSizeOfPtrArray,TInt aSizeOfPtrCArray);
       
   602 public:
       
   603 	TInt iGetStatusReportIndex;
       
   604 	};	
       
   605 
       
   606 
       
   607 
       
   608 class CNamStorePtrHolder : public CMobilePhoneStorePtrHolder
       
   609 /**
       
   610 Holds the TPtr8 arrays for all RMobileNamStore requests.
       
   611 
       
   612 This class is internal.
       
   613 
       
   614 @publishedPartner
       
   615 @released
       
   616 @deprecated 9.5
       
   617 */
       
   618 	{
       
   619 public:
       
   620 
       
   621 	// The ptr holder slot numbers used by RMobileNamStore asynchronous requests
       
   622 
       
   623 	enum TNamStorePtrHolderSlots
       
   624 		{
       
   625 		EMaxNumberNamStorePtrSlots = EMaxNumberPhoneStorePtrSlots
       
   626 		};
       
   627 
       
   628 	enum TNamStorePtrCHolderSlots
       
   629 		{
       
   630 		ESlot1SetActiveNam = EMaxNumberPhoneStorePtrCSlots,
       
   631 		ESlot1NamListStoreAll,
       
   632 		ESlot1NamListStoreAllV4,
       
   633 		EMaxNumberNamStorePtrCSlots
       
   634 		};
       
   635 
       
   636 public:
       
   637 	static CNamStorePtrHolder* NewL(TInt aSizeOfPtrArray,TInt aSizeOfPtrCArray);
       
   638 	~CNamStorePtrHolder();
       
   639 protected:
       
   640 	CNamStorePtrHolder();
       
   641 public:
       
   642 	CBufBase* iNamBuf;
       
   643 	CBufBase* iNamBufV4;
       
   644 	TPtr8 iNamPtr;
       
   645 	TPtr8 iNamPtrV4;
       
   646 	TInt iSetActiveNamNamId;
       
   647 	TInt iStoreAllNamId;
       
   648 	TInt iStoreAllV4NamId;
       
   649 	};	
       
   650 
       
   651 
       
   652 
       
   653 class CONStorePtrHolder : public CMobilePhoneStorePtrHolder
       
   654 /**
       
   655 Holds the TPtr8 arrays for all RMobileONStore requests.
       
   656 
       
   657 This class is internal.
       
   658 
       
   659 @publishedPartner
       
   660 @released
       
   661 */
       
   662 	{
       
   663 public:
       
   664 
       
   665 	// The ptr holder slot numbers used by RMobileOnStore asynchronous requests
       
   666 
       
   667 	enum TOnStorePtrHolderSlots
       
   668 		{
       
   669 		EMaxNumberONStorePtrSlots = EMaxNumberPhoneStorePtrSlots
       
   670 		};
       
   671 
       
   672 	enum TOnStorePtrCHolderSlots
       
   673 		{
       
   674 		EMaxNumberONStorePtrCSlots = EMaxNumberPhoneStorePtrCSlots
       
   675 		};
       
   676 
       
   677 public:
       
   678 	static CONStorePtrHolder* NewL(TInt aSizeOfPtrArray,TInt aSizeOfPtrCArray);
       
   679 	~CONStorePtrHolder();
       
   680 protected:
       
   681 	CONStorePtrHolder();
       
   682 public:
       
   683 	CBufBase* iONBuf;
       
   684 	TPtr8 iONPtr;
       
   685 	};	
       
   686 
       
   687 
       
   688 
       
   689 class CPhoneBookStorePtrHolder : public CMobilePhoneStorePtrHolder
       
   690 /**
       
   691 Holds the TPtr8 arrays for all RMobilePhonebookStore requests.
       
   692 
       
   693 This class is internal.
       
   694 
       
   695 @publishedPartner
       
   696 @released
       
   697 */
       
   698 	{
       
   699 public:
       
   700 
       
   701 	// The ptr holder slot numbers used by RMobilePhonebookStore asynchronous requests
       
   702 
       
   703 	enum TPhoneBookStorePtrHolderSlots
       
   704 		{
       
   705 		ESlot1PhoneBookStoreWrite = EMaxNumberPhoneStorePtrSlots,
       
   706 		EMaxNumberPhoneBookStorePtrSlots
       
   707 		};
       
   708 
       
   709 	enum TPhoneBookStorePtrCHolderSlots
       
   710 		{
       
   711 		ESlot1PhoneBookStoreRead = EMaxNumberPhoneStorePtrCSlots,
       
   712 		EMaxNumberPhoneBookStorePtrCSlots 
       
   713 		};
       
   714 
       
   715 public:
       
   716 	static CPhoneBookStorePtrHolder* NewL(TInt aSizeOfPtrArray,TInt aSizeOfPtrCArray);
       
   717 public:
       
   718 	RMobilePhoneBookStore::TPBIndexAndNumEntries iReadPhoneBookEntry;
       
   719 	};	
       
   720 
       
   721 /**
       
   722 Holds the TPtr8 arrays for all RMobileSmartCardEap requests
       
   723 
       
   724 This class is internal.
       
   725 
       
   726 @internalComponent
       
   727 @prototype
       
   728 */
       
   729 class CMobileSmartCardEapPtrHolder : public CMmPtrHolder
       
   730 	{
       
   731 public:
       
   732 	enum TSmartCardEapPtrHolderSlots
       
   733 		{
       
   734 		ESlot1GetAuthStatus,            // 0
       
   735 		ESlot1NotifyEapMethodAccess,    // 1
       
   736 		EMaxNumberSmartCardEapPtrSlots  // 2
       
   737 		};
       
   738 
       
   739 	enum TSmartCardEapPtrCHolderSlots
       
   740 		{
       
   741 		ESlot1InitialiseEapMethod,      // 0
       
   742 		ESlot1GetUserId,                // 1
       
   743 		ESlot1GetEapKey,                // 2
       
   744 		EMaxNumberSmartCardEapPtrCSlots // 3
       
   745 		};
       
   746 
       
   747 public:
       
   748 	static CMobileSmartCardEapPtrHolder* NewL(TInt aSizeOfPtrArray, TInt aSizeOfPtrCArray);
       
   749 	~CMobileSmartCardEapPtrHolder();
       
   750 
       
   751 protected:
       
   752 	CMobileSmartCardEapPtrHolder();
       
   753 
       
   754 public:
       
   755 	TThreadId iOwnerThreadId;
       
   756 	RMobileSmartCardEap::TEapUserIdType iEapUserIdType;
       
   757 	RMobileSmartCardEap::TEapKeyTag iReqEapKeyTag;
       
   758 	TPtr8 iReqAuthData;
       
   759 	};
       
   760 
       
   761 
       
   762 
       
   763 class CMobileLocationServicesPtrHolder : public CMmPtrHolder
       
   764 /**
       
   765 Holds the TPtr8 arrays for all RMobileLocationServices requests.
       
   766 
       
   767 This class is internal.
       
   768 
       
   769 @internalAll
       
   770 */
       
   771 	{
       
   772 public:
       
   773 
       
   774 	// The ptr holder slot numbers used by RMobileLocationServices asynchronous requests
       
   775 
       
   776 	enum TLocationServicesPtrHolderSlots
       
   777 		{
       
   778 		ESlot1LcsNotifyUeResetPositioningInformation,
       
   779 		EMaxNumberLocationServicesPtrSlots	
       
   780 		};
       
   781 
       
   782 	enum TLocationServicesPtrCHolderSlots
       
   783 		{
       
   784 		ESlot1LcsSendMtlrResponse,
       
   785 		ESlot1LcsSendMtlrError,
       
   786 		ESlot1LcsMtlrReject,
       
   787 		ESlot1LcsSendMeasurementControlFailure,
       
   788 		EMaxNumberLocationServicesPtrCSlots
       
   789 		};
       
   790 
       
   791 public:
       
   792 	static CMobileLocationServicesPtrHolder* NewL(TInt aSizeOfPtrArray,TInt aSizeOfPtrCArray);	
       
   793 	};	
       
   794 
       
   795 #endif // _MM_HOLD_H_