williamr@2: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // 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: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @file williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: williamr@2: #if !defined(__ETEL_H__) williamr@2: /** @internalComponent */ williamr@2: #define __ETEL_H__ williamr@2: williamr@2: #if !defined(__E32BASE_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined (__C32COMM_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined(__D32COMM_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined(__FAXDEFN_H) williamr@2: #include williamr@2: #endif williamr@2: /** Major version number.*/ williamr@2: const TUint KEtelMajorVersionNumber=1; williamr@2: /** Minor version number. */ williamr@2: const TUint KEtelMinorVersionNumber=0; williamr@2: /** Build number. */ williamr@2: const TUint KEtelBuildVersionNumber=606; williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: IMPORT_C void PanicClient(TInt aFault); williamr@2: williamr@2: // williamr@2: // Etel Core Error Definitions williamr@2: // williamr@2: williamr@2: const TInt KErrEtelCoreBase = -2000; williamr@2: williamr@2: /** The client is not the call owner and has attempted to perform an operation williamr@2: that requires ownership.*/ williamr@2: const TInt KErrEtelNotCallOwner=KErrEtelCoreBase; williamr@2: /** An attempt has been made to load an ETel (TSY) module which contains a phone williamr@2: with the same name as one already loaded. */ williamr@2: const TInt KErrEtelDuplicatePhoneName=KErrEtelCoreBase-1; williamr@2: /** An attempt has been made to acquire call ownership when the requesting client williamr@2: is already the call owner. */ williamr@2: const TInt KErrEtelAlreadyCallOwner=KErrEtelCoreBase-2; williamr@2: /** A connection has been terminated because the carrier has been lost. */ williamr@2: const TInt KErrEtelNoCarrier=KErrEtelCoreBase-3; williamr@2: /** An attempt to establish a connection with the RCall::Dial() function has failed williamr@2: because the remote party's line was busy. */ williamr@2: const TInt KErrEtelBusyDetected=KErrEtelCoreBase-4; williamr@2: /** An attempt has been made to transfer call ownership, but no other clients are williamr@2: interested in acquiring ownership. */ williamr@2: const TInt KErrEtelNoClientInterestedInThisCall=KErrEtelCoreBase-5; williamr@2: /** The TSY has failed to initialise the modem. This may be occur if the modem williamr@2: is disconnected during initialisation, or if an attempt is made to initialise williamr@2: an unsupported modem. */ williamr@2: const TInt KErrEtelInitialisationFailure=KErrEtelCoreBase-6; williamr@2: /** An attempt has been made to perform an operation which requires the call to williamr@2: be connected - when the call is not connected. E.g. RCall:LoanDataPort(). */ williamr@2: const TInt KErrEtelCallNotActive=KErrEtelCoreBase-7; williamr@2: /** A connection request has failed because there is no answer. */ williamr@2: const TInt KErrEtelNoAnswer=KErrEtelCoreBase-8; williamr@2: /** A connection request has failed because there is no dial tone. For example, williamr@2: if there is no connection between the modem and the network. */ williamr@2: const TInt KErrEtelNoDialTone=KErrEtelCoreBase-9; williamr@2: /** An attempt to configure the port has failed because the hardware cannot match williamr@2: the desired configuration. For example, if an attempt is made to configure williamr@2: the comms port to a baud rate it cannot support. */ williamr@2: const TInt KErrEtelConfigPortFailure=KErrEtelCoreBase-10; williamr@2: /** Out of memory error - global chunk cannot be created. */ williamr@2: const TInt KErrEtelFaxChunkNotCreated=KErrEtelCoreBase-11; williamr@2: /** The client is not the fax owner and has attempted to perform an operation that williamr@2: requires fax ownership. williamr@2: williamr@2: The fax client should be used to access fax functionality. Consequently, client williamr@2: code should not return this error. */ williamr@2: const TInt KErrEtelNotFaxOwner=KErrEtelCoreBase-12; williamr@2: /** An attempt has been made to perform an operation which requires port ownership. williamr@2: However, the client does not own the port. */ williamr@2: const TInt KErrEtelPortNotLoanedToClient=KErrEtelCoreBase-13; williamr@2: /** An operation has failed because the modem has been incorrectly configured. */ williamr@2: const TInt KErrEtelWrongModemType=KErrEtelCoreBase-14; williamr@2: /** An operation has failed because the modem does not understand the request - williamr@2: possible bug in modem. */ williamr@2: const TInt KErrEtelUnknownModemCapability=KErrEtelCoreBase-15; williamr@2: /** The call has already placed an 'answer incoming call' request. Only 1 request williamr@2: of a type (e.g. fax, voice, data) can be outstanding on the server at a time. */ williamr@2: const TInt KErrEtelAnswerAlreadyOutstanding=KErrEtelCoreBase-16; williamr@2: /** An attempt to establish a connection with the modem has failed because the williamr@2: modem cannot be detected. */ williamr@2: const TInt KErrEtelModemNotDetected=KErrEtelCoreBase-17; williamr@2: /** Operation failed because the modem settings are corrupt. */ williamr@2: const TInt KErrEtelModemSettingsCorrupt=KErrEtelCoreBase-18; williamr@2: /** The Data port is in use by another call or application. */ williamr@2: const TInt KErrEtelPortAlreadyLoaned=KErrEtelCoreBase-19; williamr@2: /** Another call active. Close it before opening a new one. */ williamr@2: const TInt KErrEtelCallAlreadyActive=KErrEtelCoreBase-20; williamr@2: williamr@2: // williamr@2: // williamr@2: // RTelSubSessionBase williamr@2: // williamr@2: // williamr@2: class CPtrHolder; williamr@2: class RFile; williamr@2: /** williamr@2: A base class used in the derivation of RCall, RLine, and RPhone. It has no user williamr@2: accessible functions. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: class RTelSubSessionBase : public RSubSessionBase williamr@2: { williamr@2: public: williamr@2: inline RSessionBase& SessionHandle() const; williamr@2: inline void SetSessionHandle(RSessionBase& aSession); williamr@2: inline void ResetSessionHandle(); williamr@2: inline TInt SubSessionHandle(); williamr@2: williamr@2: IMPORT_C void CancelAsyncRequest(TInt aReqToCancel) const; williamr@2: williamr@2: enum TReqPriorityType williamr@2: { williamr@2: EIsNotaPriorityRequest, williamr@2: EIsaPriorityRequest, williamr@2: EIsaEmergencyRequest williamr@2: }; williamr@2: williamr@2: protected: williamr@2: williamr@2: IMPORT_C RTelSubSessionBase(); williamr@2: IMPORT_C TInt Blank(const TInt aIpc,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C void Blank(const TInt aIpc,TRequestStatus& aStatus,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: williamr@2: IMPORT_C TInt Set(const TInt aIpc,const TDesC8& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C void Set(const TInt aIpc,TRequestStatus& aStatus,const TDesC8& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C TInt Get(const TInt aIpc,TDes8& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C void Get(const TInt aIpc,TRequestStatus& aStatus,TDes8& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: williamr@2: IMPORT_C TInt Set(const TInt aIpc,const TDesC8& aDes1,const TDesC8& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C void Set(const TInt aIpc,TRequestStatus& aStatus,const TDesC8& aDes1,const TDesC8& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C TInt Get(const TInt aIpc,TDes8& aDes1,TDes8& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C void Get(const TInt aIpc,TRequestStatus& aStatus,TDes8& aDes1,TDes8& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: williamr@2: IMPORT_C TInt Set(const TInt aIpc,const TDesC16& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C void Set(const TInt aIpc,TRequestStatus& aStatus,const TDesC16& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C TInt Get(const TInt aIpc,TDes16& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C void Get(const TInt aIpc,TRequestStatus& aStatus,TDes16& aDes,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: williamr@2: IMPORT_C TInt Set(const TInt aIpc,const TDesC16& aDes1,const TDesC16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C void Set(const TInt aIpc,TRequestStatus& aStatus,const TDesC16& aDes1,const TDesC16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C TInt Set(const TInt aIpc,const TDesC8& aDes1,const TDesC16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C void Set(const TInt aIpc,TRequestStatus& aStatus,const TDesC8& aDes1,const TDesC16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: williamr@2: IMPORT_C TInt Get(const TInt aIpc,TDes16& aDes1,TDes16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C void Get(const TInt aIpc,TRequestStatus& aStatus,TDes16& aDes1,TDes16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C TInt Get(const TInt aIpc,TDes8& aDes1,TDes16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C void Get(const TInt aIpc,TRequestStatus& aStatus,TDes8& aDes1,TDes16& aDes2,TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: williamr@2: IMPORT_C void SetAndGet(const TInt aIpc, TRequestStatus& aStatus, const TDesC8& aDes1, TDes8& aDes2, TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C void SetAndGet(const TInt aIpc, TRequestStatus& aStatus, TDes8& aDes1, const TDesC16& aDes2, TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C void SetAndGet(const TInt aIpc, TRequestStatus& aStatus, const TDesC8&, TDes16& aDes2, TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: IMPORT_C void SetAndGet(const TInt aIpc, TRequestStatus& aStatus, const TDesC16& aDes1, TDes16& aDes2, TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: williamr@2: IMPORT_C TInt Set(const TInt aIpc, const RFile& aFile, TReqPriorityType aType = EIsNotaPriorityRequest) const; williamr@2: williamr@2: IMPORT_C TInt CancelReq(const TInt aIpc,const TInt aIpcToCancel) const; williamr@2: IMPORT_C TInt CancelSubSession() const; williamr@2: williamr@2: private: williamr@2: RTelSubSessionBase(const RTelSubSessionBase& aTelSubSessionBase); williamr@2: RSessionBase* iTelSession; williamr@2: protected: williamr@2: CPtrHolder* iPtrHolder; williamr@2: }; williamr@2: williamr@2: // williamr@2: // williamr@2: // RFax williamr@2: // williamr@2: // williamr@2: class RCall; williamr@2: /** williamr@2: ETel fax subsession. williamr@2: williamr@2: Contains the fax client progress information structure. williamr@2: williamr@2: ETel does include server-side RFax objects, however the williamr@2: associated APIs are intended solely for use by ETel's own williamr@2: fax client. Consequently, only the TProgress structure is williamr@2: considered part of the public API. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: class RFax : public RTelSubSessionBase williamr@2: { williamr@2: public: williamr@2: IMPORT_C RFax(); williamr@2: IMPORT_C TInt Open(RCall& aCall); williamr@2: IMPORT_C void Close(); williamr@2: williamr@2: // williamr@2: // Read,Write and Wait for Page End williamr@2: // williamr@2: IMPORT_C void Read(TRequestStatus& aStatus,TDes8& aDes); williamr@2: IMPORT_C void Write(TRequestStatus& aStatus,const TDesC8& aDes); williamr@2: IMPORT_C void WaitForEndOfPage(TRequestStatus& aStatus) const; williamr@2: IMPORT_C TInt TerminateFaxSession() const; williamr@2: // williamr@2: // Progress Information williamr@2: // williamr@2: struct TProgress williamr@2: /** Contains fax progress information.*/ williamr@2: { williamr@2: /** Time of last progress update.*/ williamr@2: TTime iLastUpdateTime; williamr@2: /** ID of remote fax - filled in after connection.*/ williamr@2: TBuf<20> iAnswerback; williamr@2: williamr@2: /** Phase of session.*/ williamr@2: TFaxPhase iPhase; williamr@2: /** Resolution of document.*/ williamr@2: TFaxResolution iResolution; williamr@2: /** Compression method in use.*/ williamr@2: TFaxCompression iCompression; williamr@2: /** Error correction mode. Reserved for future releases.*/ williamr@2: TInt iECM; williamr@2: williamr@2: /** Last or current page being transferred.*/ williamr@2: TInt iPage; williamr@2: /** Last or current line on page.*/ williamr@2: TInt iLines; williamr@2: /** Speed of fax session.*/ williamr@2: TInt iSpeed; williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt GetProgress(TProgress& aProgress); williamr@2: private: williamr@2: TProgress* iProgressPtr; williamr@2: RChunk iChunk; williamr@2: protected: williamr@2: IMPORT_C virtual void ConstructL(); williamr@2: IMPORT_C virtual void Destruct(); williamr@2: }; williamr@2: williamr@2: // williamr@2: // williamr@2: // RCall williamr@2: // williamr@2: // williamr@2: class RTelServer; williamr@2: class RPhone; williamr@2: class RLine; williamr@2: /** williamr@2: Call sub-session. williamr@2: williamr@2: Provides access to the functionality associated with a specific call. williamr@2: williamr@2: This class is not intended for user derivation. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: class RCall : public RTelSubSessionBase williamr@2: { williamr@2: public: williamr@2: IMPORT_C RCall(); williamr@2: IMPORT_C TInt OpenNewCall(RTelServer& aServer,const TDesC& aName,TDes& aNewName); williamr@2: IMPORT_C TInt OpenNewCall(RTelServer& aServer,const TDesC& aName); williamr@2: IMPORT_C TInt OpenNewCall(RPhone& aPhone,const TDesC& aName,TDes& aNewName); williamr@2: IMPORT_C TInt OpenNewCall(RPhone& aPhone,const TDesC& aName); williamr@2: IMPORT_C TInt OpenNewCall(RLine& aLine,TDes& aNewName); williamr@2: IMPORT_C TInt OpenNewCall(RLine& aLine); williamr@2: IMPORT_C TInt OpenExistingCall(RTelServer& aServer,const TDesC& aName); williamr@2: IMPORT_C TInt OpenExistingCall(RPhone& aPhone,const TDesC& aName); williamr@2: IMPORT_C TInt OpenExistingCall(RLine& aLine,const TDesC& aName); williamr@2: IMPORT_C void Close(); williamr@2: williamr@2: // williamr@2: // Call Status williamr@2: // williamr@2: /** Call status flags. */ williamr@2: enum TStatus williamr@2: { williamr@2: /** The call status is not known. */ williamr@2: EStatusUnknown, williamr@2: /** The call is idle. */ williamr@2: EStatusIdle, williamr@2: /** The call is dialling. */ williamr@2: EStatusDialling, williamr@2: /** The call is ringing (an incoming, unanswered call). */ williamr@2: EStatusRinging, williamr@2: /** The call is being answered. */ williamr@2: EStatusAnswering, williamr@2: /** The call is connecting (immediate call establishment, without dialling). */ williamr@2: EStatusConnecting, williamr@2: /** The call is connected and active. */ williamr@2: EStatusConnected, williamr@2: /** The call is being terminated. */ williamr@2: EStatusHangingUp williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt GetStatus(TStatus& aStatus) const; williamr@2: williamr@2: // williamr@2: // Call Caps williamr@2: // williamr@2: /** Call capability flags. */ williamr@2: enum TCapsEnum williamr@2: { williamr@2: /** The call supports data calls. */ williamr@2: KCapsData=0x00000001, williamr@2: /** The call supports fax calls. */ williamr@2: KCapsFax=0x00000002, williamr@2: /** The call supports voice calls. */ williamr@2: KCapsVoice=0x00000004, williamr@2: /** The Dial request is currently a valid action. */ williamr@2: KCapsDial=0x00000008, williamr@2: /** The Connect request is currently a valid action. */ williamr@2: KCapsConnect=0x00000010, williamr@2: /** The Hang Up request is currently a valid action. */ williamr@2: KCapsHangUp=0x00000020, williamr@2: /** The Answer request is currently a valid action. */ williamr@2: KCapsAnswer=0x00000040, williamr@2: /** The Loan Data Port request is currently a valid action. */ williamr@2: KCapsLoanDataPort=0x00000080, williamr@2: /** The Recover Data Port request is currently a valid action. */ williamr@2: KCapsRecoverDataPort=0x00000100 williamr@2: }; williamr@2: williamr@2: struct TCaps williamr@2: /** Call capability information. */ williamr@2: { williamr@2: /** Call capability flag. Contains a bitmask of values defined in the TCapsEnum williamr@2: enumeration.*/ williamr@2: TUint iFlags; williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt GetCaps(TCaps& aCaps) const; williamr@2: IMPORT_C void NotifyCapsChange(TRequestStatus& aStatus, TCaps& aCaps); williamr@2: IMPORT_C void NotifyCapsChangeCancel() const; williamr@2: williamr@2: // williamr@2: // Bearer Service Information williamr@2: // williamr@2: /** Bearer capability flags. */ williamr@2: enum TBearerCaps williamr@2: { williamr@2: /** V42bis modem compression protocol. */ williamr@2: KBearerCapsCompressionV42bis=0x00000001, williamr@2: /** MNP5 modem compression protocol. */ williamr@2: KBearerCapsCompressionMNP5=0x00000002, williamr@2: /** No compression supported. */ williamr@2: KBearerCapsCompressionNone=0x00000004, williamr@2: /** LAPM error correction protocol. */ williamr@2: KBearerCapsProtocolLAPM=0x00000008, williamr@2: /** MNP10 mode. */ williamr@2: KBearerCapsProtocolALT_CELLULAR=0x00000010, williamr@2: /** MNP error correction. */ williamr@2: KBearerCapsProtocolALT=0x00000020, williamr@2: /** No protocol information provided. */ williamr@2: KBearerCapsProtocolNone=0x00000040, williamr@2: /** Compression protocol unknown. */ williamr@2: KBearerCapsCompressionUnknown=0x00000080, williamr@2: /** Unable to establish protocol. */ williamr@2: KBearerCapsProtocolUnknown=0x00000100 williamr@2: }; williamr@2: williamr@2: /** Bearer speed flags. */ williamr@2: enum TCallBearerSpeed williamr@2: { williamr@2: /** Transfer rate of 57600 bps. */ williamr@2: EBearerData57600, williamr@2: /** Transfer rate of 33600 bps. */ williamr@2: EBearerData33600, williamr@2: /** Transfer rate of 31200 bps. */ williamr@2: EBearerData31200, williamr@2: /** Transfer rate of 9200 bps. */ williamr@2: EBearerData19200, williamr@2: /** Transfer rate of 4400 bps. */ williamr@2: EBearerData14400, williamr@2: /** Transfer rate of 12000 bps. */ williamr@2: EBearerData12000, williamr@2: /** Transfer rate of 9600 bps. */ williamr@2: EBearerData9600, williamr@2: /** Transfer rate of 7200 bps. */ williamr@2: EBearerData7200, williamr@2: /** Transfer rate of 4800 bps. */ williamr@2: EBearerData4800, williamr@2: /** Transfer rate of 2400 bps. */ williamr@2: EBearerData2400, williamr@2: /** Transfer rate of 200 bps. */ williamr@2: EBearerData1200, williamr@2: /** V.23 75 bps forward, 1200 bps back */ williamr@2: EBearerData75_1200, williamr@2: /** V.23 1200 bps forward, 75 bps back */ williamr@2: EBearerData1200_75, williamr@2: /** Transfer rate of 300 bps. */ williamr@2: EBearerData300, williamr@2: /** Transfer rate is unknown. */ williamr@2: EBearerDataUnknown williamr@2: }; williamr@2: williamr@2: struct TBearerService williamr@2: /** Call bearer information. williamr@2: williamr@2: @see TCallBearerSpeed */ williamr@2: { williamr@2: /** The bearer capabilities. */ williamr@2: TUint32 iBearerCaps; williamr@2: /** The bearer's speed. williamr@2: williamr@2: @see TCallBearerSpeed */ williamr@2: TCallBearerSpeed iBearerSpeed; williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt GetBearerServiceInfo(TBearerService& aBearerService) const; williamr@2: williamr@2: // williamr@2: // Notifications williamr@2: // williamr@2: /** Hook status flags. */ williamr@2: enum THookStatus williamr@2: { williamr@2: /** The line is currently off hook. */ williamr@2: EHookStatusOff, williamr@2: /** The line is currently on hook. */ williamr@2: EHookStatusOn, williamr@2: /** The status of the line's hook is currently unknown */ williamr@2: EHookStatusUnknown williamr@2: }; williamr@2: williamr@2: class TCallInfo williamr@2: /** Line call capability information. williamr@2: williamr@2: @see TName williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TCallInfo(); williamr@2: /** The name of a call. williamr@2: williamr@2: @see TName */ williamr@2: TName iCallName; williamr@2: TName iLineName; williamr@2: THookStatus iHookStatus; williamr@2: /** The call status. williamr@2: williamr@2: @see RCall::TStatus */ williamr@2: TStatus iStatus; williamr@2: TTimeIntervalSeconds iDuration; williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt GetInfo(TCallInfo& aCallInfo) const; williamr@2: IMPORT_C void NotifyHookChange(TRequestStatus& aStatus,THookStatus& aHookStatus); williamr@2: IMPORT_C void NotifyHookChangeCancel() const; williamr@2: IMPORT_C void NotifyStatusChange(TRequestStatus& aStatus,TStatus& aCallStatus); williamr@2: IMPORT_C void NotifyStatusChangeCancel() const; williamr@2: IMPORT_C void NotifyCallDurationChange(TRequestStatus& aStatus,TTimeIntervalSeconds& aTime); williamr@2: IMPORT_C void NotifyCallDurationChangeCancel() const; williamr@2: williamr@2: // williamr@2: // Duration of call williamr@2: // williamr@2: IMPORT_C TInt GetCallDuration(TTimeIntervalSeconds& aTime) const; williamr@2: // williamr@2: // Connecting and Disconnecting williamr@2: // williamr@2: /** Passes telephone numbers into Dial functions. */ williamr@2: typedef TDesC TTelNumberC; williamr@2: IMPORT_C TInt Dial(const TTelNumberC& aTelNumber) const; williamr@2: IMPORT_C TInt Dial(const TDesC8& aCallParams,const TTelNumberC& aTelNumber) const; williamr@2: IMPORT_C void Dial(TRequestStatus& aStatus,const TTelNumberC& aTelNumber); williamr@2: IMPORT_C void Dial(TRequestStatus& aStatus,const TDesC8& aCallParams,const TTelNumberC& aTelNumber); williamr@2: IMPORT_C void DialCancel() const; williamr@2: IMPORT_C TInt Connect() const; williamr@2: IMPORT_C TInt Connect(const TDesC8& aCallParams) const; williamr@2: IMPORT_C void Connect(TRequestStatus& aStatus); williamr@2: IMPORT_C void Connect(TRequestStatus& aStatus,const TDesC8& aCallParams); williamr@2: IMPORT_C void ConnectCancel() const; williamr@2: IMPORT_C TInt AnswerIncomingCall() const; williamr@2: IMPORT_C TInt AnswerIncomingCall(const TDesC8& aCallParams) const; williamr@2: IMPORT_C void AnswerIncomingCall(TRequestStatus& aStatus); williamr@2: IMPORT_C void AnswerIncomingCall(TRequestStatus& aStatus,const TDesC8& aCallParams); williamr@2: IMPORT_C void AnswerIncomingCallCancel() const; williamr@2: IMPORT_C TInt HangUp() const; williamr@2: IMPORT_C void HangUp(TRequestStatus& aStatus) const; williamr@2: IMPORT_C void HangUpCancel() const; williamr@2: williamr@2: // williamr@2: // Call Data Access williamr@2: // williamr@2: struct TCommPort williamr@2: /** Communications port information. williamr@2: williamr@2: @see TFileName */ williamr@2: { williamr@2: /** The CSY module used by the C32 Communications Server to talk to the serial williamr@2: device. williamr@2: @deprecated This has been deprecated as all the information that is needed by the williamr@2: lower layers is now being passed in iPort. williamr@2: williamr@2: @see TFileName */ williamr@2: TFileName iCsy; williamr@2: /** The port used by the C32 Communications Server to talk to the serial device. williamr@2: It holds both the Csy name and the Port name. williamr@2: williamr@2: @see TName */ williamr@2: TName iPort; williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt LoanDataPort(TCommPort& aDataPort) const; williamr@2: IMPORT_C void LoanDataPort(TRequestStatus& aStatus,TCommPort& aDataPort); williamr@2: IMPORT_C void LoanDataPortCancel() const; williamr@2: IMPORT_C TInt RecoverDataPort() const; williamr@2: williamr@2: // williamr@2: // Call Ownership manipulation williamr@2: // williamr@2: /** Call ownership status flags. */ williamr@2: enum TOwnershipStatus williamr@2: { williamr@2: /** The call is not owned. */ williamr@2: EOwnershipUnowned, williamr@2: /** The call is owned, but not by this RCall instance. */ williamr@2: EOwnershipOwnedByAnotherClient, // not the priority client williamr@2: /** The call is owned by this RCall instance. */ williamr@2: EOwnershipOwnedByThisClient, williamr@2: /** The call is owned, but not by the priority client */ williamr@2: EOwnershipThisIsPriorityClient // not owned by this (the priority) client williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt TransferOwnership() const; williamr@2: IMPORT_C void AcquireOwnership(TRequestStatus& aStatus) const; williamr@2: IMPORT_C void AcquireOwnershipCancel() const; williamr@2: IMPORT_C TInt GetOwnershipStatus(TOwnershipStatus& aOwnershipStatus) const; williamr@2: // williamr@2: // williamr@2: // Get and Set Call Parameters williamr@2: // williamr@2: /** Monitor speaker control setting flags. */ williamr@2: enum TMonitorSpeakerControl williamr@2: { williamr@2: /** Speaker control is always off */ williamr@2: EMonitorSpeakerControlAlwaysOff, williamr@2: /** Speaker control is on until the carrier is detected */ williamr@2: EMonitorSpeakerControlOnUntilCarrier, williamr@2: /** Speaker control is always active. */ williamr@2: EMonitorSpeakerControlAlwaysOn, williamr@2: /** Speaker control is on, except while dialling */ williamr@2: EMonitorSpeakerControlOnExceptDuringDialling, williamr@2: /** Speaker control is unknown. */ williamr@2: EMonitorSpeakerControlUnknown williamr@2: }; williamr@2: williamr@2: /** Monitor speaker volume control setting flags. */ williamr@2: enum TMonitorSpeakerVolume williamr@2: { williamr@2: /** Speaker volume is off. */ williamr@2: EMonitorSpeakerVolumeOff, williamr@2: /** Speaker volume is low. */ williamr@2: EMonitorSpeakerVolumeLow, williamr@2: /** Speaker volume is medium. */ williamr@2: EMonitorSpeakerVolumeMedium, williamr@2: /** Speaker volume is high. */ williamr@2: EMonitorSpeakerVolumeHigh, williamr@2: /** Speaker volume is unknown. */ williamr@2: EMonitorSpeakerVolumeUnknown williamr@2: }; williamr@2: williamr@2: /** Wait for dial tone flags. */ williamr@2: enum TWaitForDialTone williamr@2: { williamr@2: /** Waiting for dial tone. */ williamr@2: EDialToneWait, williamr@2: /** Not waiting for dial tone. */ williamr@2: EDialToneNoWait williamr@2: }; williamr@2: williamr@2: class TCallParams williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TCallParams(); williamr@2: IMPORT_C TCallParams(TMonitorSpeakerControl aSpeakerControl, williamr@2: TMonitorSpeakerVolume aSpeakerVolume, williamr@2: TUint aInterval, williamr@2: TWaitForDialTone aWaitForDialTone); williamr@2: IMPORT_C TInt ExtensionId(); williamr@2: IMPORT_C TBool IsDefault(); williamr@2: TMonitorSpeakerControl iSpeakerControl; williamr@2: TMonitorSpeakerVolume iSpeakerVolume; williamr@2: TUint iInterval; williamr@2: TWaitForDialTone iWaitForDialTone; williamr@2: protected: williamr@2: TBool iIsDefault; williamr@2: TInt iExtensionId; williamr@2: }; williamr@2: williamr@2: /** Call parameters package williamr@2: williamr@2: The call parameters to be associated with a call may be passed into functions williamr@2: using this type. williamr@2: williamr@2: @see TCallParams */ williamr@2: typedef TPckg TCallParamsPckg; williamr@2: williamr@2: IMPORT_C TInt GetCallParams(TDes8& aParams) const; williamr@2: williamr@2: // williamr@2: // Fax Settings williamr@2: // williamr@2: /** Fax mode flags. */ williamr@2: enum TFaxMode williamr@2: { williamr@2: /** Fax is transmitting */ williamr@2: ETransmit, williamr@2: /** Fax is receiving. */ williamr@2: EReceive williamr@2: }; williamr@2: williamr@2: /** Fax retrieval type flags. */ williamr@2: enum TFaxRetrieveType williamr@2: { williamr@2: /** Retrieving a fax opened from voice call (not currently supported by GSM networks). */ williamr@2: EFaxOnDemand, williamr@2: /** Retrieve a fax opened from fax call. */ williamr@2: EFaxPoll williamr@2: }; williamr@2: williamr@2: /** Fax identifier size flags. */ williamr@2: enum TConstants williamr@2: { williamr@2: /** 20 */ williamr@2: KFaxIdUserNameMaxSize=20 williamr@2: }; williamr@2: williamr@2: struct TFaxSessionSettings williamr@2: /** Fax session settings information. williamr@2: williamr@2: @see TFaxMode */ williamr@2: { williamr@2: /** The fax mode. williamr@2: williamr@2: @see TFaxMode */ williamr@2: TFaxMode iMode; williamr@2: /** The mode of retrieving faxes. williamr@2: williamr@2: @see TFaxRetrieveType */ williamr@2: TFaxRetrieveType iFaxRetrieveType; williamr@2: /** The class of fax williamr@2: williamr@2: @see TFaxClass */ williamr@2: TFaxClass iFaxClass; williamr@2: /** The fax identifier string displayed at the top of the fax. williamr@2: williamr@2: @see KFaxIdUserNameMaxSize */ williamr@2: TBuf iFaxId; williamr@2: /** The maximum transfer speed that can be negotiated. */ williamr@2: TInt iMaxSpeed; williamr@2: /** The minimum transfer speed that should be negotiated. */ williamr@2: TInt iMinSpeed; williamr@2: /** The preferred compression mode used for negotiation. This may take one of the williamr@2: following values: EModifiedHuffman, EModifiedRead, EUncompressedModifiedRead, williamr@2: EModifiedModifiedRead. */ williamr@2: TInt iPreferredECM; williamr@2: /** The delay used for Fax on Demand services. Measured in seconds. */ williamr@2: TInt iFaxOnDemandDelay; williamr@2: // Tx Settings williamr@2: /** The preferred transmit resolution. This may take one of the following values: williamr@2: EFaxNormal EFaxFine williamr@2: williamr@2: @see TFaxResolution */ williamr@2: TFaxResolution iTxResolution; williamr@2: /** Compression mode for transmitting faxes. williamr@2: williamr@2: @see TFaxCompression */ williamr@2: TFaxCompression iTxCompression; williamr@2: /** The number of pages to be transmitted. */ williamr@2: TInt iTxPages; williamr@2: // Rx Settings williamr@2: /** The preferred receive resolution. This may take one of the following values: williamr@2: EFaxNormal EFaxFine. williamr@2: williamr@2: @see TFaxResolution */ williamr@2: TFaxResolution iRxResolution; williamr@2: /** Compression mode for receiving faxes. williamr@2: williamr@2: @see TFaxCompression */ williamr@2: TFaxCompression iRxCompression; williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt GetFaxSettings(TFaxSessionSettings& aSettings) const; williamr@2: IMPORT_C TInt SetFaxSettings(const TFaxSessionSettings& aSettings) const; williamr@2: IMPORT_C TInt AdoptFaxSharedHeaderFile(const RFile& aSharedFile) const; williamr@2: // williamr@2: // Retrieval of call objects' reference count williamr@2: // williamr@2: IMPORT_C TInt ReferenceCount() const; williamr@2: williamr@2: protected: williamr@2: IMPORT_C virtual void ConstructL(); williamr@2: IMPORT_C virtual void Destruct(); williamr@2: }; williamr@2: williamr@2: // williamr@2: // williamr@2: // RLine williamr@2: // williamr@2: // williamr@2: class RPhone; williamr@2: /** williamr@2: Provides access to the functionality associated with a specific line. williamr@2: williamr@2: This class is not intended for user derivation. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: class RLine : public RTelSubSessionBase williamr@2: { williamr@2: public: williamr@2: IMPORT_C RLine(); williamr@2: IMPORT_C TInt Open(RPhone& aPhone,const TDesC& aName); williamr@2: IMPORT_C TInt Open(RTelServer& aServer,const TDesC& aName); williamr@2: IMPORT_C void Close(); williamr@2: williamr@2: // williamr@2: // Caps williamr@2: // williamr@2: /** Line capability flags. */ williamr@2: enum TCapsFlags williamr@2: { williamr@2: /** The line supports data connections.*/ williamr@2: KCapsData=0x00000001, williamr@2: /** The line supports fax connections. */ williamr@2: KCapsFax=0x00000002, williamr@2: /** The line supports voice connections.*/ williamr@2: KCapsVoice=0x00000004, williamr@2: /** The line supports incoming call notification requests. */ williamr@2: KCapsEventIncomingCall=0x00010000, williamr@2: }; williamr@2: williamr@2: struct TCaps williamr@2: /** Line capability information. */ williamr@2: { williamr@2: /** Line capability flag. Contains a bitmask of the values defined in the TCapsFlags williamr@2: enumeration.*/ williamr@2: TUint iFlags; williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt GetCaps(TCaps& aCaps) const; williamr@2: IMPORT_C void NotifyCapsChange(TRequestStatus& aStatus, TCaps& aCaps); williamr@2: IMPORT_C void NotifyCapsChangeCancel() const; williamr@2: williamr@2: // williamr@2: // Line and Hook Status williamr@2: // williamr@2: IMPORT_C TInt GetStatus(RCall::TStatus& aStatus) const; williamr@2: IMPORT_C TInt GetHookStatus(RCall::THookStatus& aHookStatus) const; williamr@2: williamr@2: // williamr@2: // Call enumeration and Information williamr@2: // williamr@2: struct TCallInfo williamr@2: /** Line call capability information. williamr@2: williamr@2: @see TName */ williamr@2: { williamr@2: /** The name of a call. williamr@2: williamr@2: @see TName */ williamr@2: TName iCallName; williamr@2: /** The call status. williamr@2: williamr@2: @see RCall::TStatus */ williamr@2: RCall::TStatus iStatus; williamr@2: /** The call capabilities flag. williamr@2: williamr@2: @see RCall::TCapsEnum*/ williamr@2: TUint32 iCallCapsFlags; williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt EnumerateCall(TInt& aCount) const; williamr@2: IMPORT_C TInt GetCallInfo(TInt aIndex,TCallInfo& aCallInfo) const; williamr@2: // williamr@2: // General line notification information williamr@2: // williamr@2: class TLineInfo williamr@2: /** Line information. williamr@2: williamr@2: @see RCall::TStatus williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TLineInfo(); williamr@2: RCall::THookStatus iHookStatus; williamr@2: /** The current line status. williamr@2: williamr@2: @see RCall::TStatus */ williamr@2: RCall::TStatus iStatus; williamr@2: TName iNameOfLastCallAdded; williamr@2: TName iNameOfCallForAnswering; // if an incoming call occurs, this contains the name williamr@2: // of the call to answer it on. williamr@2: }; williamr@2: williamr@2: // williamr@2: // Notifications williamr@2: // williamr@2: IMPORT_C TInt GetInfo(TLineInfo& aLineInfo) const; williamr@2: IMPORT_C void NotifyIncomingCall(TRequestStatus& aStatus, TName& aName); williamr@2: IMPORT_C void NotifyIncomingCallCancel() const; williamr@2: IMPORT_C void NotifyHookChange(TRequestStatus& aStatus,RCall::THookStatus& aHookStatus); williamr@2: IMPORT_C void NotifyHookChangeCancel() const; williamr@2: IMPORT_C void NotifyStatusChange(TRequestStatus& aStatus,RCall::TStatus& aLineStatus); williamr@2: IMPORT_C void NotifyStatusChangeCancel() const; williamr@2: IMPORT_C void NotifyCallAdded(TRequestStatus& aStatus,TName& aName); williamr@2: IMPORT_C void NotifyCallAddedCancel() const; williamr@2: protected: williamr@2: IMPORT_C virtual void ConstructL(); williamr@2: IMPORT_C virtual void Destruct(); williamr@2: }; williamr@2: williamr@2: // williamr@2: // williamr@2: // RPhone williamr@2: // williamr@2: // williamr@2: class RTelServer; williamr@2: /** williamr@2: Phone sub-session. williamr@2: williamr@2: Provides access to the functionality associated with a specific phone. williamr@2: williamr@2: This class is not intended for user derivation. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: class RPhone : public RTelSubSessionBase williamr@2: { williamr@2: public: williamr@2: IMPORT_C RPhone(); williamr@2: IMPORT_C TInt Open(RTelServer& aSession,const TDesC& aName); williamr@2: IMPORT_C void Close(); williamr@2: williamr@2: // williamr@2: // Initialisation williamr@2: // williamr@2: IMPORT_C TInt Initialise(); williamr@2: IMPORT_C void Initialise(TRequestStatus& aStatus); williamr@2: IMPORT_C void InitialiseCancel(); williamr@2: williamr@2: // williamr@2: // Caps williamr@2: // williamr@2: /** Phone capability flags. */ williamr@2: enum TCapsFlags williamr@2: { williamr@2: /** The capabilities of the phone are not known. */ williamr@2: KCapsUnknown=0x00000001, williamr@2: /** The phone supports data calls. */ williamr@2: KCapsData=0x00000002, williamr@2: /** The phone supports the fax class 1 interface. */ williamr@2: KCapsFaxClassOne=0x0000004, williamr@2: /** The phone supports the fax class 1.0 interface. */ williamr@2: KCapsFaxClassOnePointZero=0x0000008, williamr@2: /** The phone supports the fax class 2 interface. */ williamr@2: KCapsFaxClassTwo=0x00000010, williamr@2: /** The phone supports the fax class 2.0 interface. */ williamr@2: KCapsFaxClassTwoPointZero=0x00000020, williamr@2: /** The phone supports the fax class 2.1 interface. */ williamr@2: KCapsFaxClassTwoPointOne=0x00000040, williamr@2: /** The phone supports voice calls. */ williamr@2: KCapsVoice=0x00000080, williamr@2: /** The phone supports modem detection events, i.e. it can notify clients when williamr@2: the modem can be or can no longer be detected. */ williamr@2: KCapsEventModemDetection=0x00010000, williamr@2: /** The phone supports the ability to take the communications port from whatever williamr@2: component is currently using it. */ williamr@2: KCapsStealCommPort=0x00020000 williamr@2: }; williamr@2: williamr@2: struct TCaps williamr@2: /** Phone capability information. */ williamr@2: { williamr@2: /** Phone capability flag. Contains bitmask of values defined in the TCapsFlags williamr@2: enumeration. */ williamr@2: TUint iFlags; williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt GetCaps(TCaps& aCaps) const; williamr@2: IMPORT_C void NotifyCapsChange(TRequestStatus& aStatus, TCaps& aCaps); williamr@2: IMPORT_C void NotifyCapsChangeCancel() const; williamr@2: williamr@2: // williamr@2: // Status williamr@2: // williamr@2: /** Phone mode status flags. */ williamr@2: enum TMode williamr@2: { williamr@2: /** Phone (modem) status unknown. */ williamr@2: EModeUnknown, williamr@2: /** Phone is idle. */ williamr@2: EModeIdle, williamr@2: /** Phone is establishing link. */ williamr@2: EModeEstablishingLink, williamr@2: /** Modem is in data mode. */ williamr@2: EModeOnlineData, williamr@2: /** Modem is in command mode and the line is active. */ williamr@2: EModeOnlineCommand williamr@2: }; williamr@2: williamr@2: /** Modem connection status flags. */ williamr@2: enum TModemDetection williamr@2: { williamr@2: /** Modem present. */ williamr@2: EDetectedPresent, williamr@2: /** Modem is not present. */ williamr@2: EDetectedNotPresent, williamr@2: /** Modem connection status is unknown. */ williamr@2: EDetectedUnknown williamr@2: }; williamr@2: williamr@2: struct TStatus williamr@2: /** Current phone status. williamr@2: williamr@2: @see TModemDetection */ williamr@2: { williamr@2: /** The current modem connection status. williamr@2: williamr@2: @see TModemDetection */ williamr@2: TModemDetection iModemDetected; williamr@2: /** The current mode of the phone. williamr@2: williamr@2: @see TMode */ williamr@2: TMode iMode; williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt GetStatus(TStatus& aStatus) const; williamr@2: williamr@2: // williamr@2: // Line Enumeration and Information williamr@2: // williamr@2: struct TLineInfo williamr@2: /** Line information. williamr@2: williamr@2: @see RCall::TStatus */ williamr@2: { williamr@2: /** The current line status. williamr@2: williamr@2: @see RCall::TStatus */ williamr@2: RCall::TStatus iStatus; williamr@2: /** The line capabilities flag. williamr@2: williamr@2: @see RLine::TCapsFlags */ williamr@2: TUint32 iLineCapsFlags; williamr@2: /** The name of the line. williamr@2: williamr@2: @see TName */ williamr@2: TName iName; williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt EnumerateLines(TInt& aCount) const; williamr@2: IMPORT_C TInt GetLineInfo(const TInt aIndex,TLineInfo& aLineInfo) const; williamr@2: williamr@2: // williamr@2: // General phone notification information williamr@2: // williamr@2: class TPhoneInfo williamr@2: /** Phone notification information. williamr@2: williamr@2: Collects all the information associated with an instance of the core API phone williamr@2: class is collected together into a single, directly accessible, structure. williamr@2: This increases the efficiency of applications that require access to the majority williamr@2: of the phone's data. williamr@2: williamr@2: This class is not intended for user derivation. williamr@2: williamr@2: @see TNetworkType williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TPhoneInfo(); williamr@2: /** The current modem detection state (is it present or not). williamr@2: williamr@2: @see TModemDetection */ williamr@2: TModemDetection iDetection; williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt GetInfo(TPhoneInfo& aPhoneInfo) const; williamr@2: williamr@2: // williamr@2: // Notifications williamr@2: // williamr@2: IMPORT_C void NotifyModemDetected(TRequestStatus& aStatus,TModemDetection& aDetection); williamr@2: IMPORT_C void NotifyModemDetectedCancel() const; williamr@2: williamr@2: // williamr@2: // TEmergencyRequest is a bit-mask where each bit-flag represents williamr@2: // the emergency request type that the client wishes to handle williamr@2: // williamr@2: enum TEmergencyRequest williamr@2: { williamr@2: /** Location Based Services Emergency Request */ williamr@2: EEmergencyLCSRequest = 0x00000001, williamr@2: /** Circuit Switch Voice Call Emergency Request */ williamr@2: EEmergencyCSVoiceCallRequest = 0x00000002, williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt SetEmergencyClient(const TUint32 aEmergencyRequest) const; williamr@2: williamr@2: protected: williamr@2: IMPORT_C virtual void ConstructL(); williamr@2: IMPORT_C virtual void Destruct(); williamr@2: }; williamr@2: williamr@2: // williamr@2: // williamr@2: // RTelServer williamr@2: // williamr@2: // williamr@2: /** williamr@2: Root telephony server session. williamr@2: williamr@2: Provides access to general telephony information and functionality. Clients williamr@2: wishing to use the ETel Server must open a connection with the root server williamr@2: using the functions defined in this class. They may then obtain information williamr@2: about loaded TSY modules, and the phones that they support. To access functionality williamr@2: associated with a specific phone, the client must open a sub-session for that williamr@2: phone. williamr@2: williamr@2: This class is not intended for user derivation. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: class RTelServer : public RSessionBase williamr@2: { williamr@2: public: williamr@2: enum { KDefaultMessageSlots=32 }; williamr@2: williamr@2: IMPORT_C RTelServer(); williamr@2: IMPORT_C TInt Connect(TInt aMessageSlots =KDefaultMessageSlots); williamr@2: inline TVersion Version() const; williamr@2: williamr@2: // williamr@2: // Enumeration and Information williamr@2: // williamr@2: /** Types of telephony connection flags. */ williamr@2: enum TNetworkType williamr@2: { williamr@2: /** Wired analog network. */ williamr@2: ENetworkTypeWiredAnalog, williamr@2: /** Wired digital network (not supported by ETel). */ williamr@2: ENetworkTypeWiredDigital, williamr@2: /** Mobile analog network (not supported by ETel). */ williamr@2: ENetworkTypeMobileAnalog, williamr@2: /** Mobile digital network. */ williamr@2: ENetworkTypeMobileDigital, williamr@2: /** Unknown network type. */ williamr@2: ENetworkTypeUnknown williamr@2: }; williamr@2: williamr@2: struct TPhoneInfo williamr@2: /** Phone notification information. williamr@2: williamr@2: Collects all the information associated with an instance of the core API phone williamr@2: class is collected together into a single, directly accessible, structure. williamr@2: This increases the efficiency of applications that require access to the majority williamr@2: of the phone's data. williamr@2: williamr@2: This class is not intended for user derivation. williamr@2: williamr@2: @see TNetworkType */ williamr@2: { williamr@2: /** The type of telephony connection supported by the phone. williamr@2: williamr@2: @see TNetworkType */ williamr@2: TNetworkType iNetworkType; williamr@2: /** The name of the phone. williamr@2: williamr@2: @see TName */ williamr@2: TName iName; williamr@2: /** The number of lines supported by the phone. */ williamr@2: TUint iNumberOfLines; williamr@2: /** The extensions that the TSY module supports. */ williamr@2: TUint iExtensions; williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt EnumeratePhones(TInt& aNoOfPhones) const; williamr@2: IMPORT_C TInt GetPhoneInfo(const TInt aIndex,TPhoneInfo& aInfo) const; williamr@2: IMPORT_C TInt GetTsyName(const TInt aIndexOfPhone, TDes& aTsyName) const; williamr@2: williamr@2: // williamr@2: // Load and Unload Phone modules williamr@2: // williamr@2: williamr@2: IMPORT_C TInt LoadPhoneModule(const TDesC& aFileName) const; williamr@2: IMPORT_C TInt UnloadPhoneModule(const TDesC& aFileName) const; williamr@2: williamr@2: // williamr@2: // Check whether specified Phone module (TSY) supports certain functionality williamr@2: // williamr@2: williamr@2: IMPORT_C TInt IsSupportedByModule(const TDesC& aTsyName, const TInt aMixin, TBool& aResult) const; williamr@2: IMPORT_C TInt GetTsyVersionNumber(const TDesC& aTsyName,TVersion& aVersion) const; williamr@2: // williamr@2: // Set this session as Priority client williamr@2: // williamr@2: /** @deprecated This function has been deprecated. Use RTelServer::SetPriorityClientV2 followed by williamr@2: RPhone::SetEmergencyClient(EEmergencyCSVoiceCallRequest) */ williamr@2: IMPORT_C TInt SetPriorityClient() const; williamr@2: williamr@2: // williamr@2: // Set this session to receive detailed errors williamr@2: // williamr@2: williamr@2: /** Error granularity flags. */ williamr@2: enum TErrorGranularity williamr@2: { williamr@2: /** Client is only interested in core errors */ williamr@2: EErrorBasic, williamr@2: /** Client is interested in extended errors */ williamr@2: EErrorExtended williamr@2: }; williamr@2: williamr@2: IMPORT_C TInt SetExtendedErrorGranularity(const TErrorGranularity aGranularity) const; williamr@2: williamr@2: // williamr@2: // Debug calls - stubbed in release builds williamr@2: // williamr@2: IMPORT_C TInt __DbgMarkHeap(); williamr@2: IMPORT_C TInt __DbgCheckHeap(TInt aCount); williamr@2: IMPORT_C TInt __DbgMarkEnd(TInt aCount); williamr@2: IMPORT_C TInt __DbgFailNext(TInt aCount); williamr@2: IMPORT_C TInt __DbgFailNextAvailable(TBool& aResult); williamr@2: williamr@2: // williamr@2: // Set this session as Priority client williamr@2: // williamr@2: IMPORT_C TInt SetPriorityClientV2() const; williamr@2: williamr@2: }; williamr@2: williamr@2: williamr@2: #include williamr@2: #endif