networkingtestandutils/networkingunittest/tdummyetel/ETELBGSM.H
changeset 0 af10295192d8
equal deleted inserted replaced
-1:000000000000 0:af10295192d8
       
     1 // Copyright (c) 1997-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 // ETel Basic Gsm API
       
    15 // 
       
    16 //
       
    17 
       
    18 #if !defined(__ETELBGSM_H__)
       
    19 #define __ETELBGSM_H__
       
    20 
       
    21 #if !defined(__ETEL_H__)
       
    22 #include "DummyETEL.h"
       
    23 #endif
       
    24 
       
    25 #if !defined(__E32BASE_H__)
       
    26 #include <e32base.h>
       
    27 #endif
       
    28 
       
    29 #if !defined(__S32MEM_H__)
       
    30 #include <s32mem.h>
       
    31 #endif
       
    32 
       
    33 /**
       
    34 @internalComponent
       
    35 */
       
    36 const TInt KETelExtBasicGsm					=1000;
       
    37 const TInt KETelMixinBasicPhoneId			=KETelExtBasicGsm+1;
       
    38 const TInt KETelMixinBasicPhoneBookSupport	=KETelExtBasicGsm+2;
       
    39 const TInt KETelMixinBasicPhoneSignalAndBer	=KETelExtBasicGsm+3;
       
    40 const TInt KETelMixinBasicPhoneNetwork		=KETelExtBasicGsm+4;
       
    41 const TInt KETelMixinBasicPhoneBatteryPower	=KETelExtBasicGsm+5;
       
    42 const TInt KETelMixinBasicPhoneIndicator	=KETelExtBasicGsm+6;
       
    43 const TInt KETelMixinBasicPhoneClockAndAlarm=KETelExtBasicGsm+7;
       
    44 
       
    45 
       
    46 const TUint KGsmMaxTelNumberSize=100;
       
    47 
       
    48 /**
       
    49 @internalComponent
       
    50 */
       
    51 struct TGsmTelNumber
       
    52 	{
       
    53 	TUint iTypeOfNumber;
       
    54 	TBuf<KGsmMaxTelNumberSize> iTelNumber;
       
    55 	};
       
    56 
       
    57 /**
       
    58 @internalComponent
       
    59 */
       
    60 const TUint KGsmPasswordSize=30;			// Maximum length of longest password
       
    61 typedef TBuf<KGsmPasswordSize> TGsmPassword;
       
    62 
       
    63 class CBasicPtrHolder;
       
    64 class RBasicGsmCall : public RCall
       
    65 /**
       
    66 RBasicGsmCall
       
    67 @internalComponent
       
    68 */
       
    69 	{
       
    70 public:
       
    71 	IMPORT_C RBasicGsmCall();
       
    72 //
       
    73 // Basic Gsm Call Caps
       
    74 //
       
    75 	enum TBearerCaps
       
    76 		{
       
    77 		KCapsBearerSpeedAutobauding=0x00000001,
       
    78 		KCapsBearerSpeedV21_300=0x00000002,
       
    79 		KCapsBearerSpeedV22_1200=0x00000004,
       
    80 		KCapsBearerSpeedV23_1200_75=0x00000008,
       
    81 		KCapsBearerSpeedV22bis_2400=0x00000010,
       
    82 		KCapsBearerSpeedV26ter_2400=0x00000020,
       
    83 		KCapsBearerSpeedV32_4800=0x00000040,
       
    84 		KCapsBearerSpeedV32_9600=0x00000080,
       
    85 		KCapsBearerSpeedUnknown_NetworkSpecific=0x00000100,
       
    86 		KCapsBearerSpeedV32bis_7200=0x00000200,
       
    87 		KCapsBearerSpeedV32bis_12000=0x00000400,
       
    88 		KCapsBearerSpeedV32bis_14400=0x00000800,
       
    89 		KCapsBearerSpeedV34_9600=0x00001000,
       
    90 		KCapsBearerSpeedV34_12000=0x00002000,
       
    91 		KCapsBearerSpeedV34_14400=0x00004000,
       
    92 		KCapsBearerSpeedV110_300=0x00008000,
       
    93 		KCapsBearerSpeedV110_1200=0x00010000,
       
    94 		KCapsBearerSpeedV110_2400=0x00020000,
       
    95 		KCapsBearerSpeedV110_4800=0x00040000,
       
    96 		KCapsBearerSpeedV110_9600=0x00080000,
       
    97 		KCapsBearerSpeedV110_12000=0x00100000,
       
    98 		KCapsBearerSpeedV110_14400=0x00200000,
       
    99 		KCapsBearerSpeedV120_1200=0x00400000,
       
   100 		KCapsBearerSpeedV120_2400=0x00800000,
       
   101 		KCapsBearerSpeedV120_4800=0x01000000,
       
   102 		KCapsBearerSpeedV120_9600=0x02000000,
       
   103 		KCapsBearerSpeedV120_14400=0x04000000,
       
   104 		KCapsBearerSpeedUnknown=0x40000000,
       
   105 		KCapsBearerSpeedExtensions=0x80000000
       
   106 		};
       
   107 
       
   108 	enum
       
   109 		{
       
   110 		KCapsBearerNameAsynchronousModem=0x00000001,
       
   111 		KCapsBearerNameSynchronousModem=0x00000002,
       
   112 		KCapsBearerNamePADAccessAsynchronous=0x00000004,
       
   113 		KCapsBearerNamePacketAccessSynchronous=0x00000008,
       
   114 		KCapsBearerNameDataCircuitAsynchronousRdi=0x00000010,
       
   115 		KCapsBearerNameDataCircuitSynchronousRdi=0x00000020,
       
   116 		KCapsBearerNamePADAccessAsynchronousRdi=0x00000040,
       
   117 		KCapsBearerNamePacketAccessSynchronousRdi=0x00000080,
       
   118 		KCapsBearerNameUnknown=0x40000000,
       
   119 		KCapsBearerNameExtensions=0x80000000
       
   120 		};
       
   121 
       
   122 	enum
       
   123 		{
       
   124 		KCapsBearerCETransparent=0x00000001,
       
   125 		KCapsBearerCENonTransparent=0x00000002,
       
   126 		KCapsBearerCETransparentPreferred=0x00000004,
       
   127 		KCapsBearerCENonTransparentPreferred=0x00000008,
       
   128 		KCapsBearerCEUnknown=0x40000000,
       
   129 		KCapsBearerCEExtensions=0x80000000
       
   130 		};
       
   131 
       
   132 	struct TRlpParamRanges
       
   133 		{
       
   134 		TUint iWsMin;
       
   135 		TUint iWsMax;
       
   136 		TUint iMwsMin;
       
   137 		TUint iMwsMax;
       
   138 		TUint iT1Min;
       
   139 		TUint iT1Max;
       
   140 		TUint iN2Min;
       
   141 		TUint iN2Max;
       
   142 		TUint iT4Min;
       
   143 		TUint iT4Max;
       
   144 		};
       
   145 
       
   146 	struct TCaps
       
   147 		{
       
   148 		TUint iBearerSpeed;
       
   149 		TUint iBearerName;
       
   150 		TUint iBearerCe;
       
   151 		TRlpParamRanges iRlpParams;
       
   152 		};
       
   153 
       
   154 	IMPORT_C virtual TInt GetBasicGsmCaps(TCaps& aCaps) const;
       
   155 	IMPORT_C virtual void NotifyBasicGsmCaps(TRequestStatus& aStatus, TCaps& aCaps);
       
   156 	IMPORT_C virtual void NotifyBasicGsmCapsCancel() const;
       
   157 
       
   158 //
       
   159 // Basic Gsm Call Parameters
       
   160 //
       
   161 	enum TBearerSpeed
       
   162 		{
       
   163 		EBearerSpeedAutobauding,
       
   164 		EBearerSpeedV21_300,
       
   165 		EBearerSpeedV22_1200,
       
   166 		EBearerSpeedV23_1200_75,
       
   167 		EBearerSpeedV22bis_2400,
       
   168 		EBearerSpeedV26ter_2400,
       
   169 		EBearerSpeedV32_4800,
       
   170 		EBearerSpeedV32_9600,
       
   171 		EBearerSpeedUnknown_NetworkSpecific,
       
   172 		EBearerSpeedV32bis_7200,
       
   173 		EBearerSpeedV32bis_12000,
       
   174 		EBearerSpeedV32bis_14400,
       
   175 		EBearerSpeedV34_9600,
       
   176 		EBearerSpeedV34_12000,
       
   177 		EBearerSpeedV34_14400,
       
   178 		EBearerSpeedV34_19200,
       
   179 		EBearerSpeedV34_28800,
       
   180 		EBearerSpeedV110_300,
       
   181 		EBearerSpeedV110_1200,
       
   182 		EBearerSpeedV110_2400,
       
   183 		EBearerSpeedV110_4800,
       
   184 		EBearerSpeedV110_9600,
       
   185 		EBearerSpeedV110_12000,
       
   186 		EBearerSpeedV110_14400,
       
   187 		EBearerSpeedV110_19200,
       
   188 		EBearerSpeedV110_28800,
       
   189 		EBearerSpeedV110_38400,
       
   190 		EBearerSpeedV110_48000,
       
   191 		EBearerSpeedV110_56000,
       
   192 		EBearerSpeedV120_1200,
       
   193 		EBearerSpeedV120_2400,
       
   194 		EBearerSpeedV120_4800,
       
   195 		EBearerSpeedV120_9600,
       
   196 		EBearerSpeedV120_14400,
       
   197 		EBearerSpeedV120_19200,
       
   198 		EBearerSpeedV120_28800,
       
   199 		EBearerSpeedV120_38400,
       
   200 		EBearerSpeedV120_48000,
       
   201 		EBearerSpeedV120_56000,
       
   202 		EBearerSpeedBitTransparent_56000,
       
   203 		EBearerSpeedBitTransparent_64000
       
   204 		};
       
   205 
       
   206 	enum TBearerName
       
   207 		{
       
   208 		EBearerNameAsynchronousModem,
       
   209 		EBearerNameSynchronousModem,
       
   210 		EBearerNamePADAccessAsynchronous,
       
   211 		EBearerNamePacketAccessSynchronous,
       
   212 		EBearerNameDataCircuitAsynchronousRdi,
       
   213 		EBearerNameDataCircuitSynchronousRdi,
       
   214 		EBearerNamePADAccessAsynchronousRdi,
       
   215 		EBearerNamePacketAccessSynchronousRdi
       
   216 		};
       
   217 
       
   218 	enum TBearerCE
       
   219 		{
       
   220 		EBearerCETransparent,
       
   221 		EBearerCENonTransparent,
       
   222 		EBearerCETransparentPreferred,
       
   223 		EBearerCENonTransparentPreferred
       
   224 		};
       
   225 
       
   226 	struct TBearer
       
   227 		{
       
   228 		TBearerSpeed iSpeed;
       
   229 		TBearerName iName;
       
   230 		TBearerCE iCe;
       
   231 		};
       
   232 
       
   233 	struct TRlpParams
       
   234 		{
       
   235 		TUint iIws;
       
   236 		TUint iMws;
       
   237 		TUint iT1;
       
   238 		TUint iN2;
       
   239 		TUint iT4;
       
   240 		};
       
   241 
       
   242 	class TCallParams : public RCall::TCallParams
       
   243 /**
       
   244 @internalComponent
       
   245 */
       
   246 		{
       
   247 	public:
       
   248 		IMPORT_C TCallParams();
       
   249 		IMPORT_C TCallParams(const TBearer& aBearer,const TRlpParams& aRlpParams);
       
   250 		TBearer iBearer;
       
   251 		TRlpParams iRlpParams;
       
   252 		};
       
   253 
       
   254 	typedef TPckg<TCallParams> TCallParamsPckg;
       
   255 
       
   256 
       
   257 	class TCallInfo : public RCall::TCallInfo
       
   258 /**
       
   259 General notification information
       
   260 @internalComponent
       
   261 */
       
   262 		{
       
   263 	public:
       
   264 		TBearer iBearer;
       
   265 	public:
       
   266 		IMPORT_C TCallInfo();
       
   267 		};
       
   268 
       
   269 	IMPORT_C virtual TInt GetInfoBasicGsm(TCallInfo& aCallInfo) const;
       
   270 	
       
   271 //
       
   272 //	HSCSD Functionality
       
   273 //
       
   274 
       
   275 //	HSCSD Capability Information
       
   276 	enum THscsdBearerCaps
       
   277 		{
       
   278 		KCapsBearerSpeedV34_19200=0x00000001,
       
   279 		KCapsBearerSpeedV34_28800=0x00000002,
       
   280 		KCapsBearerSpeedV110_19200=0x00000004,
       
   281 		KCapsBearerSpeedV110_28800=0x00000008,
       
   282 		KCapsBearerSpeedV110_38400=0x00000010,
       
   283 		KCapsBearerSpeedV110_48000=0x00000020,
       
   284 		KCapsBearerSpeedV110_56000=0x00000040,
       
   285 		KCapsBearerSpeedV120_19200=0x00000080,
       
   286 		KCapsBearerSpeedV120_28800=0x00000100,
       
   287 		KCapsBearerSpeedV120_38400=0x00000200,
       
   288 		KCapsBearerSpeedV120_48000=0x00000400,
       
   289 		KCapsBearerSpeedV120_56000=0x00000800,
       
   290 		KCapsBearerSpeedBitTransparent_56000=0x00001000,
       
   291 		KCapsBearerSpeedBitTransparent_64000=0x00002000
       
   292 		};
       
   293 
       
   294 	enum TAiurCodingsCaps
       
   295 		{
       
   296 		EAiurCodings48=0x00000001,
       
   297 		EAiurCodings96=0x00000004,
       
   298 		EAiurCodings144=0x00000008
       
   299 		};
       
   300 
       
   301 	struct THscsdCaps
       
   302 		{
       
   303 		TUint iHscsdBearerSpeed;		// Logical OR of THscsdBearerCaps values
       
   304 		TInt iMClass;				// Detailed in GSM 05.02 V6.4.1 Appendix B
       
   305 		TInt iMaxRxTimeSlots;
       
   306 		TInt iMaxTxTimeSlots;
       
   307 		TInt iTotalRxTxTimeSlots;
       
   308 		TUint iCodingCaps;			// Logical OR of TAiurCodings values
       
   309 		};
       
   310 
       
   311 	IMPORT_C virtual TInt GetHscsdCaps(THscsdCaps& aHscsdCaps) const;
       
   312 	IMPORT_C virtual void NotifyHscsdGsmCaps(TRequestStatus& aStatus, THscsdCaps& aHscsdCaps) const;
       
   313 	IMPORT_C virtual void NotifyHscsdGsmCapsCancel() const;
       
   314 
       
   315 //
       
   316 // Statically Configure HSCSD call parameters
       
   317 //		(will not work during a call)
       
   318 //
       
   319 	enum TAiur
       
   320 		{
       
   321 		EAiurBps9600,
       
   322 		EAiurBps14400,
       
   323 		EAiurBps19200,
       
   324 		EAiurBps28800,
       
   325 		EAiurBps38400,
       
   326 		EAiurBps43200,
       
   327 		EAiurBps57600
       
   328 		};
       
   329 
       
   330 	struct THscsdParams
       
   331 		{
       
   332 		TAiur iAiur;
       
   333 		TInt iRequestedTimeSlots;
       
   334 		TInt iMaxTimeSlots;
       
   335 		TUint iCodings;			// Logical OR of TAiurCodings values
       
   336 								// Note that iCodings=0x0 indicates that all
       
   337 								// supported codings are acceptable.
       
   338 		};
       
   339 
       
   340 	IMPORT_C virtual TInt SetHscsdParams(const THscsdParams& aHSCSDParams) const;
       
   341 	IMPORT_C virtual TInt GetHscsdParams(THscsdParams& aHSCSDParams) const;
       
   342 
       
   343 //
       
   344 // Retrieve current call information
       
   345 //
       
   346 	struct THscsdDynamicParams
       
   347 		{
       
   348 		TAiur iAiur;
       
   349 		TInt iRxTimeSlots;
       
   350 		TInt iTxTimeSlots;
       
   351 		TUint iCodings; 		// Logical OR of TAiurCodings values
       
   352 		};
       
   353 
       
   354 	IMPORT_C virtual TInt GetDynamicHscsdParams(THscsdDynamicParams& aHSCSDParams) const;
       
   355 	IMPORT_C virtual void NotifyDynamicHscsdParams(TRequestStatus& aStatus, THscsdDynamicParams& aHSCSDParams) const;
       
   356 	IMPORT_C virtual void NotifyDynamicHscsdParamsCancel() const;
       
   357 
       
   358 //
       
   359 // Request a dynamic change of HSCSD parameters
       
   360 //
       
   361 	IMPORT_C virtual TInt SetDynamicHscsdParams(const THscsdDynamicParams& aHSCSDParams) const;
       
   362 	IMPORT_C virtual void SetDynamicHscsdParams(TRequestStatus& aStatus, const THscsdDynamicParams& aHSCSDParams) const;
       
   363 	IMPORT_C virtual void SetDynamicHscsdParamsCancel() const;
       
   364 
       
   365 private:
       
   366 	CBasicPtrHolder* iBasicPtrHolder;
       
   367 protected:
       
   368 	IMPORT_C virtual void ConstructL();
       
   369 	IMPORT_C virtual void Destruct();
       
   370 	};
       
   371 
       
   372 class TGsmDateTime : public TDateTime
       
   373 /**
       
   374 TGsmDateTime
       
   375 @internalComponent
       
   376 */
       
   377 	{
       
   378 public:
       
   379 	IMPORT_C TGsmDateTime();
       
   380 	IMPORT_C TGsmDateTime(TInt aTimeZone,TInt aYear,TMonth aMonth,TInt aDay,TInt aHour,TInt aMinute, TInt aSecond,TInt aMicroSecond);
       
   381 	IMPORT_C void SetTimeZone(const TInt aTimeZone);
       
   382 	IMPORT_C TInt TimeZone() const;
       
   383 private:
       
   384 	TInt iTimeZone;
       
   385 	};
       
   386 
       
   387 class MBasicGsmPhoneId
       
   388 /**
       
   389 Phone ID Information
       
   390 @internalComponent
       
   391 */
       
   392 	{
       
   393 public:
       
   394 	enum {	KPhoneManufacturerIdSize=50	};
       
   395 	enum {	KPhoneModelIdSize=50	};
       
   396 	enum {	KPhoneRevisionIdSize=50	};
       
   397 	enum {	KPhoneSerialNumberSize=50	};
       
   398 
       
   399 	struct TId
       
   400 		{
       
   401 		TBuf<KPhoneManufacturerIdSize> iManufacturerId;
       
   402 		TBuf<KPhoneModelIdSize> iModelId;
       
   403 		TBuf<KPhoneRevisionIdSize> iRevisionId;
       
   404 		TBuf<KPhoneSerialNumberSize> iSerialNumber;
       
   405 		};
       
   406 
       
   407 	virtual TInt GetGsmPhoneId(TId& aId) const=0;
       
   408 	virtual void IdFreeSlot1() const=0;
       
   409 	virtual void IdFreeSlot2() const=0;
       
   410 	virtual void IdFreeSlot3() const=0;
       
   411 	virtual void IdFreeSlot4() const=0;
       
   412 protected:
       
   413 	MBasicGsmPhoneId();
       
   414 	};
       
   415 
       
   416 class MBasicGsmPhoneBookSupport
       
   417 /**
       
   418 Phone Book Support
       
   419 @internalComponent
       
   420 */
       
   421 	{
       
   422 public:
       
   423 	struct TPhoneBookInfo
       
   424 		{
       
   425 		TInt iUsed;
       
   426 		TInt iTotal;
       
   427 		TBool iWriteAccess;
       
   428 		TBool iRestrictedWriteAccess;
       
   429 		TName iName;
       
   430 		TInt iMaxNumberLength;
       
   431 		TInt iMaxTextLength;
       
   432 		};
       
   433 
       
   434 	virtual TInt EnumeratePhoneBooks(TInt& aPhoneBookCount) const=0;
       
   435 	virtual TInt GetPhoneBookInfo(const TInt aIndex, TPhoneBookInfo& aInfo) const=0;
       
   436 	virtual void GetPhoneBookInfo(TRequestStatus& aStatus, const TInt aIndex, TPhoneBookInfo& aInfo) const=0;
       
   437 	virtual void GetPhoneBookInfoCancel() const=0;
       
   438 	
       
   439 	virtual void PhBookSupportFreeSlot3() const=0;
       
   440 	virtual void PhBookSupportFreeSlot4() const=0;
       
   441 protected:
       
   442 	MBasicGsmPhoneBookSupport();
       
   443 	};
       
   444 	
       
   445 class MBasicGsmPhoneSignalandBer
       
   446 /**
       
   447 Signal Strength and Bit Error Rate Information
       
   448 @internalComponent
       
   449 */
       
   450 	{
       
   451 public:
       
   452 	virtual TInt GetSignalStrength(TInt32& aSignalStrength) const=0;
       
   453 	virtual void GetSignalStrength(TRequestStatus& aStatus, TInt32& aSignalStrength)=0;
       
   454 	virtual void GetSignalStrengthCancel() const=0;
       
   455 	virtual void SignalStrengthNotification(TRequestStatus& aStatus,TInt32& aSignalStrength)=0;
       
   456 	virtual void SignalStrengthNotificationCancel() const=0;
       
   457 	virtual TInt GetBer(TUint& aBer) const=0;
       
   458 	virtual void GetBer(TRequestStatus& aStatus, TUint& aBer)=0;
       
   459 	virtual void GetBerCancel() const=0;
       
   460 	virtual void BerNotification(TRequestStatus& aStatus,TUint& aBer)=0;
       
   461 	virtual void BerNotificationCancel() const=0;
       
   462 
       
   463 	enum TSignalStrengthAndBerCaps
       
   464 		{
       
   465 		KCapsSignalStrength=0x00000001,
       
   466 		KCapsSignalBer=0x00000002,
       
   467 		KCapsSignalStrengthUpdate=0x00000004,
       
   468 		KCapsSignalBerUpdate=0x00000008
       
   469 		};
       
   470 
       
   471 	struct TSignalAndBerCapsFlags
       
   472 		{
       
   473 		TUint iSignalCaps;
       
   474 		};
       
   475 
       
   476 	virtual TInt GetSignalCaps(TSignalAndBerCapsFlags& aCaps) const=0;
       
   477 	virtual void NotifySignalCaps(TRequestStatus& aStatus, TSignalAndBerCapsFlags& aCaps)=0;
       
   478 	virtual void NotifySignalCapsCancel() const=0;
       
   479 
       
   480 	virtual void SignalFreeSlot1() const=0;
       
   481 	virtual void SignalFreeSlot2() const=0;
       
   482 	virtual void SignalFreeSlot3() const=0;
       
   483 	virtual void SignalFreeSlot4() const=0;
       
   484 
       
   485 protected:
       
   486 	MBasicGsmPhoneSignalandBer();
       
   487 	};
       
   488 
       
   489 class CGsmNetworkList;
       
   490 class MBasicGsmPhoneNetwork
       
   491 /**
       
   492 Network support
       
   493 @internalComponent
       
   494 */
       
   495 	{
       
   496 public:
       
   497 	enum
       
   498 		{
       
   499 		KShortNetworkNameSize=20,
       
   500 		KLongNetworkNameSize=30
       
   501 		};
       
   502 
       
   503 	enum TNetworkStatus
       
   504 		{
       
   505 		ENetStatUnknown,
       
   506 		ENetStatAvailable,
       
   507 		ENetStatCurrent,
       
   508 		ENetStatForbidden,
       
   509 		ENetStatNotApplicable
       
   510 		};
       
   511 
       
   512 	class TBscNetworkId	
       
   513 /**
       
   514 @internalComponent
       
   515 */
       
   516 		{
       
   517 	public:
       
   518 		IMPORT_C void InternalizeL(RReadStream& aStream);
       
   519 		IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
       
   520 	public:
       
   521 		TUint iMCC;
       
   522 		TUint iMNC;
       
   523 		};
       
   524 
       
   525 	enum TNetworkSetMode
       
   526 		{
       
   527 		ENetworkSetModeAutomatic,
       
   528 		ENetworkSetModeManual
       
   529 		};
       
   530 
       
   531 	class TNetworkInfo
       
   532 /**
       
   533 @internalComponent
       
   534 */
       
   535 		{
       
   536 	public:
       
   537 		void InternalizeL(RReadStream& aStream);
       
   538 		void ExternalizeL(RWriteStream& aStream) const;
       
   539 	public:
       
   540 		IMPORT_C TNetworkInfo();
       
   541 	public:
       
   542 		TBscNetworkId iId;
       
   543 		TNetworkStatus iStatus;
       
   544 		TBuf<KShortNetworkNameSize> iShortName;
       
   545 		TBuf<KLongNetworkNameSize> iLongName;
       
   546 		};
       
   547 
       
   548 	enum TRegistrationStatus
       
   549 		{
       
   550 		ENotRegisteredNotSearching,
       
   551 		ERegisteredOnHomeNetwork,
       
   552 		ENotRegisteredSearching,
       
   553 		ERegistrationDenied,
       
   554 		EUnknown,
       
   555 		ERegisteredRoaming
       
   556 		};
       
   557 
       
   558 	struct TCurrentNetworkInfo
       
   559 		{
       
   560 		TNetworkInfo iNetworkInfo;		
       
   561 		TUint iLocationAreaCode;
       
   562 		TUint iCellId;
       
   563 		};
       
   564 
       
   565 	virtual TInt EnumerateDetectedNetworks(TInt& aNetworkCnt) const=0;	
       
   566 	virtual void EnumerateDetectedNetworks(TRequestStatus& aStatus, TInt& aNetworkCnt)=0;
       
   567 	virtual void EnumerateDetectedNetworksCancel() const=0;
       
   568 	virtual TInt GetDetectedNetworkInfo(const TInt aIndex,TNetworkInfo& aNetworkInfo) const=0; 
       
   569 	virtual void GetDetectedNetworkInfo(TRequestStatus& aStatus, const TInt aIndex,TNetworkInfo& aNetworkInfo)=0; 
       
   570 	virtual void GetDetectedNetworkInfoCancel() const=0; 
       
   571 
       
   572 	virtual CGsmNetworkList* RetrieveDetectedNetworksLC()=0;
       
   573 
       
   574 	virtual TInt SetNetworkMode(const TNetworkSetMode aMode) const=0;
       
   575 	virtual void SetNetworkMode(TRequestStatus& aStatus,const TNetworkSetMode aMode)=0;
       
   576 	virtual void SetNetworkModeCancel() const=0;
       
   577 	virtual TInt SetManualNetwork(const TBscNetworkId aNetworkId) const=0;
       
   578 	virtual void SetManualNetwork(TRequestStatus& aStatus,const TBscNetworkId aNetworkId)=0;
       
   579 	virtual void SetManualNetworkCancel() const=0;
       
   580 
       
   581 	virtual TInt GetCurrentNetworkInfo(TCurrentNetworkInfo& aNetworkInfo) const=0;
       
   582 	virtual void NotifyChangeOfCurrentNetwork(TRequestStatus& aStatus,TCurrentNetworkInfo& aNetworkInfo)=0;
       
   583 	virtual void NotifyChangeOfCurrentNetworkCancel() const=0;
       
   584 
       
   585 	virtual TInt GetNetworkRegistrationStatus(TRegistrationStatus& aRegistrationStatus) const=0;
       
   586 	virtual void NotifyChangeOfNetworkRegistrationStatus(TRequestStatus& aStatus,TRegistrationStatus& aRegistrationStatus)=0;
       
   587 	virtual void NotifyChangeOfNetworkRegistrationStatusCancel() const=0;
       
   588 
       
   589 	virtual TInt GetNetworkSearchMode(TNetworkSetMode& aMode) const=0;
       
   590 	virtual void NotifyChangeOfNetworkSearchMode(TRequestStatus& aStatus,TNetworkSetMode& aMode)=0;
       
   591 	virtual void NotifyChangeOfNetworkSearchModeCancel() const=0;
       
   592 
       
   593 	enum TNetworkInfoCaps
       
   594 		{
       
   595 		KCapsNetworkInfoAvailable=0x00000001,
       
   596 		KCapsNetworkShortName=0x00000002,
       
   597 		KCapsNetworkLongName=0x00000004,
       
   598 		KCapsNetworkCurrentInfoAvailable=0x00000008,
       
   599 		KCapsNetworkSetModeSupported=0x00000010
       
   600 		};
       
   601 
       
   602 	struct TNetworkCapsFlags
       
   603 		{
       
   604 		TUint iNetworkInfoCaps;
       
   605 		};
       
   606 
       
   607 	virtual TInt GetNetworkInfoCaps(TNetworkCapsFlags& aCaps) const=0;
       
   608 
       
   609 	virtual void NetworkFreeSlot1() const=0;
       
   610 	virtual void NetworkFreeSlot2() const=0;
       
   611 	virtual void NetworkFreeSlot3() const=0;
       
   612 	virtual void NetworkFreeSlot4() const=0;
       
   613 
       
   614 	struct TGsmNetworkClientId
       
   615 		{
       
   616 		TInt iSessionHandle;
       
   617 		TInt iSubSessionHandle;
       
   618 		};
       
   619 
       
   620 protected:
       
   621 	MBasicGsmPhoneNetwork();
       
   622 	};
       
   623 
       
   624 class MBasicGsmPhoneBatteryAndPower
       
   625 /**
       
   626 Battery and Power Information
       
   627 @internalComponent
       
   628 */
       
   629 	{
       
   630 public:
       
   631 	enum TBatteryStatus
       
   632 		{
       
   633 		EPoweredByBattery,
       
   634 		EBatteryConnectedButExternallyPowered,
       
   635 		ENoBatteryConnected,
       
   636 		EPowerFault
       
   637 		};
       
   638 
       
   639 	struct TBatteryInfo
       
   640 		{
       
   641 		TBatteryStatus iStatus;
       
   642 		TUint iChargeLevel;
       
   643 		};
       
   644 
       
   645 	virtual TInt GetBatteryInfo(TBatteryInfo& aBatteryInfo) const=0;
       
   646 	virtual void GetBatteryInfo(TRequestStatus& aStatus, TBatteryInfo& aBatteryInfo)=0;
       
   647 	virtual void GetBatteryInfoCancel() const=0;
       
   648 	virtual void BatteryInfoNotification(TRequestStatus& aStatus,TBatteryInfo& aBatteryInfo)=0;
       
   649 	virtual void BatteryInfoNotificationCancel() const=0;
       
   650 
       
   651 	enum TBatteryPowerCaps
       
   652 		{
       
   653 		KCapsBatteryInfoAvailable=0x00000001,
       
   654 		KCapsBatteryInfoUpdatesAvailable=0x00000002
       
   655 		};
       
   656 
       
   657 	struct TBatteryAndPowerCapsFlags
       
   658 		{
       
   659 		TUint iBatteryInfoCaps;
       
   660 		};
       
   661 
       
   662 	virtual TInt GetBatteryPowerCaps(TBatteryAndPowerCapsFlags& aCaps) const=0;
       
   663 
       
   664 	virtual void BatteryFreeSlot1() const=0;
       
   665 	virtual void BatteryFreeSlot2() const=0;
       
   666 	virtual void BatteryFreeSlot3() const=0;
       
   667 	virtual void BatteryFreeSlot4() const=0;
       
   668 
       
   669 protected:
       
   670 	MBasicGsmPhoneBatteryAndPower();
       
   671 	};
       
   672 
       
   673 class MBasicGsmPhoneIndicator
       
   674 /**
       
   675 Phone Indicator Access
       
   676 @internalComponent
       
   677 */
       
   678 	{
       
   679 public:
       
   680 	enum TIndicatorType
       
   681 		{
       
   682 		EIndBatteryCharge,
       
   683 		EIndSignalQuality,
       
   684 		EIndServiceAvail,
       
   685 		EIndSounderActivity,
       
   686 		EIndMessageReceived,
       
   687 		EIndCallInProgress,
       
   688 		EIndTxActivatedByVoiceActivity,
       
   689 		EIndRoamingIndicator,
       
   690 		EIndSmsStorageFull
       
   691 		};
       
   692 
       
   693 	struct TIndicatorInfo
       
   694 		{
       
   695 		TIndicatorType iIndicator;
       
   696 		TUint iValue;
       
   697 		};
       
   698 
       
   699 	virtual void IndicatorNotification(TRequestStatus& aStatus,TIndicatorInfo& aIndicator)=0;
       
   700 	virtual void IndicatorNotificationCancel() const=0;
       
   701 	virtual TInt GetIndicator(const TIndicatorType aIndicator,TUint& aValue) const=0;
       
   702 
       
   703 	enum TPhoneEquipmentIndicatorCaps
       
   704 		{
       
   705 		KCapsEquipmentIndicatorCapture=0x00000001
       
   706 		};
       
   707 
       
   708 	struct TIndicatorCapsFlags
       
   709 		{
       
   710 		TUint iIndicatorCapture;
       
   711 		};
       
   712 
       
   713 	virtual TInt GetIndicatorCaptureCaps(TIndicatorCapsFlags& aCaps) const=0;
       
   714 
       
   715 	virtual void IndicatorFreeSlot1() const=0;
       
   716 	virtual void IndicatorFreeSlot2() const=0;
       
   717 	virtual void IndicatorFreeSlot3() const=0;
       
   718 	virtual void IndicatorFreeSlot4() const=0;
       
   719 
       
   720 protected:
       
   721 	MBasicGsmPhoneIndicator();
       
   722 	};
       
   723 
       
   724 class MBasicGsmPhoneClockAndAlarm
       
   725 /**
       
   726 Phone Clock and Alarm Access
       
   727 @internalComponent
       
   728 */
       
   729 	{
       
   730 public:
       
   731 	enum { KAlarmTextSize=256 };
       
   732 	struct TAlarm
       
   733 		{
       
   734 		TGsmDateTime iDateTime;
       
   735 		TBuf<KAlarmTextSize> iText;
       
   736 		};
       
   737 
       
   738 	virtual TInt ReadClock(TGsmDateTime& aGsmDateTime) const=0;
       
   739 	virtual void ReadClock(TRequestStatus& aStatus, TGsmDateTime& aGsmDateTime) const=0;
       
   740 	virtual void ReadClockCancel() const=0;
       
   741 	virtual TInt SetClock(const TGsmDateTime& aGsmDateTime) const=0;
       
   742 	virtual void SetClock(TRequestStatus& aStatus, const TGsmDateTime& aGsmDateTime) const=0;
       
   743 	virtual void SetClockCancel() const=0;
       
   744 
       
   745 	virtual TInt EnumerateAlarm(TInt& aCount) const=0;
       
   746 	virtual void EnumerateAlarm(TRequestStatus& aStatus, TInt& aCount) const=0;
       
   747 	virtual void EnumerateAlarmCancel() const=0;
       
   748 	virtual TInt GetAlarm(const TInt aIndex,TAlarm& aAlarm) const=0;
       
   749 	virtual void GetAlarm(TRequestStatus& aStatus, const TInt aIndex, TAlarm& aAlarm) const=0;
       
   750 	virtual void GetAlarmCancel() const=0;
       
   751 	virtual TInt SetAlarm(const TInt aIndex,const TAlarm& aAlarm) const=0;
       
   752 	virtual void SetAlarm(TRequestStatus& aStatus, const TInt aIndex,const TAlarm& aAlarm) const=0;
       
   753 	virtual void SetAlarmCancel() const=0;
       
   754 	
       
   755 	enum TClockCaps
       
   756 		{
       
   757 		KCapsClkClockAvailable=0x00000001,
       
   758 		KCapsClkAlarmAvailable=0x00000002
       
   759 		};
       
   760 
       
   761 	struct TClockAndAlarmCapsFlags
       
   762 		{
       
   763 		TUint iClockAndAlarmCaps;
       
   764 		};
       
   765 
       
   766 	virtual TInt GetClockCaps(TClockAndAlarmCapsFlags& aCaps) const=0;
       
   767 	virtual void NotifyClockCaps(TRequestStatus& aStatus, TClockAndAlarmCapsFlags& aCaps)=0;
       
   768 	virtual void NotifyClockCapsCancel() const=0;
       
   769 
       
   770 	virtual void ClockFreeSlot1() const=0;
       
   771 	virtual void ClockFreeSlot2() const=0;
       
   772 	virtual void ClockFreeSlot3() const=0;
       
   773 	virtual void ClockFreeSlot4() const=0;
       
   774 
       
   775 protected:
       
   776 	MBasicGsmPhoneClockAndAlarm();
       
   777 	};
       
   778 
       
   779 class RBasicGsmPhone : public RPhone, public MBasicGsmPhoneId, public MBasicGsmPhoneBookSupport,
       
   780 					   public MBasicGsmPhoneSignalandBer, public MBasicGsmPhoneNetwork,
       
   781 					   public MBasicGsmPhoneBatteryAndPower, public MBasicGsmPhoneIndicator,
       
   782 					   public MBasicGsmPhoneClockAndAlarm
       
   783 /**
       
   784 RBasicGsmPhone
       
   785 @internalComponent
       
   786 */
       
   787 	{
       
   788 public:
       
   789 	friend class CBasicGsmRetrieveDetectedNetworks;
       
   790 
       
   791 	IMPORT_C RBasicGsmPhone();
       
   792 
       
   793 
       
   794 	class TPhoneInfo : public RPhone::TPhoneInfo
       
   795 /**
       
   796 General notification information
       
   797 @internalComponent
       
   798 */
       
   799 		{
       
   800 	public:
       
   801 		TInt32 iSignalStrength;
       
   802 		TUint iBer;
       
   803 		TCurrentNetworkInfo iCurrentNetworkInfo;
       
   804 		TBatteryInfo iBatteryInfo;
       
   805 		TIndicatorInfo iIndicatorInfo;
       
   806 		TNetworkSetMode iNetworkSetMode;	
       
   807 		TRegistrationStatus iNetworkRegistrationStatus;
       
   808 	public:
       
   809 		IMPORT_C TPhoneInfo();		
       
   810 		};
       
   811 
       
   812 	IMPORT_C TInt GetInfoBasicGsm(TPhoneInfo& aPhoneInfo) const;
       
   813 
       
   814 	//
       
   815 	//	These virtual functions implement the pure virtual functions in Mixin classes
       
   816 	//
       
   817 	IMPORT_C virtual TInt GetGsmPhoneId(TId& aId) const;
       
   818 
       
   819 	IMPORT_C virtual TInt EnumeratePhoneBooks(TInt& aPhoneBookCount) const;
       
   820 	IMPORT_C virtual TInt GetPhoneBookInfo(const TInt aIndex, TPhoneBookInfo& aInfo) const;
       
   821 	IMPORT_C virtual void GetPhoneBookInfo(TRequestStatus& aStatus, const TInt aIndex, TPhoneBookInfo& aInfo) const;
       
   822 	IMPORT_C virtual void GetPhoneBookInfoCancel() const;
       
   823 
       
   824 	IMPORT_C virtual TInt GetSignalStrength(TInt32& aSignalStrength) const;
       
   825 	IMPORT_C virtual void GetSignalStrength(TRequestStatus& aStatus, TInt32& aSignalStrength);
       
   826 	IMPORT_C virtual void GetSignalStrengthCancel() const;
       
   827 	IMPORT_C virtual void SignalStrengthNotification(TRequestStatus& aStatus,TInt32& aSignalStrength);
       
   828 	IMPORT_C virtual void SignalStrengthNotificationCancel() const;
       
   829 	IMPORT_C virtual TInt GetBer(TUint& aBer) const;
       
   830 	IMPORT_C virtual void GetBer(TRequestStatus& aStatus, TUint& aBer);
       
   831 	IMPORT_C virtual void GetBerCancel() const;
       
   832 	IMPORT_C virtual void BerNotification(TRequestStatus& aStatus,TUint& aBer);
       
   833 	IMPORT_C virtual void BerNotificationCancel() const;
       
   834 	IMPORT_C virtual TInt GetSignalCaps(TSignalAndBerCapsFlags& aCaps) const;
       
   835 	IMPORT_C virtual void NotifySignalCaps(TRequestStatus& aStatus, TSignalAndBerCapsFlags& aCaps);
       
   836 	IMPORT_C virtual void NotifySignalCapsCancel() const;
       
   837 
       
   838 	IMPORT_C virtual TInt EnumerateDetectedNetworks(TInt& aNetworkCnt) const;
       
   839 	IMPORT_C virtual void EnumerateDetectedNetworks(TRequestStatus& aStatus, TInt& aNetworkCnt);
       
   840 	IMPORT_C virtual void EnumerateDetectedNetworksCancel() const;
       
   841 	IMPORT_C virtual TInt GetDetectedNetworkInfo(const TInt aIndex,TNetworkInfo& aNetworkInfo) const;
       
   842 	IMPORT_C virtual void GetDetectedNetworkInfo(TRequestStatus& aStatus, const TInt aIndex,TNetworkInfo& aNetworkInfo);
       
   843 	IMPORT_C virtual void GetDetectedNetworkInfoCancel() const;
       
   844 
       
   845 	IMPORT_C virtual TInt SetNetworkMode(const TNetworkSetMode aMode) const;
       
   846 	IMPORT_C virtual void SetNetworkMode(TRequestStatus& aStatus,const TNetworkSetMode aMode);
       
   847 	IMPORT_C virtual void SetNetworkModeCancel() const;
       
   848 	IMPORT_C virtual TInt SetManualNetwork(const TBscNetworkId aNetworkId) const;
       
   849 	IMPORT_C virtual void SetManualNetwork(TRequestStatus& aStatus,const TBscNetworkId aNetworkId);
       
   850 	IMPORT_C virtual void SetManualNetworkCancel() const;
       
   851 
       
   852 	IMPORT_C virtual TInt GetCurrentNetworkInfo(TCurrentNetworkInfo& aNetworkInfo) const;
       
   853 	IMPORT_C virtual void NotifyChangeOfCurrentNetwork(TRequestStatus& aStatus,TCurrentNetworkInfo& aNetworkInfo);
       
   854 	IMPORT_C virtual void NotifyChangeOfCurrentNetworkCancel() const;
       
   855 	IMPORT_C virtual TInt GetNetworkRegistrationStatus(TRegistrationStatus& aRegistrationStatus) const;
       
   856 	IMPORT_C virtual void NotifyChangeOfNetworkRegistrationStatus(TRequestStatus& aStatus,TRegistrationStatus& aRegistrationStatus);
       
   857 	IMPORT_C virtual void NotifyChangeOfNetworkRegistrationStatusCancel() const;
       
   858 	IMPORT_C virtual TInt GetNetworkSearchMode(TNetworkSetMode& aMode) const;
       
   859 	IMPORT_C virtual void NotifyChangeOfNetworkSearchMode(TRequestStatus& aStatus,TNetworkSetMode& aMode);
       
   860 	IMPORT_C virtual void NotifyChangeOfNetworkSearchModeCancel() const;
       
   861 
       
   862 	IMPORT_C virtual CGsmNetworkList* RetrieveDetectedNetworksLC();
       
   863 
       
   864 	IMPORT_C virtual TInt GetNetworkInfoCaps(TNetworkCapsFlags& aCaps) const;
       
   865 
       
   866 	IMPORT_C virtual TInt GetBatteryInfo(TBatteryInfo& aBatteryInfo) const;
       
   867 	IMPORT_C virtual void GetBatteryInfo(TRequestStatus& aStatus, TBatteryInfo& aBatteryInfo);
       
   868 	IMPORT_C virtual void GetBatteryInfoCancel() const;
       
   869 	IMPORT_C virtual void BatteryInfoNotification(TRequestStatus& aStatus,TBatteryInfo& aBatteryInfo);
       
   870 	IMPORT_C virtual void BatteryInfoNotificationCancel() const;
       
   871 	IMPORT_C virtual TInt GetBatteryPowerCaps(TBatteryAndPowerCapsFlags& aCaps) const;
       
   872 
       
   873 	IMPORT_C virtual void IndicatorNotification(TRequestStatus& aStatus,TIndicatorInfo& aIndicator);
       
   874 	IMPORT_C virtual void IndicatorNotificationCancel() const;
       
   875 	IMPORT_C virtual TInt GetIndicator(const TIndicatorType aIndicator,TUint& aValue) const;
       
   876 	IMPORT_C virtual TInt GetIndicatorCaptureCaps(TIndicatorCapsFlags& aCaps) const;
       
   877 
       
   878 	IMPORT_C virtual TInt ReadClock(TGsmDateTime& aGsmDateTime) const;
       
   879 	IMPORT_C virtual void ReadClock(TRequestStatus& aStatus, TGsmDateTime& aGsmDateTime) const;
       
   880 	IMPORT_C virtual void ReadClockCancel() const;
       
   881 	IMPORT_C virtual TInt SetClock(const TGsmDateTime& aGsmDateTime) const;
       
   882 	IMPORT_C virtual void SetClock(TRequestStatus& aStatus, const TGsmDateTime& aGsmDateTime) const;
       
   883 	IMPORT_C virtual void SetClockCancel() const;
       
   884 	IMPORT_C virtual TInt EnumerateAlarm(TInt& aCount) const;
       
   885 	IMPORT_C virtual void EnumerateAlarm(TRequestStatus& aStatus, TInt& aCount) const;
       
   886 	IMPORT_C virtual void EnumerateAlarmCancel() const;
       
   887 	IMPORT_C virtual TInt GetAlarm(const TInt aIndex,TAlarm& aAlarm) const;
       
   888 	IMPORT_C virtual void GetAlarm(TRequestStatus& aStatus, const TInt aIndex, TAlarm& aAlarm) const;
       
   889 	IMPORT_C virtual void GetAlarmCancel() const;
       
   890 	IMPORT_C virtual TInt SetAlarm(const TInt aIndex,const TAlarm& aAlarm) const;
       
   891 	IMPORT_C virtual void SetAlarm(TRequestStatus& aStatus, const TInt aIndex,const TAlarm& aAlarm) const;
       
   892 	IMPORT_C virtual void SetAlarmCancel() const;
       
   893 	IMPORT_C virtual TInt GetClockCaps(TClockAndAlarmCapsFlags& aCaps) const;
       
   894 	IMPORT_C virtual void NotifyClockCaps(TRequestStatus& aStatus, TClockAndAlarmCapsFlags& aCaps);
       
   895 	IMPORT_C virtual void NotifyClockCapsCancel() const;
       
   896 
       
   897 	// These are "free slots", to allow subsequent additional functions in Mixins without 
       
   898 	// breaking BC.
       
   899 
       
   900  	IMPORT_C virtual void IdFreeSlot1() const;
       
   901 	IMPORT_C virtual void IdFreeSlot2() const;
       
   902 	IMPORT_C virtual void IdFreeSlot3() const;
       
   903 	IMPORT_C virtual void IdFreeSlot4() const;
       
   904 	IMPORT_C virtual void PhBookSupportFreeSlot3() const;
       
   905 	IMPORT_C virtual void PhBookSupportFreeSlot4() const;
       
   906  	IMPORT_C virtual void SignalFreeSlot1() const;
       
   907 	IMPORT_C virtual void SignalFreeSlot2() const;
       
   908 	IMPORT_C virtual void SignalFreeSlot3() const;
       
   909 	IMPORT_C virtual void SignalFreeSlot4() const;
       
   910 	IMPORT_C virtual void NetworkFreeSlot1() const;
       
   911 	IMPORT_C virtual void NetworkFreeSlot2() const;
       
   912 	IMPORT_C virtual void NetworkFreeSlot3() const;
       
   913 	IMPORT_C virtual void NetworkFreeSlot4() const; 
       
   914 	IMPORT_C virtual void BatteryFreeSlot1() const;
       
   915 	IMPORT_C virtual void BatteryFreeSlot2() const;
       
   916 	IMPORT_C virtual void BatteryFreeSlot3() const;
       
   917 	IMPORT_C virtual void BatteryFreeSlot4() const;
       
   918 	IMPORT_C virtual void IndicatorFreeSlot1() const;
       
   919 	IMPORT_C virtual void IndicatorFreeSlot2() const;
       
   920 	IMPORT_C virtual void IndicatorFreeSlot3() const;
       
   921 	IMPORT_C virtual void IndicatorFreeSlot4() const;
       
   922 	IMPORT_C virtual void ClockFreeSlot1() const;
       
   923 	IMPORT_C virtual void ClockFreeSlot2() const;
       
   924 	IMPORT_C virtual void ClockFreeSlot3() const;
       
   925 	IMPORT_C virtual void ClockFreeSlot4() const;
       
   926 	  
       
   927 private:
       
   928 	CBasicPtrHolder* iBasicPtrHolder;
       
   929 protected:
       
   930 	IMPORT_C virtual void ConstructL();
       
   931 	IMPORT_C virtual void Destruct();
       
   932 protected:
       
   933 	void BasicPhoneGet(const TInt aIpc,TRequestStatus& aStatus,TDes8& aDes1,TDes8& aDes2) const;
       
   934 	void BasicPhoneGet(const TInt aIpc,TRequestStatus& aStatus,TDes16& aDes1,TDes16& aDes2) const;
       
   935 	TInt BasicPhoneCancel(const TInt aIpc,const TInt aIpcToCancel) const;
       
   936 	};
       
   937 
       
   938 
       
   939 class CBasicGsmRetrieveDetectedNetworks : public CActive
       
   940 /**
       
   941 Async retrieval of network results
       
   942 @internalComponent
       
   943 */
       
   944 	{
       
   945 public:
       
   946 	IMPORT_C static CBasicGsmRetrieveDetectedNetworks* NewL(RBasicGsmPhone& aPhone);
       
   947 	IMPORT_C ~CBasicGsmRetrieveDetectedNetworks();
       
   948 //
       
   949 // Start the retrieval
       
   950 //
       
   951 	IMPORT_C void Start(TRequestStatus& aStatus);
       
   952 //
       
   953 // Get the results of the retrieval
       
   954 //
       
   955 	IMPORT_C CGsmNetworkList* RetrieveResults() const;
       
   956 
       
   957 protected:
       
   958 	CBasicGsmRetrieveDetectedNetworks(RBasicGsmPhone& aPhone);
       
   959 	void ConstructL();
       
   960 
       
   961 	virtual void StartPhase2L();
       
   962 //
       
   963 // CActive pure virtual functions
       
   964 // 
       
   965 	virtual void DoCancel();
       
   966 private:
       
   967 	virtual void RunL();
       
   968 
       
   969 protected:
       
   970 	enum {
       
   971 		EIdle,
       
   972 		ERetrievePhase1,
       
   973 		ERetrievePhase2
       
   974 		} iState;
       
   975 
       
   976 	RBasicGsmPhone& iPhone;
       
   977 	TRequestStatus* iUserStatus;
       
   978 	TInt iNumOfEntries;
       
   979 	RBasicGsmPhone::TGsmNetworkClientId iId;
       
   980 	CGsmNetworkList* iResults;
       
   981 	CBufFlat* iResultsBuf;
       
   982 	TPtr8 iIdPtr;
       
   983 	TPtr8 iResultsPtr;
       
   984 	TPtr8 iReadPtr;
       
   985 	};
       
   986 
       
   987 class CGsmNetworkList : public CBase
       
   988 /**
       
   989 @internalComponent
       
   990 */
       
   991 	{
       
   992 public:
       
   993 	IMPORT_C static CGsmNetworkList* NewL(TInt aNoOfEntries);
       
   994 	IMPORT_C ~CGsmNetworkList();
       
   995 //
       
   996 // Streaming - for use to pass array over IPC
       
   997 //
       
   998 	void InternalizeL(RReadStream& aStream);
       
   999 	void ExternalizeL(RWriteStream& aStream) const;
       
  1000 	IMPORT_C CBufFlat* StoreLC();
       
  1001 	IMPORT_C void StoreL(TDes8& aDes);
       
  1002 	IMPORT_C void RestoreL(const TDesC8& aBuf);
       
  1003 	IMPORT_C void AddEmptyEntriesL();
       
  1004 //
       
  1005 // Panic constant for browsing list
       
  1006 //
       
  1007 	enum 
       
  1008 		{ KPanicInvalidResultsIndex };
       
  1009 //
       
  1010 // Accessing results
       
  1011 // 
       
  1012 	IMPORT_C TInt GetNextEntry(RBasicGsmPhone::TNetworkInfo& aEntry);
       
  1013 	IMPORT_C TInt GetPreviousEntry(RBasicGsmPhone::TNetworkInfo& aEntry);
       
  1014 	IMPORT_C TInt GetEntry(const TInt aIndex, RBasicGsmPhone::TNetworkInfo& aEntry);
       
  1015 //
       
  1016 // Adding an entry 
       
  1017 //
       
  1018 	IMPORT_C TInt AddEntryL(const RBasicGsmPhone::TNetworkInfo& aEntry);
       
  1019 	IMPORT_C TInt InsertEntryL(const TInt aIndex, const RBasicGsmPhone::TNetworkInfo& aEntry);
       
  1020 	IMPORT_C TInt ChangeEntry(const TInt aIndex, const RBasicGsmPhone::TNetworkInfo& aEntry);
       
  1021 	IMPORT_C TInt DeleteEntry(const TInt aIndex);
       
  1022 
       
  1023 //
       
  1024 // Counting entries
       
  1025 //
       
  1026 	IMPORT_C TInt EnumerateEntries(TInt& aCount);
       
  1027 	IMPORT_C TInt GetMaxNumEntries(TInt& aMaxNumber);
       
  1028 	IMPORT_C TInt SetMaxNumEntries(TInt aMaxNumber);
       
  1029 //
       
  1030 // Reset all entries
       
  1031 //
       
  1032 	IMPORT_C void Reset();
       
  1033 protected:
       
  1034 	CGsmNetworkList(TInt aNoOfEntries);
       
  1035 private:
       
  1036 	void ConstructL();
       
  1037 private:
       
  1038 	IMPORT_C void GsmNetworkListSlot1();
       
  1039 	IMPORT_C void GsmNetworkListSlot2();
       
  1040 
       
  1041 	CArrayFixFlat<RBasicGsmPhone::TNetworkInfo>* iList;
       
  1042 	TInt iCurrentIndex;
       
  1043 	TInt iLastAddedIndex;
       
  1044 	TInt iNoOfEntries;
       
  1045 	TInt iMaxNoOfEntries;
       
  1046 	};
       
  1047 
       
  1048 
       
  1049 /**
       
  1050 Phone book
       
  1051 @internalComponent
       
  1052 */
       
  1053 
       
  1054 #define	SIM_FIX_DIALLING_PHONEBOOK		_L("SIMFixDialling")
       
  1055 #define ME_PHONEBOOK					_L("ME")
       
  1056 #define ME_AND_SIM_PHONEBOOK			_L("CombinedMEAndSIM")
       
  1057 #define SIM_PHONEBOOK					_L("SIM")
       
  1058 #define TA_PHONEBOOK					_L("TA")
       
  1059 //
       
  1060 #define LAST_DIALLED_PHONEBOOK			_L("DialledCalls")
       
  1061 #define EMERGENCY_PHONEBOOK				_L("EmergencyNumber")
       
  1062 #define MISSED_CALLS_PHONEBOOK			_L("MissedCalls")
       
  1063 #define RECEIVED_CALLS_PHONEBOOK		_L("ReceivedCalls")
       
  1064 
       
  1065 class CGsmPhoneBookResults;
       
  1066 class RGsmPhoneBook : public RTelSubSessionBase
       
  1067 /**
       
  1068 @internalComponent
       
  1069 */
       
  1070 	{
       
  1071 friend class CGsmPhoneBookResults;
       
  1072 friend class CGsmPhoneBookSearch;
       
  1073 public:
       
  1074 	IMPORT_C RGsmPhoneBook();
       
  1075 	IMPORT_C TInt Open(RPhone& aPhone, const TDesC& aType);
       
  1076 	IMPORT_C void Close();
       
  1077 
       
  1078 //
       
  1079 // Capability Information
       
  1080 //
       
  1081 	enum
       
  1082 		{
       
  1083 		KCapsWriteAccess=0x00000001,
       
  1084 		KCapsRestrictedWriteAccess=0x00000002,
       
  1085 		KCapsAddressChanged=0x00000004
       
  1086 		};
       
  1087 
       
  1088 	struct TCaps
       
  1089 		{
       
  1090 		TUint iCaps;
       
  1091 		};
       
  1092 
       
  1093 	IMPORT_C TInt GetCaps(TCaps& aCaps) const;
       
  1094 
       
  1095 //
       
  1096 // Phone Book Entry Changed Notifications
       
  1097 //
       
  1098 	IMPORT_C void EntryChangedNotification(TRequestStatus& aStatus,TInt& aIndex); 
       
  1099 	IMPORT_C void EntryChangedNotificationCancel() const;
       
  1100 
       
  1101 //
       
  1102 // Phone book information
       
  1103 //
       
  1104 
       
  1105 	IMPORT_C TInt GetInfo(RBasicGsmPhone::TPhoneBookInfo& aInfo) const;
       
  1106 	IMPORT_C void GetInfo(TRequestStatus& aStatus, RBasicGsmPhone::TPhoneBookInfo& aInfo);
       
  1107 	IMPORT_C void GetInfoCancel() const;
       
  1108 
       
  1109 	enum { KPhoneBookEntrySize=100 };		// Review this number
       
  1110 
       
  1111 	class TEntry
       
  1112 /**
       
  1113 Phone Book Browsing
       
  1114 @internalComponent
       
  1115 */
       
  1116 		{
       
  1117 	public:
       
  1118 		void InternalizeL(RReadStream& aStream);
       
  1119 		void ExternalizeL(RWriteStream& aStream) const;
       
  1120 	public:
       
  1121 		TGsmTelNumber iTelNumber;
       
  1122 		TBuf<KPhoneBookEntrySize> iText;
       
  1123 		TInt iIndex;
       
  1124 		TName iPhoneBookName;
       
  1125 		};
       
  1126 
       
  1127 	IMPORT_C TInt Read(TEntry& aEntry);
       
  1128 	IMPORT_C void Read(TRequestStatus& aStatus, TEntry& aEntry);
       
  1129 	IMPORT_C void ReadCancel() const;
       
  1130 	IMPORT_C TInt ReadFirst(TEntry& aEntry);
       
  1131 	IMPORT_C void ReadFirst(TRequestStatus& aStatus, TEntry& aEntry);
       
  1132 	IMPORT_C void ReadFirstCancel() const;
       
  1133 	IMPORT_C TInt ReadPrevious(TEntry& aEntry);
       
  1134 	IMPORT_C void ReadPrevious(TRequestStatus& aStatus, TEntry& aEntry);
       
  1135 	IMPORT_C void ReadPreviousCancel() const;
       
  1136 	IMPORT_C TInt ReadNext(TEntry& aEntry);
       
  1137 	IMPORT_C void ReadNext(TRequestStatus& aStatus, TEntry& aEntry);
       
  1138 	IMPORT_C void ReadNextCancel() const;
       
  1139 
       
  1140 //
       
  1141 // Phone Book Writing/Deleting
       
  1142 //
       
  1143 	IMPORT_C TInt Write(TEntry& aEntry) const;
       
  1144 	IMPORT_C void Write(TRequestStatus& aStatus, TEntry& aEntry);
       
  1145 	IMPORT_C void WriteCancel() const;
       
  1146 	IMPORT_C TInt Delete(TInt aIndex) const;
       
  1147 	IMPORT_C void Delete(TRequestStatus& aStatus, TInt aIndex);
       
  1148 	IMPORT_C void DeleteCancel() const;
       
  1149 
       
  1150 //
       
  1151 // Synchronous Phone Book Search
       
  1152 //
       
  1153 
       
  1154 	typedef TBuf<KPhoneBookEntrySize> TSearchString;
       
  1155 
       
  1156 	IMPORT_C CGsmPhoneBookResults* SearchLC(const TSearchString& aSearch);
       
  1157 
       
  1158 //
       
  1159 // Server TSY internal definitions
       
  1160 //
       
  1161 
       
  1162 public:
       
  1163 	struct TGsmPhoneBookWrite
       
  1164 		{
       
  1165 		TEntry iEntry;
       
  1166 		TGsmPassword iPin2;
       
  1167 		};
       
  1168 	
       
  1169 	struct TGsmPhoneBookClientId
       
  1170 		{
       
  1171 		TInt iSessionHandle;
       
  1172 		TInt iSubSessionHandle;
       
  1173 		};
       
  1174 
       
  1175 	struct TGsmPhoneBookSearch
       
  1176 		{
       
  1177 		TSearchString iSearchString;
       
  1178 		TInt iNumMatchingEntries;
       
  1179 		};
       
  1180 protected:
       
  1181 	void PhBookGet(const TInt aIpc,TRequestStatus& aStatus,TDes8& aDes1,TDes8& aDes2) const;
       
  1182 	void PhBookGet(const TInt aIpc,TRequestStatus& aStatus,TDes16& aDes1,TDes16& aDes2) const;
       
  1183 	TInt PhBookCancel(const TInt aIpc,const TInt aIpcToCancel) const;
       
  1184 
       
  1185 private:
       
  1186 	RGsmPhoneBook(const RGsmPhoneBook& aPhoneBook);
       
  1187 	CBasicPtrHolder* iBasicPtrHolder;
       
  1188 	TGsmPhoneBookWrite iWrite;
       
  1189 	TInt iDelete;
       
  1190 	TInt iReadIndex;
       
  1191 protected:
       
  1192 	IMPORT_C virtual void ConstructL();
       
  1193 	IMPORT_C virtual void Destruct();
       
  1194 	};
       
  1195 
       
  1196 
       
  1197 class CGsmPhoneBookResults : public CBase
       
  1198 /**
       
  1199 Storage of results of phone book search or read; used by sync and async searches
       
  1200 @internalComponent
       
  1201 */
       
  1202 	{
       
  1203 public:
       
  1204 	IMPORT_C static CGsmPhoneBookResults* NewL(TInt aNoOfEntries);
       
  1205 	IMPORT_C ~CGsmPhoneBookResults();
       
  1206 //
       
  1207 // Streaming - for use to pass array over IPC
       
  1208 //
       
  1209 	void InternalizeL(RReadStream& aStream);
       
  1210 	void ExternalizeL(RWriteStream& aStream) const;
       
  1211 	IMPORT_C CBufFlat* StoreLC();
       
  1212 	IMPORT_C void StoreL(TDes8& aDes);
       
  1213 	IMPORT_C void RestoreL(const TDesC8& aBuf);
       
  1214 	IMPORT_C void AddEmptyEntriesL();
       
  1215 //
       
  1216 // Panic constant for browsing list
       
  1217 //
       
  1218 	enum 
       
  1219 		{ KPanicInvalidResultsIndex };
       
  1220 //
       
  1221 // Accessing results
       
  1222 // 
       
  1223 	IMPORT_C TInt GetNextEntry(RGsmPhoneBook::TEntry& aEntry);
       
  1224 	IMPORT_C TInt GetPreviousEntry(RGsmPhoneBook::TEntry& aEntry);
       
  1225 	IMPORT_C TInt GetEntry(TInt aPosition,RGsmPhoneBook::TEntry& aEntry);
       
  1226 //
       
  1227 // Adding an entry 
       
  1228 //
       
  1229 	IMPORT_C TInt AddEntry(const RGsmPhoneBook::TEntry& aEntry);
       
  1230 //
       
  1231 // Counting entries
       
  1232 //
       
  1233 	IMPORT_C TInt EnumerateEntries(TInt& aCount);
       
  1234 //
       
  1235 // Reset all entries
       
  1236 //
       
  1237 	IMPORT_C void Reset();
       
  1238 protected:
       
  1239 	CGsmPhoneBookResults(TInt aNoOfEntries);
       
  1240 private:
       
  1241 	void ConstructL();
       
  1242 private:
       
  1243 	CArrayFixFlat<RGsmPhoneBook::TEntry>* iResults;
       
  1244 	TInt iCurrentIndex;
       
  1245 	TInt iLastAddedIndex;
       
  1246 	TInt iNoOfEntries;
       
  1247 	};
       
  1248 
       
  1249 class CGsmPhoneBookSearch : public CActive
       
  1250 /**
       
  1251 Async phone book search
       
  1252 @internalComponent
       
  1253 */
       
  1254 	{
       
  1255 public:
       
  1256 	IMPORT_C static CGsmPhoneBookSearch* NewL(RGsmPhoneBook& aPhoneBook);
       
  1257 	IMPORT_C ~CGsmPhoneBookSearch();
       
  1258 //
       
  1259 // Start the search
       
  1260 //
       
  1261 	IMPORT_C void Start(const RGsmPhoneBook::TSearchString& aSearch,TRequestStatus& aStatus);
       
  1262 //
       
  1263 // Get the results of the search
       
  1264 //
       
  1265 	IMPORT_C CGsmPhoneBookResults* SearchResults() const;
       
  1266 
       
  1267 protected:
       
  1268 	IMPORT_C CGsmPhoneBookSearch(RGsmPhoneBook& aPhoneBook);
       
  1269 	IMPORT_C void ConstructL();
       
  1270 
       
  1271 	IMPORT_C virtual void StartPhase2L();
       
  1272 //
       
  1273 // CActive pure virtual functions
       
  1274 // 
       
  1275 	IMPORT_C virtual void DoCancel();
       
  1276 private:
       
  1277 	virtual void RunL();
       
  1278 
       
  1279 protected:
       
  1280 	enum {
       
  1281 		EIdle,
       
  1282 		ESearchPhase1,
       
  1283 		ESearchPhase2
       
  1284 		} iState;
       
  1285 
       
  1286 	RGsmPhoneBook& iPhoneBook;
       
  1287 	TRequestStatus* iUserStatus;
       
  1288 	RGsmPhoneBook::TGsmPhoneBookSearch iSearch;
       
  1289 	RGsmPhoneBook::TGsmPhoneBookClientId iId;
       
  1290 	TPtr8 iSearchPtr;
       
  1291 	TPtr8 iIdPtr;
       
  1292 	CGsmPhoneBookResults* iResults;
       
  1293 	CBufFlat* iResultsBuf;
       
  1294 	TPtr8 iResultsPtr;
       
  1295 	};
       
  1296 
       
  1297 /**
       
  1298 Sms Message Abstraction
       
  1299 @internalComponent
       
  1300 */
       
  1301 
       
  1302 #define SMS_BROADCAST_MESSAGE_STORE_NAME	_L("BroadcastMessageStorage")
       
  1303 #define SMS_ME_STORE_NAME					_L("MEStorage")
       
  1304 #define SMS_ME_AND_SIM_STORE_NAME			_L("MEAndSIMStorage")
       
  1305 #define SMS_SIM_STORE_NAME					_L("SIMStorage")
       
  1306 #define SMS_TA_STORE_NAME					_L("TAStorage")
       
  1307 
       
  1308 class TSms
       
  1309 /**
       
  1310 @internalComponent
       
  1311 */
       
  1312 	{
       
  1313 public:
       
  1314 //
       
  1315 // Messaging Format
       
  1316 //
       
  1317 	enum TFormat
       
  1318 		{
       
  1319 		EFormatPdu		// this may be extended in the future
       
  1320 		};
       
  1321 //
       
  1322 // Messaging Enumerations
       
  1323 //
       
  1324 
       
  1325 	enum { KPduSize=177			};		// (160*7)/8 + 25 (header) + 12 (SC address)
       
  1326 	enum { KTextSize=160		};		// 
       
  1327 
       
  1328 //
       
  1329 // Message Structures
       
  1330 //
       
  1331 	typedef TBuf8<KPduSize> TPdu;
       
  1332 //
       
  1333 // Functionality
       
  1334 //
       
  1335 	IMPORT_C TSms();
       
  1336 	IMPORT_C TSms(const TFormat aFormat);
       
  1337 	IMPORT_C TSms(const TPdu& aPdu);
       
  1338 
       
  1339 	IMPORT_C TFormat Format() const;
       
  1340 	IMPORT_C void SetFormat(const TFormat aFormat);
       
  1341 	IMPORT_C TBool UseDefaultSca() const;
       
  1342 	IMPORT_C void SetUseDefaultSca(const TBool& aUseDefaultSca);
       
  1343 //
       
  1344 // For Pdu message only
       
  1345 //
       
  1346 	IMPORT_C const TPdu& PduL() const;
       
  1347 	IMPORT_C void SetPduL(const TPdu& aPdu);
       
  1348 
       
  1349 private:
       
  1350 	TFormat iFormat;
       
  1351 	TBool iUseDefaultSca;
       
  1352 	TPdu iBuf;
       
  1353 	};
       
  1354 
       
  1355 class RSmsMessaging;
       
  1356 class RSmsStorage : public RTelSubSessionBase
       
  1357 /**
       
  1358 RSmsStorage
       
  1359 @internalComponent
       
  1360 */
       
  1361 	{
       
  1362 public:
       
  1363 	IMPORT_C RSmsStorage();
       
  1364 	IMPORT_C TInt Open(RSmsMessaging& aMessaging,const TDesC& aStore);
       
  1365 	IMPORT_C void Close();
       
  1366 
       
  1367 	struct TInfo
       
  1368 		{
       
  1369 		TUint iUsed;
       
  1370 		TUint iTotal;
       
  1371 		};
       
  1372 
       
  1373 	enum TStatus
       
  1374 		{
       
  1375 		EStatusUnread,
       
  1376 		EStatusRead,
       
  1377 		EStatusUnsent,
       
  1378 		EStatusSent
       
  1379 		};
       
  1380 
       
  1381 	struct TSmsMsgStoreEntry
       
  1382 		{
       
  1383 		TSms iMsg;
       
  1384 		TStatus iStatus;
       
  1385 		};
       
  1386 
       
  1387 	IMPORT_C TInt GetInfo(TInfo& aInfo) const;
       
  1388 	IMPORT_C void GetInfo(TRequestStatus& aStatus, TInfo& aInfo);
       
  1389 	IMPORT_C void GetInfoCancel() const;
       
  1390 	IMPORT_C TInt ReadSms(const TInt aIndex, TSmsMsgStoreEntry& aMsgEntry) const;
       
  1391 	IMPORT_C void ReadSms(TRequestStatus& aStatus, const TInt aIndex, TSmsMsgStoreEntry& aMsgEntry);
       
  1392 	IMPORT_C void ReadSmsCancel() const;
       
  1393 	IMPORT_C TInt Write(TInt& aIndex, const TSmsMsgStoreEntry& aMsg) const;
       
  1394 	IMPORT_C void Write(TRequestStatus& aStatus, TInt& aIndex, const TSmsMsgStoreEntry& aMsg);
       
  1395 	IMPORT_C void WriteCancel() const;
       
  1396 	IMPORT_C TInt Delete(const TInt aIndex) const;
       
  1397 	IMPORT_C void Delete(TRequestStatus& aStatus, const TInt aIndex);
       
  1398 	IMPORT_C void DeleteCancel() const;
       
  1399 
       
  1400 	IMPORT_C void WriteNotification(TRequestStatus& aStatus, TInt& aIndex);
       
  1401 	IMPORT_C void WriteNotificationCancel() const;
       
  1402 
       
  1403 private:
       
  1404 	CBasicPtrHolder* iBasicPtrHolder;
       
  1405 	TInt iReadIndexValue;
       
  1406 	TInt iDeleteValue;
       
  1407 protected:
       
  1408 	IMPORT_C virtual void ConstructL();
       
  1409 	IMPORT_C virtual void Destruct();
       
  1410 	};
       
  1411 
       
  1412 class RSmsMessaging : public RTelSubSessionBase
       
  1413 /**
       
  1414 RSmsMessaging
       
  1415 @internalComponent
       
  1416 */
       
  1417 	{
       
  1418 public:
       
  1419 	IMPORT_C RSmsMessaging();
       
  1420 	IMPORT_C TInt Open(RPhone& aPhone);
       
  1421 	IMPORT_C void Close();
       
  1422 
       
  1423 //
       
  1424 // Capability Information
       
  1425 //
       
  1426 	enum
       
  1427 		{
       
  1428 		KCapsModeCommandPduSupported=0x00000001,
       
  1429 		KCapsModeBlockPduSupported=0x00000002,
       
  1430 		KCapsModeReadWithoutStorage=0x00000004,
       
  1431 		KCapsModeReadWithStorage=0x00000008
       
  1432 		};
       
  1433 
       
  1434 	enum
       
  1435 		{
       
  1436 		KCapsTypeRxSmsDeliver=0x00000001,
       
  1437 		KCapsTypeTxSmsSubmit=0x00000002
       
  1438 		};
       
  1439 
       
  1440 	struct TCaps
       
  1441 		{
       
  1442 		TUint iSmsMode;
       
  1443 		TUint iSmsMsgTypes;
       
  1444 		};
       
  1445 
       
  1446 	IMPORT_C TInt GetCaps(TCaps& aCaps) const;
       
  1447 
       
  1448 //
       
  1449 // Messaging Mode
       
  1450 //
       
  1451 	enum TSmsMode
       
  1452 		{
       
  1453 		EModeCommandPdu,
       
  1454 		EModeBlockPdu
       
  1455 		};
       
  1456 
       
  1457 	enum TStorageMode
       
  1458 		{
       
  1459 		EReadWithoutStorage,
       
  1460 		EReadWithStorage
       
  1461 		};
       
  1462 
       
  1463 	struct TMode
       
  1464 		{
       
  1465 		TSmsMode iMessagingMode;
       
  1466 		TStorageMode iStorageMode;
       
  1467 		};
       
  1468 
       
  1469 	IMPORT_C TInt SetMode(const TMode& aMode) const;
       
  1470 	IMPORT_C void SetMode(TRequestStatus& aStatus, const TMode& aMode) const;
       
  1471 	IMPORT_C void SetModeCancel() const;
       
  1472 	IMPORT_C TInt GetMode(TMode& aMode) const;
       
  1473 
       
  1474 	IMPORT_C TInt GetDefaultSCAddress(TGsmTelNumber& aSCAddress) const;
       
  1475 	IMPORT_C void GetDefaultSCAddress(TRequestStatus& aStatus, TGsmTelNumber& aSCAddress) const;
       
  1476 	IMPORT_C void GetDefaultSCAddressCancel() const;
       
  1477 	IMPORT_C TInt SetDefaultSCAddress(const TGsmTelNumber& aSCAddress) const;
       
  1478 	IMPORT_C void SetDefaultSCAddress(TRequestStatus& aStatus, const TGsmTelNumber& aSCAddress);
       
  1479 	IMPORT_C void SetDefaultSCAddressCancel() const;
       
  1480 //
       
  1481 // Message Transmission
       
  1482 //
       
  1483 	IMPORT_C void SendMessage(TRequestStatus& aStatus, TUint& aMsgRef, TSms& aMsg);
       
  1484 	IMPORT_C void SendMessageCancel() const;
       
  1485 
       
  1486 //
       
  1487 // Message Reception
       
  1488 //
       
  1489 	struct TMsgLocation
       
  1490 		{
       
  1491 		TInt iIndex;
       
  1492 		TName iStore;
       
  1493 		};
       
  1494 
       
  1495 	IMPORT_C void ReadSmsMessage(TRequestStatus& aStatus, TMsgLocation& aMsgLocation, TSms& aMsg);
       
  1496 	IMPORT_C void ReadSmsMessageCancel() const;
       
  1497 	IMPORT_C void NotifySmsMessageArrived(TRequestStatus& aStatus) const;
       
  1498 	IMPORT_C void NotifySmsMessageArrivedCancel() const;
       
  1499 
       
  1500 //
       
  1501 // Message Storage
       
  1502 //
       
  1503 	struct TStoreInfo
       
  1504 		{
       
  1505 		TName iName;
       
  1506 		TUint iTotal;
       
  1507 		TUint iUsed;
       
  1508 		TUint32 iFlags;
       
  1509 		};
       
  1510 
       
  1511 	enum
       
  1512 		{
       
  1513 		KMessageStoreReadAndDeleted=0x00000001,
       
  1514 		KMessageStoreWriteAndSend=0x00000002,
       
  1515 		KMessageStoreBroadcast=0x00000004
       
  1516    		};
       
  1517 
       
  1518 	IMPORT_C TInt EnumerateMessageStores(TInt& aCount) const;
       
  1519 	IMPORT_C TInt GetMessageStoreInfo(const TInt aIndex,TStoreInfo& aInfo) const;
       
  1520 	IMPORT_C void GetMessageStoreInfo(TRequestStatus& aStatus,const TInt aIndex,TStoreInfo& aInfo) const;
       
  1521 	IMPORT_C void GetMessageStoreInfoCancel() const;
       
  1522 
       
  1523 private:
       
  1524 	CBasicPtrHolder* iBasicPtrHolder;
       
  1525 protected:
       
  1526 	IMPORT_C virtual void ConstructL();
       
  1527 	IMPORT_C virtual void Destruct();
       
  1528 	};
       
  1529 
       
  1530 #endif