phoneengine/phonemodel/src/cpephonemodel.cpp
branchGCC_SURGE
changeset 51 f39ed5e045e0
parent 30 ebdbd102c78a
parent 46 bc5a64e5bc3c
equal deleted inserted replaced
40:bab96b7ed1a4 51:f39ed5e045e0
    18 
    18 
    19 
    19 
    20 //  INCLUDE FILES
    20 //  INCLUDE FILES
    21 #include "cpeactivestarter.h"
    21 #include "cpeactivestarter.h"
    22 #include "cpeexternaldatahandler.h"
    22 #include "cpeexternaldatahandler.h"
    23 #include "cpeidlestatusmonitor.h"
       
    24 #include "cpemessagehandler.h"
    23 #include "cpemessagehandler.h"
    25 #include "cpephonemodel.h"
    24 #include "cpephonemodel.h"
    26 #include "cpeservicehandling.h"
    25 #include "cpeservicehandling.h"
    27 #include "cpesimstatemonitor.h"
    26 #include "cpesimstatemonitor.h"
    28 #include "pepanic.pan"
    27 #include "pepanic.pan"
    39 #include <mccedtmfinterface.h>
    38 #include <mccedtmfinterface.h>
    40 #include <mpecontacthandling.h>
    39 #include <mpecontacthandling.h>
    41 #include <mpeloghandling.h>
    40 #include <mpeloghandling.h>
    42 #include <xqservicerequest.h>
    41 #include <xqservicerequest.h>
    43 #include "phoneservices.h"
    42 #include "phoneservices.h"
    44 #include "parserrecognizer.h"
       
    45 
    43 
    46 // CONSTANTS
    44 // CONSTANTS
    47 const TInt KDriveProfile ( 6 );
    45 const TInt KDriveProfile ( 6 );
    48 const TInt KPECallTimerOff = 0;
    46 const TInt KPECallTimerOff = 0;
       
    47 const TInt KTimesToSplitValue = 16;
    49 
    48 
    50 // ==================== LOCAL FUNCTIONS ====================
    49 // ==================== LOCAL FUNCTIONS ====================
    51 
    50 
    52 // ================= MEMBER FUNCTIONS =======================
    51 // ================= MEMBER FUNCTIONS =======================
    53 
    52 
    97     TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 4" );
    96     TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 4" );
    98     iActiveStarter = CPEActiveStarter::NewL( this );
    97     iActiveStarter = CPEActiveStarter::NewL( this );
    99     TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 5" );
    98     TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 5" );
   100     iActiveStarter->StartUp();
    99     iActiveStarter->StartUp();
   101     TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 6" );
   100     TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 6" );
       
   101     // Reserve needed callinfo and remoteinfo from heap.
       
   102     iCallInfo = new ( ELeave ) RMobileCall::TMobileCallInfoV3;
   102     }// ConstructL
   103     }// ConstructL
   103 
   104 
   104 // -----------------------------------------------------------------------------
   105 // -----------------------------------------------------------------------------
   105 // CPEPhoneModel::NewL
   106 // CPEPhoneModel::NewL
   106 // Two-phased constructor.
   107 // Two-phased constructor.
   146     delete iLogHandling;
   147     delete iLogHandling;
   147     delete iAudioData;
   148     delete iAudioData;
   148     delete iCallHandling;
   149     delete iCallHandling;
   149     delete iExternalDataHandler;
   150     delete iExternalDataHandler;
   150     delete iCallStackCutter;
   151     delete iCallStackCutter;
       
   152     delete iCallInfo;
   151 
   153 
   152     if ( iActiveStarter )
   154     if ( iActiveStarter )
   153         {
   155         {
   154         delete iActiveStarter;
   156         delete iActiveStarter;
   155         }
   157         }
   156 
   158 
   157     FeatureManager::UnInitializeLib();
   159     FeatureManager::UnInitializeLib();
   158     iFsSession.Close();
   160     iFsSession.Close();
   159     delete iEngineInfo;
   161     delete iEngineInfo;
   160     delete iConvergedCallEngine;
   162     delete iConvergedCallEngine;
   161     if ( iIdleStatusMonitor )
       
   162         {
       
   163         delete iIdleStatusMonitor;
       
   164         } 
       
   165     delete iPhoneServices;
   163     delete iPhoneServices;
   166     delete iParserRecognizer;
       
   167     }// ~CPEPhoneModel
   164     }// ~CPEPhoneModel
   168 
   165 
   169 // -----------------------------------------------------------------------------
   166 // -----------------------------------------------------------------------------
   170 // CPEPhoneModel::EngineInfo
   167 // CPEPhoneModel::EngineInfo
   171 // Returns the pointer of the CPEEngineInfo object.
   168 // Returns the pointer of the CPEEngineInfo object.
   459             return MESSAGE("EPEMessageContinuingDTMFSending");
   456             return MESSAGE("EPEMessageContinuingDTMFSending");
   460         case MEngineMonitor::EPEMessageCallAdded:
   457         case MEngineMonitor::EPEMessageCallAdded:
   461             return MESSAGE("EPEMessageCallAdded");
   458             return MESSAGE("EPEMessageCallAdded");
   462         case MEngineMonitor::EPEMessageRemoteTerminated:
   459         case MEngineMonitor::EPEMessageRemoteTerminated:
   463             return MESSAGE("EPEMessageRemoteTerminated");
   460             return MESSAGE("EPEMessageRemoteTerminated");
   464         case MEngineMonitor::EPEMessageShowIMEI:
       
   465             return MESSAGE("EPEMessageShowIMEI");
       
   466         case MEngineMonitor::EPEMessageUnknown:
   461         case MEngineMonitor::EPEMessageUnknown:
   467             return MESSAGE("EPEMessageUnknown");
   462             return MESSAGE("EPEMessageUnknown");
   468         case MEngineMonitor::EPEMessagePromptSpeedDial:
       
   469             return MESSAGE("EPEMessagePromptSpeedDial");
       
   470         case MEngineMonitor::EPEMessageSpeedDialNotAssigned:
       
   471             return MESSAGE("EPEMessageSpeedDialNotAssigned");
       
   472         case MEngineMonitor::EPEMessageInvalidSpeedDial:
       
   473             return MESSAGE("EPEMessageInvalidSpeedDial"); 
       
   474         case MEngineMonitor::EPEMessageDataPortLoaned:
   463         case MEngineMonitor::EPEMessageDataPortLoaned:
   475             return MESSAGE("EPEMessageDataPortLoaned");
   464             return MESSAGE("EPEMessageDataPortLoaned");
   476             
   465             
   477         case MEngineMonitor::EPEMessageUnattendedTransferRequest:
   466         case MEngineMonitor::EPEMessageUnattendedTransferRequest:
   478             return MESSAGE("EPEMessageUnattendedTransferRequest");
   467             return MESSAGE("EPEMessageUnattendedTransferRequest");
   560         // Miscellaneous messages             10000 - 10999
   549         // Miscellaneous messages             10000 - 10999
   561         case MEngineMonitor::EPEMessageInValidEmergencyNumber:
   550         case MEngineMonitor::EPEMessageInValidEmergencyNumber:
   562             return MESSAGE("EPEMessageInValidEmergencyNumber");
   551             return MESSAGE("EPEMessageInValidEmergencyNumber");
   563         case MEngineMonitor::EPEMessageValidEmergencyNumber:
   552         case MEngineMonitor::EPEMessageValidEmergencyNumber:
   564             return MESSAGE("EPEMessageValidEmergencyNumber");
   553             return MESSAGE("EPEMessageValidEmergencyNumber");
   565         case MEngineMonitor::EPEMessagePhoneIdentityReady:
       
   566             return MESSAGE("EPEMessagePhoneIdentityReady");
       
   567         case MEngineMonitor::EPEMessageStartATDialing:
   554         case MEngineMonitor::EPEMessageStartATDialing:
   568             return MESSAGE("EPEMessageStartATDialing");
   555             return MESSAGE("EPEMessageStartATDialing");
   569         case MEngineMonitor::EPEMessageLogEventSaved:
   556         case MEngineMonitor::EPEMessageLogEventSaved:
   570             return MESSAGE("EPEMessageLogEventSaved");
   557             return MESSAGE("EPEMessageLogEventSaved");
   571         case MEngineMonitor::EPEMessageDoNotSendMe:
   558         case MEngineMonitor::EPEMessageDoNotSendMe:
   606             return MESSAGE("EPEMessageRemoteCreatedConference");
   593             return MESSAGE("EPEMessageRemoteCreatedConference");
   607         case MEngineMonitor::EPEMessageRemoteHeld:
   594         case MEngineMonitor::EPEMessageRemoteHeld:
   608             return MESSAGE("EPEMessageRemoteHeld");
   595             return MESSAGE("EPEMessageRemoteHeld");
   609         case MEngineMonitor::EPEMessageRemoteResumed:
   596         case MEngineMonitor::EPEMessageRemoteResumed:
   610             return MESSAGE("EPEMessageRemoteResumed");
   597             return MESSAGE("EPEMessageRemoteResumed");
   611         case MEngineMonitor::EPEMessageShowVersion:
       
   612             return MESSAGE("EPEMessageShowVersion");
       
   613         case MEngineMonitor::EPEMessageTempClirSuppressUnsuccessful:
   598         case MEngineMonitor::EPEMessageTempClirSuppressUnsuccessful:
   614             return MESSAGE("EPEMessageTempClirSuppressUnsuccessful");
   599             return MESSAGE("EPEMessageTempClirSuppressUnsuccessful");
   615         case MEngineMonitor::EPEMessageTempClirActivationUnsuccessful:
   600         case MEngineMonitor::EPEMessageTempClirActivationUnsuccessful:
   616             return MESSAGE("EPEMessageTempClirActivationUnsuccessful");
   601             return MESSAGE("EPEMessageTempClirActivationUnsuccessful");
   617 
   602         case MEngineMonitor::EPEMessageOutgoingCallBarred:
       
   603             return MESSAGE("EPEMessageOutgoingCallBarred");
       
   604             
   618         // Contact messages                       11400 - 11599
   605         // Contact messages                       11400 - 11599
   619 
   606 
   620         // Error messages                         11600 - 11799
   607         // Error messages                         11600 - 11799
   621 
   608 
   622         // Network messages                       11800 - 12999
   609         // Network messages                       11800 - 12999
   632         // Parser messages                        12000 - 12199
   619         // Parser messages                        12000 - 12199
   633         case MEngineMonitor::EPEMessageActivateRfsDeep:
   620         case MEngineMonitor::EPEMessageActivateRfsDeep:
   634             return MESSAGE("EPEMessageActivateRfsDeep");
   621             return MESSAGE("EPEMessageActivateRfsDeep");
   635         case MEngineMonitor::EPEMessageActivateRfsNormal:
   622         case MEngineMonitor::EPEMessageActivateRfsNormal:
   636             return MESSAGE("EPEMessageActivateRfsNormal");
   623             return MESSAGE("EPEMessageActivateRfsNormal");
   637         case MEngineMonitor::EPEMessageActivateWarrantyMode:
       
   638             return MESSAGE("EPEMessageActivateWarrantyMode");
       
   639         case MEngineMonitor::EPEMessageIssuedSSRequest:
   624         case MEngineMonitor::EPEMessageIssuedSSRequest:
   640             return MESSAGE("EPEMessageIssuedSSRequest");
   625             return MESSAGE("EPEMessageIssuedSSRequest");
   641         case MEngineMonitor::EPEMessageIssuingSSRequest:
   626         case MEngineMonitor::EPEMessageIssuingSSRequest:
   642             return MESSAGE("EPEMessageIssuingSSRequest");
   627             return MESSAGE("EPEMessageIssuingSSRequest");
   643 
   628 
   929             {
   914             {
   930             iEngineInfo->SetCallState( EPEStateUnknown, aCallId );
   915             iEngineInfo->SetCallState( EPEStateUnknown, aCallId );
   931             }
   916             }
   932         }
   917         }
   933 
   918 
       
   919     if ( message == MEngineMonitor::EPEMessageOutgoingCallBarred )
       
   920         {
       
   921         iEngineInfo->SetOutgoingCallBarringActivated( ETrue );
       
   922         message = KPEDontSendMessage;
       
   923         }
       
   924     
   934     if ( ( message == MEngineMonitor::EPEMessageIncoming ) )
   925     if ( ( message == MEngineMonitor::EPEMessageIncoming ) )
   935         {
   926         {
   936         if ( FeatureManager::FeatureSupported( KFeatureIdDriveMode ) )
   927         if ( FeatureManager::FeatureSupported( KFeatureIdDriveMode ) )
   937             {
   928             {
   938             //Check for Drive mode
   929             //Check for Drive mode
   966         TEFLOGSTRING3( 
   957         TEFLOGSTRING3( 
   967             KTAERROR,
   958             KTAERROR,
   968             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=%s, CallId=%d",
   959             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=%s, CallId=%d",
   969         messageName2.Ptr( ), aCallId );
   960         messageName2.Ptr( ), aCallId );
   970         #endif
   961         #endif
       
   962         SetCallError( aCallId );
   971         TPEErrorInfo errorInfo;
   963         TPEErrorInfo errorInfo;
   972         errorInfo.iErrorCode = errorCode;
   964         errorInfo.iErrorCode = errorCode;
   973         errorInfo.iCallId = aCallId;
   965         errorInfo.iCallId = aCallId;
   974         errorInfo.iErrorType = EPECcp;
   966         errorInfo.iErrorType = EPECcp;
   975         iEngineMonitor.HandleError( errorInfo );
   967         iEngineMonitor.HandleError( errorInfo );
   978         {
   970         {
   979         TEFLOGSTRING2( 
   971         TEFLOGSTRING2( 
   980             KTAERROR, 
   972             KTAERROR, 
   981             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageCallHandlingError, CallId=%d"
   973             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageCallHandlingError, CallId=%d"
   982         , aCallId );
   974         , aCallId );
   983         TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
   975         SetCallError( aCallId );
   984         errorInfo.iCallId = aCallId;
   976 	    TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
   985         errorInfo.iErrorType = EPECcp;
   977     	errorInfo.iCallId = aCallId;
   986         iEngineMonitor.HandleError( errorInfo );
   978     	errorInfo.iErrorType = EPECcp;
       
   979 
       
   980         if ( ECCPErrorCCCallRejected == errorInfo.iErrorCode )
       
   981             {
       
   982             // Call direction is not set if the call was rejected before Dialing-state
       
   983             iEngineInfo->SetCallDirection( RMobileCall::EMobileOriginated, aCallId );
       
   984             iMessageHandler->AddSIMRejectedMoCsCallToLog( aCallId );
       
   985             }
       
   986     	iEngineMonitor.HandleError( errorInfo );
   987         }
   987         }
   988     else if ( message == MEngineMonitor::EPEMessageServiceHandlingError )
   988     else if ( message == MEngineMonitor::EPEMessageServiceHandlingError )
   989         {
   989         {
   990         TEFLOGSTRING( 
   990         TEFLOGSTRING( 
   991             KTAERROR, 
   991             KTAERROR, 
   992             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageServiceHandlingError" );
   992             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageServiceHandlingError" );
       
   993         SetCallError( aCallId );
   993         TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
   994         TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
   994         errorInfo.iCallId = aCallId;
   995         errorInfo.iCallId = aCallId;
   995         errorInfo.iErrorType = EPECch;
   996         errorInfo.iErrorType = EPECch;
   996         iEngineMonitor.HandleError( errorInfo );
   997         iEngineMonitor.HandleError( errorInfo );
   997         }
   998         }
  1022             Panic( EPEPanicIllegalCommand ) );
  1023             Panic( EPEPanicIllegalCommand ) );
  1023         iEngineMonitor.HandleMessage( 
  1024         iEngineMonitor.HandleMessage( 
  1024             static_cast<MEngineMonitor::TPEMessagesFromPhoneEngine>( message ), 
  1025             static_cast<MEngineMonitor::TPEMessagesFromPhoneEngine>( message ), 
  1025             aCallId );
  1026             aCallId );
  1026         }
  1027         }
  1027 
       
  1028         if( iParserRecognizer )
       
  1029             {
       
  1030             iParserRecognizer->sendMessage( aMessage, aCallId );
       
  1031             }
       
  1032 
       
  1033     }// SendMessage( 2 params )
  1028     }// SendMessage( 2 params )
  1034 
  1029 
  1035 // -----------------------------------------------------------------------------
  1030 // -----------------------------------------------------------------------------
  1036 // CPEPhoneModel::ProcessMessage
  1031 // CPEPhoneModel::ProcessMessage
  1037 // Process messages from the subsystems by passing them to message handlder.
  1032 // Process messages from the subsystems by passing them to message handlder.
  1109                 }
  1104                 }
  1110             if ( errorCode == ECCPErrorNone && iEngineInfo->IsSwitchToOperationOngoing() )
  1105             if ( errorCode == ECCPErrorNone && iEngineInfo->IsSwitchToOperationOngoing() )
  1111                 {
  1106                 {
  1112                 errorCode = iMessageHandler->ContinueSwitchToCall( aCallId );
  1107                 errorCode = iMessageHandler->ContinueSwitchToCall( aCallId );
  1113                 }
  1108                 }
       
  1109             
       
  1110             iEngineInfo->SetOutgoingCallBarringActivated( EFalse );
  1114             break;
  1111             break;
  1115 
  1112 
  1116         case MEngineMonitor::EPEMessageRemoteBusy:
  1113         case MEngineMonitor::EPEMessageRemoteBusy:
  1117             if ( CallIdCheck::IsVoice( aCallId ))
  1114             if ( CallIdCheck::IsVoice( aCallId ))
  1118                 {                
  1115                 {                
  1166 
  1163 
  1167         case MEngineMonitor::EPEMessageSentDTMF:
  1164         case MEngineMonitor::EPEMessageSentDTMF:
  1168             errorCode = iMessageHandler->HandleDtmfSent();
  1165             errorCode = iMessageHandler->HandleDtmfSent();
  1169             break;
  1166             break;
  1170 
  1167 
  1171         case MEngineMonitor::EPEMessageActivateWarrantyMode:
       
  1172             errorCode = iMessageHandler->HandleGetLifeTimerData( );
       
  1173             break;
       
  1174           
       
  1175         case MEngineMonitor::EPEMessageStartATDialing:
  1168         case MEngineMonitor::EPEMessageStartATDialing:
  1176             errorCode = iMessageHandler->HandleDialCall( EFalse );
  1169             errorCode = iMessageHandler->HandleDialCall( EFalse );
  1177             iMessageHandler->HandleATDialingStarted( errorCode ? EFalse : ETrue );
  1170             iMessageHandler->HandleATDialingStarted( errorCode ? EFalse : ETrue );
  1178             break;
  1171             break;
  1179 
  1172 
  1212         case MEngineMonitor::EPEMessageServiceEnabled:
  1205         case MEngineMonitor::EPEMessageServiceEnabled:
  1213             errorCode = iMessageHandler->HandleServiceEnabled();
  1206             errorCode = iMessageHandler->HandleServiceEnabled();
  1214             break;
  1207             break;
  1215             
  1208             
  1216         case MEngineMonitor::EPEMessageRemotePartyInfoChanged:
  1209         case MEngineMonitor::EPEMessageRemotePartyInfoChanged:
  1217             iMessageHandler->HandleRemotePartyInfoChanged( );
  1210             iMessageHandler->HandleRemotePartyInfoChanged( aCallId );
  1218             break;    
  1211             break;    
  1219 
  1212 
  1220         default:
  1213         default:
  1221             break;
  1214             break;
  1222             }    
  1215             }    
  1234         const TInt aCallId )
  1227         const TInt aCallId )
  1235     {    
  1228     {    
  1236     TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::DelayMessageSending" );
  1229     TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::DelayMessageSending" );
  1237         
  1230         
  1238     TBool sendingDelayed( EFalse );
  1231     TBool sendingDelayed( EFalse );
       
  1232         
       
  1233     switch ( aMessage )
       
  1234         {
       
  1235         case MEngineMonitor::EPEMessageInitiatedEmergencyCall:
       
  1236             {
       
  1237             iEngineInfo->SetIsSwitchToOperationOngoing( EFalse );  
       
  1238             sendingDelayed = ETrue;            
       
  1239             }
       
  1240             break;
       
  1241         case MEngineMonitor::EPEMessageColpNumberAvailable:
       
  1242             {              
       
  1243             sendingDelayed = ETrue;            
       
  1244             }
       
  1245             break;
       
  1246         default:
       
  1247             // Other messages cause no action.
       
  1248             break;
       
  1249         }
  1239     
  1250     
  1240     if ( MEngineMonitor::EPEMessageInitiatedEmergencyCall == aMessage )
  1251         if ( sendingDelayed )
  1241         {
  1252             {        
  1242         iEngineInfo->SetIsSwitchToOperationOngoing( EFalse );
  1253             if ( iCallStackCutter )
  1243         if ( iCallStackCutter )
  1254                 {
  1244             {
  1255                 delete iCallStackCutter;
  1245             delete iCallStackCutter;
  1256                 iCallStackCutter = NULL;
  1246             iCallStackCutter = NULL;
  1257                 }
  1247             }
  1258             TRAPD( err, iCallStackCutter = CIdle::NewL( CActive::EPriorityHigh ) );
  1248         TRAPD( err, iCallStackCutter = CIdle::NewL( CActive::EPriorityHigh ) );
  1259             if ( !err )
  1249         if ( !err )
  1260                 {
  1250             {
  1261                 iCallBackMessage = aMessage; 
  1251             iCallBackMessage = aMessage; 
  1262                 iCallBackCallId  = aCallId;
  1252             iCallBackCallId  = aCallId;
  1263                 iCallStackCutter->Start( TCallBack( CallBackMessageSend , this ) );
  1253             iCallStackCutter->Start( TCallBack( CallBackMessageSend , this ) );
  1264                 }
  1254             }
  1265             }                
  1255         sendingDelayed = ETrue;        
  1266         
  1256         }
       
  1257     return sendingDelayed;
  1267     return sendingDelayed;
  1258     }
  1268     }
  1259 
  1269 
  1260 // -----------------------------------------------------------------------------
  1270 // -----------------------------------------------------------------------------
  1261 // CPEPhoneModel::RecallSteps
  1271 // CPEPhoneModel::RecallSteps
  1415         case CPEPhoneModel::EPEPhoneServices:
  1425         case CPEPhoneModel::EPEPhoneServices:
  1416             {
  1426             {
  1417             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.1" );
  1427             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.1" );
  1418             __ASSERT_DEBUG( iMessageHandler, Panic( EPEPanicNullPointer ) );
  1428             __ASSERT_DEBUG( iMessageHandler, Panic( EPEPanicNullPointer ) );
  1419             __ASSERT_DEBUG( iEngineInfo, Panic( EPEPanicNullPointer ) );
  1429             __ASSERT_DEBUG( iEngineInfo, Panic( EPEPanicNullPointer ) );
  1420             iPhoneServices = new PhoneServices(
  1430             iPhoneServices = new PhoneServices(*iMessageHandler, *iEngineInfo);
  1421                 *iMessageHandler, *iEngineInfo, *iMessageHandler);
       
  1422             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.2" );
  1431             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.2" );
  1423             break;
  1432             break;
  1424             }
  1433             }
  1425 
  1434 
  1426         case CPEPhoneModel::EPEParserRecognizer:
       
  1427             {
       
  1428             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 17.1" );
       
  1429             iParserRecognizer = new ParserRecognizer;
       
  1430             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 17.2" );
       
  1431             break;
       
  1432             }
       
  1433             
       
  1434         case CPEPhoneModel::EPENetworkHandling:
  1435         case CPEPhoneModel::EPENetworkHandling:
  1435             {
  1436             {
  1436             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 18.1" );
  1437             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 18.1" );
  1437             XQServiceRequest request("com.nokia.services.networkhandling","start()");
  1438             XQServiceRequest request("com.nokia.services.networkhandling","start()");
  1438             bool res = request.send();
  1439             bool res = request.send();
  1491     static_cast< CPEContactHandlingProxy* >( iContactHandling )->
  1492     static_cast< CPEContactHandlingProxy* >( iContactHandling )->
  1492         CreateSecondPhaseL( *this, iFsSession );
  1493         CreateSecondPhaseL( *this, iFsSession );
  1493     TEFLOGSTRING( KTAOBJECT, 
  1494     TEFLOGSTRING( KTAOBJECT, 
  1494         "PE CPEPhoneModel::ConstructContactHandlingPhaseTwo, complete" );
  1495         "PE CPEPhoneModel::ConstructContactHandlingPhaseTwo, complete" );
  1495     SendMessage( MEngineMonitor::EPEMessagePEConstructionTwoPhaseReady );   
  1496     SendMessage( MEngineMonitor::EPEMessagePEConstructionTwoPhaseReady );   
  1496     // not need any more
       
  1497     delete iIdleStatusMonitor; 
       
  1498     iIdleStatusMonitor = NULL; 
       
  1499     }
  1497     }
  1500 
  1498 
  1501 // -----------------------------------------------------------------------------
  1499 // -----------------------------------------------------------------------------
  1502 // CallBackSendMessage
  1500 // CallBackSendMessage
  1503 // -----------------------------------------------------------------------------
  1501 // -----------------------------------------------------------------------------
  1512     self->iEngineMonitor.HandleMessage( self->iCallBackMessage, self->iCallBackCallId );
  1510     self->iEngineMonitor.HandleMessage( self->iCallBackMessage, self->iCallBackCallId );
  1513    
  1511    
  1514     return KErrNone;
  1512     return KErrNone;
  1515     }
  1513     }
  1516 
  1514 
       
  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             {
       
  1528             callError = ( iCallInfo->iExitCode >> KTimesToSplitValue ); 
       
  1529             //Set protocol spesific error code to TPEErrorInfo
       
  1530             EngineInfo()->SetProtocolError( callError, aCallId );
       
  1531             }
       
  1532         }
       
  1533     }
  1517 // End of File
  1534 // End of File