diff -r bab96b7ed1a4 -r f39ed5e045e0 phoneengine/phonemodel/src/cpemessagehandler.cpp --- a/phoneengine/phonemodel/src/cpemessagehandler.cpp Tue Jun 15 14:14:38 2010 +0100 +++ b/phoneengine/phonemodel/src/cpemessagehandler.cpp Thu Jul 22 16:33:21 2010 +0100 @@ -453,12 +453,6 @@ dtmfString = KNullDesC; } - else if ( dtmfString[ 0 ] == KPEDtmfPlusChar ) // speed-dial substitution - { - TEFLOGSTRING( KTAMESINT, "PE CPEMessageHandler::HandleSendDtmf(), Processing +" ); - HandlePlusSignInDtmf( dtmfString ); - dtmfString = KNullDesC; - } else if ( dtmfString[ 0 ] == KPEDtmfPauseCharLowercase || dtmfString[ 0 ] == KPEDtmfPauseCharUppercase ) // soft pause { @@ -536,147 +530,6 @@ } // ----------------------------------------------------------------------------- -// CPEMessageHandler::HandlePlusSignInDtmf -// Handles plus (+) sign in a DTMF string. -// ----------------------------------------------------------------------------- -// -void CPEMessageHandler::HandlePlusSignInDtmf(const TPEDtmfString& aDtmfString ) - { - TEFLOGSTRING2( KTAMESINT, "PE CPEMessageHandler::HandlePlusSignInDtmf(), aDtmfString: %S", &aDtmfString ); - - // Find the SD index after the plus sign - TPtrC validManualDTMFChars( KPEValidSpeedDialChars ); - TInt index = ECCPErrorNotFound; - for ( index = 1 ; index < aDtmfString.Length() ; index++ ) - { - if ( validManualDTMFChars.Locate( aDtmfString[index] ) == ECCPErrorNotFound ) - { - TEFLOGSTRING( KTAMESINT, "PE CPEMessageHandler::HandlePlusSignInDtmf(), Not Found" ); - break; - } - } - TPESpeedDialSubstituionStatus sdStatus = EPEDtmfSpeedDialOk; - - // Empty string after the plus sign - if ( index == 1 ) - { - if ( aDtmfString.Length() > 1 ) - { - // pw+ after the plus sign. - sdStatus = EPEDtmfSpeedDialInvalidSpeedDial; - } - else - { - // string ended with the plus sign. - sdStatus = EPEDtmfSpeedDialPromptUser; - } - // Clear DTMF string. - iDataStore.SetDtmfString( KNullDesC() ); - } - // Else if the SD location ends the DTMF string, move the index to the - // last character instead of one over. - else if ( index == aDtmfString.Length() ) - { - index--; - } - - // Check that the index is valid - TInt sdIndex = ECCPErrorNotFound; - if ( sdStatus == EPEDtmfSpeedDialOk ) - { - TLex lexer( aDtmfString.Mid( 1, index ) ); - // convert it to a number - if ( lexer.Val(sdIndex) == ECCPErrorNone ) - { - // Is it out of range - if ( sdIndex < KPESpeedDialIndexMin || - sdIndex > KPESpeedDialIndexMax ) - { - sdStatus = EPEDtmfSpeedDialInvalidSpeedDial; - } - } - else - { - sdStatus = EPEDtmfSpeedDialInvalidSpeedDial; - } - } - - // Fetch the SD location - TPEPhoneNumber speedDialLocationString; - if ( sdStatus == EPEDtmfSpeedDialOk ) - { - TEFLOGSTRING2( KTAMESINT, "PE CPEMessageHandler::HandlePlusSignInDtmf(), SD location %i", sdIndex ); - if ( iContactHandling.GetSpeedDialLocation( - sdIndex, speedDialLocationString ) == ECCPErrorNone ) - { - // Is content found - if ( speedDialLocationString.Length() == 0) - { - sdStatus = EPEDtmfSpeedDialNotAssigned; - } - else if ( speedDialLocationString[0] == KPEDtmfPlusChar) - { - // plus char must be removed from dtmf string before sending - RemovePlusPrefix( speedDialLocationString ); - } - } - else - { - sdStatus = EPEDtmfSpeedDialInvalidSpeedDial; - } - } - - // Now interpret the sdStatus to the next action - switch ( sdStatus ) - { - case EPEDtmfSpeedDialOk: - { - TEFLOGSTRING2( KTAMESINT, "PE CPEMessageHandler::HandlePlusSignInDtmf(), SD result: %S", &speedDialLocationString ); - // Take the SD location string and use that as new DTMF string - iDataStore.SetDtmfStringCommand( speedDialLocationString ); - - // Do recursion asyncronously - TCallBack callBack( CallBackHandleSendDtmf, this ); - delete iAsyncCallBack; - iAsyncCallBack = NULL; - // Function does not allow to leave. - iAsyncCallBack = new CAsyncCallBack( callBack, CActive::EPriorityStandard ); - if ( iAsyncCallBack ) - { - iAsyncCallBack->CallBack(); - } - else - { - iModel.SendMessage( MEngineMonitor::EPEMessageDTMFSendingAborted ); - } - } - break; - case EPEDtmfSpeedDialPromptUser: - // Speed dial location not given. - iDataStore.SetDtmfString( KNullDesC() ); - iModel.SendMessage( MEngineMonitor::EPEMessagePromptSpeedDial ); - break; - case EPEDtmfSpeedDialNotAssigned: - // Speed dial location valid but not assigned - iDataStore.SetDtmfString( KNullDesC() ); - iDataStore.SetDtmfStringCommand( KNullDesC() ); - iModel.SendMessage( MEngineMonitor::EPEMessageDTMFSendingAborted); - iModel.SendMessage( MEngineMonitor::EPEMessageSpeedDialNotAssigned ); - break; - case EPEDtmfSpeedDialInvalidSpeedDial: - // Speed dial location invalid - iDataStore.SetDtmfString( KNullDesC() ); - iDataStore.SetDtmfStringCommand( KNullDesC() ); - iModel.SendMessage( MEngineMonitor::EPEMessageDTMFSendingAborted); - iModel.SendMessage( MEngineMonitor::EPEMessageInvalidSpeedDial ); - break; - default: - Panic( EPEPanicInvalidState ); - break; - } // end switch - } - -// ----------------------------------------------------------------------------- // CPEMessageHandler::CheckPrefix // Checks the status of phone number prefix change setting // and calls CPEMessageHandler::ChangePrefix for execution. @@ -1082,34 +935,6 @@ return returnValue; } - -// ----------------------------------------------------------------------------- -// CPEMessageHandler::HandleGetLifeTimerData -// Reads lifetimerdata from custom api and stores it to engine info -// ----------------------------------------------------------------------------- -// -TInt CPEMessageHandler::HandleGetLifeTimerData() const - { - TCCPLifeTimeData lifeTimeData; - TCCPLifeTimeDataPckg pckg( lifeTimeData ); - - if ( iCallHandling.GetLifeTime( pckg ) ) - { - TEFLOGSTRING2( - KTAGENERAL, - "PE: CPEMessageHandler::HandleGetLifeTimerData, iHours = %d", - lifeTimeData.iHours); - TEFLOGSTRING2( - KTAGENERAL, - "PE: CPEMessageHandler::HandleGetLifeTimerData, iMinutes = %d", - lifeTimeData.iMinutes); - - iDataStore.SetLifeTimerData( pckg ); - } - - return ECCPErrorNone; - } - // ----------------------------------------------------------------------------- // CPEMessageHandler::CallbackSendMessageStoppedDTMF // ----------------------------------------------------------------------------- @@ -1512,16 +1337,7 @@ RemovePreAndPostFix( number ); iDataStore.SetRemotePhoneNumber( number, aCallId ); - } - - // The Colp number is stored to remoteparty in connected state. - TPEPhoneNumber colpNumber = iCallInfo->iRemoteParty.iRemoteNumber.iTelNumber; - RemovePreAndPostFix( colpNumber ); - iDataStore.SetRemoteColpNumber( colpNumber, aCallId ); - TEFLOGSTRING3( - KTAMESINT, - "PE CPEMessageHandler::SetPhoneNumberForCallLogging, colp number: '%S', call id: %d", - &colpNumber, aCallId ); + } } else if ( iDataStore.CallDirection( aCallId ) == RMobileCall::EMobileTerminated ) { @@ -1747,9 +1563,6 @@ // logging works OK (see CPEMessageHandler::SetPhoneNumberForCallLogging). iDataStore.SetPhoneNumber( KNullDesC() ); - // COLP number is updated in connected state - UpdateRemotePartyInfo(); - return ECCPErrorNone; } @@ -1863,6 +1676,7 @@ else { iDataStore.SetCallOriginCommand(EPECallOriginPhone); + ResetClientCallData(); } //Get number of calls @@ -1919,6 +1733,23 @@ } // ----------------------------------------------------------------------------- +// CPEMessageHandler::ResetClientCallData +// Reset CCCECallParameters to prevent of use a previous callīs parameters +// ----------------------------------------------------------------------------- +// +void CPEMessageHandler::ResetClientCallData() + { + TEFLOGSTRING( KTAINT, "PE CPEMessageHandler::ResetClientCallData()" ); + + CCCECallParameters& params = iDataStore.CallParameters(); + params.SetLineType( CCCECallParameters::ECCELineTypePrimary ); + params.SetUUSId( KNullDesC() ); + params.SetBearer( KNullDesC8() ); + params.SetSubAddress( KNullDesC() ); + params.SetOrigin( CCCECallParameters::ECCECallOriginPhone ); + } + +// ----------------------------------------------------------------------------- // CPEMessageHandler::HandleSatCallRequestCompleted // Sends respond to SAT after dial request completion // ----------------------------------------------------------------------------- @@ -2573,7 +2404,7 @@ // Checks if emergency call is allowed. // ----------------------------------------------------------------------------- // -TBool CPEMessageHandler::IsEmergencyAllowed() const +TBool CPEMessageHandler::IsNetworkConnectionAllowed() const { TBool networkConnectionAllowed( EFalse ); //It is safe to ignore error code here: a default value of EFalse is used if the get fails @@ -2894,9 +2725,10 @@ // CPEMessageHandler::HandleRemotePartyInfoChanged // ----------------------------------------------------------------------------- // -void CPEMessageHandler::HandleRemotePartyInfoChanged() - { - UpdateRemotePartyInfo(); +void CPEMessageHandler::HandleRemotePartyInfoChanged( const TInt /*aCallId*/ ) + { + UpdateRemotePartyInfo(); + } @@ -2989,6 +2821,44 @@ } // ----------------------------------------------------------------------------- +// CPEMessageHandler::AddSIMRejectedMoCsCallToLog +// ----------------------------------------------------------------------------- +// +TInt CPEMessageHandler::AddSIMRejectedMoCsCallToLog( const TInt aCallId ) + { + TInt errorCode( ECCPErrorGeneral ); + + errorCode = iCallHandling.GetCallInfo( *iCallInfo, aCallId ); + + if ( errorCode == ECCPErrorNone ) + { + TPEState callState; + callState = iCallHandling.GetCallState( aCallId ); + TPECallType callType; + callType = iDataStore.CallType( aCallId ); + + errorCode = ECCPErrorNotFound; + + if ( EPEStateIdle == callState + && EPECallTypeCSVoice == callType ) + { + SetPhoneNumberForCallLogging( aCallId ); + + errorCode = UpdateClientInfo( aCallId ); + + // Calls have to log also without a contact (ECCPErrorNotFound). + if ( errorCode == ECCPErrorNone || errorCode == ECCPErrorNotFound ) + { + // Save the rest of information to EngineInfo. + SetLoggingInfo( aCallId, callState ); + errorCode = iLogHandling.SaveCallEntry( aCallId ); + } + } + } + return errorCode; + } + +// ----------------------------------------------------------------------------- // CPEMessageHandler::HandleDialCall // Handles dial message from dial service // @@ -3004,30 +2874,4 @@ return errorCode; } - -// ----------------------------------------------------------------------------- -// CPEMessageHandler::ExecuteKeySequenceL -// Only sequences which are not issued with send-key are handled here. SS -// commands etc. are processed in HandleDialCallL(). -// ----------------------------------------------------------------------------- -// -TBool CPEMessageHandler::ExecuteKeySequenceL( const TDesC16 &aSequence ) -{ - TBool keySequenceProcessed( EFalse ); - - iOptions->SetOptionStatus( KPhoneOptionInCall, - ( iCallHandling.GetNumberOfCalls() > 0 ) ); - iOptions->SetOptionStatus( KPhoneOptionSend, EFalse ); - iOptions->SetOptionStatus( KPhoneOptionVoipCall, EFalse ); - - if ( iParser->ParseL( aSequence, *iResult, *iOptions ) ) - { - keySequenceProcessed = ETrue; - iGsmParserErrorCode = ECCPErrorNone; - iParserHandlerContainer->ProcessL( *iResult ); - } - - return keySequenceProcessed; -} - // End of File