--- a/phoneengine/phonemodel/src/cpephonemodel.cpp Tue Jun 15 14:14:38 2010 +0100
+++ b/phoneengine/phonemodel/src/cpephonemodel.cpp Thu Jul 22 16:33:21 2010 +0100
@@ -20,7 +20,6 @@
// INCLUDE FILES
#include "cpeactivestarter.h"
#include "cpeexternaldatahandler.h"
-#include "cpeidlestatusmonitor.h"
#include "cpemessagehandler.h"
#include "cpephonemodel.h"
#include "cpeservicehandling.h"
@@ -41,11 +40,11 @@
#include <mpeloghandling.h>
#include <xqservicerequest.h>
#include "phoneservices.h"
-#include "parserrecognizer.h"
// CONSTANTS
const TInt KDriveProfile ( 6 );
const TInt KPECallTimerOff = 0;
+const TInt KTimesToSplitValue = 16;
// ==================== LOCAL FUNCTIONS ====================
@@ -99,6 +98,8 @@
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
// -----------------------------------------------------------------------------
@@ -148,6 +149,7 @@
delete iCallHandling;
delete iExternalDataHandler;
delete iCallStackCutter;
+ delete iCallInfo;
if ( iActiveStarter )
{
@@ -158,12 +160,7 @@
iFsSession.Close();
delete iEngineInfo;
delete iConvergedCallEngine;
- if ( iIdleStatusMonitor )
- {
- delete iIdleStatusMonitor;
- }
delete iPhoneServices;
- delete iParserRecognizer;
}// ~CPEPhoneModel
// -----------------------------------------------------------------------------
@@ -461,16 +458,8 @@
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");
@@ -562,8 +551,6 @@
return MESSAGE("EPEMessageInValidEmergencyNumber");
case MEngineMonitor::EPEMessageValidEmergencyNumber:
return MESSAGE("EPEMessageValidEmergencyNumber");
- case MEngineMonitor::EPEMessagePhoneIdentityReady:
- return MESSAGE("EPEMessagePhoneIdentityReady");
case MEngineMonitor::EPEMessageStartATDialing:
return MESSAGE("EPEMessageStartATDialing");
case MEngineMonitor::EPEMessageLogEventSaved:
@@ -608,13 +595,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
@@ -634,8 +621,6 @@
return MESSAGE("EPEMessageActivateRfsDeep");
case MEngineMonitor::EPEMessageActivateRfsNormal:
return MESSAGE("EPEMessageActivateRfsNormal");
- case MEngineMonitor::EPEMessageActivateWarrantyMode:
- return MESSAGE("EPEMessageActivateWarrantyMode");
case MEngineMonitor::EPEMessageIssuedSSRequest:
return MESSAGE("EPEMessageIssuedSSRequest");
case MEngineMonitor::EPEMessageIssuingSSRequest:
@@ -931,6 +916,12 @@
}
}
+ if ( message == MEngineMonitor::EPEMessageOutgoingCallBarred )
+ {
+ iEngineInfo->SetOutgoingCallBarringActivated( ETrue );
+ message = KPEDontSendMessage;
+ }
+
if ( ( message == MEngineMonitor::EPEMessageIncoming ) )
{
if ( FeatureManager::FeatureSupported( KFeatureIdDriveMode ) )
@@ -968,6 +959,7 @@
"PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=%s, CallId=%d",
messageName2.Ptr( ), aCallId );
#endif
+ SetCallError( aCallId );
TPEErrorInfo errorInfo;
errorInfo.iErrorCode = errorCode;
errorInfo.iCallId = aCallId;
@@ -980,16 +972,25 @@
KTAERROR,
"PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageCallHandlingError, CallId=%d"
, aCallId );
- TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
- errorInfo.iCallId = aCallId;
- errorInfo.iErrorType = EPECcp;
- iEngineMonitor.HandleError( errorInfo );
+ SetCallError( aCallId );
+ TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
+ errorInfo.iCallId = aCallId;
+ errorInfo.iErrorType = EPECcp;
+
+ if ( ECCPErrorCCCallRejected == errorInfo.iErrorCode )
+ {
+ // Call direction is not set if the call was rejected before Dialing-state
+ iEngineInfo->SetCallDirection( RMobileCall::EMobileOriginated, aCallId );
+ 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;
@@ -1024,12 +1025,6 @@
static_cast<MEngineMonitor::TPEMessagesFromPhoneEngine>( message ),
aCallId );
}
-
- if( iParserRecognizer )
- {
- iParserRecognizer->sendMessage( aMessage, aCallId );
- }
-
}// SendMessage( 2 params )
// -----------------------------------------------------------------------------
@@ -1111,6 +1106,8 @@
{
errorCode = iMessageHandler->ContinueSwitchToCall( aCallId );
}
+
+ iEngineInfo->SetOutgoingCallBarringActivated( EFalse );
break;
case MEngineMonitor::EPEMessageRemoteBusy:
@@ -1168,10 +1165,6 @@
errorCode = iMessageHandler->HandleDtmfSent();
break;
- case MEngineMonitor::EPEMessageActivateWarrantyMode:
- errorCode = iMessageHandler->HandleGetLifeTimerData( );
- break;
-
case MEngineMonitor::EPEMessageStartATDialing:
errorCode = iMessageHandler->HandleDialCall( EFalse );
iMessageHandler->HandleATDialingStarted( errorCode ? EFalse : ETrue );
@@ -1214,7 +1207,7 @@
break;
case MEngineMonitor::EPEMessageRemotePartyInfoChanged:
- iMessageHandler->HandleRemotePartyInfoChanged( );
+ iMessageHandler->HandleRemotePartyInfoChanged( aCallId );
break;
default:
@@ -1236,24 +1229,41 @@
TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::DelayMessageSending" );
TBool sendingDelayed( EFalse );
-
- if ( MEngineMonitor::EPEMessageInitiatedEmergencyCall == aMessage )
+
+ switch ( aMessage )
{
- iEngineInfo->SetIsSwitchToOperationOngoing( EFalse );
- if ( iCallStackCutter )
+ case MEngineMonitor::EPEMessageInitiatedEmergencyCall:
{
- delete iCallStackCutter;
- iCallStackCutter = NULL;
+ iEngineInfo->SetIsSwitchToOperationOngoing( EFalse );
+ sendingDelayed = ETrue;
+ }
+ break;
+ case MEngineMonitor::EPEMessageColpNumberAvailable:
+ {
+ sendingDelayed = ETrue;
}
- TRAPD( err, iCallStackCutter = CIdle::NewL( CActive::EPriorityHigh ) );
- if ( !err )
- {
- iCallBackMessage = aMessage;
- iCallBackCallId = aCallId;
- iCallStackCutter->Start( TCallBack( CallBackMessageSend , this ) );
- }
- sendingDelayed = ETrue;
+ break;
+ default:
+ // Other messages cause no action.
+ break;
}
+
+ if ( sendingDelayed )
+ {
+ if ( iCallStackCutter )
+ {
+ delete iCallStackCutter;
+ iCallStackCutter = NULL;
+ }
+ TRAPD( err, iCallStackCutter = CIdle::NewL( CActive::EPriorityHigh ) );
+ if ( !err )
+ {
+ iCallBackMessage = aMessage;
+ iCallBackCallId = aCallId;
+ iCallStackCutter->Start( TCallBack( CallBackMessageSend , this ) );
+ }
+ }
+
return sendingDelayed;
}
@@ -1417,20 +1427,11 @@
TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.1" );
__ASSERT_DEBUG( iMessageHandler, Panic( EPEPanicNullPointer ) );
__ASSERT_DEBUG( iEngineInfo, Panic( EPEPanicNullPointer ) );
- iPhoneServices = new PhoneServices(
- *iMessageHandler, *iEngineInfo, *iMessageHandler);
+ iPhoneServices = new PhoneServices(*iMessageHandler, *iEngineInfo);
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" );
@@ -1493,9 +1494,6 @@
TEFLOGSTRING( KTAOBJECT,
"PE CPEPhoneModel::ConstructContactHandlingPhaseTwo, complete" );
SendMessage( MEngineMonitor::EPEMessagePEConstructionTwoPhaseReady );
- // not need any more
- delete iIdleStatusMonitor;
- iIdleStatusMonitor = NULL;
}
// -----------------------------------------------------------------------------
@@ -1514,4 +1512,23 @@
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