phoneengine/phonemodel/src/cpephonemodel.cpp
changeset 21 92ab7f8d0eab
parent 1 838b0a10d15b
child 22 6bb1b21d2484
equal deleted inserted replaced
4:c84cf270c54f 21:92ab7f8d0eab
    37 #include <cpeloghandlingproxy.h>
    37 #include <cpeloghandlingproxy.h>
    38 #include <featmgr.h>
    38 #include <featmgr.h>
    39 #include <mccedtmfinterface.h>
    39 #include <mccedtmfinterface.h>
    40 #include <mpecontacthandling.h>
    40 #include <mpecontacthandling.h>
    41 #include <mpeloghandling.h>
    41 #include <mpeloghandling.h>
       
    42 // <-- QT PHONE START --> 
       
    43 #include "phoneservices.h"
       
    44 #include "parserrecognizer.h"
       
    45 // <-- QT PHONE END --> 
    42 
    46 
    43 // CONSTANTS
    47 // CONSTANTS
    44 const TInt KDriveProfile ( 6 );
    48 const TInt KDriveProfile ( 6 );
    45 const TInt KPECallTimerOff = 0;
    49 const TInt KPECallTimerOff = 0;
    46 
    50 
   157     delete iConvergedCallEngine;
   161     delete iConvergedCallEngine;
   158     if ( iIdleStatusMonitor )
   162     if ( iIdleStatusMonitor )
   159         {
   163         {
   160         delete iIdleStatusMonitor;
   164         delete iIdleStatusMonitor;
   161         } 
   165         } 
       
   166 // <-- QT PHONE START --> 
       
   167     delete iPhoneServices;
       
   168     delete iParserRecognizer;
       
   169 // <-- QT PHONE END --> 
   162     }// ~CPEPhoneModel
   170     }// ~CPEPhoneModel
   163 
   171 
   164 // -----------------------------------------------------------------------------
   172 // -----------------------------------------------------------------------------
   165 // CPEPhoneModel::EngineInfo
   173 // CPEPhoneModel::EngineInfo
   166 // Returns the pointer of the CPEEngineInfo object.
   174 // Returns the pointer of the CPEEngineInfo object.
   227             return MESSAGE("EPEMessageAnswer");
   235             return MESSAGE("EPEMessageAnswer");
   228         case MPEPhoneModel::EPEMessageClientDial:
   236         case MPEPhoneModel::EPEMessageClientDial:
   229             return MESSAGE("EPEMessageClientDial");
   237             return MESSAGE("EPEMessageClientDial");
   230         case MPEPhoneModel::EPEMessageClientDialEmergency:
   238         case MPEPhoneModel::EPEMessageClientDialEmergency:
   231             return MESSAGE("EPEMessageClientDialEmergency");
   239             return MESSAGE("EPEMessageClientDialEmergency");
       
   240 // <-- QT PHONE START -->
       
   241         case MPEPhoneModel::EPEMessageDialServiceCall:
       
   242             return MESSAGE("EPEMessageDialServiceCall");
       
   243 // <-- QT PHONE END -->
   232         case MPEPhoneModel::EPEMessageContinueEmergencyCallInitialization:
   244         case MPEPhoneModel::EPEMessageContinueEmergencyCallInitialization:
   233             return MESSAGE("EPEMessageContinueEmergencyCallInitialization");
   245             return MESSAGE("EPEMessageContinueEmergencyCallInitialization");
   234         case MPEPhoneModel::EPEMessageContinueDTMFSending:
   246         case MPEPhoneModel::EPEMessageContinueDTMFSending:
   235             return MESSAGE("EPEMessageContinueDTMFSending");
   247             return MESSAGE("EPEMessageContinueDTMFSending");
   236         case MPEPhoneModel::EPEMessageDial:
   248         case MPEPhoneModel::EPEMessageDial:
   578         case MEngineMonitor::EPEMessageALSLineChanged:
   590         case MEngineMonitor::EPEMessageALSLineChanged:
   579             return MESSAGE("EPEMessageALSLineChanged");
   591             return MESSAGE("EPEMessageALSLineChanged");
   580         case MEngineMonitor::EPEMessageCallBarred:
   592         case MEngineMonitor::EPEMessageCallBarred:
   581             return MESSAGE("EPEMessageCallBarred");
   593             return MESSAGE("EPEMessageCallBarred");
   582         case MEngineMonitor::EPEMessageIncCallIsForw:
   594         case MEngineMonitor::EPEMessageIncCallIsForw:
   583         	return MESSAGE("EPEMessageIncCallIsForw");
   595             return MESSAGE("EPEMessageIncCallIsForw");
   584         case MEngineMonitor::EPEMessageIncCallForwToC:
   596         case MEngineMonitor::EPEMessageIncCallForwToC:
   585         	return MESSAGE("EPEMessageIncCallForwToC");
   597             return MESSAGE("EPEMessageIncCallForwToC");
   586         case MEngineMonitor::EPEMessageOutCallForwToC:
   598         case MEngineMonitor::EPEMessageOutCallForwToC:
   587         	return MESSAGE("EPEMessageOutCallForwToC");
   599             return MESSAGE("EPEMessageOutCallForwToC");
   588         case MEngineMonitor::EPEMessageForwardUnconditionalModeActive:
   600         case MEngineMonitor::EPEMessageForwardUnconditionalModeActive:
   589         	return MESSAGE( "EPEMessageForwardUnconditionalModeActive" );
   601             return MESSAGE( "EPEMessageForwardUnconditionalModeActive" );
   590         case MEngineMonitor::EPEMessageForwardConditionallyModeActive:
   602         case MEngineMonitor::EPEMessageForwardConditionallyModeActive:
   591         	return MESSAGE( "EPEMessageForwardConditionallyModeActive" );
   603             return MESSAGE( "EPEMessageForwardConditionallyModeActive" );
   592         case MEngineMonitor::EPEMessageDroppedConferenceMember:
   604         case MEngineMonitor::EPEMessageDroppedConferenceMember:
   593             return MESSAGE("EPEMessageDroppedConferenceMember");
   605             return MESSAGE("EPEMessageDroppedConferenceMember");
   594         case MEngineMonitor::EPEMessageGoingOneToOne:
   606         case MEngineMonitor::EPEMessageGoingOneToOne:
   595             return MESSAGE("EPEMessageGoingOneToOne");
   607             return MESSAGE("EPEMessageGoingOneToOne");
   596         case MEngineMonitor::EPEMessageIssuedUSSDRequest:
   608         case MEngineMonitor::EPEMessageIssuedUSSDRequest:
   707         {
   719         {
   708         case MPEPhoneModel::EPEMessageTerminateAllConnections:
   720         case MPEPhoneModel::EPEMessageTerminateAllConnections:
   709             errorCode = iMessageHandler->HandleTerminateAllConnections( );
   721             errorCode = iMessageHandler->HandleTerminateAllConnections( );
   710             break;
   722             break;
   711         case MPEPhoneModel::EPEMessageDial:
   723         case MPEPhoneModel::EPEMessageDial:
   712         	//Make a dial request
   724             //Make a dial request
   713             errorCode = iMessageHandler->HandleDialCall( EFalse );
   725             errorCode = iMessageHandler->HandleDialCall( EFalse );
   714             break;
   726             break;
   715         case MPEPhoneModel::EPEMessageReleaseAll: //Make HangUp requests to all calls
   727         case MPEPhoneModel::EPEMessageReleaseAll: //Make HangUp requests to all calls
   716             errorCode = iMessageHandler->HandleReleaseAll( );            
   728             errorCode = iMessageHandler->HandleReleaseAll( );            
   717             break;
   729             break;
   831             errorCode = iMessageHandler->ForwardCallToAddress();
   843             errorCode = iMessageHandler->ForwardCallToAddress();
   832             break;
   844             break;
   833         case MPEPhoneModel::EPEMessageDisableService:
   845         case MPEPhoneModel::EPEMessageDisableService:
   834             iMessageHandler->HandleDisableService();
   846             iMessageHandler->HandleDisableService();
   835             break;
   847             break;
   836 
   848 // <-- QT PHONE START -->
       
   849         case MPEPhoneModel::EPEMessageDialServiceCall:  //Make Dial request
       
   850             errorCode = iMessageHandler->HandleDialCall( EFalse );
       
   851             break;
       
   852 // <-- QT PHONE END -->
   837         default:
   853         default:
   838             errorCode = ECCPErrorNotFound;
   854             errorCode = ECCPErrorNotFound;
   839             break;
   855             break;
   840         } 
   856         } 
   841 
   857 
   842     if( errorCode )
   858     if( errorCode )
   843 	    {
   859         {
   844 	    TPEErrorInfo errorInfo;
   860         TPEErrorInfo errorInfo;
   845 	    errorInfo.iErrorCode = errorCode;
   861         errorInfo.iErrorCode = errorCode;
   846 	    errorInfo.iCallId = KPECallIdNotUsed;
   862         errorInfo.iCallId = KPECallIdNotUsed;
   847 	    errorInfo.iErrorType = EPECcp;
   863         errorInfo.iErrorType = EPECcp;
   848  	    iEngineMonitor.HandleError( errorInfo );
   864         iEngineMonitor.HandleError( errorInfo );
   849 	    }
   865         }
   850     }// HandleMessage
   866     }// HandleMessage
   851 
   867 
   852 // -----------------------------------------------------------------------------
   868 // -----------------------------------------------------------------------------
   853 // CPEPhoneModel::SendMessage
   869 // CPEPhoneModel::SendMessage
   854 // Reroutes messages to the over loaded SendMessage( TInt aMessage, TInt aCallId ) method.
   870 // Reroutes messages to the over loaded SendMessage( TInt aMessage, TInt aCallId ) method.
   934                 }
   950                 }
   935             }
   951             }
   936         }
   952         }
   937 
   953 
   938     if ( message == MEngineMonitor::EPEMessageChangedCallDuration )    
   954     if ( message == MEngineMonitor::EPEMessageChangedCallDuration )    
   939 	    {   
   955         {   
   940 	    TInt callTimerSetting( EFalse );
   956         TInt callTimerSetting( EFalse );
   941         // safe to ignore error code here, duration display equals to zero == off if it fails
   957         // safe to ignore error code here, duration display equals to zero == off if it fails
   942         iExternalDataHandler->Get( EPECallDurationDisplaySetting, callTimerSetting );
   958         iExternalDataHandler->Get( EPECallDurationDisplaySetting, callTimerSetting );
   943         // Message EPEMessageChangedCallDuration send supressed, if duration display is OFF
   959         // Message EPEMessageChangedCallDuration send supressed, if duration display is OFF
   944         if ( callTimerSetting == KPECallTimerOff )
   960         if ( callTimerSetting == KPECallTimerOff )
   945             {
   961             {
   946             message = KPEDontSendMessage;
   962             message = KPEDontSendMessage;
   947             }
   963             }
   948 	    }
   964         }
   949 
   965 
   950     //MessageHandler may return error code
   966     //MessageHandler may return error code
   951     if ( errorCode != ECCPErrorNone && errorCode != KPEDontSendMessage )
   967     if ( errorCode != ECCPErrorNone && errorCode != KPEDontSendMessage )
   952         {
   968         {
   953         #ifdef TEF_LOGGING_ENABLED
   969         #ifdef TEF_LOGGING_ENABLED
   958             KTAERROR,
   974             KTAERROR,
   959             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=%s, CallId=%d",
   975             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=%s, CallId=%d",
   960         messageName2.Ptr( ), aCallId );
   976         messageName2.Ptr( ), aCallId );
   961         #endif
   977         #endif
   962         TPEErrorInfo errorInfo;
   978         TPEErrorInfo errorInfo;
   963     	errorInfo.iErrorCode = errorCode;
   979         errorInfo.iErrorCode = errorCode;
   964     	errorInfo.iCallId = aCallId;
   980         errorInfo.iCallId = aCallId;
   965         errorInfo.iErrorType = EPECcp;
   981         errorInfo.iErrorType = EPECcp;
   966         iEngineMonitor.HandleError( errorInfo );
   982         iEngineMonitor.HandleError( errorInfo );
   967         }
   983         }
   968     else if ( message == MEngineMonitor::EPEMessageCallHandlingError )
   984     else if ( message == MEngineMonitor::EPEMessageCallHandlingError )
   969 	    {
   985         {
   970         TEFLOGSTRING2( 
   986         TEFLOGSTRING2( 
   971             KTAERROR, 
   987             KTAERROR, 
   972             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageCallHandlingError, CallId=%d"
   988             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageCallHandlingError, CallId=%d"
   973         , aCallId );
   989         , aCallId );
   974 	    TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
   990         TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
   975     	errorInfo.iCallId = aCallId;
   991         errorInfo.iCallId = aCallId;
   976     	errorInfo.iErrorType = EPECcp;
   992         errorInfo.iErrorType = EPECcp;
   977         iEngineMonitor.HandleError( errorInfo );
   993         iEngineMonitor.HandleError( errorInfo );
   978 	    }
   994         }
   979     else if ( message == MEngineMonitor::EPEMessageServiceHandlingError )
   995     else if ( message == MEngineMonitor::EPEMessageServiceHandlingError )
   980         {
   996         {
   981         TEFLOGSTRING( 
   997         TEFLOGSTRING( 
   982             KTAERROR, 
   998             KTAERROR, 
   983             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageServiceHandlingError" );
   999             "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageServiceHandlingError" );
   984         TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
  1000         TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
   985         errorInfo.iCallId = aCallId;
  1001         errorInfo.iCallId = aCallId;
   986         errorInfo.iErrorType = EPECch;
  1002         errorInfo.iErrorType = EPECch;
   987         iEngineMonitor.HandleError( errorInfo );
  1003         iEngineMonitor.HandleError( errorInfo );
   988 	    }
  1004         }
   989     else if ( message != KPEDontSendMessage && errorCode != KPEDontSendMessage )
  1005     else if ( message != KPEDontSendMessage && errorCode != KPEDontSendMessage )
   990         {
  1006         {
   991         // Map message for PhoneApplication, since it doesn't use 
  1007         // Map message for PhoneApplication, since it doesn't use 
   992         // EPEMessageDisconnectingWithInband message
  1008         // EPEMessageDisconnectingWithInband message
   993         if( message == MEngineMonitor::EPEMessageDisconnectingWithInband )
  1009         if( message == MEngineMonitor::EPEMessageDisconnectingWithInband )
  1013             Panic( EPEPanicIllegalCommand ) );
  1029             Panic( EPEPanicIllegalCommand ) );
  1014         iEngineMonitor.HandleMessage( 
  1030         iEngineMonitor.HandleMessage( 
  1015             static_cast<MEngineMonitor::TPEMessagesFromPhoneEngine>( message ), 
  1031             static_cast<MEngineMonitor::TPEMessagesFromPhoneEngine>( message ), 
  1016             aCallId );
  1032             aCallId );
  1017         }
  1033         }
       
  1034 
       
  1035 // <-- QT PHONE START -->
       
  1036         if( iParserRecognizer )
       
  1037             {
       
  1038             iParserRecognizer->sendMessage( aMessage, aCallId );
       
  1039             }
       
  1040 // <-- QT PHONE END -->
       
  1041 
       
  1042 
  1018     }// SendMessage( 2 params )
  1043     }// SendMessage( 2 params )
  1019 
  1044 
  1020 // -----------------------------------------------------------------------------
  1045 // -----------------------------------------------------------------------------
  1021 // CPEPhoneModel::ProcessMessage
  1046 // CPEPhoneModel::ProcessMessage
  1022 // Process messages from the subsystems by passing them to message handlder.
  1047 // Process messages from the subsystems by passing them to message handlder.
  1197         case MEngineMonitor::EPEMessageServiceEnabled:
  1222         case MEngineMonitor::EPEMessageServiceEnabled:
  1198             errorCode = iMessageHandler->HandleServiceEnabled();
  1223             errorCode = iMessageHandler->HandleServiceEnabled();
  1199             break;
  1224             break;
  1200             
  1225             
  1201         case MEngineMonitor::EPEMessageRemotePartyInfoChanged:
  1226         case MEngineMonitor::EPEMessageRemotePartyInfoChanged:
  1202             iMessageHandler->HandleRemotePartyInfoChanged( aCallId );
  1227             iMessageHandler->HandleRemotePartyInfoChanged( );
  1203             break;    
  1228             break;    
  1204 
  1229 
  1205         default:
  1230         default:
  1206             break;
  1231             break;
  1207             }    
  1232             }    
  1383             break;
  1408             break;
  1384             }
  1409             }
  1385         case CPEPhoneModel::EPEContactHandlingPhaseTwo:
  1410         case CPEPhoneModel::EPEContactHandlingPhaseTwo:
  1386             {
  1411             {
  1387             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.1" );
  1412             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.1" );
       
  1413 // <-- QT PHONE START -->
  1388             // Start Idle State monitor to finalize ContactHandling contruction
  1414             // Start Idle State monitor to finalize ContactHandling contruction
  1389             iIdleStatusMonitor = CPEIdleStatusMonitor::NewL (*this );     
  1415             //iIdleStatusMonitor = CPEIdleStatusMonitor::NewL (*this ); 
       
  1416             static_cast< CPEContactHandlingProxy* >( iContactHandling )->
       
  1417                    CreateSecondPhaseL( *this, iFsSession );
  1390             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.2" );
  1418             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.2" );
  1391 
  1419 
       
  1420             // This should be set after the last case
       
  1421  
       
  1422 //            continueStepping = EFalse;
       
  1423 // <-- QT PHONE END --> 
       
  1424             break; 
       
  1425             }
       
  1426         case CPEPhoneModel::EPEMediatorCommandHandler:
       
  1427             {
       
  1428             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.1" );
       
  1429             // Start Mediator command listener
       
  1430 // <-- QT PHONE START -->
       
  1431             iMediatorCommunicationHandler = CPERemotePartyInfoMediator::NewL( *this );
  1392             
  1432             
  1393             break; 
  1433             break; 
  1394             }
  1434             }
  1395         case CPEPhoneModel::EPEMediatorCommandHandler:
  1435         case CPEPhoneModel::EPEPhoneServices:
  1396             {
  1436             {
  1397             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.1" );
  1437             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.1" );
  1398             // Start Mediator command listener
  1438             __ASSERT_DEBUG( iMessageHandler, Panic( EPEPanicNullPointer ) );
  1399             iMediatorCommunicationHandler = CPERemotePartyInfoMediator::NewL( *this );
  1439             __ASSERT_DEBUG( iEngineInfo, Panic( EPEPanicNullPointer ) );
  1400             
  1440             iPhoneServices = new PhoneServices (*iMessageHandler, *iEngineInfo);
  1401             // This should be set after the last case
  1441             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.2" );
       
  1442             break;
       
  1443             }
       
  1444 
       
  1445         case CPEPhoneModel::EPEParserRecognizer:
       
  1446             {
       
  1447             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 17.1" );
       
  1448             iParserRecognizer = new ParserRecognizer;
       
  1449             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 17.2" );
  1402             continueStepping = EFalse;
  1450             continueStepping = EFalse;
  1403             break; 
  1451             break;
  1404             }
  1452             }
       
  1453 // <-- QT PHONE END --> 
  1405         default:
  1454         default:
  1406             {
  1455             {
  1407             Panic( EPEPanicIndexOutOfRange );
  1456             Panic( EPEPanicIndexOutOfRange );
  1408             break;
  1457             break;
  1409             }
  1458             }