--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/phonemodel/inc/pevirtualengine.h Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,941 @@
+/*
+* Copyright (c) 2005-2008 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: This file defines the protocol independent interface of the Phone Engine.
+*
+*/
+
+#ifndef PEVIRTUALENGINE_H
+#define PEVIRTUALENGINE_H
+
+// INCLUDES
+#include <badesca.h>
+#include <bldvariant.hrh> //protocol definition, component configuration definitions
+#include <cphcntcontactid.h>
+#include <ctsydomainpskeys.h>
+#include <etelmm.h>
+#include <exterror.h>
+#include <fbs.h>
+#include <mccecall.h>
+#include <mmtsy_names.h>
+#include <NetworkHandlingDomainPSKeys.h>
+#include <PhCltTypes.h>
+#include <Profile.hrh>
+#include <rmmcustomapi.h>
+#include <RSSSettings.h>
+#include <sysutil.h>
+
+
+// CONSTANTS
+
+//Call origin types
+enum TPECallOrigin
+ {
+ EPECallOriginPhone,
+ EPECallOriginClient,
+ EPECallOriginSAT
+ };
+
+//Output types
+enum TPEAudioOutput
+ {
+ EPENotActive,
+ EPEHandset,
+ EPELoudspeaker,
+ EPEWiredAudioAccessory,
+ EPEBTAudioAccessory,
+ EPETTY
+ };
+
+//Error types
+enum TPEErrorType
+ {
+ EPECcp = 0,
+ EPECch
+ };
+
+// PhoneEngine Errors
+const TInt KErrPhoneEngineErrorBase = -30000;
+const TInt KErrPhoneEngineNoWcdmaNetwork = KErrPhoneEngineErrorBase - 1;
+const TInt KErrPhoneEngineVideoCallNotAllowedDuringRestore = KErrPhoneEngineErrorBase - 2;
+const TInt KErrPhoneEngineVideoCallSetupFailed = KErrPhoneEngineErrorBase - 3;
+
+// Phone Engine dll uid
+const TUid KUidPhoneEngine = { 0x1000A86C };
+
+// Maximum length of phone number
+const TInt KPEPhoneNumberMaxLength = 100;
+//Phone number type defined using the custom maximum length
+typedef TBuf<KPEPhoneNumberMaxLength> TPEPhoneNumber;
+//Maximum length of dtmf string
+const TInt KPEDtmfMaxLength = KPEPhoneNumberMaxLength;
+
+//Maximum number of the SS service groups
+const TInt KPEMaxServiceGroup = 53; // Maximum value taken from etelmm.h(TMobileService)
+
+const TInt KPEAutomaticAnswerTimeout = 5000000; // 5 seconds;
+
+// Enumerations for variant messages
+// For enumeration TPEMessagesToPhoneEngine
+const TInt KPEMessagesToPhoneEngineGsmFirst = 11000;
+const TInt KPEMessagesToPhoneEngineGsmLast = 12999;
+const TInt KPEMessagesToPhoneEngineVariantFirst = KPEMessagesToPhoneEngineGsmFirst;
+
+// For enumeration TPEMessagesFromPhoneEngine
+const TInt KPEMessagesFromPhoneEngineGsmFirst = 11000;
+const TInt KPEMessagesFromPhoneEngineGsmLast = 12999;
+const TInt KPEMessagesFromPhoneEngineVariantFirst = KPEMessagesFromPhoneEngineGsmFirst;
+
+// Lifetimer data in hours and minutes
+NONSHARABLE_STRUCT( TPELifeTimeData )
+ {
+ TUint32 iHours; //range 0-999999
+ TUint8 iMinutes; //range 0-59
+ };
+
+// Used when initializing number variables with non negative value range.
+const TInt KPENumberInitValue = -1;
+//CallId not used in SendErrorMessageL
+const TInt KPECallIdNotUsed = -1;
+//ErrorCode not used in SendErrorMessageL
+const TInt KPEErrorCodeNotUsed = -1;
+// Informs to phone engine that dont send message to the phone application
+const TInt KPEDontSendMessage = 1;
+
+// Maximum lenght of timer
+const TInt KPESsTimerMaxLength = 2;
+
+// Audio player repeats tone forever
+const TInt KPEAudioPlayerRepeatForever = -2;
+// Default Audio volume value
+const TInt KPEDefaultAudioVolume = 7;
+// Default volume value for accessory
+const TInt KPEDefaultAccessoryVolume = 5;
+// Default keypad volume
+const TProfileKeypadVolume KPEDefaultKeypadVolume = EProfileKeypadVolumeLevel2;
+
+// Dtmf stop character, PE handles internally DTMF characters as lowercase.
+const TUint KPEDtmfStopCharLowercase = 'w';
+const TUint KPEDtmfStopCharUppercase = 'W';
+const TUint KPEDtmfPauseCharLowercase = 'p';
+const TUint KPEDtmfPauseCharUppercase = 'P';
+const TUint KPEDtmfPlusChar = '+';
+
+enum TPELoggingIndicator
+ {
+ EPENormalLogging = 0,
+ EPEContinuousLogging
+ };
+
+// Maximum Length of profile name
+const TInt KPEProfileNameLength = 64;
+// Profile is alerting all incoming calls.
+_LIT( KPEAlertForAllCalls, "1");
+// Informs how many profiles there are
+const TInt KPEProfileGroups = 3;
+// Informs how much time it take's to change ringing tone volume from minimum to maximum(Ascending)
+const TInt KPERingingToneRampDuration = 5000000;
+// Informs how many ringing tone volume levels there are in the profile db
+const TInt KPEProfileRingingToneLevels = 10;
+// Includes default tone volume
+const TInt KPEDefaultToneVolume = 30000;
+// Contact group id string length
+const TInt KPEContactGroupString = 100;
+
+//The length of a pause created during dialling by the comma character (',') measured in seconds.
+const TUint KPEDefaultInterval = 2;
+
+// CommDB constants for Data calls
+// Internet Access Point service type
+_LIT( KPEIAPServiceTypeName, "IAP\\IAPServiceType" );
+// Dial Out Internet Serivce Provider Table name
+_LIT( KPEIAPDialOutISPTableName, "DialOutISP" );
+// Dial In Internet Service Provider Table name
+_LIT( KPEIAPDialInISPTableName, "DialInISP" );
+// Access Point Name column on IAP table
+_LIT( KPEIAPAccessPointName, "IAP\\NAME" );
+
+const TInt KPEMaxAudioOutputs = EPETTY + 1; // enum count
+
+// DATA TYPES
+
+// Contact name definition
+typedef TBuf<KCntMaxTextFieldLength> TPEContactName;
+// Contact company definition
+typedef TBuf<KCntMaxTextFieldLength> TPEContactCompany;
+// Contact group definition
+typedef TBuf<KCntMaxTextFieldLength> TPEContactGroup;
+// Contact filename definition
+typedef TBuf<KMaxFileName> TPEContactFileName;
+// Contact group ids sting
+typedef TBuf<KPEContactGroupString> TPEContactGroupId;
+//Dtmf-string definition
+typedef TBuf<KPEDtmfMaxLength> TPEDtmfString;
+//Profile name definition
+typedef TBuf<KPEProfileNameLength> TPEProfileName;
+//Call control caps
+typedef TUint32 TPECallControlCaps;
+//User to user info
+typedef TBuf<KPhCltUUILength> TPEUserToUserInfo;
+
+// Phone identity parameters type.
+typedef TBuf<RMobilePhone::KPhoneManufacturerIdSize> TPEManufacturer;
+typedef TBuf<RMobilePhone::KPhoneModelIdSize> TPEModel;
+typedef TBuf<KSysUtilVersionTextLength> TPERevision;
+typedef TBuf<RMobilePhone::KPhoneSerialNumberSize> TPESerialNumber;
+
+//Call States
+typedef TUint TPEState;
+
+enum
+ {
+ // Call states 0 - 499
+ EPEStateUnknown = 0,
+ EPEStateIdle,
+ EPEStateDialing,
+ EPEStateEmergencyDialing,
+ EPEStateRinging,
+ EPEStateConnecting,
+ EPEStateConnected,
+ EPEStateHangingUp,
+ EPEStateHeld,
+ EPEStateAnswering,
+ EPEStateRejecting,
+ EPEStateDisconnecting,
+ // conference call states
+ EPEStateConferenceIdle,
+ EPEStateConnectedConference,
+ EPEStateHeldConference,
+ EPEStateCreatingConference,
+ EPEStateHangingUpConference,
+ EPEStateSwappingConference,
+ EPEStateResumeHoldConference,
+ EPEStateGoingOneToOne,
+ EPEStateAddingConferenceMember,
+ EPEStateAddedConferenceMember,
+ EPEStateDroppingConferenceMember,
+ EPEStateDroppedConferenceMember,
+ // maximum value for boundary checks
+ EPEStateMaximumState = 1000
+ };
+
+NONSHARABLE_STRUCT( TPEErrorInfo )
+ {
+ //Symbian OS error code
+ TInt iErrorCode;
+ //Call Id number, equals KPECallIdNotUsed if call id is not available or is
+ //invalid for this error condition
+ TInt iCallId;
+ // Error type( Cch or Ccp )
+ TPEErrorType iErrorType;
+ };
+
+enum TPECallType
+ { // maintain compatibility with P&S type enum
+ // Used to initialize call type information
+ EPECallTypeUninitialized = EPSCTsyCallTypeUninitialized,
+ // Circuit switched voice call
+ EPECallTypeCSVoice = EPSCTsyCallTypeCSVoice,
+ // Circuit switched multimedia call
+ EPECallTypeVideo = EPSCTsyCallTypeH324Multimedia,
+ // Packet switched voice call
+ EPECallTypeVoIP = EPSCTsyCallTypeVoIP
+ };
+
+enum TPEPinCode
+ {
+ EPEPinCode,
+ EPEPin2Code
+ };
+
+enum TPEPhoneCommandType
+ {
+ EPESendingFlash
+ };
+
+// Enumeration which defines the search keys with which
+// contact information is searched
+enum TPEFindContactKey
+ {
+ //Search keys
+ EPEFindWithPhoneNumber = 0,
+ EPEFindWithContactId,
+ EPEFindKeyNotDefined
+ };
+
+enum TPESecurityCommand
+ {
+ EPESecurityCommandUnknown,
+ EPESecurityCommandChangePinCode,
+ EPESecurityCommandUnblockPinCode,
+ EPESecurityCommandChangeBarringPassword,
+ EPESecurityCommandChangeSimLock
+ };
+
+enum TPEPhoneNumberIdType
+ {
+ EPEUnknownNumber,
+ EPEMobileNumber,
+ EPEPager,
+ EPETelephoneNumber,
+ EPEVmbxNumberLine1,
+ EPEVmbxNumberLine2,
+ EPEPrivateNumber,
+ EPEEmergencyNumber,
+ EPEFaxNumber,
+ EPEVoipNumber,
+ EPEVideoNumber,
+ EPEAssistantNumber,
+ EPECarNumber,
+ EPEHomeNumber,
+ EPEWorkNumber
+ };
+
+enum TPERxTimeSlots
+ {
+ EPERxSlots1 = 1,
+ EPERxSlots2 = 2,
+ EPERxSlots3 = 3
+ };
+
+//VoiceMailBoxNumbers
+NONSHARABLE_STRUCT( TPEVoiceMailBoxNumberInfo )
+ {
+ TPEPhoneNumber iVMBXL1; // Line 1 VoiceMailBoxNumber
+ TPEPhoneNumber iVMBXL2; // Line 2 VoiceMailBoxNumber
+ TPEPhoneNumber iDTMFVMBXL1; // Line 1 DTMFVoiceMailBoxNumber
+ TPEPhoneNumber iDTMFVMBXL2; // Line 2 DTMFVoiceMailBoxNumber
+ };
+
+
+// Contains information of PhoneIdentity paramteres
+NONSHARABLE_STRUCT( TPEPhoneIdentityParameters )
+ {
+ TPEManufacturer iManufacturer;
+ TPEModel iModel;
+ TPERevision iRevision;
+ TPESerialNumber iSerialNumber;
+ };
+
+// Contains information of call audio route parameters
+NONSHARABLE_STRUCT( TPEPhoneAudioRouteParameters )
+ {
+ TPEAudioOutput iAudioOutput;
+ TPEAudioOutput iPreviousOutput;
+ TBool iShowNote;
+ };
+
+// Enumerate definitions for MMI Service Codes from MMETel API:
+
+// FUNCTION PROTOTYPES
+// None.
+
+// FORWARD DECLARATIONS
+
+class MPEEngineInfo;
+
+// CLASS DECLARATION
+
+/**
+* Offers message interface from phone engine to phone application.
+*
+* @lib phonenegine.lib
+* @since S60 v.4.0
+*/
+NONSHARABLE_CLASS( MEngineMonitor )
+ {
+
+ public:
+
+ enum TPEMessagesFromPhoneEngine
+ {
+ // Audio messages 1000 - 1999
+ EPEMessageAudioDtmfEvent = 1000,
+ EPEMessageAudioDTMFPlayComplete,
+ EPEMessageAudioMuteChanged,
+ EPEMessageAudioOutputChanged,
+ EPEMessageAudioOutputPreferenceChanged,
+ EPEMessageAudioPlayStopped,
+ EPEMessageAudioVolumeChanged,
+ EPEMessageAvailableAudioOutputsChanged,
+
+ // Call messages 2000 - 2999
+ EPEMessageAnswer = 2000,
+ EPEMessageAnswering,
+ EPEMessageCallAdded,
+ EPEMessageCallControlCapsChanged,
+ EPEMessageCallWaiting,
+ EPEMessageCallWaitingAnswered,
+ EPEMessageChangedCallDuration,
+ EPEMessageConferenceCapsChange,
+ EPEMessageConferenceIdle,
+ EPEMessageConnected,
+ EPEMessageConnectedConference,
+ EPEMessageConnecting,
+ EPEMessageContinuingDTMFSending,
+ EPEMessageDialing,
+ EPEMessageDialingError,
+ EPEMessageDisconnecting,
+ EPEMessageDisconnectingConference,
+ EPEMessageDisconnectingWithInband, //UI doesn't get this message, it is mapped as EPEMessageDisconnecting
+ EPEMessageDTMFSendingAborted,
+ EPEMessageHeld,
+ EPEMessageHeldConference,
+ EPEMessageIdle,
+ EPEMessageIncoming,
+ EPEMessageInitiatedEmergencyCall,
+ EPEMessageInitiatedEmergencyWhileActiveVideo,
+ EPEMessageInvalidSpeedDial,
+ EPEMessageIssuingUSSDRequest,
+ EPEMessageIssuedUSSDRequest,
+ EPEMessagePacketNetworkDetached,
+ EPEMessagePromptSpeedDial,
+ EPEMessageRemoteBusy,
+ EPEMessageRemoteTerminated,
+ EPEMessageSendingDTMF,
+ EPEMessageSentDTMF,
+ EPEMessageSentSSString,
+ EPEMessageSpeedDialNotAssigned,
+ EPEMessageStoppedDTMF,
+ EPEMessageSwapped,
+ EPEMessageTransferDone,
+ EPEMessageTransferring,
+ EPEMessageUnknown,
+ EPEMessageWentOneToOne,
+ EPEMessageRemotePartyInfoChanged,
+ EPEMessageConnectingWithInband, //UI doesn't get this message, it is mapped as EPEMessageConnecting
+
+ EPEMessageUnattendedTransferRequest,
+
+ EPEMessageRemoteForwarding,
+ EPEMessageMovedPermanently,
+ EPEMessageMultipleChoices,
+
+ // Contact messages 3000 - 3999
+ EPEMessageThumbnailLoadingCompleted = 3000,
+
+ // Error messages 4000 - 4999
+ EPEMessageError = 4000,
+ EPEMessageAudioHandlingError,
+ EPEMessageCallHandlingError,
+ EPEMessageConferenceErrorAddCall,
+ EPEMessageConferenceErrorRemoveCall,
+ EPEMessageConferenceErrorSwap,
+ EPEMessageConferenceErrorHold,
+ EPEMessageConferenceErrorResume,
+ EPEMessageConferenceErrorGoOneToOne,
+ EPEMessageConferenceErrorCurrentCallsToConference,
+ EPEMessageConferenceErrorHangUp,
+ EPEMessageContactHandlingError,
+ EPEMessageLogHandlingError,
+ EPEMessageServiceHandlingError,
+
+ // Network messages 5000 - 5999
+ EPEMessageCallSecureStatusChanged= 5000,
+ EPEMessageNetworkRegistrationStatusChange,
+
+ // Parser messages 6000 - 6999
+ EPEMessageActivateRfsDeep = 6000,
+ EPEMessageActivateRfsNormal,
+ EPEMessageActivateWarrantyMode,
+ EPEMessageShowBTDeviceAddress,
+ EPEMessageShowBTLoopback,
+ EPEMessageShowIMEI,
+ EPEMessageShowVersion,
+ EPEMessageShowWlanMacAddress,
+ EPEMessageSSRequestFailed,
+ EPEMessageBTDebugMode,
+
+ // Security messages 7000 - 7999
+ EPEMessageBadBarringPasswordChange = 7000,
+ EPEMessageBadPin1Change,
+ EPEMessageBadPin1Unblock,
+ EPEMessageBadPin2Change,
+ EPEMessageBadPin2Unblock,
+ EPEMessageBarringPasswordChanged,
+ EPEMessageChangedSimLock,
+ EPEMessageFailedChangeSimLock,
+ EPEMessageFailedNewPin1AndPin2NotEqual, // Error message, NewPin1 and NewPin2 are not equal
+ EPEMessageFailedSecurityCommandAlreadyActive, // Error message, SecurityCommand is already active
+ EPEMessagePin1Changed,
+ EPEMessagePin1Unblocked,
+ EPEMessagePin2Changed,
+ EPEMessagePin2Unblocked,
+ EPEMessageSIMChanged,
+ EPEMessageSIMStateChanged,
+
+ // Settings and Shared Data messages 8000 - 8999
+ EPEMessageProfileChanged = 8000,
+
+ // Startup messages 9000 - 9999
+ EPEMessagePEConstructionReady = 9000, // Phone Engine is initialized and fully operational
+ EPEMessagePEConstructionFailed,
+ EPEMessagePEConstructionTwoPhaseReady,
+ // Miscellaneous messages 10000 - 10999
+ EPEMessageDoNotSendMe = 10000,
+ EPEMessageInValidEmergencyNumber,
+ EPEMessageLogEventSaved,
+ EPEMessagePhoneIdentityReady,
+ EPEMessageStartATDialing,
+ EPEMessageValidEmergencyNumber,
+ EPEMessageMuteRingingTone,
+
+ // Audio messages 11000 - 11199
+
+ // Call messages 11200 - 11399
+ EPEMessageActiveBarring = KPEMessagesFromPhoneEngineGsmFirst + 200,
+ EPEMessageActiveCallForwarding,
+ EPEMessageAddedConferenceMember,
+ EPEMessageALSLineChanged,
+ EPEMessageCallBarred,
+ EPEMessageIncCallIsForw,
+ EPEMessageIncCallForwToC,
+ EPEMessageOutCallForwToC,
+ EPEMessageForwardUnconditionalModeActive,
+ EPEMessageForwardConditionallyModeActive,
+ EPEMessageDroppedConferenceMember,
+ EPEMessageGoingOneToOne,
+ EPEMessageRemoteCreatedConference,
+ EPEMessageRemoteHeld,
+ EPEMessageRemoteResumed,
+ EPEMessageTempClirSuppressUnsuccessful,
+ EPEMessageTempClirActivationUnsuccessful,
+ EPEMessageShowIncCallGroupIndex,
+ EPEMessageDataPortLoaned,
+ // Contact messages 11400 - 11599
+
+ // Error messages 11600 - 11799
+
+ // VoIP service messages 11800 - 12999
+ EPEMessageServiceEnabled = KPEMessagesFromPhoneEngineGsmFirst + 800,
+ EPEMessageServiceEnabling,
+ EPEMessageNoService,
+ EPEMessageServiceDisabled,
+
+ // Parser messages 12000 - 12199
+ EPEMessageIssuedSSRequest = KPEMessagesFromPhoneEngineGsmFirst + 1000,
+ EPEMessageIssuingSSRequest,
+
+ // Security messages 12200 - 12399
+ EPEMessageSecureNotSpecified,
+
+ // Settings and Shared Data messages 12400 - 12599
+ EPEMessageAlsStatusChanged = KPEMessagesFromPhoneEngineGsmFirst + 1400,
+ EPEMessageBarringNotification,
+ EPEMessageClipStatusNotification,
+ EPEMessageClirStatusNotification,
+ EPEMessageCnapStatusNotification,
+ EPEMessageColpStatusNotification,
+ EPEMessageColrStatusNotification,
+ EPEMessageForwardingNotification,
+ EPEMessageVmbxNumberLine1Changed,
+ EPEMessageVmbxNumberLine2Changed,
+ EPEMessageWaitingNotification,
+
+
+ // Miscellaneous messages 12600 - 12799
+
+ // Last 12999
+ // Exposing this allows the compiler to detect the overlapping enumerations.
+ EPEMessageLastVariantItem = KPEMessagesFromPhoneEngineGsmLast
+ };
+
+ /**
+ * HandleError
+ * Phone Application implements this callback method to provide a framework
+ * for proceeding in an error condition.
+ * @param aErrorInfo is the call id number.
+ */
+ virtual void HandleError( const TPEErrorInfo& aErrorInfo ) = 0;
+
+ /**
+ * HandleMessage
+ * Phone Application implements this callback method to provide a response
+ * for an event message sent by the Phone Engine.
+ * @param aMessage specifies the event that has taken place
+ * @param aCallId is the call id number.
+ */
+ virtual void HandleMessage( const TInt aMessage, const TInt aCallId ) = 0;
+
+ }; // MEngineMonitor
+
+
+// Maximum number of the conference members.
+const TInt KPEMaximumNumberOfConferenceMembers = 5;
+// Maximum number of voice calls
+const TInt KPEMaximumNumberOfVoiceCalls = 8; // Phone engine user can change this value if needed.
+// Maximum number of data calls
+const TInt KPEMaximumNumberOfDataCalls = 2;
+// Maximum number of conference calls
+const TInt KPEMaximumNumberOfConferenceCalls = 1;
+// Maximum number of all calls
+const TInt KPEMaximumNumberOfCalls = KPEMaximumNumberOfVoiceCalls +
+ KPEMaximumNumberOfDataCalls + KPEMaximumNumberOfConferenceCalls;
+
+// Emergency CallId
+const TInt KPEEmergencyCallId = KPEMaximumNumberOfVoiceCalls - 1;
+// Conference Call ID
+const TInt KPEConferenceCallID = KPEMaximumNumberOfVoiceCalls;
+
+// Invalid call index, note not the same as call id
+const TInt KPEInvalidCallIndex = -1;
+// These two are needed in TPECallInfo's conference field
+// Indicates, that this is Conference Master
+const TInt KPEConferenceMaster = -1;
+// Indicates, that this is Normal voice call
+const TInt KPENormalVoiceCall = -2;
+
+// All MMI Service Codes are defined in standard 3GPP TS 02.30 V7.1.1, Annex C.
+// MMI Service Codes: No service code was specified
+_LIT( KPENoServiceCode, "" );
+// MMI Service Codes: All teleservices
+_LIT( KPEAllTeleservices, "10" );
+// MMI Service Codes: Voice teleservices
+_LIT( KPETelephony, "11" );
+// MMI Service Codes: All Data Services
+_LIT( KPEAllDataServices, "12" );
+// MMI Service Codes: Fax Services
+_LIT( KPEFacsimileServices, "13" );
+// MMI Service Codes: SMS Services
+_LIT( KPEShortMessageServices, "16" );
+// MMI Service Codes: Voice Group Call Service
+_LIT( KPEVoiceGroupCallService, "17" );
+// MMI Service Codes: Voice Broadcast Service
+_LIT( KPEVoiceBroadcastService, "18" );
+// MMI Service Codes: All teleservices except SMS
+_LIT( KPEAllTeleservicesExceptSMS, "19" );
+// MMI Service Codes: All Bearer Service
+_LIT( KPEAllBearerServices, "20" );
+// MMI Service Codes: All Async Services
+_LIT( KPEAllAsyncServices, "21" );
+// MMI Service Codes: All Sync Services
+_LIT( KPEAllSyncServices, "22" );
+// MMI Service Codes: All Data Circuit Sync
+_LIT( KPEAllDataCircuitSync, "24" );
+// MMI Service Codes: All Data Circuit Async
+_LIT( KPEAllDataCircuitAsync, "25" );
+// MMI Service Codes: All Dedicated Packet Access
+_LIT( KPEAllDedicatedPacketAccess, "26" );
+// MMI Service Codes: All Dedicated Pad Access
+_LIT( KPEAllDedicatedPadAccess, "27" );
+// MMI Service Codes: All Gprs Beares Services
+_LIT( KPEAllGprsBearerServices, "99" );
+// MMI Service Codess: PLMN specific teleservices
+_LIT( KPEAllPlmnSpecificTeleservices, "50" );
+_LIT( KPEPlmnSpecificTeleservice1, "51" );
+_LIT( KPEPlmnSpecificTeleservice2, "52" );
+_LIT( KPEPlmnSpecificTeleservice3, "53" );
+_LIT( KPEPlmnSpecificTeleservice4, "54" );
+_LIT( KPEPlmnSpecificTeleservice5, "55" );
+_LIT( KPEPlmnSpecificTeleservice6, "56" );
+_LIT( KPEPlmnSpecificTeleservice7, "57" );
+_LIT( KPEPlmnSpecificTeleservice8, "58" );
+_LIT( KPEPlmnSpecificTeleservice9, "59" );
+_LIT( KPEPlmnSpecificTeleservice10, "60" );
+_LIT( KPEPlmnSpecificTeleservice11, "61" );
+_LIT( KPEPlmnSpecificTeleservice12, "62" );
+_LIT( KPEPlmnSpecificTeleservice13, "63" );
+_LIT( KPEPlmnSpecificTeleservice14, "64" );
+_LIT( KPEPlmnSpecificTeleservice15, "65" );
+// MMI Service Codess: PLMN specific bearer services
+_LIT( KPEAllPlmnSpecificBearerServices, "70" );
+_LIT( KPEPlmnSpecificBearerService1, "71" );
+_LIT( KPEPlmnSpecificBearerService2, "72" );
+_LIT( KPEPlmnSpecificBearerService3, "73" );
+_LIT( KPEPlmnSpecificBearerService4, "74" );
+_LIT( KPEPlmnSpecificBearerService5, "75" );
+_LIT( KPEPlmnSpecificBearerService6, "76" );
+_LIT( KPEPlmnSpecificBearerService7, "77" );
+_LIT( KPEPlmnSpecificBearerService8, "78" );
+_LIT( KPEPlmnSpecificBearerService9, "79" );
+_LIT( KPEPlmnSpecificBearerService10, "80" );
+_LIT( KPEPlmnSpecificBearerService11, "81" );
+_LIT( KPEPlmnSpecificBearerService12, "82" );
+_LIT( KPEPlmnSpecificBearerService13, "83" );
+_LIT( KPEPlmnSpecificBearerService14, "84" );
+_LIT( KPEPlmnSpecificBearerService15, "85" );
+// ALS
+_LIT( KPEAuxVoiceService, "89" );
+
+//Fax Modem UI application UID
+const TInt KPEFaxModemUIUid = 0x1000594E;
+// TPESimState fisrt value
+const TInt KPEStartupEnumerationFirstValue = 100;
+
+// Indicates that dtmf sending is possible with this call.
+const TUint KPECapsDtmf = 0x00080000;
+
+// SIM states
+enum TPESimState
+ {
+ EPESimStatusUninitialized = KPEStartupEnumerationFirstValue,
+ EPESimUsable, // The Sim card is fully usable.
+ EPESimReadable, // The SIM card is not fully usable, but the emergency number can be read.
+ EPESimNotReady, // The Sim card is present but not ready or usable.
+ EPESimNotPresent, // The Sim card is not present.
+ EPESimNotSupported // SIM/RUIM is not supported. Some CDMA phones do not support a SIM/RUIM at all.
+ };
+
+// Supplementary Services action type
+enum TPESSAction
+ {
+ EPESSActionUnspecified = 0,
+ EPESSActivation,
+ EPESSDeactivation,
+ EPESSInterrogation,
+ EPESSRegistration,
+ EPESSErasure,
+ EPEPasswordOperation
+ };
+
+// Supplementary Services type
+enum TPESSType
+ {
+ EPESSTypeUnspecified = 0,
+ EPECallForwardingNotReachable,
+ EPECallForwardingNoReply,
+ EPECallForwardingBusy,
+ EPECallForwardingUnconditional,
+ EPECallForwardingAll,
+ EPECallForwardingAllConditional,
+ EPECallBarringAllOutgoing,
+ EPECallBarringAllOutgoingInternational,
+ EPECallBarringAllOutgoingInternationalExcHome,
+ EPECallBarringAllIncoming,
+ EPECallBarringAllIncomingWhenRoaming,
+ EPECallBarringAllServices,
+ EPECallBarringAllOutgoingServices,
+ EPECallBarringAllIncomingServices,
+ EPECallBarringPassword,
+ EPECallWaiting,
+ EPEClip,
+ EPEClir,
+ EPECnap,
+ EPEColp,
+ EPEColr,
+ EPEEmlpp,
+ EPEMsp,
+ EPESpnp,
+ EPEPin,
+ EPEUnblockPin,
+ EPESimLock
+ };
+
+//Forwarded information definition
+NONSHARABLE_STRUCT( TPEForwardedInfo )
+ {
+ RMobilePhone::TMobilePhoneCFCondition iCondition;
+ RMobilePhone::TMobileService iServiceGroup;
+ RMobilePhone::TMobilePhoneCFStatus iStatus;
+ TPEPhoneNumber iPhoneNumber;
+ TInt iTimeout;
+ };
+
+// Forwarding information definition
+NONSHARABLE_STRUCT( TPEForwardingInfo )
+ {
+ TInt iGroupCount;
+ TFixedArray<TPEForwardedInfo, KPEMaxServiceGroup> iForwardedInfo;
+ };
+
+NONSHARABLE_STRUCT( TPEActiveForwardInfo )
+ {
+ RMobilePhone::TMobilePhoneCFActive iActiveType;
+ RMobilePhone::TMobileService iServiceGroup;
+ };
+
+//Wait information definition
+NONSHARABLE_STRUCT( TPEWaitInfo )
+ {
+ RMobilePhone::TMobileService iServiceGroup;
+ RMobilePhone::TMobilePhoneCWStatus iStatus;
+ };
+
+// Waiting information definition
+NONSHARABLE_STRUCT( TPEWaitingInfo )
+ {
+ TInt iGroupCount;
+ TFixedArray<TPEWaitInfo, KPEMaxServiceGroup> iWaitInfo;
+ };
+
+//Barred information definition
+NONSHARABLE_STRUCT( TPEBarredInfo )
+ {
+ RMobilePhone::TMobilePhoneCBCondition iCondition;
+ RMobilePhone::TMobileService iServiceGroup;
+ RMobilePhone::TMobilePhoneCBStatus iStatus;
+ };
+
+// Barring information definition
+NONSHARABLE_STRUCT( TPEBarringInfo )
+ {
+ TInt iGroupCount;
+ TFixedArray<TPEBarredInfo, KPEMaxServiceGroup> iBarredInfo;
+ };
+
+// Contains information of the Suplementary Services command.
+NONSHARABLE_STRUCT( TPESSCommandInfo ) // For SS Commands.
+ {
+ TPESSAction action; // SS Action
+ /*RMobilePhone::TMobileService*/ TInt group; // MMI Service Code
+ TPESSType type; // Supplementary Services type
+ };
+
+NONSHARABLE_STRUCT( TPEConferenceMemberInfo )
+ {
+ TName iConferenceMemberName;
+ TInt iConferenceMemberId;
+ };
+
+/**
+ * Offers message interface from phone application to phone engine.
+ *
+ * ?more_complete_description
+ *
+ * @lib phoneengine
+ * @since S60 v4.0
+ */
+NONSHARABLE_CLASS( MPEPhoneModel )
+ {
+public:
+
+ typedef TInt TPEMessagesToPhoneEngine;
+
+ enum
+ {
+ // Audio messages 1000 - 1999
+ EPEMessageSetAudioMute = 1000,
+ EPEMessageSetAudioVolume,
+ EPEMessageSetAudioOutput,
+
+ // Call messages 2000 - 2999
+ EPEMessageAnswer = 2000,
+ EPEMessageClientDial,
+ EPEMessageContinueDTMFSending,
+ EPEMessageDial,
+ EPEMessagePlayDTMF,
+ EPEMessageEndDTMF,
+ EPEMessagePhoneNumberEdited,
+ EPEMessageRelease,
+ EPEMessageReleaseAll,
+ EPEMessageReject,
+ EPEMessageSendDTMF,
+ EPEMessageStopDTMFSending,
+ EPEMessageStopTonePlay,
+ EPEMessageAutomaticAnswerOff, //UI sends when soft reject is needed
+ EPEMessageTerminateAllConnections,
+ EPEMessageSetSwitchToCallFlag,
+ EPEMessageSwitchToVideoOrVoice,
+ EPEMessageSatCallRequestCompleted,
+ EPEMessageClientDialEmergency,
+ EPEMessageReplaceActive,
+ EPEMessageContinueEmergencyCallInitialization,
+ EPEMessageAcceptUnattendedTransfer,
+ EPEMessageRejectUnattendedTransfer,
+
+ EPEMessageDoUnattendedTransfer,
+ EPEMessageForwardCallToAddress,
+
+ // Contact messages 3000 - 3999
+
+ // Error messages 4000 - 4999
+
+ // Network messages 5000 - 5999
+
+ // Parser messages 6000 - 6999
+
+ // Security messages 7000 - 7999
+
+ // Service messages 8000 - 8999
+ EPEMessageDisableService = 8000,
+
+ // Startup messages 9000 - 9999
+ EPEMessagePEConstructionReady = 9000,
+
+ // Miscellaneous messages 10000 - 10999
+ EPEMessageCheckEmergencyNumber = 10000 // Request engine to check is entered number emergency.
+
+ // Variant messages 11000 - 12999
+ // From KPEMessagesToPhoneEngineGsmFirst
+ // to KPEMessagesToPhoneEngineGsmLast
+ };
+
+ virtual ~MPEPhoneModel() {};
+
+ /**
+ * Returns pointer to information object (CPEEngineInfo)
+ *
+ * @since S60 v4.0
+ * @return Return pointer to CPEEngineInfo object
+ */
+ virtual MPEEngineInfo* EngineInfo() = 0;
+
+ /**
+ * Reroutes messages from the phone application to the message handler
+ *
+ * @since S60 v4.0
+ * @param aMessage is the message code
+ */
+ virtual void HandleMessage( const TInt aMessage ) = 0;
+
+ /**
+ * Returns the name of the specified message to PhoneEngine
+ *
+ * @since S60 v4.0
+ * @param aMessage is the message code
+ * @return String containing the name of the message
+ */
+ virtual TPtrC NameByMessageToPhoneEngine( const TInt aMessage ) const = 0;
+
+ /**
+ * Returns the name of the specified message from PhoneEngine
+ *
+ * @param aMessage is the message code
+ * @return String containing the name of the message
+ */
+ virtual TPtrC NameByMessageFromPhoneEngine( const TInt aMessage ) const = 0;
+
+ }; // MPEPhoneModel
+
+/**
+* Utility class for call id.
+*
+* @lib PhoneEngine.lib
+*/
+NONSHARABLE_CLASS( CallIdCheck )
+ {
+ public:
+ static inline TBool IsValid( TInt aCallId )
+ {
+ return aCallId >= 0 && aCallId < KPEMaximumNumberOfCalls;
+ }
+ static inline TBool IsVoice( TInt aCallId )
+ {
+ return aCallId >= 0 && aCallId < KPEMaximumNumberOfVoiceCalls;
+ }
+ static inline TBool IsConference( TInt aCallId )
+ {
+ return aCallId >= KPEMaximumNumberOfVoiceCalls &&
+ aCallId < ( KPEMaximumNumberOfVoiceCalls + KPEMaximumNumberOfConferenceCalls );
+ }
+ static inline TBool IsVideo( TInt aCallId )
+ {
+ return aCallId >= ( KPEMaximumNumberOfVoiceCalls + KPEMaximumNumberOfConferenceCalls )
+ && aCallId < ( KPEMaximumNumberOfVoiceCalls + KPEMaximumNumberOfConferenceCalls +
+ KPEMaximumNumberOfDataCalls );
+ }
+ };
+
+#endif // PEVIRTUALENGINE_H
+
+//End of file