epoc32/include/etel.h
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
permissions -rw-r--r--
Final list of Symbian^2 public API header files
williamr@2
     1
// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@2
     4
// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2
     5
// which accompanies this distribution, and is available
williamr@2
     6
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
//
williamr@2
    15
williamr@2
    16
williamr@2
    17
williamr@2
    18
/**
williamr@2
    19
 @file
williamr@2
    20
 @publishedAll
williamr@2
    21
 @released
williamr@2
    22
*/
williamr@2
    23
williamr@2
    24
#if !defined(__ETEL_H__)
williamr@2
    25
/** @internalComponent */
williamr@2
    26
#define __ETEL_H__
williamr@2
    27
williamr@2
    28
#if !defined(__E32BASE_H__)
williamr@2
    29
#include <e32base.h>
williamr@2
    30
#endif
williamr@2
    31
williamr@2
    32
#if !defined (__C32COMM_H__)
williamr@2
    33
#include <c32comm.h>
williamr@2
    34
#endif
williamr@2
    35
williamr@2
    36
#if !defined(__D32COMM_H__)
williamr@2
    37
#include <d32comm.h>
williamr@2
    38
#endif
williamr@2
    39
williamr@2
    40
#if !defined(__FAXDEFN_H)
williamr@2
    41
#include <faxdefn.h>
williamr@2
    42
#endif
williamr@2
    43
/** Major version number.*/
williamr@2
    44
const TUint KEtelMajorVersionNumber=1;
williamr@2
    45
/** Minor version number. */
williamr@2
    46
const TUint KEtelMinorVersionNumber=0;
williamr@2
    47
/** Build number. */
williamr@2
    48
const TUint KEtelBuildVersionNumber=606;
williamr@2
    49
/**
williamr@2
    50
@internalComponent
williamr@2
    51
*/
williamr@2
    52
IMPORT_C void PanicClient(TInt aFault);
williamr@2
    53
williamr@2
    54
//
williamr@2
    55
// Etel Core Error Definitions
williamr@2
    56
//
williamr@2
    57
williamr@2
    58
const TInt KErrEtelCoreBase = -2000;
williamr@2
    59
williamr@2
    60
/** The client is not the call owner and has attempted to perform an operation 
williamr@2
    61
that requires ownership.*/
williamr@2
    62
const TInt KErrEtelNotCallOwner=KErrEtelCoreBase;
williamr@2
    63
/** An attempt has been made to load an ETel (TSY) module which contains a phone 
williamr@2
    64
with the same name as one already loaded. */
williamr@2
    65
const TInt KErrEtelDuplicatePhoneName=KErrEtelCoreBase-1;
williamr@2
    66
/** An attempt has been made to acquire call ownership when the requesting client 
williamr@2
    67
is already the call owner. */
williamr@2
    68
const TInt KErrEtelAlreadyCallOwner=KErrEtelCoreBase-2;
williamr@2
    69
/** A connection has been terminated because the carrier has been lost. */
williamr@2
    70
const TInt KErrEtelNoCarrier=KErrEtelCoreBase-3;
williamr@2
    71
/** An attempt to establish a connection with the RCall::Dial() function has failed 
williamr@2
    72
because the remote party's line was busy. */
williamr@2
    73
const TInt KErrEtelBusyDetected=KErrEtelCoreBase-4;
williamr@2
    74
/** An attempt has been made to transfer call ownership, but no other clients are 
williamr@2
    75
interested in acquiring ownership. */
williamr@2
    76
const TInt KErrEtelNoClientInterestedInThisCall=KErrEtelCoreBase-5;
williamr@2
    77
/** The TSY has failed to initialise the modem. This may be occur if the modem 
williamr@2
    78
is disconnected during initialisation, or if an attempt is made to initialise 
williamr@2
    79
an unsupported modem. */
williamr@2
    80
const TInt KErrEtelInitialisationFailure=KErrEtelCoreBase-6;
williamr@2
    81
/** An attempt has been made to perform an operation which requires the call to 
williamr@2
    82
be connected - when the call is not connected. E.g. RCall:LoanDataPort(). */
williamr@2
    83
const TInt KErrEtelCallNotActive=KErrEtelCoreBase-7;
williamr@2
    84
/** A connection request has failed because there is no answer. */
williamr@2
    85
const TInt KErrEtelNoAnswer=KErrEtelCoreBase-8;
williamr@2
    86
/** A connection request has failed because there is no dial tone. For example, 
williamr@2
    87
if there is no connection between the modem and the network. */
williamr@2
    88
const TInt KErrEtelNoDialTone=KErrEtelCoreBase-9;
williamr@2
    89
/** An attempt to configure the port has failed because the hardware cannot match 
williamr@2
    90
the desired configuration. For example, if an attempt is made to configure 
williamr@2
    91
the comms port to a baud rate it cannot support. */
williamr@2
    92
const TInt KErrEtelConfigPortFailure=KErrEtelCoreBase-10;
williamr@2
    93
/** Out of memory error - global chunk cannot be created. */
williamr@2
    94
const TInt KErrEtelFaxChunkNotCreated=KErrEtelCoreBase-11;
williamr@2
    95
/** The client is not the fax owner and has attempted to perform an operation that 
williamr@2
    96
requires fax ownership.
williamr@2
    97
williamr@2
    98
The fax client should be used to access fax functionality. Consequently, client 
williamr@2
    99
code should not return this error. */
williamr@2
   100
const TInt KErrEtelNotFaxOwner=KErrEtelCoreBase-12;
williamr@2
   101
/** An attempt has been made to perform an operation which requires port ownership. 
williamr@2
   102
However, the client does not own the port. */
williamr@2
   103
const TInt KErrEtelPortNotLoanedToClient=KErrEtelCoreBase-13;
williamr@2
   104
/** An operation has failed because the modem has been incorrectly configured. */
williamr@2
   105
const TInt KErrEtelWrongModemType=KErrEtelCoreBase-14;
williamr@2
   106
/** An operation has failed because the modem does not understand the request - 
williamr@2
   107
possible bug in modem. */
williamr@2
   108
const TInt KErrEtelUnknownModemCapability=KErrEtelCoreBase-15;
williamr@2
   109
/** The call has already placed an 'answer incoming call' request. Only 1 request 
williamr@2
   110
of a type (e.g. fax, voice, data) can be outstanding on the server at a time. */
williamr@2
   111
const TInt KErrEtelAnswerAlreadyOutstanding=KErrEtelCoreBase-16;
williamr@2
   112
/** An attempt to establish a connection with the modem has failed because the 
williamr@2
   113
modem cannot be detected. */
williamr@2
   114
const TInt KErrEtelModemNotDetected=KErrEtelCoreBase-17;
williamr@2
   115
/** Operation failed because the modem settings are corrupt. */
williamr@2
   116
const TInt KErrEtelModemSettingsCorrupt=KErrEtelCoreBase-18;
williamr@2
   117
/** The Data port is in use by another call or application. */
williamr@2
   118
const TInt KErrEtelPortAlreadyLoaned=KErrEtelCoreBase-19;
williamr@2
   119
/** Another call active. Close it before opening a new one. */
williamr@2
   120
const TInt KErrEtelCallAlreadyActive=KErrEtelCoreBase-20;
williamr@2
   121
williamr@2
   122
//
williamr@2
   123
//
williamr@2
   124
// RTelSubSessionBase
williamr@2
   125
//
williamr@2
   126
//
williamr@2
   127
class CPtrHolder;
williamr@2
   128
class RFile;
williamr@2
   129
/**
williamr@2
   130
A base class used in the derivation of RCall, RLine, and RPhone. It has no user
williamr@2
   131
accessible functions. 
williamr@2
   132
williamr@2
   133
@publishedPartner
williamr@2
   134
@released
williamr@2
   135
*/
williamr@2
   136
class RTelSubSessionBase : public RSubSessionBase
williamr@2
   137
	{
williamr@2
   138
public:
williamr@2
   139
	inline RSessionBase& SessionHandle() const;
williamr@2
   140
	inline void SetSessionHandle(RSessionBase& aSession);
williamr@2
   141
	inline void ResetSessionHandle();
williamr@2
   142
	inline TInt SubSessionHandle();
williamr@2
   143
williamr@2
   144
	IMPORT_C void CancelAsyncRequest(TInt aReqToCancel) const;
williamr@2
   145
williamr@2
   146
	enum TReqPriorityType
williamr@2
   147
		{
williamr@2
   148
		EIsNotaPriorityRequest,
williamr@2
   149
		EIsaPriorityRequest,
williamr@2
   150
		EIsaEmergencyRequest
williamr@2
   151
		};
williamr@2
   152
	
williamr@2
   153
protected:
williamr@2
   154
williamr@2
   155
	IMPORT_C RTelSubSessionBase();
williamr@2
   156
	IMPORT_C TInt Blank(const TInt aIpc,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   157
	IMPORT_C void Blank(const TInt aIpc,TRequestStatus& aStatus,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   158
williamr@2
   159
	IMPORT_C TInt Set(const TInt aIpc,const TDesC8& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   160
	IMPORT_C void Set(const TInt aIpc,TRequestStatus& aStatus,const TDesC8& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   161
	IMPORT_C TInt Get(const TInt aIpc,TDes8& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   162
	IMPORT_C void Get(const TInt aIpc,TRequestStatus& aStatus,TDes8& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   163
williamr@2
   164
	IMPORT_C TInt Set(const TInt aIpc,const TDesC8& aDes1,const TDesC8& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   165
	IMPORT_C void Set(const TInt aIpc,TRequestStatus& aStatus,const TDesC8& aDes1,const TDesC8& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   166
	IMPORT_C TInt Get(const TInt aIpc,TDes8& aDes1,TDes8& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   167
	IMPORT_C void Get(const TInt aIpc,TRequestStatus& aStatus,TDes8& aDes1,TDes8& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   168
	
williamr@2
   169
	IMPORT_C TInt Set(const TInt aIpc,const TDesC16& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   170
	IMPORT_C void Set(const TInt aIpc,TRequestStatus& aStatus,const TDesC16& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   171
	IMPORT_C TInt Get(const TInt aIpc,TDes16& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   172
	IMPORT_C void Get(const TInt aIpc,TRequestStatus& aStatus,TDes16& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   173
williamr@2
   174
	IMPORT_C TInt Set(const TInt aIpc,const TDesC16& aDes1,const TDesC16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   175
	IMPORT_C void Set(const TInt aIpc,TRequestStatus& aStatus,const TDesC16& aDes1,const TDesC16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   176
	IMPORT_C TInt Set(const TInt aIpc,const TDesC8& aDes1,const TDesC16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   177
	IMPORT_C void Set(const TInt aIpc,TRequestStatus& aStatus,const TDesC8& aDes1,const TDesC16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   178
williamr@2
   179
	IMPORT_C TInt Get(const TInt aIpc,TDes16& aDes1,TDes16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   180
	IMPORT_C void Get(const TInt aIpc,TRequestStatus& aStatus,TDes16& aDes1,TDes16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   181
	IMPORT_C TInt Get(const TInt aIpc,TDes8& aDes1,TDes16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   182
	IMPORT_C void Get(const TInt aIpc,TRequestStatus& aStatus,TDes8& aDes1,TDes16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   183
williamr@2
   184
	IMPORT_C void SetAndGet(const TInt aIpc, TRequestStatus& aStatus, const TDesC8& aDes1, TDes8& aDes2, TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   185
	IMPORT_C void SetAndGet(const TInt aIpc, TRequestStatus& aStatus, TDes8& aDes1, const TDesC16& aDes2, TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   186
	IMPORT_C void SetAndGet(const TInt aIpc, TRequestStatus& aStatus, const TDesC8&, TDes16& aDes2, TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   187
	IMPORT_C void SetAndGet(const TInt aIpc, TRequestStatus& aStatus, const TDesC16& aDes1, TDes16& aDes2, TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   188
williamr@2
   189
	IMPORT_C TInt Set(const TInt aIpc, const RFile& aFile, TReqPriorityType aType = EIsNotaPriorityRequest) const;
williamr@2
   190
williamr@2
   191
	IMPORT_C TInt CancelReq(const TInt aIpc,const TInt aIpcToCancel) const;
williamr@2
   192
	IMPORT_C TInt CancelSubSession() const;
williamr@2
   193
williamr@2
   194
private:
williamr@2
   195
	RTelSubSessionBase(const RTelSubSessionBase& aTelSubSessionBase);
williamr@2
   196
	RSessionBase* iTelSession;
williamr@2
   197
protected:	
williamr@2
   198
	CPtrHolder* iPtrHolder;
williamr@2
   199
	};
williamr@2
   200
williamr@2
   201
//
williamr@2
   202
//
williamr@2
   203
// RFax
williamr@2
   204
//
williamr@2
   205
//
williamr@2
   206
class RCall;
williamr@2
   207
/**
williamr@2
   208
ETel fax subsession.
williamr@2
   209
williamr@2
   210
Contains the fax client progress information structure.
williamr@2
   211
williamr@2
   212
ETel does include server-side RFax objects, however the 
williamr@2
   213
associated APIs are intended solely for use by ETel's own 
williamr@2
   214
fax client. Consequently, only the TProgress structure is 
williamr@2
   215
considered part of the public API.
williamr@2
   216
williamr@2
   217
@publishedPartner
williamr@2
   218
@released
williamr@2
   219
*/
williamr@2
   220
class RFax : public RTelSubSessionBase
williamr@2
   221
	{
williamr@2
   222
public:
williamr@2
   223
	IMPORT_C RFax();
williamr@2
   224
	IMPORT_C TInt Open(RCall& aCall);
williamr@2
   225
	IMPORT_C void Close();
williamr@2
   226
williamr@2
   227
//
williamr@2
   228
// Read,Write and Wait for Page End
williamr@2
   229
//
williamr@2
   230
	IMPORT_C void Read(TRequestStatus& aStatus,TDes8& aDes);
williamr@2
   231
	IMPORT_C void Write(TRequestStatus& aStatus,const TDesC8& aDes);
williamr@2
   232
	IMPORT_C void WaitForEndOfPage(TRequestStatus& aStatus) const;
williamr@2
   233
	IMPORT_C TInt TerminateFaxSession() const;
williamr@2
   234
//
williamr@2
   235
// Progress Information
williamr@2
   236
//
williamr@2
   237
	struct TProgress
williamr@2
   238
	/** Contains fax progress information.*/
williamr@2
   239
		{
williamr@2
   240
		/** Time of last progress update.*/
williamr@2
   241
		TTime iLastUpdateTime;
williamr@2
   242
		/** ID of remote fax - filled in after connection.*/
williamr@2
   243
		TBuf<20> iAnswerback;
williamr@2
   244
williamr@2
   245
		/** Phase of session.*/
williamr@2
   246
		TFaxPhase iPhase;
williamr@2
   247
		/** Resolution of document.*/
williamr@2
   248
		TFaxResolution iResolution;
williamr@2
   249
		/** Compression method in use.*/
williamr@2
   250
		TFaxCompression iCompression;
williamr@2
   251
		/** Error correction mode. Reserved for future releases.*/
williamr@2
   252
		TInt iECM;
williamr@2
   253
		
williamr@2
   254
		/** Last or current page being transferred.*/
williamr@2
   255
		TInt iPage;
williamr@2
   256
		/** Last or current line on page.*/
williamr@2
   257
		TInt iLines;
williamr@2
   258
		/** Speed of fax session.*/
williamr@2
   259
		TInt iSpeed;
williamr@2
   260
		};
williamr@2
   261
williamr@2
   262
	IMPORT_C TInt GetProgress(TProgress& aProgress);
williamr@2
   263
private:
williamr@2
   264
	TProgress* iProgressPtr;
williamr@2
   265
	RChunk iChunk;
williamr@2
   266
protected:
williamr@2
   267
	IMPORT_C virtual void ConstructL();
williamr@2
   268
	IMPORT_C virtual void Destruct();
williamr@2
   269
	};
williamr@2
   270
williamr@2
   271
//
williamr@2
   272
//
williamr@2
   273
// RCall
williamr@2
   274
//
williamr@2
   275
//
williamr@2
   276
class RTelServer;
williamr@2
   277
class RPhone;
williamr@2
   278
class RLine;
williamr@2
   279
/**
williamr@2
   280
Call sub-session.
williamr@2
   281
williamr@2
   282
Provides access to the functionality associated with a specific call.
williamr@2
   283
williamr@2
   284
This class is not intended for user derivation. 
williamr@2
   285
williamr@2
   286
@publishedPartner
williamr@2
   287
@released
williamr@2
   288
*/
williamr@2
   289
class RCall : public RTelSubSessionBase
williamr@2
   290
	{
williamr@2
   291
public:
williamr@2
   292
	IMPORT_C RCall();
williamr@2
   293
	IMPORT_C TInt OpenNewCall(RTelServer& aServer,const TDesC& aName,TDes& aNewName);
williamr@2
   294
	IMPORT_C TInt OpenNewCall(RTelServer& aServer,const TDesC& aName);
williamr@2
   295
	IMPORT_C TInt OpenNewCall(RPhone& aPhone,const TDesC& aName,TDes& aNewName);
williamr@2
   296
	IMPORT_C TInt OpenNewCall(RPhone& aPhone,const TDesC& aName);
williamr@2
   297
	IMPORT_C TInt OpenNewCall(RLine& aLine,TDes& aNewName);
williamr@2
   298
	IMPORT_C TInt OpenNewCall(RLine& aLine);
williamr@2
   299
	IMPORT_C TInt OpenExistingCall(RTelServer& aServer,const TDesC& aName);
williamr@2
   300
	IMPORT_C TInt OpenExistingCall(RPhone& aPhone,const TDesC& aName);
williamr@2
   301
	IMPORT_C TInt OpenExistingCall(RLine& aLine,const TDesC& aName);
williamr@2
   302
	IMPORT_C void Close();
williamr@2
   303
williamr@2
   304
//
williamr@2
   305
// Call Status
williamr@2
   306
//
williamr@2
   307
/** Call status flags. */
williamr@2
   308
	enum TStatus
williamr@2
   309
		{
williamr@2
   310
	/** The call status is not known. */
williamr@2
   311
		EStatusUnknown,
williamr@2
   312
	/** The call is idle. */
williamr@2
   313
		EStatusIdle,
williamr@2
   314
	/** The call is dialling. */
williamr@2
   315
		EStatusDialling,
williamr@2
   316
	/** The call is ringing (an incoming, unanswered call). */
williamr@2
   317
		EStatusRinging,
williamr@2
   318
	/** The call is being answered. */
williamr@2
   319
		EStatusAnswering,
williamr@2
   320
	/** The call is connecting (immediate call establishment, without dialling). */
williamr@2
   321
		EStatusConnecting,
williamr@2
   322
	/** The call is connected and active. */
williamr@2
   323
		EStatusConnected,
williamr@2
   324
	/** The call is being terminated. */
williamr@2
   325
		EStatusHangingUp
williamr@2
   326
		};
williamr@2
   327
williamr@2
   328
	IMPORT_C TInt GetStatus(TStatus& aStatus) const;
williamr@2
   329
williamr@2
   330
//
williamr@2
   331
// Call Caps
williamr@2
   332
//
williamr@2
   333
/** Call capability flags. */
williamr@2
   334
	enum TCapsEnum
williamr@2
   335
		{
williamr@2
   336
	/** The call supports data calls. */
williamr@2
   337
		KCapsData=0x00000001,
williamr@2
   338
	/** The call supports fax calls. */
williamr@2
   339
		KCapsFax=0x00000002,
williamr@2
   340
	/** The call supports voice calls. */
williamr@2
   341
		KCapsVoice=0x00000004,
williamr@2
   342
	/** The Dial request is currently a valid action. */
williamr@2
   343
		KCapsDial=0x00000008,
williamr@2
   344
	/** The Connect request is currently a valid action. */
williamr@2
   345
		KCapsConnect=0x00000010,
williamr@2
   346
	/** The Hang Up request is currently a valid action. */
williamr@2
   347
		KCapsHangUp=0x00000020,
williamr@2
   348
	/** The Answer request is currently a valid action. */
williamr@2
   349
		KCapsAnswer=0x00000040,
williamr@2
   350
	/** The Loan Data Port request is currently a valid action. */
williamr@2
   351
		KCapsLoanDataPort=0x00000080,
williamr@2
   352
	/** The Recover Data Port request is currently a valid action. */
williamr@2
   353
		KCapsRecoverDataPort=0x00000100
williamr@2
   354
		};
williamr@2
   355
williamr@2
   356
	struct TCaps
williamr@2
   357
/** Call capability information. */
williamr@2
   358
		{
williamr@2
   359
	/** Call capability flag. Contains a bitmask of values defined in the TCapsEnum 
williamr@2
   360
	enumeration.*/
williamr@2
   361
		TUint iFlags;
williamr@2
   362
		};
williamr@2
   363
williamr@2
   364
	IMPORT_C TInt GetCaps(TCaps& aCaps) const;
williamr@2
   365
	IMPORT_C void NotifyCapsChange(TRequestStatus& aStatus, TCaps& aCaps);
williamr@2
   366
	IMPORT_C void NotifyCapsChangeCancel() const;
williamr@2
   367
williamr@2
   368
//
williamr@2
   369
// Bearer Service Information
williamr@2
   370
//
williamr@2
   371
/** Bearer capability flags. */
williamr@2
   372
	enum TBearerCaps
williamr@2
   373
		{
williamr@2
   374
	/** V42bis modem compression protocol. */
williamr@2
   375
		KBearerCapsCompressionV42bis=0x00000001,
williamr@2
   376
	/** MNP5 modem compression protocol. */
williamr@2
   377
		KBearerCapsCompressionMNP5=0x00000002,
williamr@2
   378
	/** No compression supported. */
williamr@2
   379
		KBearerCapsCompressionNone=0x00000004,
williamr@2
   380
	/** LAPM error correction protocol. */
williamr@2
   381
		KBearerCapsProtocolLAPM=0x00000008,
williamr@2
   382
	/** MNP10 mode. */
williamr@2
   383
		KBearerCapsProtocolALT_CELLULAR=0x00000010,
williamr@2
   384
	/** MNP error correction. */
williamr@2
   385
		KBearerCapsProtocolALT=0x00000020,
williamr@2
   386
	/** No protocol information provided. */
williamr@2
   387
		KBearerCapsProtocolNone=0x00000040,
williamr@2
   388
	/** Compression protocol unknown. */
williamr@2
   389
		KBearerCapsCompressionUnknown=0x00000080,
williamr@2
   390
	/** Unable to establish protocol. */
williamr@2
   391
		KBearerCapsProtocolUnknown=0x00000100
williamr@2
   392
		};
williamr@2
   393
williamr@2
   394
/** Bearer speed flags. */
williamr@2
   395
	enum TCallBearerSpeed
williamr@2
   396
		{
williamr@2
   397
	/** Transfer rate of 57600 bps. */
williamr@2
   398
		EBearerData57600,
williamr@2
   399
	/** Transfer rate of 33600 bps. */
williamr@2
   400
		EBearerData33600,
williamr@2
   401
	/** Transfer rate of 31200 bps. */
williamr@2
   402
		EBearerData31200,
williamr@2
   403
	/** Transfer rate of 9200 bps. */
williamr@2
   404
		EBearerData19200,
williamr@2
   405
	/** Transfer rate of 4400 bps. */
williamr@2
   406
		EBearerData14400,
williamr@2
   407
	/** Transfer rate of 12000 bps. */
williamr@2
   408
		EBearerData12000,
williamr@2
   409
	/** Transfer rate of 9600 bps. */
williamr@2
   410
		EBearerData9600,
williamr@2
   411
	/** Transfer rate of 7200 bps. */
williamr@2
   412
		EBearerData7200,
williamr@2
   413
	/** Transfer rate of 4800 bps. */
williamr@2
   414
		EBearerData4800,
williamr@2
   415
	/** Transfer rate of 2400 bps. */
williamr@2
   416
		EBearerData2400,
williamr@2
   417
	/** Transfer rate of 200 bps. */
williamr@2
   418
		EBearerData1200,
williamr@2
   419
	/** V.23 75 bps forward, 1200 bps back */
williamr@2
   420
		EBearerData75_1200,
williamr@2
   421
	/** V.23 1200 bps forward, 75 bps back */
williamr@2
   422
		EBearerData1200_75,
williamr@2
   423
	/** Transfer rate of 300 bps. */
williamr@2
   424
		EBearerData300,
williamr@2
   425
	/** Transfer rate is unknown. */
williamr@2
   426
		EBearerDataUnknown
williamr@2
   427
		};
williamr@2
   428
williamr@2
   429
	struct TBearerService
williamr@2
   430
/** Call bearer information.
williamr@2
   431
williamr@2
   432
@see TCallBearerSpeed */
williamr@2
   433
		{
williamr@2
   434
	/** The bearer capabilities. */
williamr@2
   435
		TUint32 iBearerCaps;
williamr@2
   436
	/** The bearer's speed.
williamr@2
   437
	
williamr@2
   438
	@see TCallBearerSpeed */
williamr@2
   439
		TCallBearerSpeed iBearerSpeed;
williamr@2
   440
		};
williamr@2
   441
williamr@2
   442
 	IMPORT_C TInt GetBearerServiceInfo(TBearerService& aBearerService) const;
williamr@2
   443
williamr@2
   444
//
williamr@2
   445
// Notifications
williamr@2
   446
//
williamr@2
   447
/** Hook status flags. */
williamr@2
   448
	enum THookStatus
williamr@2
   449
		{
williamr@2
   450
	/** The line is currently off hook. */
williamr@2
   451
		EHookStatusOff,
williamr@2
   452
	/** The line is currently on hook. */
williamr@2
   453
		EHookStatusOn,
williamr@2
   454
	/** The status of the line's hook is currently unknown */
williamr@2
   455
		EHookStatusUnknown
williamr@2
   456
		};
williamr@2
   457
williamr@2
   458
	class TCallInfo
williamr@2
   459
/** Line call capability information.
williamr@2
   460
williamr@2
   461
@see TName 
williamr@2
   462
@publishedAll
williamr@2
   463
@released
williamr@2
   464
*/
williamr@2
   465
		{
williamr@2
   466
	public:
williamr@2
   467
		IMPORT_C TCallInfo();
williamr@2
   468
	/** The name of a call.
williamr@2
   469
	
williamr@2
   470
	@see TName */
williamr@2
   471
		TName iCallName;
williamr@2
   472
		TName iLineName;
williamr@2
   473
		THookStatus iHookStatus;
williamr@2
   474
	/** The call status.
williamr@2
   475
	
williamr@2
   476
	@see RCall::TStatus */
williamr@2
   477
		TStatus iStatus;
williamr@2
   478
		TTimeIntervalSeconds iDuration;
williamr@2
   479
		};
williamr@2
   480
	
williamr@2
   481
	IMPORT_C TInt GetInfo(TCallInfo& aCallInfo) const;
williamr@2
   482
	IMPORT_C void NotifyHookChange(TRequestStatus& aStatus,THookStatus& aHookStatus);
williamr@2
   483
	IMPORT_C void NotifyHookChangeCancel() const;
williamr@2
   484
	IMPORT_C void NotifyStatusChange(TRequestStatus& aStatus,TStatus& aCallStatus);
williamr@2
   485
	IMPORT_C void NotifyStatusChangeCancel() const;
williamr@2
   486
	IMPORT_C void NotifyCallDurationChange(TRequestStatus& aStatus,TTimeIntervalSeconds& aTime);
williamr@2
   487
	IMPORT_C void NotifyCallDurationChangeCancel() const;
williamr@2
   488
williamr@2
   489
//
williamr@2
   490
// Duration of call
williamr@2
   491
//
williamr@2
   492
	IMPORT_C TInt GetCallDuration(TTimeIntervalSeconds& aTime) const;
williamr@2
   493
//
williamr@2
   494
// Connecting and Disconnecting
williamr@2
   495
//
williamr@2
   496
/** Passes telephone numbers into Dial functions. */
williamr@2
   497
	typedef TDesC TTelNumberC;
williamr@2
   498
	IMPORT_C TInt Dial(const TTelNumberC& aTelNumber) const;
williamr@2
   499
	IMPORT_C TInt Dial(const TDesC8& aCallParams,const TTelNumberC& aTelNumber) const;
williamr@2
   500
	IMPORT_C void Dial(TRequestStatus& aStatus,const TTelNumberC& aTelNumber);
williamr@2
   501
	IMPORT_C void Dial(TRequestStatus& aStatus,const TDesC8& aCallParams,const TTelNumberC& aTelNumber);
williamr@2
   502
	IMPORT_C void DialCancel() const;
williamr@2
   503
	IMPORT_C TInt Connect() const;
williamr@2
   504
	IMPORT_C TInt Connect(const TDesC8& aCallParams) const;
williamr@2
   505
	IMPORT_C void Connect(TRequestStatus& aStatus);
williamr@2
   506
	IMPORT_C void Connect(TRequestStatus& aStatus,const TDesC8& aCallParams);
williamr@2
   507
	IMPORT_C void ConnectCancel() const;
williamr@2
   508
	IMPORT_C TInt AnswerIncomingCall() const;
williamr@2
   509
	IMPORT_C TInt AnswerIncomingCall(const TDesC8& aCallParams) const;
williamr@2
   510
	IMPORT_C void AnswerIncomingCall(TRequestStatus& aStatus);
williamr@2
   511
	IMPORT_C void AnswerIncomingCall(TRequestStatus& aStatus,const TDesC8& aCallParams);
williamr@2
   512
	IMPORT_C void AnswerIncomingCallCancel() const;
williamr@2
   513
	IMPORT_C TInt HangUp() const;
williamr@2
   514
	IMPORT_C void HangUp(TRequestStatus& aStatus) const;
williamr@2
   515
	IMPORT_C void HangUpCancel() const;
williamr@2
   516
williamr@2
   517
//
williamr@2
   518
// Call Data Access
williamr@2
   519
//
williamr@2
   520
	struct  TCommPort
williamr@2
   521
/** Communications port information.
williamr@2
   522
williamr@2
   523
@see TFileName */
williamr@2
   524
		{
williamr@2
   525
	/** The CSY module used by the C32 Communications Server to talk to the serial 
williamr@2
   526
	device.
williamr@2
   527
	@deprecated This has been deprecated as all the information that is needed by the 
williamr@2
   528
	lower layers is now being passed in iPort. 
williamr@2
   529
	
williamr@2
   530
	@see TFileName */
williamr@2
   531
		TFileName iCsy;
williamr@2
   532
	/** The port used by the C32 Communications Server to talk to the serial device.
williamr@2
   533
	It holds both the Csy name and the Port name.
williamr@2
   534
	
williamr@2
   535
	@see TName */
williamr@2
   536
		TName iPort;
williamr@2
   537
		};
williamr@2
   538
williamr@2
   539
	IMPORT_C TInt LoanDataPort(TCommPort& aDataPort) const;
williamr@2
   540
	IMPORT_C void LoanDataPort(TRequestStatus& aStatus,TCommPort& aDataPort);
williamr@2
   541
	IMPORT_C void LoanDataPortCancel() const;
williamr@2
   542
	IMPORT_C TInt RecoverDataPort() const;
williamr@2
   543
williamr@2
   544
//
williamr@2
   545
// Call Ownership manipulation
williamr@2
   546
//
williamr@2
   547
/** Call ownership status flags. */
williamr@2
   548
	enum TOwnershipStatus
williamr@2
   549
		{
williamr@2
   550
	/** The call is not owned. */
williamr@2
   551
		EOwnershipUnowned,
williamr@2
   552
	/** The call is owned, but not by this RCall instance. */
williamr@2
   553
		EOwnershipOwnedByAnotherClient,		// not the priority client
williamr@2
   554
	/** The call is owned by this RCall instance. */
williamr@2
   555
		EOwnershipOwnedByThisClient,
williamr@2
   556
	/** The call is owned, but not by the priority client */
williamr@2
   557
		EOwnershipThisIsPriorityClient		// not owned by this (the priority) client
williamr@2
   558
		};
williamr@2
   559
williamr@2
   560
	IMPORT_C TInt TransferOwnership() const;
williamr@2
   561
	IMPORT_C void AcquireOwnership(TRequestStatus& aStatus) const;
williamr@2
   562
	IMPORT_C void AcquireOwnershipCancel() const;
williamr@2
   563
	IMPORT_C TInt GetOwnershipStatus(TOwnershipStatus& aOwnershipStatus) const;
williamr@2
   564
	//
williamr@2
   565
//
williamr@2
   566
// Get and Set Call Parameters
williamr@2
   567
//
williamr@2
   568
/** Monitor speaker control setting flags. */
williamr@2
   569
	enum TMonitorSpeakerControl
williamr@2
   570
		{
williamr@2
   571
	/** Speaker control is always off */
williamr@2
   572
		EMonitorSpeakerControlAlwaysOff,
williamr@2
   573
	/** Speaker control is on until the carrier is detected */
williamr@2
   574
		EMonitorSpeakerControlOnUntilCarrier,
williamr@2
   575
	/** Speaker control is always active. */
williamr@2
   576
		EMonitorSpeakerControlAlwaysOn,
williamr@2
   577
	/** Speaker control is on, except while dialling */
williamr@2
   578
		EMonitorSpeakerControlOnExceptDuringDialling,
williamr@2
   579
	/** Speaker control is unknown. */
williamr@2
   580
		EMonitorSpeakerControlUnknown
williamr@2
   581
		};
williamr@2
   582
williamr@2
   583
/** Monitor speaker volume control setting flags. */
williamr@2
   584
	enum TMonitorSpeakerVolume
williamr@2
   585
		{
williamr@2
   586
	/** Speaker volume is off. */
williamr@2
   587
		EMonitorSpeakerVolumeOff,
williamr@2
   588
	/** Speaker volume is low. */
williamr@2
   589
		EMonitorSpeakerVolumeLow,
williamr@2
   590
	/** Speaker volume is medium. */
williamr@2
   591
		EMonitorSpeakerVolumeMedium,
williamr@2
   592
	/** Speaker volume is high. */
williamr@2
   593
		EMonitorSpeakerVolumeHigh,
williamr@2
   594
	/** Speaker volume is unknown. */
williamr@2
   595
		EMonitorSpeakerVolumeUnknown
williamr@2
   596
		};
williamr@2
   597
williamr@2
   598
/** Wait for dial tone flags. */
williamr@2
   599
	enum TWaitForDialTone
williamr@2
   600
		{
williamr@2
   601
	/** Waiting for dial tone. */
williamr@2
   602
		EDialToneWait,
williamr@2
   603
	/** Not waiting for dial tone. */
williamr@2
   604
		EDialToneNoWait
williamr@2
   605
		};
williamr@2
   606
williamr@2
   607
	class TCallParams
williamr@2
   608
	/**
williamr@2
   609
	@publishedAll
williamr@2
   610
	@released
williamr@2
   611
	*/
williamr@2
   612
		{
williamr@2
   613
	public:
williamr@2
   614
		IMPORT_C TCallParams();
williamr@2
   615
		IMPORT_C TCallParams(TMonitorSpeakerControl aSpeakerControl,
williamr@2
   616
							 TMonitorSpeakerVolume aSpeakerVolume,
williamr@2
   617
							 TUint aInterval,
williamr@2
   618
							 TWaitForDialTone aWaitForDialTone);
williamr@2
   619
		IMPORT_C TInt ExtensionId();
williamr@2
   620
		IMPORT_C TBool IsDefault();
williamr@2
   621
		TMonitorSpeakerControl iSpeakerControl;
williamr@2
   622
		TMonitorSpeakerVolume iSpeakerVolume;
williamr@2
   623
		TUint iInterval;
williamr@2
   624
		TWaitForDialTone iWaitForDialTone;
williamr@2
   625
	protected:
williamr@2
   626
		TBool iIsDefault;
williamr@2
   627
		TInt iExtensionId;
williamr@2
   628
		};
williamr@2
   629
williamr@2
   630
/** Call parameters package
williamr@2
   631
williamr@2
   632
The call parameters to be associated with a call may be passed into functions 
williamr@2
   633
using this type.
williamr@2
   634
williamr@2
   635
@see TCallParams */
williamr@2
   636
	typedef TPckg<TCallParams> TCallParamsPckg;
williamr@2
   637
williamr@2
   638
	IMPORT_C TInt GetCallParams(TDes8& aParams) const;
williamr@2
   639
williamr@2
   640
//
williamr@2
   641
// Fax Settings
williamr@2
   642
//
williamr@2
   643
/** Fax mode flags. */
williamr@2
   644
	enum TFaxMode
williamr@2
   645
		{
williamr@2
   646
	/** Fax is transmitting */
williamr@2
   647
		ETransmit,
williamr@2
   648
	/** Fax is receiving. */
williamr@2
   649
		EReceive
williamr@2
   650
		};
williamr@2
   651
williamr@2
   652
/** Fax retrieval type flags. */
williamr@2
   653
	enum TFaxRetrieveType
williamr@2
   654
		{
williamr@2
   655
	/** Retrieving a fax opened from voice call (not currently supported by GSM networks). */
williamr@2
   656
		EFaxOnDemand,
williamr@2
   657
	/** Retrieve a fax opened from fax call. */
williamr@2
   658
		EFaxPoll
williamr@2
   659
		};
williamr@2
   660
williamr@2
   661
/** Fax identifier size flags. */
williamr@2
   662
	enum TConstants
williamr@2
   663
		{
williamr@2
   664
	/** 20 */
williamr@2
   665
		KFaxIdUserNameMaxSize=20
williamr@2
   666
		};
williamr@2
   667
williamr@2
   668
	struct TFaxSessionSettings
williamr@2
   669
/** Fax session settings information.
williamr@2
   670
williamr@2
   671
@see TFaxMode */
williamr@2
   672
		{
williamr@2
   673
	/** The fax mode.
williamr@2
   674
	
williamr@2
   675
	@see TFaxMode */
williamr@2
   676
		TFaxMode iMode;
williamr@2
   677
	/** The mode of retrieving faxes.
williamr@2
   678
	
williamr@2
   679
	@see TFaxRetrieveType */
williamr@2
   680
		TFaxRetrieveType iFaxRetrieveType;
williamr@2
   681
	/** The class of fax 
williamr@2
   682
	
williamr@2
   683
	@see TFaxClass */
williamr@2
   684
		TFaxClass iFaxClass;
williamr@2
   685
	/** The fax identifier string displayed at the top of the fax.
williamr@2
   686
	
williamr@2
   687
	@see KFaxIdUserNameMaxSize */
williamr@2
   688
		TBuf<KFaxIdUserNameMaxSize> iFaxId;
williamr@2
   689
	/** The maximum transfer speed that can be negotiated. */
williamr@2
   690
		TInt iMaxSpeed;
williamr@2
   691
	/** The minimum transfer speed that should be negotiated. */
williamr@2
   692
		TInt iMinSpeed;
williamr@2
   693
	/** The preferred compression mode used for negotiation. This may take one of the 
williamr@2
   694
	following values: EModifiedHuffman, EModifiedRead, EUncompressedModifiedRead, 
williamr@2
   695
	EModifiedModifiedRead. */
williamr@2
   696
		TInt iPreferredECM;
williamr@2
   697
	/** The delay used for Fax on Demand services. Measured in seconds. */
williamr@2
   698
		TInt iFaxOnDemandDelay;
williamr@2
   699
		// Tx Settings
williamr@2
   700
	/** The preferred transmit resolution. This may take one of the following values: 
williamr@2
   701
	EFaxNormal EFaxFine
williamr@2
   702
	
williamr@2
   703
	@see TFaxResolution */
williamr@2
   704
		TFaxResolution iTxResolution;
williamr@2
   705
	/** Compression mode for transmitting faxes.
williamr@2
   706
	
williamr@2
   707
	@see TFaxCompression */
williamr@2
   708
		TFaxCompression iTxCompression;
williamr@2
   709
	/** The number of pages to be transmitted. */
williamr@2
   710
		TInt iTxPages;
williamr@2
   711
		// Rx Settings
williamr@2
   712
	/** The preferred receive resolution. This may take one of the following values: 
williamr@2
   713
	EFaxNormal EFaxFine.
williamr@2
   714
	
williamr@2
   715
	@see TFaxResolution */
williamr@2
   716
		TFaxResolution iRxResolution;
williamr@2
   717
	/** Compression mode for receiving faxes.
williamr@2
   718
	
williamr@2
   719
	@see TFaxCompression */
williamr@2
   720
		TFaxCompression iRxCompression;
williamr@2
   721
		};
williamr@2
   722
williamr@2
   723
	IMPORT_C TInt GetFaxSettings(TFaxSessionSettings& aSettings) const;
williamr@2
   724
	IMPORT_C TInt SetFaxSettings(const TFaxSessionSettings& aSettings) const;
williamr@2
   725
	IMPORT_C TInt AdoptFaxSharedHeaderFile(const RFile& aSharedFile) const;
williamr@2
   726
//
williamr@2
   727
// Retrieval of call objects' reference count
williamr@2
   728
//
williamr@2
   729
 	IMPORT_C TInt ReferenceCount() const;
williamr@2
   730
williamr@2
   731
protected:
williamr@2
   732
	IMPORT_C virtual void ConstructL();
williamr@2
   733
	IMPORT_C virtual void Destruct();
williamr@2
   734
	};
williamr@2
   735
williamr@2
   736
//
williamr@2
   737
//
williamr@2
   738
// RLine
williamr@2
   739
//
williamr@2
   740
//
williamr@2
   741
class RPhone;
williamr@2
   742
/**
williamr@2
   743
Provides access to the functionality associated with a specific line.
williamr@2
   744
williamr@2
   745
This class is not intended for user derivation. 
williamr@2
   746
williamr@2
   747
@publishedPartner
williamr@2
   748
@released
williamr@2
   749
*/
williamr@2
   750
class RLine : public RTelSubSessionBase
williamr@2
   751
	{
williamr@2
   752
public:
williamr@2
   753
	IMPORT_C RLine();
williamr@2
   754
	IMPORT_C TInt Open(RPhone& aPhone,const TDesC& aName);
williamr@2
   755
	IMPORT_C TInt Open(RTelServer& aServer,const TDesC& aName);
williamr@2
   756
	IMPORT_C void Close();
williamr@2
   757
williamr@2
   758
//
williamr@2
   759
// Caps
williamr@2
   760
//
williamr@2
   761
/** Line capability flags. */
williamr@2
   762
	enum TCapsFlags
williamr@2
   763
		{
williamr@2
   764
	/** The line supports data connections.*/
williamr@2
   765
		KCapsData=0x00000001,
williamr@2
   766
	/** The line supports fax connections. */
williamr@2
   767
		KCapsFax=0x00000002,
williamr@2
   768
	/** The line supports voice connections.*/
williamr@2
   769
		KCapsVoice=0x00000004,
williamr@2
   770
	/** The line supports incoming call notification requests. */
williamr@2
   771
		KCapsEventIncomingCall=0x00010000,
williamr@2
   772
		};
williamr@2
   773
williamr@2
   774
	struct TCaps
williamr@2
   775
/** Line capability information. */
williamr@2
   776
		{
williamr@2
   777
	/** Line capability flag. Contains a bitmask of the values defined in the TCapsFlags 
williamr@2
   778
	enumeration.*/
williamr@2
   779
		TUint iFlags;
williamr@2
   780
		};
williamr@2
   781
williamr@2
   782
	IMPORT_C TInt GetCaps(TCaps& aCaps) const;
williamr@2
   783
	IMPORT_C void NotifyCapsChange(TRequestStatus& aStatus, TCaps& aCaps);
williamr@2
   784
	IMPORT_C void NotifyCapsChangeCancel() const;
williamr@2
   785
williamr@2
   786
//
williamr@2
   787
// Line and Hook Status
williamr@2
   788
//
williamr@2
   789
	IMPORT_C TInt GetStatus(RCall::TStatus& aStatus) const;
williamr@2
   790
	IMPORT_C TInt GetHookStatus(RCall::THookStatus& aHookStatus) const;
williamr@2
   791
williamr@2
   792
//
williamr@2
   793
// Call enumeration and Information
williamr@2
   794
//
williamr@2
   795
	struct TCallInfo
williamr@2
   796
/** Line call capability information.
williamr@2
   797
williamr@2
   798
@see TName */
williamr@2
   799
		{
williamr@2
   800
	/** The name of a call.
williamr@2
   801
	
williamr@2
   802
	@see TName */
williamr@2
   803
		TName iCallName;
williamr@2
   804
	/** The call status.
williamr@2
   805
	
williamr@2
   806
	@see RCall::TStatus */
williamr@2
   807
		RCall::TStatus iStatus;
williamr@2
   808
	/** The call capabilities flag. 
williamr@2
   809
	
williamr@2
   810
	@see RCall::TCapsEnum*/
williamr@2
   811
		TUint32 iCallCapsFlags;
williamr@2
   812
		};
williamr@2
   813
williamr@2
   814
	IMPORT_C TInt EnumerateCall(TInt& aCount) const;
williamr@2
   815
	IMPORT_C TInt GetCallInfo(TInt aIndex,TCallInfo& aCallInfo) const;
williamr@2
   816
//
williamr@2
   817
//	General line notification information
williamr@2
   818
//
williamr@2
   819
	class TLineInfo
williamr@2
   820
/** Line information.
williamr@2
   821
williamr@2
   822
@see RCall::TStatus 
williamr@2
   823
@publishedAll
williamr@2
   824
@released
williamr@2
   825
*/
williamr@2
   826
		{
williamr@2
   827
	public:
williamr@2
   828
		IMPORT_C TLineInfo();
williamr@2
   829
		RCall::THookStatus iHookStatus;
williamr@2
   830
	/** The current line status.
williamr@2
   831
	
williamr@2
   832
	@see RCall::TStatus */
williamr@2
   833
		RCall::TStatus iStatus;
williamr@2
   834
		TName iNameOfLastCallAdded;
williamr@2
   835
		TName iNameOfCallForAnswering;	// if an incoming call occurs, this contains the name
williamr@2
   836
										// of the call to answer it on.
williamr@2
   837
		};
williamr@2
   838
	
williamr@2
   839
//
williamr@2
   840
// Notifications
williamr@2
   841
//
williamr@2
   842
	IMPORT_C TInt GetInfo(TLineInfo& aLineInfo) const;
williamr@2
   843
	IMPORT_C void NotifyIncomingCall(TRequestStatus& aStatus, TName& aName);
williamr@2
   844
	IMPORT_C void NotifyIncomingCallCancel() const;
williamr@2
   845
	IMPORT_C void NotifyHookChange(TRequestStatus& aStatus,RCall::THookStatus& aHookStatus);
williamr@2
   846
	IMPORT_C void NotifyHookChangeCancel() const;
williamr@2
   847
	IMPORT_C void NotifyStatusChange(TRequestStatus& aStatus,RCall::TStatus& aLineStatus);
williamr@2
   848
	IMPORT_C void NotifyStatusChangeCancel() const;
williamr@2
   849
	IMPORT_C void NotifyCallAdded(TRequestStatus& aStatus,TName& aName);
williamr@2
   850
	IMPORT_C void NotifyCallAddedCancel() const;
williamr@2
   851
protected:
williamr@2
   852
	IMPORT_C virtual void ConstructL();
williamr@2
   853
	IMPORT_C virtual void Destruct();
williamr@2
   854
	};
williamr@2
   855
williamr@2
   856
//
williamr@2
   857
//
williamr@2
   858
// RPhone
williamr@2
   859
//
williamr@2
   860
//
williamr@2
   861
class RTelServer;
williamr@2
   862
/**
williamr@2
   863
Phone sub-session.
williamr@2
   864
williamr@2
   865
Provides access to the functionality associated with a specific phone.
williamr@2
   866
williamr@2
   867
This class is not intended for user derivation.
williamr@2
   868
williamr@2
   869
@publishedPartner
williamr@2
   870
@released
williamr@2
   871
*/
williamr@2
   872
class RPhone : public RTelSubSessionBase
williamr@2
   873
	{
williamr@2
   874
public:
williamr@2
   875
	IMPORT_C RPhone();
williamr@2
   876
	IMPORT_C TInt Open(RTelServer& aSession,const TDesC& aName);
williamr@2
   877
	IMPORT_C void Close();
williamr@2
   878
williamr@2
   879
//
williamr@2
   880
// Initialisation
williamr@2
   881
//
williamr@2
   882
	IMPORT_C TInt Initialise();
williamr@2
   883
	IMPORT_C void Initialise(TRequestStatus& aStatus);
williamr@2
   884
	IMPORT_C void InitialiseCancel();
williamr@2
   885
williamr@2
   886
//
williamr@2
   887
// Caps
williamr@2
   888
//
williamr@2
   889
/** Phone capability flags. */
williamr@2
   890
	enum TCapsFlags
williamr@2
   891
		{
williamr@2
   892
	/** The capabilities of the phone are not known. */
williamr@2
   893
		KCapsUnknown=0x00000001,
williamr@2
   894
	/** The phone supports data calls. */
williamr@2
   895
		KCapsData=0x00000002,
williamr@2
   896
	/** The phone supports the fax class 1 interface. */
williamr@2
   897
		KCapsFaxClassOne=0x0000004,
williamr@2
   898
	/** The phone supports the fax class 1.0 interface. */
williamr@2
   899
		KCapsFaxClassOnePointZero=0x0000008,
williamr@2
   900
	/** The phone supports the fax class 2 interface. */
williamr@2
   901
		KCapsFaxClassTwo=0x00000010,
williamr@2
   902
	/** The phone supports the fax class 2.0 interface. */
williamr@2
   903
		KCapsFaxClassTwoPointZero=0x00000020,
williamr@2
   904
	/** The phone supports the fax class 2.1 interface. */
williamr@2
   905
		KCapsFaxClassTwoPointOne=0x00000040,
williamr@2
   906
	/** The phone supports voice calls. */
williamr@2
   907
		KCapsVoice=0x00000080,
williamr@2
   908
	/** The phone supports modem detection events, i.e. it can notify clients when 
williamr@2
   909
	the modem can be or can no longer be detected. */
williamr@2
   910
		KCapsEventModemDetection=0x00010000,
williamr@2
   911
	/** The phone supports the ability to take the communications port from whatever 
williamr@2
   912
	component is currently using it. */
williamr@2
   913
		KCapsStealCommPort=0x00020000
williamr@2
   914
		};
williamr@2
   915
williamr@2
   916
	struct TCaps
williamr@2
   917
/** Phone capability information. */
williamr@2
   918
		{
williamr@2
   919
	/** Phone capability flag. Contains bitmask of values defined in the TCapsFlags 
williamr@2
   920
	enumeration. */
williamr@2
   921
		TUint iFlags;
williamr@2
   922
		};
williamr@2
   923
williamr@2
   924
	IMPORT_C TInt GetCaps(TCaps& aCaps) const;
williamr@2
   925
	IMPORT_C void NotifyCapsChange(TRequestStatus& aStatus, TCaps& aCaps);
williamr@2
   926
	IMPORT_C void NotifyCapsChangeCancel() const;
williamr@2
   927
williamr@2
   928
//
williamr@2
   929
// Status
williamr@2
   930
//
williamr@2
   931
/** Phone mode status flags. */
williamr@2
   932
	enum TMode
williamr@2
   933
		{
williamr@2
   934
	/** Phone (modem) status unknown. */
williamr@2
   935
		EModeUnknown,
williamr@2
   936
	/** Phone is idle. */
williamr@2
   937
		EModeIdle,
williamr@2
   938
	/** Phone is establishing link. */
williamr@2
   939
		EModeEstablishingLink,
williamr@2
   940
	/** Modem is in data mode. */
williamr@2
   941
		EModeOnlineData,
williamr@2
   942
	/** Modem is in command mode and the line is active. */
williamr@2
   943
		EModeOnlineCommand
williamr@2
   944
		};
williamr@2
   945
williamr@2
   946
/** Modem connection status flags. */
williamr@2
   947
	enum TModemDetection
williamr@2
   948
		{
williamr@2
   949
	/** Modem present. */
williamr@2
   950
		EDetectedPresent,
williamr@2
   951
	/** Modem is not present. */
williamr@2
   952
		EDetectedNotPresent,
williamr@2
   953
	/** Modem connection status is unknown. */
williamr@2
   954
		EDetectedUnknown
williamr@2
   955
		};
williamr@2
   956
williamr@2
   957
	struct TStatus
williamr@2
   958
/** Current phone status.
williamr@2
   959
williamr@2
   960
@see TModemDetection */
williamr@2
   961
		{
williamr@2
   962
	/** The current modem connection status. 
williamr@2
   963
	
williamr@2
   964
	@see TModemDetection */
williamr@2
   965
		TModemDetection iModemDetected;
williamr@2
   966
	/** The current mode of the phone.
williamr@2
   967
	
williamr@2
   968
	@see TMode */
williamr@2
   969
		TMode iMode;
williamr@2
   970
		};
williamr@2
   971
williamr@2
   972
	IMPORT_C TInt GetStatus(TStatus& aStatus) const;
williamr@2
   973
williamr@2
   974
//
williamr@2
   975
// Line Enumeration and Information
williamr@2
   976
//
williamr@2
   977
	struct TLineInfo
williamr@2
   978
/** Line information.
williamr@2
   979
williamr@2
   980
@see RCall::TStatus */
williamr@2
   981
		{
williamr@2
   982
	/** The current line status.
williamr@2
   983
	
williamr@2
   984
	@see RCall::TStatus */
williamr@2
   985
		RCall::TStatus iStatus;
williamr@2
   986
	/** The line capabilities flag. 
williamr@2
   987
	
williamr@2
   988
	@see RLine::TCapsFlags */
williamr@2
   989
		TUint32 iLineCapsFlags;
williamr@2
   990
	/** The name of the line.
williamr@2
   991
	
williamr@2
   992
	@see TName */
williamr@2
   993
		TName iName;
williamr@2
   994
		};
williamr@2
   995
williamr@2
   996
	IMPORT_C TInt EnumerateLines(TInt& aCount) const;
williamr@2
   997
	IMPORT_C TInt GetLineInfo(const TInt aIndex,TLineInfo& aLineInfo) const;
williamr@2
   998
williamr@2
   999
//
williamr@2
  1000
//	General phone notification information
williamr@2
  1001
//
williamr@2
  1002
	class TPhoneInfo
williamr@2
  1003
/** Phone notification information.
williamr@2
  1004
williamr@2
  1005
Collects all the information associated with an instance of the core API phone 
williamr@2
  1006
class is collected together into a single, directly accessible, structure. 
williamr@2
  1007
This increases the efficiency of applications that require access to the majority 
williamr@2
  1008
of the phone's data.
williamr@2
  1009
williamr@2
  1010
This class is not intended for user derivation.
williamr@2
  1011
williamr@2
  1012
@see TNetworkType 
williamr@2
  1013
@publishedAll
williamr@2
  1014
@released
williamr@2
  1015
*/
williamr@2
  1016
		{
williamr@2
  1017
	public:
williamr@2
  1018
		IMPORT_C TPhoneInfo();
williamr@2
  1019
	/** The current modem detection state (is it present or not).
williamr@2
  1020
	
williamr@2
  1021
	@see TModemDetection */
williamr@2
  1022
		TModemDetection iDetection;
williamr@2
  1023
		};
williamr@2
  1024
williamr@2
  1025
	IMPORT_C TInt GetInfo(TPhoneInfo& aPhoneInfo) const;
williamr@2
  1026
williamr@2
  1027
//
williamr@2
  1028
// Notifications
williamr@2
  1029
//
williamr@2
  1030
	IMPORT_C void NotifyModemDetected(TRequestStatus& aStatus,TModemDetection& aDetection);
williamr@2
  1031
	IMPORT_C void NotifyModemDetectedCancel() const;
williamr@2
  1032
williamr@2
  1033
//	
williamr@2
  1034
// TEmergencyRequest is a bit-mask where each bit-flag represents 
williamr@2
  1035
// the emergency request type that the client wishes to handle
williamr@2
  1036
//
williamr@2
  1037
	enum TEmergencyRequest
williamr@2
  1038
		{
williamr@2
  1039
	/** Location Based Services Emergency Request */ 
williamr@2
  1040
		EEmergencyLCSRequest = 0x00000001,
williamr@2
  1041
	/** Circuit Switch Voice Call Emergency Request */
williamr@2
  1042
		EEmergencyCSVoiceCallRequest = 0x00000002,
williamr@2
  1043
		};
williamr@2
  1044
	
williamr@2
  1045
	IMPORT_C TInt SetEmergencyClient(const TUint32 aEmergencyRequest) const;
williamr@2
  1046
williamr@2
  1047
protected:
williamr@2
  1048
	IMPORT_C virtual void ConstructL();
williamr@2
  1049
	IMPORT_C virtual void Destruct();
williamr@2
  1050
	};
williamr@2
  1051
williamr@2
  1052
//
williamr@2
  1053
//
williamr@2
  1054
// RTelServer
williamr@2
  1055
//
williamr@2
  1056
//
williamr@2
  1057
/**
williamr@2
  1058
Root telephony server session.
williamr@2
  1059
williamr@2
  1060
Provides access to general telephony information and functionality. Clients 
williamr@2
  1061
wishing to use the ETel Server must open a connection with the root server 
williamr@2
  1062
using the functions defined in this class. They may then obtain information 
williamr@2
  1063
about loaded TSY modules, and the phones that they support. To access functionality 
williamr@2
  1064
associated with a specific phone, the client must open a sub-session for that 
williamr@2
  1065
phone.
williamr@2
  1066
williamr@2
  1067
This class is not intended for user derivation.
williamr@2
  1068
williamr@2
  1069
@publishedPartner
williamr@2
  1070
@released 
williamr@2
  1071
*/
williamr@2
  1072
class RTelServer : public RSessionBase
williamr@2
  1073
	{
williamr@2
  1074
public:
williamr@2
  1075
	enum { KDefaultMessageSlots=32 };
williamr@2
  1076
williamr@2
  1077
	IMPORT_C RTelServer();
williamr@2
  1078
	IMPORT_C TInt Connect(TInt aMessageSlots =KDefaultMessageSlots);
williamr@2
  1079
	inline TVersion Version() const;
williamr@2
  1080
williamr@2
  1081
//
williamr@2
  1082
// Enumeration and Information
williamr@2
  1083
//
williamr@2
  1084
/** Types of telephony connection flags. */
williamr@2
  1085
	enum TNetworkType
williamr@2
  1086
		{
williamr@2
  1087
	/** Wired analog network. */
williamr@2
  1088
		ENetworkTypeWiredAnalog,
williamr@2
  1089
	/** Wired digital network (not supported by ETel). */
williamr@2
  1090
		ENetworkTypeWiredDigital,
williamr@2
  1091
	/** Mobile analog network (not supported by ETel). */
williamr@2
  1092
		ENetworkTypeMobileAnalog,
williamr@2
  1093
	/** Mobile digital network. */
williamr@2
  1094
		ENetworkTypeMobileDigital,
williamr@2
  1095
	/** Unknown network type. */
williamr@2
  1096
		ENetworkTypeUnknown
williamr@2
  1097
		};
williamr@2
  1098
williamr@2
  1099
	struct  TPhoneInfo
williamr@2
  1100
/** Phone notification information.
williamr@2
  1101
williamr@2
  1102
Collects all the information associated with an instance of the core API phone 
williamr@2
  1103
class is collected together into a single, directly accessible, structure. 
williamr@2
  1104
This increases the efficiency of applications that require access to the majority 
williamr@2
  1105
of the phone's data.
williamr@2
  1106
williamr@2
  1107
This class is not intended for user derivation. 
williamr@2
  1108
williamr@2
  1109
@see TNetworkType */
williamr@2
  1110
		{
williamr@2
  1111
	/** The type of telephony connection supported by the phone.
williamr@2
  1112
	
williamr@2
  1113
	@see TNetworkType */
williamr@2
  1114
		TNetworkType iNetworkType;
williamr@2
  1115
	/** The name of the phone.
williamr@2
  1116
	
williamr@2
  1117
	@see TName */
williamr@2
  1118
		TName iName;
williamr@2
  1119
	/** The number of lines supported by the phone. */
williamr@2
  1120
		TUint iNumberOfLines;
williamr@2
  1121
	/** The extensions that the TSY module supports. */
williamr@2
  1122
		TUint iExtensions;
williamr@2
  1123
		};
williamr@2
  1124
williamr@2
  1125
	IMPORT_C TInt EnumeratePhones(TInt& aNoOfPhones) const;
williamr@2
  1126
	IMPORT_C TInt GetPhoneInfo(const TInt aIndex,TPhoneInfo& aInfo) const;
williamr@2
  1127
	IMPORT_C TInt GetTsyName(const TInt aIndexOfPhone, TDes& aTsyName) const;
williamr@2
  1128
williamr@2
  1129
//
williamr@2
  1130
// Load and Unload Phone modules
williamr@2
  1131
//
williamr@2
  1132
williamr@2
  1133
	IMPORT_C TInt LoadPhoneModule(const TDesC& aFileName) const;
williamr@2
  1134
	IMPORT_C TInt UnloadPhoneModule(const TDesC& aFileName) const;
williamr@2
  1135
williamr@2
  1136
//
williamr@2
  1137
// Check whether specified Phone module (TSY) supports certain functionality
williamr@2
  1138
//
williamr@2
  1139
		
williamr@2
  1140
	IMPORT_C TInt IsSupportedByModule(const TDesC& aTsyName, const TInt aMixin, TBool& aResult) const;
williamr@2
  1141
	IMPORT_C TInt GetTsyVersionNumber(const TDesC& aTsyName,TVersion& aVersion) const;
williamr@2
  1142
//
williamr@2
  1143
// Set this session as Priority client
williamr@2
  1144
//
williamr@2
  1145
	/** @deprecated This function has been deprecated. Use RTelServer::SetPriorityClientV2 followed by 
williamr@2
  1146
	RPhone::SetEmergencyClient(EEmergencyCSVoiceCallRequest) */
williamr@2
  1147
	IMPORT_C TInt SetPriorityClient() const;
williamr@2
  1148
williamr@2
  1149
//
williamr@2
  1150
// Set this session to receive detailed errors
williamr@2
  1151
//
williamr@2
  1152
williamr@2
  1153
/** Error granularity flags. */
williamr@2
  1154
	enum TErrorGranularity
williamr@2
  1155
		{
williamr@2
  1156
	/** Client is only interested in core errors */
williamr@2
  1157
		EErrorBasic,
williamr@2
  1158
	/** Client is interested in extended errors */
williamr@2
  1159
		EErrorExtended
williamr@2
  1160
		};
williamr@2
  1161
williamr@2
  1162
	IMPORT_C TInt SetExtendedErrorGranularity(const TErrorGranularity aGranularity) const;
williamr@2
  1163
williamr@2
  1164
//
williamr@2
  1165
// Debug calls - stubbed in release builds
williamr@2
  1166
//
williamr@2
  1167
	IMPORT_C TInt __DbgMarkHeap();
williamr@2
  1168
	IMPORT_C TInt __DbgCheckHeap(TInt aCount);
williamr@2
  1169
	IMPORT_C TInt __DbgMarkEnd(TInt aCount);
williamr@2
  1170
	IMPORT_C TInt __DbgFailNext(TInt aCount);
williamr@2
  1171
	IMPORT_C TInt __DbgFailNextAvailable(TBool& aResult);
williamr@2
  1172
	
williamr@2
  1173
//
williamr@2
  1174
// Set this session as Priority client
williamr@2
  1175
//
williamr@2
  1176
	IMPORT_C TInt SetPriorityClientV2() const;
williamr@2
  1177
	
williamr@2
  1178
	};
williamr@2
  1179
williamr@2
  1180
williamr@2
  1181
#include <etel.inl>
williamr@2
  1182
#endif