--- a/phoneengine/phonemodel/src/cpephonemodel.cpp Fri May 14 15:51:57 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1517 +0,0 @@
-/*
-* Copyright (c) 2004-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 module contains the implementation of CPEPhoneModel class
- member functions.
-*
-*/
-
-
-// INCLUDE FILES
-#include "cpeactivestarter.h"
-#include "cpeexternaldatahandler.h"
-#include "cpeidlestatusmonitor.h"
-#include "cpemessagehandler.h"
-#include "cpephonemodel.h"
-#include "cpeservicehandling.h"
-#include "cpesimstatemonitor.h"
-#include "pepanic.pan"
-#include "cperemotepartyinfomediator.h"
-
-#include <ccce.h>
-#include <cpeaudiodata.h>
-#include <cpecallhandling.h>
-#include <cpecontacthandlingproxy.h>
-#include <cpeengineinfo.h>
-#include <cpegsmaudiodata.h>
-#include <cpeloghandlingproxy.h>
-#include <featmgr.h>
-#include <mccedtmfinterface.h>
-#include <mpecontacthandling.h>
-#include <mpeloghandling.h>
-#include <xqservicerequest.h>
-#include "phoneservices.h"
-#include "parserrecognizer.h"
-
-// CONSTANTS
-const TInt KDriveProfile ( 6 );
-const TInt KPECallTimerOff = 0;
-
-// ==================== LOCAL FUNCTIONS ====================
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::CPEPhoneModel
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CPEPhoneModel::CPEPhoneModel(
- MEngineMonitor& aEngineMonitor // The reference parameter for phone application communication
- ) : CPEPhoneModelIF(),
- iEngineMonitor( aEngineMonitor ),
- iStep( 0 )
- {
- }
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::CPEPhoneModel
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CPEPhoneModel::CPEPhoneModel(
- MEngineMonitor& aEngineMonitor , // The reference parameter for phone application communication
- CPEAudioFactory& aAudioFactory
- ) : CPEPhoneModelIF(),
- iEngineMonitor( aEngineMonitor ),
- iStep( 0 ),
- iAudioFactory( &aAudioFactory )
- {
- }
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::ConstructL
-// EPOC default constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CPEPhoneModel::ConstructL()
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 1" );
- iEngineInfo = CPEEngineInfo::NewL();
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 2" );
- User::LeaveIfError( iFsSession.Connect() );
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 3" );
- FeatureManager::InitializeLibL();
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 4" );
- iActiveStarter = CPEActiveStarter::NewL( this );
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 5" );
- iActiveStarter->StartUp();
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 6" );
- }// ConstructL
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CPEPhoneModel* CPEPhoneModel::NewL(
- MEngineMonitor& aEngineMonitor //for phone application communication
- )
- {
- CPEPhoneModel* self = new ( ELeave ) CPEPhoneModel( aEngineMonitor );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }// NewL
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::NewL
-// Two-phased constructor for module testing.
-// -----------------------------------------------------------------------------
-//
-CPEPhoneModel* CPEPhoneModel::NewL(
- MEngineMonitor& aEngineMonitor,
- CPEAudioFactory& aAudioFactory )
- {
- CPEPhoneModel* self =
- new ( ELeave ) CPEPhoneModel( aEngineMonitor, aAudioFactory );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// Destructor
-CPEPhoneModel::~CPEPhoneModel()
- {
- delete iMediatorCommunicationHandler;
- delete iSimChangedMonitor;
- delete iMessageHandler;
- delete iServiceHandling;
- delete iSimStatusMonitor;
- delete iContactHandling;
- delete iLogHandling;
- delete iAudioData;
- delete iCallHandling;
- delete iExternalDataHandler;
- delete iCallStackCutter;
-
- if ( iActiveStarter )
- {
- delete iActiveStarter;
- }
-
- FeatureManager::UnInitializeLib();
- iFsSession.Close();
- delete iEngineInfo;
- delete iConvergedCallEngine;
- if ( iIdleStatusMonitor )
- {
- delete iIdleStatusMonitor;
- }
- delete iPhoneServices;
- delete iParserRecognizer;
- }// ~CPEPhoneModel
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::EngineInfo
-// Returns the pointer of the CPEEngineInfo object.
-// -----------------------------------------------------------------------------
-//
-MPEEngineInfo* CPEPhoneModel::EngineInfo()
- {
- return iEngineInfo;
- }
-
-// -----------------------------------------------------------------------------
-// Returns the pointer of the CPEEngineInfo object.
-// -----------------------------------------------------------------------------
-//
-MPEDataStore* CPEPhoneModel::DataStore()
- {
- return iEngineInfo;
- }
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::DataStoreExt
-// Returns the pointer to CPEExternalDataHandler object
-// -----------------------------------------------------------------------------
-//
-MPEExternalDataHandler* CPEPhoneModel::DataStoreExt()
- {
- return iExternalDataHandler;
- }
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::MediatorCommandHandler
-// Returns the pointer to CPERemotePartyInfoMediator object
-// -----------------------------------------------------------------------------
-//
-CPERemotePartyInfoMediator* CPEPhoneModel::MediatorCommunicationHandler()
- {
- return iMediatorCommunicationHandler;
- }
-
-
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::NameByMessageToPhoneEngine
-// Return message name, given the id of message.
-// -----------------------------------------------------------------------------
-//
-#ifdef TEF_LOGGING_ENABLED
-TPtrC CPEPhoneModel::NameByMessageToPhoneEngine(
- const MPEPhoneModel::TPEMessagesToPhoneEngine aMessage
- ) const
- {
- switch ( aMessage )
- {
- // Audio messages 1000 - 1999
- case MPEPhoneModel::EPEMessageSetAudioMute:
- return MESSAGE("EPEMessageSetAudioMute");
- case MPEPhoneModel::EPEMessageSetAudioVolume:
- return MESSAGE("EPEMessageSetAudioVolume");
- case MPEPhoneModel::EPEMessageSetAudioOutput:
- return MESSAGE("EPEMessageSetAudioOutput");
-
- // Call messages 2000 - 2999
- case MPEPhoneModel::EPEMessageAnswer:
- return MESSAGE("EPEMessageAnswer");
- case MPEPhoneModel::EPEMessageClientDial:
- return MESSAGE("EPEMessageClientDial");
- case MPEPhoneModel::EPEMessageClientDialEmergency:
- return MESSAGE("EPEMessageClientDialEmergency");
- case MPEPhoneModel::EPEMessageDialServiceCall:
- return MESSAGE("EPEMessageDialServiceCall");
- case MPEPhoneModel::EPEMessageContinueEmergencyCallInitialization:
- return MESSAGE("EPEMessageContinueEmergencyCallInitialization");
- case MPEPhoneModel::EPEMessageContinueDTMFSending:
- return MESSAGE("EPEMessageContinueDTMFSending");
- case MPEPhoneModel::EPEMessageDial:
- return MESSAGE("EPEMessageDial");
- case MPEPhoneModel::EPEMessagePlayDTMF:
- return MESSAGE("EPEMessagePlayDTMF");
- case MPEPhoneModel::EPEMessageEndDTMF:
- return MESSAGE("EPEMessageEndDTMF");
- case MPEPhoneModel::EPEMessagePhoneNumberEdited:
- return MESSAGE("EPEMessagePhoneNumberEdited");
- case MPEPhoneModel::EPEMessageRelease:
- return MESSAGE("EPEMessageRelease");
- case MPEPhoneModel::EPEMessageReleaseAll:
- return MESSAGE("EPEMessageReleaseAll");
- case MPEPhoneModel::EPEMessageReject:
- return MESSAGE("EPEMessageReject");
- case MPEPhoneModel::EPEMessageSendDTMF:
- return MESSAGE("EPEMessageSendDTMF");
- case MPEPhoneModel::EPEMessageStopDTMFSending:
- return MESSAGE("EPEMessageStopDTMFSending");
- case MPEPhoneModel::EPEMessageStopTonePlay:
- return MESSAGE("EPEMessageStopTonePlay");
- case MPEPhoneModel::EPEMessageAutomaticAnswerOff:
- return MESSAGE("EPEMessageAutomaticAnswerOff");
- case MPEPhoneModel::EPEMessageTerminateAllConnections:
- return MESSAGE("EPEMessageTerminateAllConnections");
- case MPEPhoneModel::EPEMessageSatCallRequestCompleted:
- return MESSAGE("EPEMessageSatCallRequestCompleted");
-
- case MPEPhoneModel::EPEMessageAcceptUnattendedTransfer:
- return MESSAGE("EPEMessageAcceptUnattendedTransfer");
- case MPEPhoneModel::EPEMessageRejectUnattendedTransfer:
- return MESSAGE("EPEMessageRejectUnattendedTransfer");
-
- case MPEPhoneModel::EPEMessageDoUnattendedTransfer:
- return MESSAGE("EPEMessageDoUnattendedTransfer");
- case MPEPhoneModel::EPEMessageForwardCallToAddress:
- return MESSAGE("EPEMessageForwardCallToAddress");
-
- // Contact messages 3000 - 3999
-
- // Error messages 4000 - 4999
-
- // Network messages 5000 - 5999
-
- // Parser messages 6000 - 6999
-
- // Security messages 7000 - 7999
-
- // Settings and Shared Data messages 8000 - 8999
-
- // Service messages 8000 - 8999
- case MPEPhoneModel::EPEMessageDisableService:
- return MESSAGE("EPEMessageDisableService");
- // Startup messages 9000 - 9999
- case MPEPhoneModel::EPEMessagePEConstructionReady:
- return MESSAGE("EPEMessagePEConstructionReady");
-
- // Miscellaneous messages 10000 - 10999
- case MPEPhoneModel::EPEMessageCheckEmergencyNumber:
- return MESSAGE("EPEMessageCheckEmergencyNumber");
-
- // Variant messages 11000 - 12999
-
- // Audio messages 11000 - 11199
-
- // Call messages 11200 - 11399
- case CPEPhoneModelIF::EPEMessageAddConferenceMember:
- return MESSAGE("EPEMessageAddConferenceMember");
- case CPEPhoneModelIF::EPEMessageCreateConference:
- return MESSAGE("EPEMessageCreateConference");
- case CPEPhoneModelIF::EPEMessageDropConferenceMember:
- return MESSAGE("EPEMessageDropConferenceMember");
- case CPEPhoneModelIF::EPEMessageGoOneToOne:
- return MESSAGE("EPEMessageGoOneToOne");
- case CPEPhoneModelIF::EPEMessageHangUpConference:
- return MESSAGE("EPEMessageHangUpConference");
- case CPEPhoneModelIF::EPEMessageHold:
- return MESSAGE("EPEMessageHold");
- case CPEPhoneModelIF::EPEMessageHoldConference:
- return MESSAGE("EPEMessageHoldConference");
- case CPEPhoneModelIF::EPEMessageResume:
- return MESSAGE("EPEMessageResume");
- case CPEPhoneModelIF::EPEMessageResumeConference:
- return MESSAGE("EPEMessageResumeConference");
- case CPEPhoneModelIF::EPEMessageSwap:
- return MESSAGE("EPEMessageSwap");
- case CPEPhoneModelIF::EPEMessageSwapConference:
- return MESSAGE("EPEMessageSwapConference");
- case CPEPhoneModelIF::EPEMessageTransfer:
- return MESSAGE("EPEMessageTransfer");
- case CPEPhoneModelIF::EPEMessageSwitchToVideoOrVoice:
- return MESSAGE("EPEMessageSwitchToVideoOrVoice");
-
- // Contact messages 11400 - 11599
-
- // Error messages 11600 - 11799
-
- // Network messages 11800 - 12999
-
- // Parser messages 12000 - 12199
- case CPEPhoneModelIF::EPEMessageCancelSSstringCommand:
- return MESSAGE("EPEMessageCancelSSstringCommand");
-
- // Security messages 12200 - 12399
-
- // Settings and Shared Data messages 12400 - 12599
-
- // Miscellaneous messages 12600 - 12799
-
- default:
- TEFLOGSTRING2( KTAINT, "pe:cpephonemodel::namebymessagetophoneengine, unknown message = %d", static_cast<TInt>(aMessage));
- return MESSAGE("Unknown message");
- }
- }
-#else
-TPtrC CPEPhoneModel::NameByMessageToPhoneEngine(
- const TInt /*aMessage*/ ) const
- {
- return MESSAGE("Not available");
- }
-#endif // TEF_LOGGING_ENABLED
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::NameByMessageFromPhoneEngine
-// Return message name, given the id of message.
-// -----------------------------------------------------------------------------
-//
-#ifdef TEF_LOGGING_ENABLED
-TPtrC CPEPhoneModel::NameByMessageFromPhoneEngine(
- const TInt aMessage ) const
- {
- switch ( aMessage )
- {
- // Audio messages 1000 - 1999
- case MEngineMonitor::EPEMessageAudioDtmfEvent:
- return MESSAGE("EPEMessageAudioDtmfEvent");
- case MEngineMonitor::EPEMessageAudioDTMFPlayComplete:
- return MESSAGE("EPEMessageAudioDTMFPlayComplete");
- case MEngineMonitor::EPEMessageAudioOutputPreferenceChanged:
- return MESSAGE("EPEMessageAudioOutputPreferenceChanged");
- case MEngineMonitor::EPEMessageAudioMuteChanged:
- return MESSAGE("EPEMessageAudioMuteChanged");
- case MEngineMonitor::EPEMessageAudioOutputChanged:
- return MESSAGE("EPEMessageAudioOutputChanged");
- case MEngineMonitor::EPEMessageAvailableAudioOutputsChanged:
- return MESSAGE("EPEMessageAvailableAudioOutputsChanged");
- case MEngineMonitor::EPEMessageAudioPlayStopped:
- return MESSAGE("EPEMessageAudioPlayStopped");
- case MEngineMonitor::EPEMessageAudioVolumeChanged:
- return MESSAGE("EPEMessageAudioVolumeChanged");
-
- // Call messages 2000 - 2999
- case MEngineMonitor::EPEMessageAnswer:
- return MESSAGE("EPEMessageAnswer");
- case MEngineMonitor::EPEMessageAnswering:
- return MESSAGE("EPEMessageAnswering");
- case MEngineMonitor::EPEMessageCallControlCapsChanged:
- return MESSAGE("EPEMessageCallControlCapsChanged");
- case MEngineMonitor::EPEMessageCallWaiting:
- return MESSAGE("EPEMessageCallWaiting");
- case MEngineMonitor::EPEMessageCallWaitingAnswered:
- return MESSAGE("EPEMessageCallWaitingAnswered");
- case MEngineMonitor::EPEMessageChangedCallDuration:
- return MESSAGE("EPEMessageChangedCallDuration");
- case MEngineMonitor::EPEMessageConferenceIdle:
- return MESSAGE("EPEMessageConferenceIdle");
- case MEngineMonitor::EPEMessageConferenceCapsChange:
- return MESSAGE("EPEMessageConferenceCapsChange");
- case MEngineMonitor::EPEMessageConnected:
- return MESSAGE("EPEMessageConnected");
- case MEngineMonitor::EPEMessageConnectedConference:
- return MESSAGE("EPEMessageConnectedConference");
- case MEngineMonitor::EPEMessageConnecting:
- return MESSAGE("EPEMessageConnecting");
- case MEngineMonitor::EPEMessageDialing:
- return MESSAGE("EPEMessageDialing");
- case MEngineMonitor::EPEMessageDialingError:
- return MESSAGE("EPEMessageDialingError");
- case MEngineMonitor::EPEMessageDisconnecting:
- return MESSAGE("EPEMessageDisconnecting");
- case MEngineMonitor::EPEMessageDisconnectingConference:
- return MESSAGE("EPEMessageDisconnectingConference");
- case MEngineMonitor::EPEMessageDTMFSendingAborted:
- return MESSAGE("EPEMessageDTMFSendingAborted");
- case MEngineMonitor::EPEMessageHeld:
- return MESSAGE("EPEMessageHeld");
- case MEngineMonitor::EPEMessageHeldConference:
- return MESSAGE("EPEMessageHeldConference");
- case MEngineMonitor::EPEMessageIdle:
- return MESSAGE("EPEMessageIdle");
- case MEngineMonitor::EPEMessageIncoming:
- return MESSAGE("EPEMessageIncoming");
- case MEngineMonitor::EPEMessageInitiatedEmergencyCall:
- return MESSAGE("EPEMessageInitiatedEmergencyCall");
- case MEngineMonitor::EPEMessageInitiatedEmergencyWhileActiveVideo:
- return MESSAGE("EPEMessageInitiatedEmergencyWhileActiveVideo");
- case MEngineMonitor::EPEMessagePacketNetworkDetached:
- return MESSAGE("EPEMessagePacketNetworkDetached");
- case MEngineMonitor::EPEMessageRemoteBusy:
- return MESSAGE("EPEMessageRemoteBusy");
- case MEngineMonitor::EPEMessageSendingDTMF:
- return MESSAGE("EPEMessageSendingDTMF");
- case MEngineMonitor::EPEMessageSentDTMF:
- return MESSAGE("EPEMessageSentDTMF");
- case MEngineMonitor::EPEMessageSentSSString:
- return MESSAGE("EPEMessageSentSSString");
- case MEngineMonitor::EPEMessageStoppedDTMF:
- return MESSAGE("EPEMessageStoppedDTMF");
- case MEngineMonitor::EPEMessageSwapped:
- return MESSAGE("EPEMessageSwapped");
- case MEngineMonitor::EPEMessageTransferDone:
- return MESSAGE("EPEMessageTransferDone");
- case MEngineMonitor::EPEMessageWentOneToOne:
- return MESSAGE("EPEMessageWentOneToOne");
- case MEngineMonitor::EPEMessageDisconnectingWithInband:
- return MESSAGE("EPEMessageDisconnectingWithInband");
- case MEngineMonitor::EPEMessageContinuingDTMFSending:
- return MESSAGE("EPEMessageContinuingDTMFSending");
- case MEngineMonitor::EPEMessageCallAdded:
- return MESSAGE("EPEMessageCallAdded");
- case MEngineMonitor::EPEMessageRemoteTerminated:
- return MESSAGE("EPEMessageRemoteTerminated");
- case MEngineMonitor::EPEMessageShowIMEI:
- return MESSAGE("EPEMessageShowIMEI");
- case MEngineMonitor::EPEMessageUnknown:
- return MESSAGE("EPEMessageUnknown");
- case MEngineMonitor::EPEMessagePromptSpeedDial:
- return MESSAGE("EPEMessagePromptSpeedDial");
- case MEngineMonitor::EPEMessageSpeedDialNotAssigned:
- return MESSAGE("EPEMessageSpeedDialNotAssigned");
- case MEngineMonitor::EPEMessageInvalidSpeedDial:
- return MESSAGE("EPEMessageInvalidSpeedDial");
- case MEngineMonitor::EPEMessageDataPortLoaned:
- return MESSAGE("EPEMessageDataPortLoaned");
-
- case MEngineMonitor::EPEMessageUnattendedTransferRequest:
- return MESSAGE("EPEMessageUnattendedTransferRequest");
- case MEngineMonitor::EPEMessageRemoteForwarding:
- return MESSAGE("EPEMessageRemoteForwarding");
- case MEngineMonitor::EPEMessageMovedPermanently:
- return MESSAGE("EPEMessageMovedPermanently");
- case MEngineMonitor::EPEMessageMultipleChoices:
- return MESSAGE("EPEMessageMultipleChoices");
- case MEngineMonitor::EPEMessageRemotePartyInfoChanged:
- return MESSAGE("EPEMessageRemotePartyInfoChanged");
- case MEngineMonitor::EPEMessageConnectingWithInband:
- return MESSAGE("EPEMessageConnectingWithInband");
-
- // Contact messages 3000 - 3999
- case MEngineMonitor::EPEMessageThumbnailLoadingCompleted:
- return MESSAGE("EPEMessageThumbnailLoadingCompleted");
-
- // Error messages 4000 - 4999
- case MEngineMonitor::EPEMessageError:
- return MESSAGE("EPEMessageError");
- case MEngineMonitor::EPEMessageAudioHandlingError:
- return MESSAGE("EPEMessageAudioHandlingError");
- case MEngineMonitor::EPEMessageCallHandlingError:
- return MESSAGE("EPEMessageCallHandlingError");
- case MEngineMonitor::EPEMessageContactHandlingError:
- return MESSAGE("EPEMessageContactHandlingError");
- case MEngineMonitor::EPEMessageLogHandlingError:
- return MESSAGE("EPEMessageLogHandlingError");
-
- case MEngineMonitor::EPEMessageServiceHandlingError:
- return MESSAGE("EPEMessageServiceHandlingError");
- // Network messages 5000 - 5999
- case MEngineMonitor::EPEMessageCallSecureStatusChanged:
- return MESSAGE("EPEMessageCallSecureStatusChanged");
- case MEngineMonitor::EPEMessageNetworkRegistrationStatusChange:
- return MESSAGE("EPEMessageNetworkRegistrationStatusChange");
-
- // Parser messages 6000 - 6999
- case MEngineMonitor::EPEMessageSSRequestFailed:
- return MESSAGE("EPEMessageSSRequestFailed");
-
- // Security messages 7000 - 7999
- case MEngineMonitor::EPEMessageBadBarringPasswordChange:
- return MESSAGE("EPEMessageBadBarringPasswordChange");
- case MEngineMonitor::EPEMessageBadPin1Change:
- return MESSAGE("EPEMessageBadPin1Change");
- case MEngineMonitor::EPEMessageBadPin2Change:
- return MESSAGE("EPEMessageBadPin2Change");
- case MEngineMonitor::EPEMessageBadPin1Unblock:
- return MESSAGE("EPEMessageBadPin1Unblock");
- case MEngineMonitor::EPEMessageBadPin2Unblock:
- return MESSAGE("EPEMessageBadPin2Unblock");
- case MEngineMonitor::EPEMessageBarringPasswordChanged:
- return MESSAGE("EPEMessageBarringPasswordChanged");
- case MEngineMonitor::EPEMessageChangedSimLock:
- return MESSAGE("EPEMessageChangedSimLock");
- case MEngineMonitor::EPEMessageFailedChangeSimLock:
- return MESSAGE("EPEMessageFailedChangeSimLock");
- case MEngineMonitor::EPEMessageFailedNewPin1AndPin2NotEqual:
- return MESSAGE("EPEMessageFailedNewPin1AndPin2NotEqual");
- case MEngineMonitor::EPEMessageFailedSecurityCommandAlreadyActive:
- return MESSAGE("EPEMessageFailedSecurityCommandAlreadyActive");
- case MEngineMonitor::EPEMessagePin1Changed:
- return MESSAGE("EPEMessagePin1Changed");
- case MEngineMonitor::EPEMessagePin2Changed:
- return MESSAGE("EPEMessagePin2Changed");
- case MEngineMonitor::EPEMessagePin1Unblocked:
- return MESSAGE("EPEMessagePin1Unblocked");
- case MEngineMonitor::EPEMessagePin2Unblocked:
- return MESSAGE("EPEMessagePin2Unblocked");
-
- // Settings and Shared Data messages 8000 - 8999
- case MEngineMonitor::EPEMessageProfileChanged:
- return MESSAGE("EPEMessageProfileChanged");
-
- // Startup messages 9000 - 9999
- case MEngineMonitor::EPEMessagePEConstructionReady:
- return MESSAGE("EPEMessagePEConstructionReady");
- case MEngineMonitor::EPEMessagePEConstructionFailed:
- return MESSAGE("EPEMessagePEConstructionFailed");
- case MEngineMonitor::EPEMessagePEConstructionTwoPhaseReady:
- return MESSAGE("EPEMessagePEConstructionTwoPhaseReady");
-
- // Miscellaneous messages 10000 - 10999
- case MEngineMonitor::EPEMessageInValidEmergencyNumber:
- return MESSAGE("EPEMessageInValidEmergencyNumber");
- case MEngineMonitor::EPEMessageValidEmergencyNumber:
- return MESSAGE("EPEMessageValidEmergencyNumber");
- case MEngineMonitor::EPEMessagePhoneIdentityReady:
- return MESSAGE("EPEMessagePhoneIdentityReady");
- case MEngineMonitor::EPEMessageStartATDialing:
- return MESSAGE("EPEMessageStartATDialing");
- case MEngineMonitor::EPEMessageLogEventSaved:
- return MESSAGE("EPEMessageLogEventSaved");
- case MEngineMonitor::EPEMessageDoNotSendMe:
- return MESSAGE("EPEMessageDoNotSendMe");
-
- // Variant messages 11000 - 12999
-
- // Audio messages 11000 - 11199
-
- // Call messages 11200 - 11399
- case MEngineMonitor::EPEMessageActiveBarring:
- return MESSAGE("EPEMessageActiveBarring");
- case MEngineMonitor::EPEMessageActiveCallForwarding:
- return MESSAGE("EPEMessageActiveCallForwarding");
- case MEngineMonitor::EPEMessageAddedConferenceMember:
- return MESSAGE("EPEMessageAddedConferenceMember");
- case MEngineMonitor::EPEMessageALSLineChanged:
- return MESSAGE("EPEMessageALSLineChanged");
- case MEngineMonitor::EPEMessageCallBarred:
- return MESSAGE("EPEMessageCallBarred");
- case MEngineMonitor::EPEMessageIncCallIsForw:
- return MESSAGE("EPEMessageIncCallIsForw");
- case MEngineMonitor::EPEMessageIncCallForwToC:
- return MESSAGE("EPEMessageIncCallForwToC");
- case MEngineMonitor::EPEMessageOutCallForwToC:
- return MESSAGE("EPEMessageOutCallForwToC");
- case MEngineMonitor::EPEMessageForwardUnconditionalModeActive:
- return MESSAGE( "EPEMessageForwardUnconditionalModeActive" );
- case MEngineMonitor::EPEMessageForwardConditionallyModeActive:
- return MESSAGE( "EPEMessageForwardConditionallyModeActive" );
- case MEngineMonitor::EPEMessageDroppedConferenceMember:
- return MESSAGE("EPEMessageDroppedConferenceMember");
- case MEngineMonitor::EPEMessageGoingOneToOne:
- return MESSAGE("EPEMessageGoingOneToOne");
- case MEngineMonitor::EPEMessageIssuedUSSDRequest:
- return MESSAGE("EPEMessageIssuedUSSDRequest");
- case MEngineMonitor::EPEMessageRemoteCreatedConference:
- return MESSAGE("EPEMessageRemoteCreatedConference");
- case MEngineMonitor::EPEMessageRemoteHeld:
- return MESSAGE("EPEMessageRemoteHeld");
- case MEngineMonitor::EPEMessageRemoteResumed:
- return MESSAGE("EPEMessageRemoteResumed");
- case MEngineMonitor::EPEMessageShowVersion:
- return MESSAGE("EPEMessageShowVersion");
- case MEngineMonitor::EPEMessageTempClirSuppressUnsuccessful:
- return MESSAGE("EPEMessageTempClirSuppressUnsuccessful");
- case MEngineMonitor::EPEMessageTempClirActivationUnsuccessful:
- return MESSAGE("EPEMessageTempClirActivationUnsuccessful");
-
- // Contact messages 11400 - 11599
-
- // Error messages 11600 - 11799
-
- // Network messages 11800 - 12999
- case MEngineMonitor::EPEMessageServiceEnabled:
- return MESSAGE("EPEMessageServiceEnabled");
- case MEngineMonitor::EPEMessageServiceEnabling:
- return MESSAGE("EPEMessageServiceEnabling");
- case MEngineMonitor::EPEMessageNoService:
- return MESSAGE("EPEMessageNoService");
- case MEngineMonitor::EPEMessageServiceDisabled:
- return MESSAGE("EPEMessageServiceDisabled");
-
- // Parser messages 12000 - 12199
- case MEngineMonitor::EPEMessageActivateRfsDeep:
- return MESSAGE("EPEMessageActivateRfsDeep");
- case MEngineMonitor::EPEMessageActivateRfsNormal:
- return MESSAGE("EPEMessageActivateRfsNormal");
- case MEngineMonitor::EPEMessageActivateWarrantyMode:
- return MESSAGE("EPEMessageActivateWarrantyMode");
- case MEngineMonitor::EPEMessageIssuedSSRequest:
- return MESSAGE("EPEMessageIssuedSSRequest");
- case MEngineMonitor::EPEMessageIssuingSSRequest:
- return MESSAGE("EPEMessageIssuingSSRequest");
-
- // Security messages 12200 - 12399
-
- // Settings messages 12400 - 12599
- case MEngineMonitor::EPEMessageBarringNotification:
- return MESSAGE("EPEMessageBarringNotification");
- case MEngineMonitor::EPEMessageClipStatusNotification:
- return MESSAGE("EPEMessageClipStatusNotification");
- case MEngineMonitor::EPEMessageClirStatusNotification:
- return MESSAGE("EPEMessageClirStatusNotification");
- case MEngineMonitor::EPEMessageCnapStatusNotification:
- return MESSAGE("EPEMessageCnapStatusNotification");
- case MEngineMonitor::EPEMessageColpStatusNotification:
- return MESSAGE("EPEMessageColpStatusNotification");
- case MEngineMonitor::EPEMessageColrStatusNotification:
- return MESSAGE("EPEMessageColrStatusNotification");
- case MEngineMonitor::EPEMessageForwardingNotification:
- return MESSAGE("EPEMessageForwardingNotification");
- case MEngineMonitor::EPEMessageVmbxNumberLine1Changed:
- return MESSAGE("EPEMessageVmbxNumberLine1Changed");
- case MEngineMonitor::EPEMessageVmbxNumberLine2Changed:
- return MESSAGE("EPEMessageVmbxNumberLine2Changed");
- case MEngineMonitor::EPEMessageWaitingNotification:
- return MESSAGE("EPEMessageWaitingNotification");
- case MEngineMonitor::EPEMessageAlsStatusChanged:
- return MESSAGE("EPEMessageAlsStatusChanged");
-
- // Miscellaneous messages 12600 - 12799
- case MEngineMonitor::EPEMessageSIMChanged:
- return MESSAGE("EPEMessageSIMChanged");
- case MEngineMonitor::EPEMessageSIMStateChanged:
- return MESSAGE("EPEMessageSIMStateChanged");
- default:
- TEFLOGSTRING2( KTAINT, "pe: cpephonemodel::namebymessagefromphoneengine, unknown message = %d", static_cast<TInt>(aMessage));
- return MESSAGE("Unknown message");
- }
- }
-#else
-TPtrC CPEPhoneModel::NameByMessageFromPhoneEngine(
- const TInt /*aMessage*/ ) const
- {
- return MESSAGE("Not available");
- }
-#endif // TEF_LOGGING_ENABLED
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::HandleMessage
-// Handles messages from phone application.
-// -----------------------------------------------------------------------------
-//
-void CPEPhoneModel::HandleMessage(
- const TInt aMessage )
- {
- TInt errorCode( ECCPErrorNone );
- #ifdef TEF_LOGGING_ENABLED
- TInt callId;
- callId = iEngineInfo->CallId(); // Get CallId
- TPtrC messageName = NameByMessageToPhoneEngine( aMessage );
- TEFLOGSTRING3( KTAINT,
- "PE cpephonemodel::handlemessage, messageName=%s, callId=%d",
- messageName.Ptr( ),
- callId );
- #endif
-
- if ( !iMessageHandler )
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::HandleMessage: Not ready" );
- return;
- }
-
- switch ( aMessage )
- {
- case MPEPhoneModel::EPEMessageTerminateAllConnections:
- errorCode = iMessageHandler->HandleTerminateAllConnections( );
- break;
- case MPEPhoneModel::EPEMessageDial:
- //Make a dial request
- errorCode = iMessageHandler->HandleDialCall( EFalse );
- break;
- case MPEPhoneModel::EPEMessageReleaseAll: //Make HangUp requests to all calls
- errorCode = iMessageHandler->HandleReleaseAll( );
- break;
- case MPEPhoneModel::EPEMessageRelease: //Make HangUp request
- case CPEPhoneModelIF::EPEMessageHangUpConference:
- errorCode = iMessageHandler->HandleReleaseCall( );
- break;
- case MPEPhoneModel::EPEMessageAnswer: //Make Answer request
- errorCode = iMessageHandler->HandleAnswerCall( EFalse );
- break;
- case MPEPhoneModel::EPEMessageReject: //Make Reject request
- errorCode = iMessageHandler->HandleRejectCall( );
- break;
- case MPEPhoneModel::EPEMessageSetAudioMute: //Make Mute microphone request
- iMessageHandler->HandleSetAudioMute( );
- break;
- case MPEPhoneModel::EPEMessageSetAudioOutput:
- errorCode = iMessageHandler->HandleSetAudioOutput();
- break;
- case MPEPhoneModel::EPEMessageSetAudioVolume: //Sets audio volume.
- iMessageHandler->HandleSetAudioVolume( );
- break;
- case CPEPhoneModelIF::EPEMessageHold: //Make Hold request
- case CPEPhoneModelIF::EPEMessageHoldConference:
- errorCode = iMessageHandler->HandleHoldCall( );
- break;
- case CPEPhoneModelIF::EPEMessageSwap: //Make Swap request
- case CPEPhoneModelIF::EPEMessageSwapConference:
- errorCode = iMessageHandler->HandleSwapCalls( );
- break;
- case CPEPhoneModelIF::EPEMessageResume: //Make Resume request
- case CPEPhoneModelIF::EPEMessageResumeConference:
- errorCode = iMessageHandler->HandleResumeCall( );
- break;
- case CPEPhoneModelIF::EPEMessageDropConferenceMember: // Drop conference member.
- errorCode = iMessageHandler->HandleDropConferenceMember( );
- break;
- case CPEPhoneModelIF::EPEMessageTransfer: //Make Transfer request
- errorCode = iMessageHandler->HandleTransferCalls( );
- break;
- case CPEPhoneModelIF::EPEMessageCreateConference: // Build conference call.
- errorCode = iMessageHandler->HandleBuildConferenceCall( );
- break;
- case CPEPhoneModelIF::EPEMessageGoOneToOne: // Go one to one.
- errorCode = iMessageHandler->HandleGoOneToOne( );
- break;
- case CPEPhoneModelIF::EPEMessageAddConferenceMember: //Add call to conference request
- errorCode = iMessageHandler->HandleAddConferenceMember();
- break;
- case MPEPhoneModel::EPEMessageSendDTMF: //Send dtmf string
- errorCode = iMessageHandler->HandleSendDtmf( );
- break;
- case MPEPhoneModel::EPEMessagePlayDTMF: //Play DTMF
- TRAP( errorCode, iMessageHandler->HandlePlayDTMFL() );
- break;
- case MPEPhoneModel::EPEMessageEndDTMF: //End DTMF playing
- errorCode = iMessageHandler->HandleEndDTMF();
- break;
- case MPEPhoneModel::EPEMessageStopTonePlay: //Stop InBand tone playing.
- iMessageHandler->HandleStopInbandTonePlay( );
- break;
- case MPEPhoneModel::EPEMessageClientDial: //Make Dial request(Client originated)
- errorCode = iMessageHandler->HandleDialCall( ETrue );
- break;
- case MPEPhoneModel::EPEMessageClientDialEmergency:
- //Make emergency dial request(Client originated)
- errorCode = iMessageHandler->HandleDialEmergencyCall( ETrue );
- break;
- case MPEPhoneModel::EPEMessageContinueEmergencyCallInitialization:
- //Make emergency dial request
- iMessageHandler->ContinueDialEmergency();
- break;
- case MPEPhoneModel::EPEMessageContinueDTMFSending: //Continue DTMF sending.
- iMessageHandler->HandleContinueDtmfSending( ETrue );
- break;
- case MPEPhoneModel::EPEMessageStopDTMFSending: //Stop DTMF sending.
- iMessageHandler->HandleContinueDtmfSending( EFalse );
- break;
- case CPEPhoneModelIF::EPEMessageCancelSSstringCommand:
- errorCode = iMessageHandler->HandleCancelSSstringCommand( );
- break;
- case MPEPhoneModel::EPEMessagePhoneNumberEdited:
- TRAP( errorCode, iMessageHandler->HandlePhoneNumberEditedL( ) );
- break;
- case MPEPhoneModel::EPEMessageCheckEmergencyNumber:
- errorCode = iMessageHandler->HandleEmergencyCheck( );
- break;
- case MPEPhoneModel::EPEMessageAutomaticAnswerOff:
- iMessageHandler->HandleAutomaticAnswerOff( );
- break;
- case CPEPhoneModelIF::EPEMessageSetALSLine:
- iCallHandling->SetActiveLine();
- break;
- case CPEPhoneModelIF::EPEMessageSwitchToVideoOrVoice:
- iEngineInfo->SetIsSwitchToOperationOngoing( ETrue );
- errorCode = iMessageHandler->HandleSwitchToVideoOrVoice( iEngineInfo->CallId() );
- break;
- case MPEPhoneModel::EPEMessageSatCallRequestCompleted:
- iMessageHandler->HandleSatCallRequestCompleted();
- break;
- case MPEPhoneModel::EPEMessageReplaceActive:
- errorCode = iMessageHandler->HandleReplaceActive();
- break;
- case MPEPhoneModel::EPEMessageAcceptUnattendedTransfer:
- errorCode = iMessageHandler->
- HandleUnattendedTransferRequestResponse( ETrue );
- break;
- case MPEPhoneModel::EPEMessageRejectUnattendedTransfer:
- errorCode = iMessageHandler->
- HandleUnattendedTransferRequestResponse( EFalse );
- break;
-
- case MPEPhoneModel::EPEMessageDoUnattendedTransfer:
- errorCode = iMessageHandler->HandleUnattendedTransfer();
- break;
- case MPEPhoneModel::EPEMessageForwardCallToAddress:
- errorCode = iMessageHandler->ForwardCallToAddress();
- break;
- case MPEPhoneModel::EPEMessageDisableService:
- iMessageHandler->HandleDisableService();
- break;
- case MPEPhoneModel::EPEMessageDialServiceCall: //Make Dial request
- errorCode = iMessageHandler->HandleDialCall( EFalse );
- break;
- default:
- errorCode = ECCPErrorNotFound;
- break;
- }
-
- if( errorCode )
- {
- TPEErrorInfo errorInfo;
- errorInfo.iErrorCode = errorCode;
- errorInfo.iCallId = KPECallIdNotUsed;
- errorInfo.iErrorType = EPECcp;
- iEngineMonitor.HandleError( errorInfo );
- }
- }// HandleMessage
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::SendMessage
-// Reroutes messages to the over loaded SendMessage( TInt aMessage, TInt aCallId ) method.
-// Method creates new callid and calls overloaded method.
-// -----------------------------------------------------------------------------
-//
-void CPEPhoneModel::SendMessage(
- const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage )
- {
- SendMessage( aMessage, KPECallIdNotUsed );
- }// SendMessage( 1 param )
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::SendMessage
-// Sends messages to the phone application
-// Method sets call parameters to the CPEEngineInfo object and
-// Method reroutes messages to the phone application.
-// -----------------------------------------------------------------------------
-//
-void CPEPhoneModel::SendMessage(
- const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage,
- const TInt aCallId )
- {
- TInt errorCode( ECCPErrorNone );
- TPEState callState;
- //Save message to local variable so that it can be modified
- TInt message( aMessage );
-
- #ifdef TEF_LOGGING_ENABLED
- TPtrC messageName = NameByMessageFromPhoneEngine(
- static_cast<MEngineMonitor::TPEMessagesFromPhoneEngine>( aMessage ) );
- TEFLOGSTRING3( KTAINT,
- "PE cpephonemodel::sendmessage, messageName=%s, callId=%d"
- , messageName.Ptr( )
- , aCallId );
- #endif
-
- if ( iMessageHandler )
- {
- errorCode = ProcessMessage( aMessage, aCallId );
- }
-
- if ( DelayMessageSending( aMessage, aCallId ) )
- {
- message = KPEDontSendMessage;
- }
-
- // Set Call State to the EngineInfo
- if ( CallIdCheck::IsConference( aCallId ))
- {
- callState = iCallHandling->GetCallState( aCallId );
- if ( callState > EPEStateUnknown && callState < EPEStateMaximumState )
- {
- iEngineInfo->SetConferenceCallState( static_cast<TPEState>( callState ) );
- }
- else
- {
- iEngineInfo->SetConferenceCallState( EPEStateUnknown );
- }
- }
- if ( CallIdCheck::IsValid( aCallId ))
- {
- callState = iCallHandling->GetCallState( aCallId );
- if ( callState > EPEStateUnknown && callState < EPEStateMaximumState )
- {
- iEngineInfo->SetCallState( static_cast<TPEState>( callState ), aCallId );
- }
- else
- {
- iEngineInfo->SetCallState( EPEStateUnknown, aCallId );
- }
- }
-
- if ( ( message == MEngineMonitor::EPEMessageIncoming ) )
- {
- if ( FeatureManager::FeatureSupported( KFeatureIdDriveMode ) )
- {
- //Check for Drive mode
- if ( iEngineInfo->ProfileId() == KDriveProfile )
- {
- //Drive mode is enabled, do not forward message
- message = KPEDontSendMessage;
- }
- }
- }
-
- if ( message == MEngineMonitor::EPEMessageChangedCallDuration )
- {
- TInt callTimerSetting( EFalse );
- // safe to ignore error code here, duration display equals to zero == off if it fails
- iExternalDataHandler->Get( EPECallDurationDisplaySetting, callTimerSetting );
- // Message EPEMessageChangedCallDuration send supressed, if duration display is OFF
- if ( callTimerSetting == KPECallTimerOff )
- {
- message = KPEDontSendMessage;
- }
- }
-
- //MessageHandler may return error code
- if ( errorCode != ECCPErrorNone && errorCode != KPEDontSendMessage )
- {
- #ifdef TEF_LOGGING_ENABLED
- TPtrC messageName2 =
- NameByMessageFromPhoneEngine(
- static_cast<MEngineMonitor::TPEMessagesFromPhoneEngine>( message ) );
- TEFLOGSTRING3(
- KTAERROR,
- "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=%s, CallId=%d",
- messageName2.Ptr( ), aCallId );
- #endif
- TPEErrorInfo errorInfo;
- errorInfo.iErrorCode = errorCode;
- errorInfo.iCallId = aCallId;
- errorInfo.iErrorType = EPECcp;
- iEngineMonitor.HandleError( errorInfo );
- }
- else if ( message == MEngineMonitor::EPEMessageCallHandlingError )
- {
- TEFLOGSTRING2(
- KTAERROR,
- "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageCallHandlingError, CallId=%d"
- , aCallId );
- TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
- errorInfo.iCallId = aCallId;
- errorInfo.iErrorType = EPECcp;
- iEngineMonitor.HandleError( errorInfo );
- }
- else if ( message == MEngineMonitor::EPEMessageServiceHandlingError )
- {
- TEFLOGSTRING(
- KTAERROR,
- "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageServiceHandlingError" );
- TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
- errorInfo.iCallId = aCallId;
- errorInfo.iErrorType = EPECch;
- iEngineMonitor.HandleError( errorInfo );
- }
- else if ( message != KPEDontSendMessage && errorCode != KPEDontSendMessage )
- {
- // Map message for PhoneApplication, since it doesn't use
- // EPEMessageDisconnectingWithInband message
- if( message == MEngineMonitor::EPEMessageDisconnectingWithInband )
- {
- message = MEngineMonitor::EPEMessageDisconnecting;
- }
- else if ( message == MEngineMonitor::EPEMessageConnectingWithInband )
- {
- iEngineInfo->SetIsSwitchToOperationOngoing( EFalse );
- message = MEngineMonitor::EPEMessageConnecting;
- }
- #ifdef TEF_LOGGING_ENABLED
- TPtrC messageName2 = NameByMessageFromPhoneEngine
- ( static_cast<MEngineMonitor::TPEMessagesFromPhoneEngine>( message ) );
- TEFLOGSTRING3(
- KTAINT,
- "PE cpephonemodel::sendmessage > iEngineMonitor HandleMessage: messageName=%s, CallId=%d"
- , messageName2.Ptr( ), aCallId );
- #endif
-
- __ASSERT_DEBUG(
- ( KPEDontSendMessage <= message < KPEMessagesFromPhoneEngineGsmLast ),
- Panic( EPEPanicIllegalCommand ) );
- iEngineMonitor.HandleMessage(
- static_cast<MEngineMonitor::TPEMessagesFromPhoneEngine>( message ),
- aCallId );
- }
-
- if( iParserRecognizer )
- {
- iParserRecognizer->sendMessage( aMessage, aCallId );
- }
-
- }// SendMessage( 2 params )
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::ProcessMessage
-// Process messages from the subsystems by passing them to message handlder.
-// -----------------------------------------------------------------------------
-TInt CPEPhoneModel::ProcessMessage(
- const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage,
- const TInt aCallId )
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ProcessMessage" );
- TInt errorCode( ECCPErrorNone );
-
- //Get Message
- switch ( aMessage )
- {
- case MEngineMonitor::EPEMessageDialing:
- TRAP( errorCode, iMessageHandler->HandleDialingStateL( aCallId ) );
- break;
-
- case MEngineMonitor::EPEMessageIncoming:
- TRAP( errorCode, iMessageHandler->HandleIncomingCallL( aCallId ) );
- // Since it is possible that incoming call interrupts switch to operation
- // we need to reset this value.
- iEngineInfo->SetIsSwitchToOperationOngoing( EFalse );
- break;
-
- case MEngineMonitor::EPEMessageAnswering:
- if ( CallIdCheck::IsVideo( aCallId ) )
- {
- // Answering video calls
- iMessageHandler->HandleStopInbandTonePlay( );
- iMessageHandler->HandleAudioRouting( ETrue, aCallId );
- }
- else if ( iEngineInfo->CallType( aCallId ) == EPECallTypeCSVoice ||
- iEngineInfo->CallType( aCallId ) == EPECallTypeVoIP )
- {
- iMessageHandler->HandleAudioRouting( EFalse, aCallId);
- }
-
- break;
-
- case MEngineMonitor::EPEMessageConnected:
- // Switch to status needs to be set false here because some networks
- // do not use connecting state.
- iEngineInfo->SetIsSwitchToOperationOngoing( EFalse );
- iEngineInfo->SetResumeHeldCall( ETrue, aCallId );
- if ( CallIdCheck::IsVoice( aCallId ))
- {
- errorCode = iMessageHandler->HandleConnectedState( aCallId );
- }
- else if ( CallIdCheck::IsVideo( aCallId ))
- {
- // Video call : for video call logging and duration
- errorCode = iMessageHandler->HandleVideoCallConnected( aCallId );
-
- }
- // VoIP call audio routing happens when 'connected' message is
- // received because of differences in VoIP and CS call audio
- // activation.
- if ( EPECallTypeVoIP == iEngineInfo->CallType( aCallId ) )
- {
- iMessageHandler->HandleAudioRouting( EFalse, aCallId );
- }
-
- break;
-
- case MEngineMonitor::EPEMessageIdle:
- if ( CallIdCheck::IsVoice( aCallId ))
- {
- errorCode = iMessageHandler->HandleVoiceCallIdleState( aCallId );
- }
- else if ( CallIdCheck::IsVideo( aCallId ))
- {
- // Video call : for video call logging and duration
- errorCode = iMessageHandler->HandleVideoCallIdle( aCallId );
- }
- if ( errorCode == ECCPErrorNone && iEngineInfo->IsSwitchToOperationOngoing() )
- {
- errorCode = iMessageHandler->ContinueSwitchToCall( aCallId );
- }
- break;
-
- case MEngineMonitor::EPEMessageRemoteBusy:
- if ( CallIdCheck::IsVoice( aCallId ))
- {
- // Set video/voice boolean to false because error occured.
- iEngineInfo->SetIsSwitchToOperationOngoing( EFalse );
- iMessageHandler->HandleCallHandlingError( aCallId, ETrue );
- }
- break;
-
- case MEngineMonitor::EPEMessageCallHandlingError:
- // Set video/voice boolean to false because error occured.
- iEngineInfo->SetIsSwitchToOperationOngoing( EFalse );
- iMessageHandler->HandleCallHandlingError( aCallId, EFalse );
- break;
-
- case MEngineMonitor::EPEMessageAudioOutputPreferenceChanged:
- errorCode = iMessageHandler->HandleRoutePreferenceChanged();
- break;
-
- case MEngineMonitor::EPEMessageConferenceIdle:
- if ( CallIdCheck::IsConference( aCallId ) )
- {
- errorCode = iMessageHandler->HandleConferenceIdleState( aCallId );
- }
- break;
-
- case MEngineMonitor::EPEMessageAnswer: // Automatic answer complete
- errorCode = iMessageHandler->HandleAnswerCall( ETrue );
- break;
-
- case MEngineMonitor::EPEMessageAlsStatusChanged:
- case MEngineMonitor::EPEMessageSIMStateChanged:
- iMessageHandler->HandleSimStateChanged( );
- break;
-
- case MEngineMonitor::EPEMessagePEConstructionReady:
- iMessageHandler->HandleStartUp( );
- break;
-
- case MEngineMonitor::EPEMessageDisconnecting:
- errorCode = iMessageHandler->HandleDisconnecting( aCallId );
- break;
-
- case MEngineMonitor::EPEMessageDisconnectingWithInband:
- errorCode = iMessageHandler->HandleDisconnectingWithInband( aCallId );
- break;
-
- case MEngineMonitor::EPEMessageConnectedConference:
- iEngineInfo->SetResumeHeldCall( ETrue, aCallId );
- break;
-
- case MEngineMonitor::EPEMessageSentDTMF:
- errorCode = iMessageHandler->HandleDtmfSent();
- break;
-
- case MEngineMonitor::EPEMessageActivateWarrantyMode:
- errorCode = iMessageHandler->HandleGetLifeTimerData( );
- break;
-
- case MEngineMonitor::EPEMessageStartATDialing:
- errorCode = iMessageHandler->HandleDialCall( EFalse );
- iMessageHandler->HandleATDialingStarted( errorCode ? EFalse : ETrue );
- break;
-
- // MO call connecting.
- case MEngineMonitor::EPEMessageConnecting:
- iEngineInfo->SetIsSwitchToOperationOngoing( EFalse );
- iEngineInfo->SetInbandTone( ECCPRemoteAlerting );
- iAudioData->PlayInbandTone();
- break;
- /*
- case MEngineMonitor::EPEMessageInitiatedEmergencyCall:
- iEngineInfo->SetIsSwitchToOperationOngoing( EFalse );
- if ( iCallStackCutter )
- {
- delete iCallStackCutter;
- iCallStackCutter = NULL;
- }
- TRAPD( err, iCallStackCutter = CIdle::NewL( CActive::EPriorityHigh ) );
- if ( !err )
- {
- iCallBackMessage = aMessage;
- iCallBackCallId = aCallId;
- iCallStackCutter->Start( TCallBack( CallBackMessageSend , this ) );
- }
- message = KPEDontSendMessage;
- break;
- */
- case MEngineMonitor::EPEMessageDroppedConferenceMember:
- iMessageHandler->HandleDroppedConferenceMember();
- break;
-
- case MEngineMonitor::EPEMessageDTMFSendingAborted:
- iEngineInfo->SetDtmfString( KNullDesC() );
- break;
-
- case MEngineMonitor::EPEMessageServiceEnabled:
- errorCode = iMessageHandler->HandleServiceEnabled();
- break;
-
- case MEngineMonitor::EPEMessageRemotePartyInfoChanged:
- iMessageHandler->HandleRemotePartyInfoChanged( );
- break;
-
- default:
- break;
- }
-
- return errorCode;
- }
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::DelayMessageSending
-// Determines which messages needs to be delayed and delays sending them
-// to Engine monitor.
-// -----------------------------------------------------------------------------
-TBool CPEPhoneModel::DelayMessageSending(
- const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage,
- const TInt aCallId )
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::DelayMessageSending" );
-
- TBool sendingDelayed( EFalse );
-
- if ( MEngineMonitor::EPEMessageInitiatedEmergencyCall == aMessage )
- {
- iEngineInfo->SetIsSwitchToOperationOngoing( EFalse );
- if ( iCallStackCutter )
- {
- delete iCallStackCutter;
- iCallStackCutter = NULL;
- }
- TRAPD( err, iCallStackCutter = CIdle::NewL( CActive::EPriorityHigh ) );
- if ( !err )
- {
- iCallBackMessage = aMessage;
- iCallBackCallId = aCallId;
- iCallStackCutter->Start( TCallBack( CallBackMessageSend , this ) );
- }
- sendingDelayed = ETrue;
- }
- return sendingDelayed;
- }
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::RecallSteps
-// Method informs about failures in starting modules.
-// -----------------------------------------------------------------------------
-//
-void CPEPhoneModel::RecallSteps()
- {
- SendMessage( MEngineMonitor::EPEMessagePEConstructionFailed );
- iActiveStarter = NULL;
- }
-
-// -----------------------------------------------------------------------------
-// CPEPhoneModel::StepL
-// Method starts and connects modules asynchronically.
-// -----------------------------------------------------------------------------
-//
-TBool CPEPhoneModel::StepL()
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 1" );
- TBool continueStepping = ETrue;
-
- switch ( iStep )
- {
- case CPEPhoneModel::EPEInitializeCceConnection:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 2.1" );
- iConvergedCallEngine = CCCE::NewL();
- MCCEDtmfObserver* tempPointer( NULL );
- MCCEDtmfInterface& tempReference = iConvergedCallEngine->DtmfInterfaceL( *tempPointer );
- iDtmfInterface = &tempReference;
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 2.2" );
- break;
- }
- case CPEPhoneModel::EPEExternalData:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 3.1" );
- iExternalDataHandler = CPEExternalDataHandler::NewL( *this );
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 3.2" );
- break;
- }
- case CPEPhoneModel::EPECallHandling:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 4.1" );
- iCallHandling = CPECallHandling::NewL( *this, *iConvergedCallEngine, *iDtmfInterface );
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 4.2" );
- break;
- }
- case CPEPhoneModel::EPEAudioHandling:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 5.1" );
- if ( iAudioFactory )
- {
- iAudioData = CPEGsmAudioData::NewL(
- *this, iFsSession, *iAudioFactory );
- }
- else
- {
- iAudioData = CPEGsmAudioData::NewL( *this, iFsSession );
- }
- iDtmfInterface->AddObserverL( *iAudioData );
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 5.2" );
- break;
- }
- case CPEPhoneModel::EPELogHandlingPhaseOne:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 6.1" );
- // Create Log Handling proxy along with dummy implementation
- iLogHandling = CPELogHandlingProxy::CreateFirstPhaseL();
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 6.2" );
- break;
- }
- case CPEPhoneModel::EPEContactHandlingPhaseOne:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 7.1" );
- // Create Contact Handling proxy along with dummy implementation
- iContactHandling = CPEContactHandlingProxy::CreateFirstPhaseL();
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 7.2" );
- break;
- }
- case CPEPhoneModel::EPESimStateMonitor:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 9.1" );
- //started after message handler construction
- iSimStatusMonitor = CPESimStateMonitor::NewL(
- *this,
- CPESimStateMonitor::EEventSimStatus );
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 9.2" );
- break;
- }
- case CPEPhoneModel::EPEServiceHandling:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 10.1" );
- iServiceHandling = CPEServiceHandling::NewL( *this );
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 10.2" );
- break;
- }
- case CPEPhoneModel::EPEMessageHandler:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 11.1" );
- iMessageHandler = CPEMessageHandler::NewL( *this,
- *iCallHandling,
- iEngineMonitor,
- *iAudioData,
- *iLogHandling,
- *iContactHandling,
- *iSimStatusMonitor,
- *iExternalDataHandler,
- *iServiceHandling,
- iFsSession );
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 11.2" );
- break;
- }
- case CPEPhoneModel::EPESimChangedMonitor:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 12.1" );
- iSimChangedMonitor = CPESimStateMonitor::NewL(
- *this,
- CPESimStateMonitor::EEventSimChanged );
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 12.2" );
- iSimChangedMonitor->Start();
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 12.3" );
- break;
- }
- case CPEPhoneModel::EPESimStatusMonitorStart:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 13.1" );
- iSimStatusMonitor->Start();
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 13.2" );
- break;
- }
- case CPEPhoneModel::EPELogHandlingPhaseTwo:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 14.1" );
- // Finalize Log Handling contruction
- static_cast< CPELogHandlingProxy* > ( iLogHandling )->CreateSecondPhaseL(
- *this,
- iFsSession );
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 14.2" );
- break;
- }
- case CPEPhoneModel::EPEContactHandlingPhaseTwo:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.1" );
- static_cast< CPEContactHandlingProxy* >( iContactHandling )->
- CreateSecondPhaseL( *this, iFsSession );
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.2" );
- break;
- }
- case CPEPhoneModel::EPEMediatorCommandHandler:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.1" );
- // Start Mediator command listener
- iMediatorCommunicationHandler = CPERemotePartyInfoMediator::NewL( *this );
- break;
- }
- case CPEPhoneModel::EPEPhoneServices:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.1" );
- __ASSERT_DEBUG( iMessageHandler, Panic( EPEPanicNullPointer ) );
- __ASSERT_DEBUG( iEngineInfo, Panic( EPEPanicNullPointer ) );
- iPhoneServices = new PhoneServices(
- *iMessageHandler, *iEngineInfo, *iMessageHandler);
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.2" );
- break;
- }
-
- case CPEPhoneModel::EPEParserRecognizer:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 17.1" );
- iParserRecognizer = new ParserRecognizer;
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 17.2" );
- break;
- }
-
- case CPEPhoneModel::EPENetworkHandling:
- {
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 18.1" );
- XQServiceRequest request("com.nokia.services.networkhandling","start()");
- bool res = request.send();
- if (!res) {
- int error = request.latestError();
- TEFLOGSTRING2(
- KTAOBJECT,
- "CPEPhoneModel::StepL 18.2 error %d",
- error );
- }
- TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 18.2" );
- continueStepping = EFalse;
- break;
- }
-
- default:
- {
- Panic( EPEPanicIndexOutOfRange );
- break;
- }
- }
-
- if ( !continueStepping )
- {
- // Note, if you add cases, you have to set
- // continueStepping = EFalse into the last case.
- SendMessage( MEngineMonitor::EPEMessagePEConstructionReady );
- iActiveStarter = NULL;
- }
- else
- {
- ++iStep;
- }
- return continueStepping;
- }// StepL
-
-// -----------------------------------------------------------------------------
-// Handle internal messages
-// -----------------------------------------------------------------------------
-//
-void CPEPhoneModel::HandleInternalMessage(
- const TInt aMessage )
- {
- HandleMessage( aMessage );
- }
-
-// -----------------------------------------------------------------------------
-// ConstructContactHandlingPhaseTwoL
-// -----------------------------------------------------------------------------
-//
-void CPEPhoneModel::ConstructContactHandlingPhaseTwoL()
- {
- TEFLOGSTRING( KTAOBJECT,
- "PE CPEPhoneModel::ConstructContactHandlingPhaseTwo, start" );
- // Finalize Contact Handling contruction
- static_cast< CPEContactHandlingProxy* >( iContactHandling )->
- CreateSecondPhaseL( *this, iFsSession );
- TEFLOGSTRING( KTAOBJECT,
- "PE CPEPhoneModel::ConstructContactHandlingPhaseTwo, complete" );
- SendMessage( MEngineMonitor::EPEMessagePEConstructionTwoPhaseReady );
- // not need any more
- delete iIdleStatusMonitor;
- iIdleStatusMonitor = NULL;
- }
-
-// -----------------------------------------------------------------------------
-// CallBackSendMessage
-// -----------------------------------------------------------------------------
-//
-TInt CPEPhoneModel::CallBackMessageSend( TAny* aSelf )
- {
- TEFLOGSTRING( KTAINT,
- "PE CPEPhoneModel::CallBackMessageSend, start" );
-
- CPEPhoneModel* self = static_cast<CPEPhoneModel*>( aSelf );
-
- self->iEngineMonitor.HandleMessage( self->iCallBackMessage, self->iCallBackCallId );
-
- return KErrNone;
- }
-
-// End of File