diff -r 41a7f70b3818 -r 5266b1f337bd phoneengine/phonemodel/src/cpephonemodel.cpp --- a/phoneengine/phonemodel/src/cpephonemodel.cpp Tue Aug 31 15:14:29 2010 +0300 +++ b/phoneengine/phonemodel/src/cpephonemodel.cpp Wed Sep 01 12:30:10 2010 +0100 @@ -20,6 +20,7 @@ // INCLUDE FILES #include "cpeactivestarter.h" #include "cpeexternaldatahandler.h" +#include "cpeidlestatusmonitor.h" #include "cpemessagehandler.h" #include "cpephonemodel.h" #include "cpeservicehandling.h" @@ -38,14 +39,10 @@ #include #include #include -#include -#include -#include "phoneservices.h" // CONSTANTS const TInt KDriveProfile ( 6 ); const TInt KPECallTimerOff = 0; -const TInt KTimesToSplitValue = 16; // ==================== LOCAL FUNCTIONS ==================== @@ -99,8 +96,6 @@ TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 5" ); iActiveStarter->StartUp(); TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 6" ); - // Reserve needed callinfo and remoteinfo from heap. - iCallInfo = new ( ELeave ) RMobileCall::TMobileCallInfoV3; }// ConstructL // ----------------------------------------------------------------------------- @@ -150,7 +145,6 @@ delete iCallHandling; delete iExternalDataHandler; delete iCallStackCutter; - delete iCallInfo; if ( iActiveStarter ) { @@ -161,7 +155,10 @@ iFsSession.Close(); delete iEngineInfo; delete iConvergedCallEngine; - delete iPhoneServices; + if ( iIdleStatusMonitor ) + { + delete iIdleStatusMonitor; + } }// ~CPEPhoneModel // ----------------------------------------------------------------------------- @@ -232,8 +229,6 @@ return MESSAGE("EPEMessageClientDial"); case MPEPhoneModel::EPEMessageClientDialEmergency: return MESSAGE("EPEMessageClientDialEmergency"); - case MPEPhoneModel::EPEMessageDialServiceCall: - return MESSAGE("EPEMessageDialServiceCall"); case MPEPhoneModel::EPEMessageContinueEmergencyCallInitialization: return MESSAGE("EPEMessageContinueEmergencyCallInitialization"); case MPEPhoneModel::EPEMessageContinueDTMFSending: @@ -433,6 +428,8 @@ return MESSAGE("EPEMessageInitiatedEmergencyCall"); case MEngineMonitor::EPEMessageInitiatedEmergencyWhileActiveVideo: return MESSAGE("EPEMessageInitiatedEmergencyWhileActiveVideo"); + case MEngineMonitor::EPEMessageInitiatedMoCall: + return MESSAGE("EPEMessageInitiatedMoCall"); case MEngineMonitor::EPEMessagePacketNetworkDetached: return MESSAGE("EPEMessagePacketNetworkDetached"); case MEngineMonitor::EPEMessageRemoteBusy: @@ -459,8 +456,16 @@ 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"); @@ -475,8 +480,12 @@ case MEngineMonitor::EPEMessageRemotePartyInfoChanged: return MESSAGE("EPEMessageRemotePartyInfoChanged"); case MEngineMonitor::EPEMessageConnectingWithInband: - return MESSAGE("EPEMessageConnectingWithInband"); - + return MESSAGE("EPEMessageConnectingWithInband"); + case MEngineMonitor::EPEMessageColpNumberAvailable: + return MESSAGE("EPEMessageColpNumberAvailable"); + case MEngineMonitor::EPEMessageTransferCallBackRequest: + return MESSAGE("EPEMessageTransferCallBackRequest"); + // Contact messages 3000 - 3999 case MEngineMonitor::EPEMessageThumbnailLoadingCompleted: return MESSAGE("EPEMessageThumbnailLoadingCompleted"); @@ -552,6 +561,8 @@ return MESSAGE("EPEMessageInValidEmergencyNumber"); case MEngineMonitor::EPEMessageValidEmergencyNumber: return MESSAGE("EPEMessageValidEmergencyNumber"); + case MEngineMonitor::EPEMessagePhoneIdentityReady: + return MESSAGE("EPEMessagePhoneIdentityReady"); case MEngineMonitor::EPEMessageStartATDialing: return MESSAGE("EPEMessageStartATDialing"); case MEngineMonitor::EPEMessageLogEventSaved: @@ -575,15 +586,15 @@ case MEngineMonitor::EPEMessageCallBarred: return MESSAGE("EPEMessageCallBarred"); case MEngineMonitor::EPEMessageIncCallIsForw: - return MESSAGE("EPEMessageIncCallIsForw"); + return MESSAGE("EPEMessageIncCallIsForw"); case MEngineMonitor::EPEMessageIncCallForwToC: - return MESSAGE("EPEMessageIncCallForwToC"); + return MESSAGE("EPEMessageIncCallForwToC"); case MEngineMonitor::EPEMessageOutCallForwToC: - return MESSAGE("EPEMessageOutCallForwToC"); + return MESSAGE("EPEMessageOutCallForwToC"); case MEngineMonitor::EPEMessageForwardUnconditionalModeActive: - return MESSAGE( "EPEMessageForwardUnconditionalModeActive" ); + return MESSAGE( "EPEMessageForwardUnconditionalModeActive" ); case MEngineMonitor::EPEMessageForwardConditionallyModeActive: - return MESSAGE( "EPEMessageForwardConditionallyModeActive" ); + return MESSAGE( "EPEMessageForwardConditionallyModeActive" ); case MEngineMonitor::EPEMessageDroppedConferenceMember: return MESSAGE("EPEMessageDroppedConferenceMember"); case MEngineMonitor::EPEMessageGoingOneToOne: @@ -596,13 +607,13 @@ 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"); - case MEngineMonitor::EPEMessageOutgoingCallBarred: - return MESSAGE("EPEMessageOutgoingCallBarred"); - + // Contact messages 11400 - 11599 // Error messages 11600 - 11799 @@ -622,6 +633,8 @@ return MESSAGE("EPEMessageActivateRfsDeep"); case MEngineMonitor::EPEMessageActivateRfsNormal: return MESSAGE("EPEMessageActivateRfsNormal"); + case MEngineMonitor::EPEMessageActivateWarrantyMode: + return MESSAGE("EPEMessageActivateWarrantyMode"); case MEngineMonitor::EPEMessageIssuedSSRequest: return MESSAGE("EPEMessageIssuedSSRequest"); case MEngineMonitor::EPEMessageIssuingSSRequest: @@ -702,15 +715,17 @@ errorCode = iMessageHandler->HandleTerminateAllConnections( ); break; case MPEPhoneModel::EPEMessageDial: - //Make a dial request + //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 + errorCode = iMessageHandler->HandleReleaseCall( ); + break; case CPEPhoneModelIF::EPEMessageHangUpConference: - errorCode = iMessageHandler->HandleReleaseCall( ); + errorCode = iMessageHandler->HandleReleaseConference(); break; case MPEPhoneModel::EPEMessageAnswer: //Make Answer request errorCode = iMessageHandler->HandleAnswerCall( EFalse ); @@ -826,22 +841,20 @@ 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 ); - } + { + TPEErrorInfo errorInfo; + errorInfo.iErrorCode = errorCode; + errorInfo.iCallId = KPECallIdNotUsed; + errorInfo.iErrorType = EPECcp; + iEngineMonitor.HandleError( errorInfo ); + } }// HandleMessage // ----------------------------------------------------------------------------- @@ -917,12 +930,6 @@ } } - if ( message == MEngineMonitor::EPEMessageOutgoingCallBarred ) - { - iEngineInfo->SetOutgoingCallBarringActivated( ETrue ); - message = KPEDontSendMessage; - } - if ( ( message == MEngineMonitor::EPEMessageIncoming ) ) { if ( FeatureManager::FeatureSupported( KFeatureIdDriveMode ) ) @@ -937,8 +944,8 @@ } if ( message == MEngineMonitor::EPEMessageChangedCallDuration ) - { - TInt callTimerSetting( EFalse ); + { + 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 @@ -946,7 +953,7 @@ { message = KPEDontSendMessage; } - } + } //MessageHandler may return error code if ( errorCode != ECCPErrorNone && errorCode != KPEDontSendMessage ) @@ -960,20 +967,18 @@ "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=%s, CallId=%d", messageName2.Ptr( ), aCallId ); #endif - SetCallError( aCallId ); TPEErrorInfo errorInfo; - errorInfo.iErrorCode = errorCode; - errorInfo.iCallId = aCallId; + 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 ); - SetCallError( aCallId ); TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo(); errorInfo.iCallId = aCallId; errorInfo.iErrorType = EPECcp; @@ -985,18 +990,17 @@ iMessageHandler->AddSIMRejectedMoCsCallToLog( aCallId ); } iEngineMonitor.HandleError( errorInfo ); - } + } else if ( message == MEngineMonitor::EPEMessageServiceHandlingError ) { TEFLOGSTRING( KTAERROR, "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageServiceHandlingError" ); - SetCallError( aCallId ); 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 @@ -1107,8 +1111,6 @@ { errorCode = iMessageHandler->ContinueSwitchToCall( aCallId ); } - - iEngineInfo->SetOutgoingCallBarringActivated( EFalse ); break; case MEngineMonitor::EPEMessageRemoteBusy: @@ -1166,6 +1168,10 @@ errorCode = iMessageHandler->HandleDtmfSent(); break; + case MEngineMonitor::EPEMessageActivateWarrantyMode: + errorCode = iMessageHandler->HandleGetLifeTimerData( ); + break; + case MEngineMonitor::EPEMessageStartATDialing: errorCode = iMessageHandler->HandleDialCall( EFalse ); iMessageHandler->HandleATDialingStarted( errorCode ? EFalse : ETrue ); @@ -1244,6 +1250,11 @@ sendingDelayed = ETrue; } break; + case MEngineMonitor::EPEMessageTransferCallBackRequest: + { + sendingDelayed = ETrue; + } + break; default: // Other messages cause no action. break; @@ -1411,9 +1422,11 @@ case CPEPhoneModel::EPEContactHandlingPhaseTwo: { TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.1" ); - static_cast< CPEContactHandlingProxy* >( iContactHandling )-> - CreateSecondPhaseL( *this, iFsSession ); + // Start Idle State monitor to finalize ContactHandling contruction + iIdleStatusMonitor = CPEIdleStatusMonitor::NewL (*this ); TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.2" ); + + break; } case CPEPhoneModel::EPEMediatorCommandHandler: @@ -1421,48 +1434,11 @@ TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.1" ); // Start Mediator command listener iMediatorCommunicationHandler = CPERemotePartyInfoMediator::NewL( *this ); + + // This should be set after the last case + continueStepping = EFalse; 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); - TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.2" ); - break; - } - - case CPEPhoneModel::EPENetworkHandling: - { - TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 18.1" ); - continueStepping = EFalse; - QString service("networkhandlingstarter"); - QString interface("com.nokia.symbian.IStart"); - QString operation("start()"); - XQApplicationManager appManager; - - QScopedPointer request( - appManager.create(service, interface, operation, false)); - if (request == NULL) { - TEFLOGSTRING(KTAOBJECT, - "CPEPhoneModel::StepL 18.2 error, service not found"); - break; - } - XQRequestInfo info; - info.setForeground(false); - request->setInfo(info); - request->setSynchronous(false); - if (!request->send()) { - int error = request->lastError(); - TEFLOGSTRING2(KTAOBJECT, - "CPEPhoneModel::StepL 18.3 error %d", error); - break; - } - TEFLOGSTRING(KTAOBJECT, "CPEPhoneModel::StepL: 18.4"); - break; - } - default: { Panic( EPEPanicIndexOutOfRange ); @@ -1508,6 +1484,9 @@ TEFLOGSTRING( KTAOBJECT, "PE CPEPhoneModel::ConstructContactHandlingPhaseTwo, complete" ); SendMessage( MEngineMonitor::EPEMessagePEConstructionTwoPhaseReady ); + // not need any more + delete iIdleStatusMonitor; + iIdleStatusMonitor = NULL; } // ----------------------------------------------------------------------------- @@ -1526,23 +1505,4 @@ return KErrNone; } -// ----------------------------------------------------------------------------- -// SetCallError -// ----------------------------------------------------------------------------- -// -void CPEPhoneModel::SetCallError( TInt aCallId ) - { - TInt callError = KErrNone; - if ( iCallHandling ) - { - TInt err = iCallHandling->GetCallInfo( *iCallInfo, aCallId ); - - if ( err == KErrNone && ( iCallInfo->iExitCode & 0xFFFF0000 ) ) - { - callError = ( iCallInfo->iExitCode >> KTimesToSplitValue ); - //Set protocol spesific error code to TPEErrorInfo - EngineInfo()->SetProtocolError( callError, aCallId ); - } - } - } // End of File