/*
* 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,
EPEMessageColpNumberAvailable,
// 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