phoneengine/phonemodel/src/cpephonemodel.cpp
branchRCL_3
changeset 81 c26cc2a7c548
parent 69 8baf28733c3d
equal deleted inserted replaced
73:e30d4a1b8bad 81:c26cc2a7c548
    41 #include <mpeloghandling.h>
    41 #include <mpeloghandling.h>
    42 
    42 
    43 // CONSTANTS
    43 // CONSTANTS
    44 const TInt KDriveProfile ( 6 );
    44 const TInt KDriveProfile ( 6 );
    45 const TInt KPECallTimerOff = 0;
    45 const TInt KPECallTimerOff = 0;
    46 const TInt KTimesToSplitValue = 16;
       
    47 
    46 
    48 // ==================== LOCAL FUNCTIONS ====================
    47 // ==================== LOCAL FUNCTIONS ====================
    49 
    48 
    50 // ================= MEMBER FUNCTIONS =======================
    49 // ================= MEMBER FUNCTIONS =======================
    51 
    50 
    95     TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 4" );
    94     TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 4" );
    96     iActiveStarter = CPEActiveStarter::NewL( this );
    95     iActiveStarter = CPEActiveStarter::NewL( this );
    97     TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 5" );
    96     TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 5" );
    98     iActiveStarter->StartUp();
    97     iActiveStarter->StartUp();
    99     TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 6" );
    98     TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 6" );
   100     // Reserve needed callinfo and remoteinfo from heap.
       
   101     iCallInfo = new ( ELeave ) RMobileCall::TMobileCallInfoV3;
       
   102     }// ConstructL
    99     }// ConstructL
   103 
   100 
   104 // -----------------------------------------------------------------------------
   101 // -----------------------------------------------------------------------------
   105 // CPEPhoneModel::NewL
   102 // CPEPhoneModel::NewL
   106 // Two-phased constructor.
   103 // Two-phased constructor.
   146     delete iLogHandling;
   143     delete iLogHandling;
   147     delete iAudioData;
   144     delete iAudioData;
   148     delete iCallHandling;
   145     delete iCallHandling;
   149     delete iExternalDataHandler;
   146     delete iExternalDataHandler;
   150     delete iCallStackCutter;
   147     delete iCallStackCutter;
   151     delete iCallInfo;
       
   152 
   148 
   153     if ( iActiveStarter )
   149     if ( iActiveStarter )
   154         {
   150         {
   155         delete iActiveStarter;
   151         delete iActiveStarter;
   156         }
   152         }
   969         TEFLOGSTRING3( 
   965         TEFLOGSTRING3( 
   970             KTAERROR,
   966             KTAERROR,
   971             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=%s, CallId=%d",
   967             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=%s, CallId=%d",
   972         messageName2.Ptr( ), aCallId );
   968         messageName2.Ptr( ), aCallId );
   973         #endif
   969         #endif
   974         SetCallError( aCallId );
       
   975         TPEErrorInfo errorInfo;
   970         TPEErrorInfo errorInfo;
   976     	errorInfo.iErrorCode = errorCode;
   971     	errorInfo.iErrorCode = errorCode;
   977     	errorInfo.iCallId = aCallId;
   972     	errorInfo.iCallId = aCallId;
   978         errorInfo.iErrorType = EPECcp;
   973         errorInfo.iErrorType = EPECcp;
   979         iEngineMonitor.HandleError( errorInfo );
   974         iEngineMonitor.HandleError( errorInfo );
   982 	    {
   977 	    {
   983         TEFLOGSTRING2( 
   978         TEFLOGSTRING2( 
   984             KTAERROR, 
   979             KTAERROR, 
   985             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageCallHandlingError, CallId=%d"
   980             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageCallHandlingError, CallId=%d"
   986         , aCallId );
   981         , aCallId );
   987         SetCallError( aCallId );
       
   988 	    TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
   982 	    TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
   989     	errorInfo.iCallId = aCallId;
   983     	errorInfo.iCallId = aCallId;
   990     	errorInfo.iErrorType = EPECcp;
   984     	errorInfo.iErrorType = EPECcp;
   991 
   985 
   992         if ( ECCPErrorCCCallRejected == errorInfo.iErrorCode )
   986         if ( ECCPErrorCCCallRejected == errorInfo.iErrorCode )
  1000     else if ( message == MEngineMonitor::EPEMessageServiceHandlingError )
   994     else if ( message == MEngineMonitor::EPEMessageServiceHandlingError )
  1001         {
   995         {
  1002         TEFLOGSTRING( 
   996         TEFLOGSTRING( 
  1003             KTAERROR, 
   997             KTAERROR, 
  1004             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageServiceHandlingError" );
   998             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageServiceHandlingError" );
  1005         SetCallError( aCallId );
       
  1006         TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
   999         TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
  1007         errorInfo.iCallId = aCallId;
  1000         errorInfo.iCallId = aCallId;
  1008         errorInfo.iErrorType = EPECch;
  1001         errorInfo.iErrorType = EPECch;
  1009         iEngineMonitor.HandleError( errorInfo );
  1002         iEngineMonitor.HandleError( errorInfo );
  1010 	    }
  1003 	    }
  1134             iEngineInfo->SetIsSwitchToOperationOngoing( EFalse );
  1127             iEngineInfo->SetIsSwitchToOperationOngoing( EFalse );
  1135             iMessageHandler->HandleCallHandlingError( aCallId, EFalse );            
  1128             iMessageHandler->HandleCallHandlingError( aCallId, EFalse );            
  1136             break;
  1129             break;
  1137                 
  1130                 
  1138         case MEngineMonitor::EPEMessageAudioOutputPreferenceChanged:
  1131         case MEngineMonitor::EPEMessageAudioOutputPreferenceChanged:
  1139             errorCode = iMessageHandler->HandleRoutePreferenceChanged();
  1132             //Don't handle route preference mode change if no active calls exist.
       
  1133             if ( iCallHandling->GetNumberOfCalls() )
       
  1134                 {
       
  1135                 errorCode = iMessageHandler->HandleRoutePreferenceChanged();
       
  1136                 }
  1140             break;
  1137             break;
  1141                     
  1138                     
  1142         case MEngineMonitor::EPEMessageConferenceIdle:
  1139         case MEngineMonitor::EPEMessageConferenceIdle:
  1143             if ( CallIdCheck::IsConference( aCallId ) )
  1140             if ( CallIdCheck::IsConference( aCallId ) )
  1144                 {
  1141                 {
  1510     self->iEngineMonitor.HandleMessage( self->iCallBackMessage, self->iCallBackCallId );
  1507     self->iEngineMonitor.HandleMessage( self->iCallBackMessage, self->iCallBackCallId );
  1511    
  1508    
  1512     return KErrNone;
  1509     return KErrNone;
  1513     }
  1510     }
  1514 
  1511 
  1515 // -----------------------------------------------------------------------------
       
  1516 // SetCallError
       
  1517 // -----------------------------------------------------------------------------
       
  1518 //
       
  1519 void CPEPhoneModel::SetCallError( TInt aCallId )
       
  1520     {
       
  1521     TInt callError = KErrNone;
       
  1522     if ( iCallHandling )
       
  1523         {
       
  1524         TInt err = iCallHandling->GetCallInfo( *iCallInfo, aCallId );
       
  1525         
       
  1526         if ( err == KErrNone && ( iCallInfo->iExitCode & 0xFFFF0000 ) &&
       
  1527                 aCallId > KErrNotFound ) 
       
  1528             {
       
  1529             callError = ( iCallInfo->iExitCode >> KTimesToSplitValue ); 
       
  1530             //Set protocol spesific error code to EngineInfo
       
  1531             EngineInfo()->SetProtocolError( callError, aCallId );
       
  1532             }
       
  1533         }
       
  1534     }
       
  1535 	
       
  1536 // End of File
  1512 // End of File