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