telephonyserverplugins/common_tsy/commontsy/src/mmtsy/cmmvoicecalltsy.cpp
branchRCL_3
changeset 65 630d2f34d719
parent 0 3553901f7fa8
child 66 07a122eea281
child 73 70d75957b98f
equal deleted inserted replaced
61:17af172ffa5f 65:630d2f34d719
     1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
    14 //
    14 //
    15 
    15 
    16 
    16 
    17 
    17 
    18 // INCLUDE FILES
    18 // INCLUDE FILES
       
    19 
       
    20 #include "OstTraceDefinitions.h"
       
    21 #ifdef OST_TRACE_COMPILER_IN_USE
       
    22 #include "cmmvoicecalltsyTraces.h"
       
    23 #endif
       
    24 
    19 #include "cmmvoicecalltsy.h"
    25 #include "cmmvoicecalltsy.h"
    20 
    26 
    21 #include <featmgr/featurecontrol.h>
    27 #include <featmgr/featurecontrol.h>
    22 #include <featureuids.h>
    28 #include <featureuids.h>
    23 #include "cmmvoicelinetsy.h"
    29 #include "cmmvoicelinetsy.h"
    49     RMobilePhone::TMobileService aMode, 
    55     RMobilePhone::TMobileService aMode, 
    50     TDes& aName, 
    56     TDes& aName, 
    51     CMmMessageManagerBase* aMessageManager,
    57     CMmMessageManagerBase* aMessageManager,
    52     MTelephonyAudioControl* aTelephonyAudioControl )
    58     MTelephonyAudioControl* aTelephonyAudioControl )
    53     {
    59     {
    54 TFLOGSTRING2("TSY: CMmVoiceCallTsy::NewL. Call name: %S", &aName);
    60 OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_NEWL_1, "TSY: CMmVoiceCallTsy::NewL. Call name: %S", aName);
    55 
    61 
    56     CMmVoiceCallTsy* mmCall = NULL;
    62     CMmVoiceCallTsy* mmCall = NULL;
    57 
    63 
    58     //check input parameters
    64     //check input parameters
    59     if ( aMmPhone != NULL && aMmLine != NULL && ( 
    65     if ( aMmPhone != NULL && aMmLine != NULL && ( 
    76     return mmCall;
    82     return mmCall;
    77     }
    83     }
    78 
    84 
    79 CMmVoiceCallTsy::~CMmVoiceCallTsy()
    85 CMmVoiceCallTsy::~CMmVoiceCallTsy()
    80     {
    86     {
    81 TFLOGSTRING3("TSY: CMmVoiceCallTsy::~CMmVoiceCallTsy. Call deleted iCallId:%d iCallName:%S", iCallId, &iCallName);
    87 OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DTOR_1, "TSY: CMmVoiceCallTsy::~CMmVoiceCallTsy. Call deleted iCallId:%d iCallName:%S", iCallId, iCallName);
    82     }
    88     }
    83 
    89 
    84 
    90 
    85 // ---------------------------------------------------------------------------
    91 // ---------------------------------------------------------------------------
    86 // CMmVoiceCallTsy::InitInternalAttributes
    92 // CMmVoiceCallTsy::InitInternalAttributes
   116 TInt CMmVoiceCallTsy::DoExtFuncL(
   122 TInt CMmVoiceCallTsy::DoExtFuncL(
   117     const TTsyReqHandle aTsyReqHandle,
   123     const TTsyReqHandle aTsyReqHandle,
   118     const TInt aIpc,
   124     const TInt aIpc,
   119     const TDataPackage& aPackage )
   125     const TDataPackage& aPackage )
   120     {
   126     {
   121 TFLOGSTRING3("TSY: CMmVoiceCallTsy::DoExtFuncL. IPC:%d Handle:%d", aIpc, aTsyReqHandle);
   127 OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DOEXTFUNCL_1, "TSY: CMmVoiceCallTsy::DoExtFuncL. IPC:%d Handle:%d", aIpc, aTsyReqHandle);
   122 
   128 
   123     TInt ret( KErrNone );
   129     TInt ret( KErrNone );
   124 
   130 
   125     TAny* dataPtr = aPackage.Ptr1();
   131     TAny* dataPtr = aPackage.Ptr1();
   126 
   132 
   264 // ---------------------------------------------------------------------------
   270 // ---------------------------------------------------------------------------
   265 //
   271 //
   266 CTelObject::TReqMode CMmVoiceCallTsy::ReqModeL(
   272 CTelObject::TReqMode CMmVoiceCallTsy::ReqModeL(
   267     const TInt aIpc )
   273     const TInt aIpc )
   268     {
   274     {
   269 TFLOGSTRING2("TSY: CMmVoiceCallTsy::ReqModeL. IPC:%d",aIpc); 
   275 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_REQMODEL_1, "TSY: CMmVoiceCallTsy::ReqModeL. IPC:%d",aIpc);
   270 
   276 
   271     CTelObject::TReqMode ret( 0 ); // default return value
   277     CTelObject::TReqMode ret( 0 ); // default return value
   272     
   278     
   273     switch ( aIpc )
   279     switch ( aIpc )
   274         {
   280         {
   508 //
   514 //
   509 TInt CMmVoiceCallTsy::CancelService(
   515 TInt CMmVoiceCallTsy::CancelService(
   510     const TInt aIpc,
   516     const TInt aIpc,
   511     const TTsyReqHandle aTsyReqHandle )
   517     const TTsyReqHandle aTsyReqHandle )
   512     {
   518     {
   513 TFLOGSTRING3("TSY: CMmVoiceCallTsy::CancelService. IPC: %d, Req handle: %d", aIpc, aTsyReqHandle); 
   519 OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_CANCELSERVICE_1, "TSY: CMmVoiceCallTsy::CancelService. IPC: %d, Req handle: %d", aIpc, aTsyReqHandle);
   514 
   520 
   515     TInt ret( KErrNone );
   521     TInt ret( KErrNone );
   516 
   522 
   517     //When the clients close their sub-sessions (eg. by calling RPhone::Close)
   523     //When the clients close their sub-sessions (eg. by calling RPhone::Close)
   518     //they may not have cancelled all their outstanding asynchronous requests
   524     //they may not have cancelled all their outstanding asynchronous requests
   629             reinterpret_cast<CCallDataPackage*>(aDataPackage);
   635             reinterpret_cast<CCallDataPackage*>(aDataPackage);
   630 
   636 
   631         callDataPackage->GetCallIdAndMode( callId, callMode ); 
   637         callDataPackage->GetCallIdAndMode( callId, callMode ); 
   632         callDataPackage->UnPackData( callStatus );
   638         callDataPackage->UnPackData( callStatus );
   633 
   639 
   634 TFLOGSTRING2("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. aResult:%d", aResult ); 
   640 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_1, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. aResult:%d", aResult );
   635 TFLOGSTRING3("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. Call status:%d Call name:%S", callStatus, &iCallName); 
   641 OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_2, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. Call status:%d Call name:%S", callStatus, iCallName);
   636 
   642 
   637         TTsyReqHandle holdHandle = 
   643         TTsyReqHandle holdHandle = 
   638             iTsyReqHandleStore->GetTsyReqHandle( EMultimodeMobileCallHold );
   644             iTsyReqHandleStore->GetTsyReqHandle( EMultimodeMobileCallHold );
   639         TTsyReqHandle resumeHandle = 
   645         TTsyReqHandle resumeHandle = 
   640             iTsyReqHandleStore->GetTsyReqHandle( EMultimodeMobileCallResume );
   646             iTsyReqHandleStore->GetTsyReqHandle( EMultimodeMobileCallResume );
   662                             iMmPhone->CallList()->GetMmCallByIndex( i ) );
   668                             iMmPhone->CallList()->GetMmCallByIndex( i ) );
   663                         
   669                         
   664                         if( call->IsEmergencyCall() )
   670                         if( call->IsEmergencyCall() )
   665                             {
   671                             {
   666                             numberOfEmergencyCalls++;
   672                             numberOfEmergencyCalls++;
   667 TFLOGSTRING2("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. numberOfEmergencyCalls:%d", numberOfEmergencyCalls );                             
   673 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_3, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. numberOfEmergencyCalls:%d", numberOfEmergencyCalls );
   668                             }
   674                             }
   669                         }
   675                         }
   670 
   676 
   671                     // There might be another emergency call Dial started and
   677                     // There might be another emergency call Dial started and
   672                     // iEmergencyCall flag is updated to false in
   678                     // iEmergencyCall flag is updated to false in
   704                     //Inform call routing control if there were error or cancelling in dial
   710                     //Inform call routing control if there were error or cancelling in dial
   705                     if ( RMobileCall::EStatusDialling == iMobileCallStatus )
   711                     if ( RMobileCall::EStatusDialling == iMobileCallStatus )
   706                         {
   712                         {
   707                         iTelephonyAudioControl->CallStateChange(
   713                         iTelephonyAudioControl->CallStateChange(
   708                         iCallName, RMobileCall::EStatusDisconnecting );
   714                         iCallName, RMobileCall::EStatusDisconnecting );
   709 TFLOGSTRING2("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. Call routing state changed to EStatusDisconnecting: Call name:%S", &iCallName );   
   715 OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_4, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. Call routing state changed to EStatusDisconnecting: Call name:%S", iCallName );
   710                         }
   716                         }
   711                     iTelephonyAudioControl->TeardownTelephonyAudio(
   717                     iTelephonyAudioControl->TeardownTelephonyAudio(
   712                     iCallName, aResult );
   718                     iCallName, aResult );
   713 TFLOGSTRING2("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. Call routing teared down: Call name:%S", &iCallName);   
   719 OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_5, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. Call routing teared down: Call name:%S", iCallName);
   714                     iTelephonyAudioControlSetup = EFalse;
   720                     iTelephonyAudioControlSetup = EFalse;
   715                     }
   721                     }
   716 
   722 
   717                 iCallStatus = RCall::EStatusIdle;
   723                 iCallStatus = RCall::EStatusIdle;
   718                 iMobileCallStatus = RMobileCall::EStatusIdle;
   724                 iMobileCallStatus = RMobileCall::EStatusIdle;
   735                         //set last exit code
   741                         //set last exit code
   736                         iLastExitCode = aResult;
   742                         iLastExitCode = aResult;
   737                         CompleteHangUp( aResult );
   743                         CompleteHangUp( aResult );
   738                         CompleteAnswerIncomingCall( aResult );
   744                         CompleteAnswerIncomingCall( aResult );
   739                         }
   745                         }
   740 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - CompleteDial's called");                          
   746 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_6, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - CompleteDial's called");
   741                     CompleteDial( aResult );
   747                     CompleteDial( aResult );
   742                     CompleteDialNoFdn( aResult );
   748                     CompleteDialNoFdn( aResult );
   743                     CompleteDialEmergencyCall( aResult );
   749                     CompleteDialEmergencyCall( aResult );
   744                     }
   750                     }
   745                 // Try to complete Dial and HangUp; If completes happens from 
   751                 // Try to complete Dial and HangUp; If completes happens from 
   746                 // here, something has gone wrong. Done to prevent TSY from 
   752                 // here, something has gone wrong. Done to prevent TSY from 
   747                 // hanging.
   753                 // hanging.
   748                 else
   754                 else
   749                     {
   755                     {
   750 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - Try to complete Dial and HangUp");                      
   756 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_7, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - Try to complete Dial and HangUp");
   751                     iLastExitCode = KErrGeneral;
   757                     iLastExitCode = KErrGeneral;
   752                     TInt errorValue = CMmCommonStaticUtility::EpocErrorCode( 
   758                     TInt errorValue = CMmCommonStaticUtility::EpocErrorCode( 
   753                         KErrNotReady, KErrNotFound );
   759                         KErrNotReady, KErrNotFound );
   754                     CompleteDial( errorValue );
   760                     CompleteDial( errorValue );
   755                     CompleteDialNoFdn( errorValue );
   761                     CompleteDialNoFdn( errorValue );
   791             case RMobileCall::EStatusDialling:
   797             case RMobileCall::EStatusDialling:
   792 #ifdef REQHANDLE_TIMER
   798 #ifdef REQHANDLE_TIMER
   793                 if ( KETelExt3rdPartyV1 != GetExtensionId() )
   799                 if ( KETelExt3rdPartyV1 != GetExtensionId() )
   794                     {
   800                     {
   795                     //non 3rd party client
   801                     //non 3rd party client
   796 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - StopTimeOuts");                    	                    
   802 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_8, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - StopTimeOuts");
   797                     iTsyReqHandleStore->StopTimeout( EMultimodeCallDial );
   803                     iTsyReqHandleStore->StopTimeout( EMultimodeCallDial );
   798                     iTsyReqHandleStore->StopTimeout(
   804                     iTsyReqHandleStore->StopTimeout(
   799                     EMultimodeMobileCallDialEmergencyCall );
   805                     EMultimodeMobileCallDialEmergencyCall );
   800                 	iTsyReqHandleStore->StopTimeout( 
   806                 	iTsyReqHandleStore->StopTimeout( 
   801                 	    EMultimodeCallDialNoFdnCheck );
   807                 	    EMultimodeCallDialNoFdnCheck );
   802                     }
   808                     }
   803                 else
   809                 else
   804                     {
   810                     {
   805                     //3rd party client
   811                     //3rd party client
   806 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - StopTimeOut EMultimodeCallDialISV");                    	                    
   812 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_9, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - StopTimeOut EMultimodeCallDialISV");
   807                     iTsyReqHandleStore->StopTimeout( EMultimodeCallDialISV );
   813                     iTsyReqHandleStore->StopTimeout( EMultimodeCallDialISV );
   808                     }
   814                     }
   809 #endif // REQHANDLE_TIMER
   815 #endif // REQHANDLE_TIMER
   810                 iCallStatus = RCall::EStatusDialling;
   816                 iCallStatus = RCall::EStatusDialling;
   811                 iMobileCallStatus = RMobileCall::EStatusDialling;
   817                 iMobileCallStatus = RMobileCall::EStatusDialling;
   832                         iTsyReqHandleStore->GetTsyReqHandle( 
   838                         iTsyReqHandleStore->GetTsyReqHandle( 
   833                         EMultimodeCallDialNoFdnCheck );
   839                         EMultimodeCallDialNoFdnCheck );
   834 
   840 
   835                     if ( 0 < dialCancelHandle ) 
   841                     if ( 0 < dialCancelHandle ) 
   836                         {
   842                         {
   837 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - HangUp - EMultimodeCallDial");                        
   843 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_10, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - HangUp - EMultimodeCallDial");
   838                         HangUp( dialCancelHandle );
   844                         HangUp( dialCancelHandle );
   839                         }
   845                         }
   840                     else if ( 0 < dialCancelHandleISV )
   846                     else if ( 0 < dialCancelHandleISV )
   841                         {
   847                         {
   842                         //3rd party client
   848                         //3rd party client
   843 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - HangUp - EMultimodeCallDialISV");
   849 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_11, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - HangUp - EMultimodeCallDialISV");
   844                         HangUp( dialCancelHandleISV );
   850                         HangUp( dialCancelHandleISV );
   845                         }
   851                         }
   846                     else if ( 0 < dialEmergCancelHandle )
   852                     else if ( 0 < dialEmergCancelHandle )
   847                         {
   853                         {
   848 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - HangUp - EMultimodeMobileCallDialEmergencyCall");                        
   854 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_12, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - HangUp - EMultimodeMobileCallDialEmergencyCall");
   849                         HangUp( dialEmergCancelHandle );
   855                         HangUp( dialEmergCancelHandle );
   850                         }
   856                         }
   851 					else if ( 0 < dialCancelHandleNoFdn )
   857 					else if ( 0 < dialCancelHandleNoFdn )
   852                         {
   858                         {
   853 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - HangUp - EMultimodeCallDialNoFdn");
   859 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_13, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - HangUp - EMultimodeCallDialNoFdn");
   854                         HangUp( dialCancelHandleNoFdn );
   860                         HangUp( dialCancelHandleNoFdn );
   855                         }  
   861                         }  
   856                     else
   862                     else
   857                         {
   863                         {
   858 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - iDialCancelFlag = CMmCallTsy::EDialCancelNotCalled");                        
   864 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_14, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - iDialCancelFlag = CMmCallTsy::EDialCancelNotCalled");
   859                         iDialCancelFlag = CMmCallTsy::EDialCancelNotCalled;
   865                         iDialCancelFlag = CMmCallTsy::EDialCancelNotCalled;
   860                         }
   866                         }
   861                     }
   867                     }
   862                 break;
   868                 break;
   863             case RMobileCall::EStatusConnecting:
   869             case RMobileCall::EStatusConnecting:
   888                             iMmPhone->CallList()->GetMmCallByIndex( i ) );
   894                             iMmPhone->CallList()->GetMmCallByIndex( i ) );
   889                         // if there is call with status Answering, complete
   895                         // if there is call with status Answering, complete
   890                         // it with CALL_CAUSE_NOT_ALLOWED    
   896                         // it with CALL_CAUSE_NOT_ALLOWED    
   891                         if( RCall::EStatusAnswering == call->Status() )
   897                         if( RCall::EStatusAnswering == call->Status() )
   892                             {
   898                             {
   893 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange Answering not allowed!");                    
   899 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_15, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange Answering not allowed!");
   894                             TInt errorValue = 
   900                             TInt errorValue = 
   895                                 CMmCommonStaticUtility::EpocErrorCode( 
   901                                 CMmCommonStaticUtility::EpocErrorCode( 
   896                                    KErrAccessDenied, KErrMMEtelCallForbidden );
   902                                    KErrAccessDenied, KErrMMEtelCallForbidden );
   897                             call->CompleteAnswerIncomingCall( errorValue );
   903                             call->CompleteAnswerIncomingCall( errorValue );
   898                             }
   904                             }
   899                         }
   905                         }
   900                     }
   906                     }
   901                 
   907                 
   902                 //check previous status. If status is answering
   908                 //check previous status. If status is answering
   903 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - EStatusConnected");
   909 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_16, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. - EStatusConnected");
   904                 if ( RCall::EStatusAnswering == iCallStatus )
   910                 if ( RCall::EStatusAnswering == iCallStatus )
   905                     {  
   911                     {  
   906                 	// don't start timers if error occurred
   912                 	// don't start timers if error occurred
   907                 	if ( KErrNone == aResult )
   913                 	if ( KErrNone == aResult )
   908                 		{
   914                 		{
   936                     if ( ( iTsyReqHandleStore->GetTsyReqHandle( 
   942                     if ( ( iTsyReqHandleStore->GetTsyReqHandle( 
   937                             EMultimodeCallDial ) ) 
   943                             EMultimodeCallDial ) ) 
   938                         || ( iTsyReqHandleStore->GetTsyReqHandle( 
   944                         || ( iTsyReqHandleStore->GetTsyReqHandle( 
   939                             EMultimodeCallDialISV ) ) )
   945                             EMultimodeCallDialISV ) ) )
   940                         {
   946                         {
   941 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange.EStatusConnected - Before CompleteDial");                        
   947 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_17, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange.EStatusConnected - Before CompleteDial");
   942                         CompleteDial( aResult ); 
   948                         CompleteDial( aResult ); 
   943                         }
   949                         }
   944                      if( iTsyReqHandleStore->GetTsyReqHandle( 
   950                      if( iTsyReqHandleStore->GetTsyReqHandle( 
   945                             EMultimodeCallDialNoFdnCheck ) )
   951                             EMultimodeCallDialNoFdnCheck ) )
   946                         {
   952                         {
   947 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange.EStatusConnected - Before CompleteDialNoFdn");                        
   953 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_18, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange.EStatusConnected - Before CompleteDialNoFdn");
   948                         CompleteDialNoFdn( aResult );                                                 
   954                         CompleteDialNoFdn( aResult );                                                 
   949 
   955 
   950                         }
   956                         }
   951                     }
   957                     }
   952                 //if status was Hold (-> resume or swap has been asked)
   958                 //if status was Hold (-> resume or swap has been asked)
  1002 
  1008 
  1003                 if ( iCallDirection == RMobileCall::EMobileTerminated )
  1009                 if ( iCallDirection == RMobileCall::EMobileTerminated )
  1004                     {
  1010                     {
  1005                     if(  KMultimodeCallTypeIDNoFdnCheck == GetDialTypeId() )
  1011                     if(  KMultimodeCallTypeIDNoFdnCheck == GetDialTypeId() )
  1006                    	    {
  1012                    	    {
  1007 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. RMobileCall::EStatusDisconnecting - Before CompleteDialNoFdn");                   	    
  1013 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_19, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. RMobileCall::EStatusDisconnecting - Before CompleteDialNoFdn");
  1008                    	    //CompleteDialNoFdn in case remote user is busy
  1014                    	    //CompleteDialNoFdn in case remote user is busy
  1009                         CompleteDialNoFdn( aResult );
  1015                         CompleteDialNoFdn( aResult );
  1010                    	    }
  1016                    	    }
  1011                     else
  1017                     else
  1012                         {
  1018                         {
  1013 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. RMobileCall::EStatusDisconnecting - Before CompleteDial");                        
  1019 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_20, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. RMobileCall::EStatusDisconnecting - Before CompleteDial");
  1014                         //CompleteDial in case remote user is busy
  1020                         //CompleteDial in case remote user is busy
  1015                         CompleteDial( aResult );
  1021                         CompleteDial( aResult );
  1016                         }                   	    
  1022                         }                   	    
  1017 
  1023 
  1018                     }
  1024                     }
  1042                     RMobileCall::EStatusDisconnectingWithInband;
  1048                     RMobileCall::EStatusDisconnectingWithInband;
  1043                 mobileStatusChanged = ETrue;
  1049                 mobileStatusChanged = ETrue;
  1044                 
  1050                 
  1045                 if(  KMultimodeCallTypeIDNoFdnCheck == GetDialTypeId() )
  1051                 if(  KMultimodeCallTypeIDNoFdnCheck == GetDialTypeId() )
  1046                    	{
  1052                    	{
  1047 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. RMobileCall::EStatusDisconnectingWithInband - Before CompleteDialNoFdn");                   	                       	
  1053 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_21, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. RMobileCall::EStatusDisconnectingWithInband - Before CompleteDialNoFdn");
  1048                    	//CompleteDialNoFdn in case remote user is busy
  1054                    	//CompleteDialNoFdn in case remote user is busy
  1049                     CompleteDialNoFdn( aResult );
  1055                     CompleteDialNoFdn( aResult );
  1050                    	}
  1056                    	}
  1051                 else
  1057                 else
  1052                     {
  1058                     {
  1053 TFLOGSTRING("TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. RMobileCall::EStatusDisconnectingWithInband - Before  CompleteDial");                   	                        
  1059 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETENOTIFYSTATUSCHANGE_22, "TSY: CMmVoiceCallTsy::CompleteNotifyStatusChange. RMobileCall::EStatusDisconnectingWithInband - Before  CompleteDial");
  1054                     //CompleteDial in case remote user is busy
  1060                     //CompleteDial in case remote user is busy
  1055                     CompleteDial( aResult );        
  1061                     CompleteDial( aResult );        
  1056                     }
  1062                     }
  1057 
  1063 
  1058                 //update DTMF capabilities.
  1064                 //update DTMF capabilities.
  1202 TInt CMmVoiceCallTsy::Dial(
  1208 TInt CMmVoiceCallTsy::Dial(
  1203     const TTsyReqHandle aTsyReqHandle,
  1209     const TTsyReqHandle aTsyReqHandle,
  1204     const TDesC8* aCallParams,
  1210     const TDesC8* aCallParams,
  1205     TDesC* aTelNumber )
  1211     TDesC* aTelNumber )
  1206     {
  1212     {
  1207 TFLOGSTRING3("TSY: CMmVoiceCallTsy::Dial. Req handle: %d, Call name: %S", aTsyReqHandle, &iCallName);
  1213 OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIAL_1, "TSY: CMmVoiceCallTsy::Dial. Req handle: %u, Call name: %S", aTsyReqHandle, iCallName);
  1208 
  1214 
  1209     TBool isDialISV = iIsDialISV;
  1215     TBool isDialISV = iIsDialISV;
  1210     iIsDialISV = EFalse;
  1216     iIsDialISV = EFalse;
  1211     
  1217     
  1212 	if ( aCallParams->Length()!= 0 )
  1218 	if ( aCallParams->Length()!= 0 )
  1213 		{
  1219 		{
  1214 		if ( sizeof( RMobileCall::TCallParams ) > aCallParams->Length() )
  1220 		if ( sizeof( RMobileCall::TCallParams ) > aCallParams->Length() )
  1215 			{
  1221 			{
  1216 	      	TFLOGSTRING ("TSY: CMmVoiceCallTsy::Dial bad size argument");
  1222 	      	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIAL_2, "TSY: CMmVoiceCallTsy::Dial bad size argument");
  1217 	      	// Complete the request with appropiate error        
  1223 	      	// Complete the request with appropiate error        
  1218 	      	return KErrArgument;
  1224 	      	return KErrArgument;
  1219 	      	}
  1225 	      	}
  1220 		}
  1226 		}
  1221 	    CMmCallList* callList = iMmPhone->CallList();
  1227 	    CMmCallList* callList = iMmPhone->CallList();
  1289         //reset exit code
  1295         //reset exit code
  1290         iLastExitCode = KErrNone;
  1296         iLastExitCode = KErrNone;
  1291         
  1297         
  1292         if ( KETelExt3rdPartyV1 == extensionId && !isDialISV )
  1298         if ( KETelExt3rdPartyV1 == extensionId && !isDialISV )
  1293             {
  1299             {
  1294 TFLOGSTRING("TSY: CMmVoiceCallTsy::Dial - KErrArgument");
  1300 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIAL_3, "TSY: CMmVoiceCallTsy::Dial - KErrArgument");
  1295             //Complete the request with appropiate error
  1301             //Complete the request with appropiate error
  1296             ReqCompleted ( aTsyReqHandle, KErrArgument );
  1302             ReqCompleted ( aTsyReqHandle, KErrArgument );
  1297             SetDialFlag( EFalse ); 
  1303             SetDialFlag( EFalse ); 
  1298             }
  1304             }
  1299 
  1305 
  1300         else if ( ERfsStateInfoInactive == iMmPhone->GetRfStateInfo() )  
  1306         else if ( ERfsStateInfoInactive == iMmPhone->GetRfStateInfo() )  
  1301             {
  1307             {
  1302 TFLOGSTRING("TSY: Offline mode ON, Dial request is not allowed" );
  1308 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIAL_4, "TSY: Offline mode ON, Dial request is not allowed" );
  1303             ret = CMmCommonStaticUtility::EpocErrorCode(
  1309             ret = CMmCommonStaticUtility::EpocErrorCode(
  1304                 KErrGeneral, KErrGsmOfflineOpNotAllowed );
  1310                 KErrGeneral, KErrGsmOfflineOpNotAllowed );
  1305 
  1311 
  1306             //Complete the request with appropiate error
  1312             //Complete the request with appropiate error
  1307             ReqCompleted ( aTsyReqHandle, ret ); 
  1313             ReqCompleted ( aTsyReqHandle, ret ); 
  1313             {
  1319             {
  1314             //The request cannot be forwarded since this call object
  1320             //The request cannot be forwarded since this call object
  1315             //is still in use.
  1321             //is still in use.
  1316             //Complete request with status value informing the client about 
  1322             //Complete request with status value informing the client about 
  1317             //the situation.
  1323             //the situation.
  1318 TFLOGSTRING("TSY: CMmVoiceCallTsy::Dial - KErrNotReady");
  1324 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIAL_5, "TSY: CMmVoiceCallTsy::Dial - KErrNotReady");
  1319             ReqCompleted( aTsyReqHandle, KErrNotReady );
  1325             ReqCompleted( aTsyReqHandle, KErrNotReady );
  1320             SetDialFlag( EFalse );
  1326             SetDialFlag( EFalse );
  1321             }
  1327             }
  1322         
  1328         
  1323         else if ( ( 0 < dialHandle ) || ( ( KETelExt3rdPartyV1 == extensionId )
  1329         else if ( ( 0 < dialHandle ) || ( ( KETelExt3rdPartyV1 == extensionId )
  1324             && ( 0 < dialHandleISV ) && !i3rdPartyEmergencyNumberCheckDone  ) )
  1330             && ( 0 < dialHandleISV ) && !i3rdPartyEmergencyNumberCheckDone  ) )
  1325             {
  1331             {
  1326             //The request is already processing because of previous request
  1332             //The request is already processing because of previous request
  1327             //Complete request with status value informing the client about 
  1333             //Complete request with status value informing the client about 
  1328             //the situation.
  1334             //the situation.
  1329 TFLOGSTRING("TSY: CMmVoiceCallTsy::Dial - KErrServerBusy");
  1335 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIAL_6, "TSY: CMmVoiceCallTsy::Dial - KErrServerBusy");
  1330             ReqCompleted( aTsyReqHandle, KErrServerBusy );
  1336             ReqCompleted( aTsyReqHandle, KErrServerBusy );
  1331             SetDialFlag( EFalse );
  1337             SetDialFlag( EFalse );
  1332             }
  1338             }
  1333         
  1339         
  1334         else if ( ( activeCall ) && ( KETelExt3rdPartyV1 == extensionId )
  1340         else if ( ( activeCall ) && ( KETelExt3rdPartyV1 == extensionId )
  1335             && ( KETelExt3rdPartyV1 != activeCall->GetExtensionId() ) )
  1341             && ( KETelExt3rdPartyV1 != activeCall->GetExtensionId() ) )
  1336             {
  1342             {
  1337             //a 3rd party client call cannot put on Hold a "normal" call
  1343             //a 3rd party client call cannot put on Hold a "normal" call
  1338 TFLOGSTRING("TSY: CMmVoiceCallTsy::Dial - KErrServerBusy");
  1344 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIAL_7, "TSY: CMmVoiceCallTsy::Dial - KErrServerBusy");
  1339             ReqCompleted( aTsyReqHandle, KErrServerBusy );
  1345             ReqCompleted( aTsyReqHandle, KErrServerBusy );
  1340             SetDialFlag( EFalse );
  1346             SetDialFlag( EFalse );
  1341             }
  1347             }
  1342             //3rd party client is not allowed to call to a emergency call number
  1348             //3rd party client is not allowed to call to a emergency call number
  1343             //Number check for 3rd clients must be done always     
  1349             //Number check for 3rd clients must be done always     
  1344         
  1350         
  1345         else if ( extensionId == KETelExt3rdPartyV1 && 
  1351         else if ( extensionId == KETelExt3rdPartyV1 && 
  1346                                         !i3rdPartyEmergencyNumberCheckDone )
  1352                                         !i3rdPartyEmergencyNumberCheckDone )
  1347             {
  1353             {
  1348 TFLOGSTRING("TSY: CMmVoiceCallTsy::Dial - For 3rd party client number check must be done every time ");
  1354 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIAL_8, "TSY: CMmVoiceCallTsy::Dial - For 3rd party client number check must be done every time ");
  1349             
  1355             
  1350             TInt ret( KErrGeneral );
  1356             TInt ret( KErrGeneral );
  1351 
  1357 
  1352 TFLOGSTRING("TSY: CMmVoiceCallTsy::Dial - 3rd party client number check iNumberCheckMode.iCheckMode = RMmCustomAPI::EEmerNumberCheckNormal ");
  1358 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIAL_9, "TSY: CMmVoiceCallTsy::Dial - 3rd party client number check iNumberCheckMode.iCheckMode = RMmCustomAPI::EEmerNumberCheckNormal ");
  1353             iNumberCheckMode.iCheckMode = RMmCustomAPI::EEmerNumberCheckNormal;
  1359             iNumberCheckMode.iCheckMode = RMmCustomAPI::EEmerNumberCheckNormal;
  1354             iNumberCheckMode.iNumber.Copy( *aTelNumber );
  1360             iNumberCheckMode.iNumber.Copy( *aTelNumber );
  1355                     
  1361                     
  1356             //Save parameter for Dial req after number check
  1362             //Save parameter for Dial req after number check
  1357             iISVCallParams = aCallParams;
  1363             iISVCallParams = aCallParams;
  1361             
  1367             
  1362             CMmCustomTsy* mmCustom = iMmPhone->GetCustomTsy();
  1368             CMmCustomTsy* mmCustom = iMmPhone->GetCustomTsy();
  1363             
  1369             
  1364             if ( NULL == mmCustom )
  1370             if ( NULL == mmCustom )
  1365             	{
  1371             	{
  1366 TFLOGSTRING("TSY: CMmVoiceCallTsy::Dial - CustomTSY is not yet created!");        	
  1372 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIAL_10, "TSY: CMmVoiceCallTsy::Dial - CustomTSY is not yet created!");
  1367             	ReqCompleted( aTsyReqHandle, KErrNotReady );
  1373             	ReqCompleted( aTsyReqHandle, KErrNotReady );
  1368             	SetDialFlag( EFalse );
  1374             	SetDialFlag( EFalse );
  1369             	}
  1375             	}
  1370             
  1376             
  1371             else        
  1377             else        
  1400     	        }
  1406     	        }
  1401             }
  1407             }
  1402         
  1408         
  1403         else
  1409         else
  1404             {
  1410             {
  1405 TFLOGSTRING2("TSY: CMmVoiceCallTsy::Dial - UUS services: %u", iUUSRequest.iServiceReq );
  1411 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIAL_11, "TSY: CMmVoiceCallTsy::Dial - UUS services: %u", iUUSRequest.iServiceReq );
  1406 
  1412 
  1407             // UUS1 will be embedded within the call set-up message
  1413             // UUS1 will be embedded within the call set-up message
  1408             if ( iUUSRequest.iServiceReq & RMobileCall::KUUS1Implicit )
  1414             if ( iUUSRequest.iServiceReq & RMobileCall::KUUS1Implicit )
  1409                 {
  1415                 {
  1410                 // Create package
  1416                 // Create package
  1426 					}
  1432 					}
  1427                 // in case the LTSY does not support required UUS,
  1433                 // in case the LTSY does not support required UUS,
  1428                 // complete the dial with error value 
  1434                 // complete the dial with error value 
  1429                 if ( KErrNone != ret )
  1435                 if ( KErrNone != ret )
  1430                     {
  1436                     {
  1431 TFLOGSTRING2("TSY: CMmVoiceCallTsy::Dial - UUS ERROR:%d", ret );
  1437 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIAL_12, "TSY: CMmVoiceCallTsy::Dial - UUS ERROR:%d", ret );
  1432                     // Complete the request with appropiate error
  1438                     // Complete the request with appropiate error
  1433                     ReqCompleted ( aTsyReqHandle, KErrGsmCCResourceNotAvailable );
  1439                     ReqCompleted ( aTsyReqHandle, KErrGsmCCResourceNotAvailable );
  1434                     ClearCallStatus(); 
  1440                     ClearCallStatus(); 
  1435                     return KErrNone; 
  1441                     return KErrNone; 
  1436                     }
  1442                     }
  1507 //
  1513 //
  1508 TInt CMmVoiceCallTsy::AnswerIncomingCall(
  1514 TInt CMmVoiceCallTsy::AnswerIncomingCall(
  1509     const TTsyReqHandle aTsyReqHandle,
  1515     const TTsyReqHandle aTsyReqHandle,
  1510     const TDesC8* aCallParams )
  1516     const TDesC8* aCallParams )
  1511     {
  1517     {
  1512 TFLOGSTRING2("TSY: CMmVoiceCallTsy::AnswerIncomingCall. \n\t\t\t Handle:%d", aTsyReqHandle); 
  1518 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_ANSWERINCOMINGCALL_1, "TSY: CMmVoiceCallTsy::AnswerIncomingCall. \n\t\t\t Handle:%d", aTsyReqHandle);
  1513 
  1519 
  1514     TInt trapError( KErrNone );
  1520     TInt trapError( KErrNone );
  1515     
  1521     
  1516     //ExtensionId unknown.Set to -1
  1522     //ExtensionId unknown.Set to -1
  1517     TInt extensionId ( -1 );
  1523     TInt extensionId ( -1 );
  1660 // ---------------------------------------------------------------------------
  1666 // ---------------------------------------------------------------------------
  1661 //
  1667 //
  1662 TInt CMmVoiceCallTsy::HangUp(
  1668 TInt CMmVoiceCallTsy::HangUp(
  1663     const TTsyReqHandle aTsyReqHandle )
  1669     const TTsyReqHandle aTsyReqHandle )
  1664     {
  1670     {
  1665 TFLOGSTRING3("TSY: CMmVoiceCallTsy::HangUp. Req handle: %d, Call name: %S", aTsyReqHandle, &iCallName);
  1671 OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_HANGUP_1, "TSY: CMmVoiceCallTsy::HangUp. Req handle: %u, Call name: %S", aTsyReqHandle, iCallName);
  1666 
  1672 
  1667     TInt ret( KErrNone );
  1673     TInt ret( KErrNone );
  1668     TInt trapError( KErrNone );
  1674     TInt trapError( KErrNone );
  1669     TInt hangUpCause( KErrNone );
  1675     TInt hangUpCause( KErrNone );
  1670 
  1676 
  1782 // ---------------------------------------------------------------------------
  1788 // ---------------------------------------------------------------------------
  1783 //
  1789 //
  1784 void CMmVoiceCallTsy::CompleteHangUp(
  1790 void CMmVoiceCallTsy::CompleteHangUp(
  1785     TInt aResult )
  1791     TInt aResult )
  1786     {
  1792     {
  1787 TFLOGSTRING2("TSY: CMmVoiceCallTsy::CompleteHangUp.\n  \t\t\t Result:%d", aResult ); 
  1793 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETEHANGUP_1, "TSY: CMmVoiceCallTsy::CompleteHangUp.\n  \t\t\t Result:%d", aResult );
  1788 TFLOGSTRING3("TSY: CMmVoiceCallTsy::CompleteHangUp. Call Id:%d Call name:%S", iCallId, &iCallName);
  1794 OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETEHANGUP_2, "TSY: CMmVoiceCallTsy::CompleteHangUp. Call Id:%d Call name:%S", iCallId, iCallName);
  1789 
  1795 
  1790     TInt ret( KErrNone );
  1796     TInt ret( KErrNone );
  1791 
  1797 
  1792     // Complete for HangUp request
  1798     // Complete for HangUp request
  1793     // (not to DialCancel or AnswerIncomingCallCancel )
  1799     // (not to DialCancel or AnswerIncomingCallCancel )
  2147 //
  2153 //
  2148 TInt CMmVoiceCallTsy::DialEmergencyCall(
  2154 TInt CMmVoiceCallTsy::DialEmergencyCall(
  2149     const TTsyReqHandle aTsyReqHandle, 
  2155     const TTsyReqHandle aTsyReqHandle, 
  2150     const TDataPackage& aNumber )
  2156     const TDataPackage& aNumber )
  2151     {
  2157     {
  2152     TFLOGSTRING2("TSY: CMmVoiceCallTsy::DialEmergencyCall number %S", aNumber.Des1u());
  2158     OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIALEMERGENCYCALL_1, "TSY: CMmVoiceCallTsy::DialEmergencyCall number %S", *(aNumber.Des1u()));
  2153         
  2159         
  2154     if(aNumber.Des1u()->MaxLength() > RMobileENStore::KEmergencyNumberSize)
  2160     if(aNumber.Des1u()->MaxLength() > RMobileENStore::KEmergencyNumberSize)
  2155         {
  2161         {
  2156         // The emergency call number is too big 
  2162         // The emergency call number is too big 
  2157         ReqCompleted( aTsyReqHandle, KErrArgument);
  2163         ReqCompleted( aTsyReqHandle, KErrArgument);
  2203 // ---------------------------------------------------------------------------
  2209 // ---------------------------------------------------------------------------
  2204 //
  2210 //
  2205 void CMmVoiceCallTsy::CompleteDialEmergencyCall(
  2211 void CMmVoiceCallTsy::CompleteDialEmergencyCall(
  2206     TInt aResult )
  2212     TInt aResult )
  2207     {
  2213     {
  2208 TFLOGSTRING2("TSY: CMmVoiceCallTsy::CompleteDialEmergencyCall. Result:%d", aResult ); 
  2214 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETEDIALEMERGENCYCALL_1, "TSY: CMmVoiceCallTsy::CompleteDialEmergencyCall. Result:%d", aResult );
  2209 TFLOGSTRING3("TSY: CMmVoiceCallTsy::CompleteDialEmergencyCall. Call Id:%d Call name:%S", iCallId, &iCallName);
  2215 OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETEDIALEMERGENCYCALL_2, "TSY: CMmVoiceCallTsy::CompleteDialEmergencyCall. Call Id:%d Call name:%S", iCallId, iCallName);
  2210 
  2216 
  2211     //reset req handle. Returns the deleted req handle
  2217     //reset req handle. Returns the deleted req handle
  2212     TTsyReqHandle reqHandle = iTsyReqHandleStore->
  2218     TTsyReqHandle reqHandle = iTsyReqHandleStore->
  2213         ResetTsyReqHandle( EMultimodeMobileCallDialEmergencyCall );
  2219         ResetTsyReqHandle( EMultimodeMobileCallDialEmergencyCall );
  2214 
  2220 
  2252 // ---------------------------------------------------------------------------
  2258 // ---------------------------------------------------------------------------
  2253 //
  2259 //
  2254 TInt CMmVoiceCallTsy::FillMobileCallInfo(
  2260 TInt CMmVoiceCallTsy::FillMobileCallInfo(
  2255     TDes8* aInfo )
  2261     TDes8* aInfo )
  2256     {
  2262     {
  2257 TFLOGSTRING("TSY: CMmVoiceCallTsy::FillMobileCallInfo");
  2263 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_FILLMOBILECALLINFO_1, "TSY: CMmVoiceCallTsy::FillMobileCallInfo");
  2258 
  2264 
  2259     TInt ret = KErrArgument;
  2265     TInt ret = KErrArgument;
  2260     TInt extensionId = 0;
  2266     TInt extensionId = 0;
  2261     
  2267     
  2262 	if ( sizeof ( RMobilePhone::TMultimodeType ) <= aInfo->MaxLength() )
  2268 	if ( sizeof ( RMobilePhone::TMultimodeType ) <= aInfo->MaxLength() )
  2266             aInfo );
  2272             aInfo );
  2267         RMobilePhone::TMultimodeType& callInfo = ( *infoParamsPckg )();
  2273         RMobilePhone::TMultimodeType& callInfo = ( *infoParamsPckg )();
  2268             
  2274             
  2269         // get extensionid from the recieved data
  2275         // get extensionid from the recieved data
  2270         extensionId = callInfo.ExtensionId();
  2276         extensionId = callInfo.ExtensionId();
  2271 TFLOGSTRING2("TSY: CMmVoiceCallTsy::FillMobileCallInfo - extensionid=%d",callInfo.ExtensionId());      
  2277 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_FILLMOBILECALLINFO_2, "TSY: CMmVoiceCallTsy::FillMobileCallInfo - extensionid=%d",callInfo.ExtensionId());
  2272         }
  2278         }
  2273     
  2279     
  2274     //TMobileCallInfoV1
  2280     //TMobileCallInfoV1
  2275     if ( KETelExtMultimodeV1 == extensionId ||
  2281     if ( KETelExtMultimodeV1 == extensionId ||
  2276     	 KETelExtMultimodeV3 == extensionId ||
  2282     	 KETelExtMultimodeV3 == extensionId ||
  2277     	 KEtelExtMultimodeV7 == extensionId ||
  2283     	 KEtelExtMultimodeV7 == extensionId ||
  2278     	 KEtelExtMultimodeV8 == extensionId )
  2284     	 KEtelExtMultimodeV8 == extensionId )
  2279         {
  2285         {
  2280 TFLOGSTRING("TSY: CMmVoiceCallTsy::FillMobileCallInfo - V1");  
  2286 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_FILLMOBILECALLINFO_3, "TSY: CMmVoiceCallTsy::FillMobileCallInfo - V1");
  2281         // Set ret to KErrNone. We can fill this parameter class.
  2287         // Set ret to KErrNone. We can fill this parameter class.
  2282         ret = KErrNone;                
  2288         ret = KErrNone;                
  2283             
  2289             
  2284         RMobileCall::TMobileCallInfoV1Pckg* paramsPckgV1 =
  2290         RMobileCall::TMobileCallInfoV1Pckg* paramsPckgV1 =
  2285             reinterpret_cast<RMobileCall::TMobileCallInfoV1Pckg*>( aInfo );
  2291             reinterpret_cast<RMobileCall::TMobileCallInfoV1Pckg*>( aInfo );
  2295     // TMobileCallInfoV3
  2301     // TMobileCallInfoV3
  2296     if ( KETelExtMultimodeV3 == extensionId ||
  2302     if ( KETelExtMultimodeV3 == extensionId ||
  2297        	 KEtelExtMultimodeV7 == extensionId ||
  2303        	 KEtelExtMultimodeV7 == extensionId ||
  2298        	 KEtelExtMultimodeV8 == extensionId )
  2304        	 KEtelExtMultimodeV8 == extensionId )
  2299         {
  2305         {
  2300 TFLOGSTRING("TSY: CMmVoiceCallTsy::FillMobileCallInfo - V3");                
  2306 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_FILLMOBILECALLINFO_4, "TSY: CMmVoiceCallTsy::FillMobileCallInfo - V3");
  2301             
  2307             
  2302         RMobileCall::TMobileCallInfoV3Pckg* paramsPckgV3 =
  2308         RMobileCall::TMobileCallInfoV3Pckg* paramsPckgV3 =
  2303             reinterpret_cast<RMobileCall::TMobileCallInfoV3Pckg*>( aInfo );
  2309             reinterpret_cast<RMobileCall::TMobileCallInfoV3Pckg*>( aInfo );
  2304         RMobileCall::TMobileCallInfoV3& info = ( *paramsPckgV3 )();        
  2310         RMobileCall::TMobileCallInfoV3& info = ( *paramsPckgV3 )();        
  2305             
  2311             
  2309 
  2315 
  2310     // TMobileCallInfoV7
  2316     // TMobileCallInfoV7
  2311     if ( KEtelExtMultimodeV7 == extensionId ||
  2317     if ( KEtelExtMultimodeV7 == extensionId ||
  2312     	 KEtelExtMultimodeV8 == extensionId	)
  2318     	 KEtelExtMultimodeV8 == extensionId	)
  2313         {
  2319         {
  2314 TFLOGSTRING("TSY: CMmVoiceCallTsy::FillMobileCallInfo - V7");
  2320 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_FILLMOBILECALLINFO_5, "TSY: CMmVoiceCallTsy::FillMobileCallInfo - V7");
  2315             
  2321             
  2316         RMobileCall::TMobileCallInfoV7Pckg* paramsPckgV7 =
  2322         RMobileCall::TMobileCallInfoV7Pckg* paramsPckgV7 =
  2317             reinterpret_cast<RMobileCall::TMobileCallInfoV7Pckg*>( aInfo );
  2323             reinterpret_cast<RMobileCall::TMobileCallInfoV7Pckg*>( aInfo );
  2318         RMobileCall::TMobileCallInfoV7& info = ( *paramsPckgV7 )();
  2324         RMobileCall::TMobileCallInfoV7& info = ( *paramsPckgV7 )();
  2319             
  2325             
  2322         }
  2328         }
  2323     
  2329     
  2324     // TMobileCallInfoV8
  2330     // TMobileCallInfoV8
  2325     if ( KEtelExtMultimodeV8 == extensionId )
  2331     if ( KEtelExtMultimodeV8 == extensionId )
  2326         {
  2332         {
  2327 TFLOGSTRING("TSY: CMmVoiceCallTsy::FillMobileCallInfo - V8");
  2333 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_FILLMOBILECALLINFO_6, "TSY: CMmVoiceCallTsy::FillMobileCallInfo - V8");
  2328                 
  2334                 
  2329         RMobileCall::TMobileCallInfoV8Pckg* paramsPckgV8 =
  2335         RMobileCall::TMobileCallInfoV8Pckg* paramsPckgV8 =
  2330             reinterpret_cast<RMobileCall::TMobileCallInfoV8Pckg*>( aInfo );
  2336             reinterpret_cast<RMobileCall::TMobileCallInfoV8Pckg*>( aInfo );
  2331         RMobileCall::TMobileCallInfoV8& info = ( *paramsPckgV8 )();
  2337         RMobileCall::TMobileCallInfoV8& info = ( *paramsPckgV8 )();
  2332                 
  2338                 
  2333         // fill specific data
  2339         // fill specific data
  2334         iMmCallExtInterface->FillMobileCallInfoV8( &info );
  2340         iMmCallExtInterface->FillMobileCallInfoV8( &info );
  2335         }
  2341         }
  2336 
  2342 
  2337 TFLOGSTRING2("TSY: CMmVoiceCallTsy::FillMobileCallInfo end. ret=%d",ret);
  2343 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_FILLMOBILECALLINFO_7, "TSY: CMmVoiceCallTsy::FillMobileCallInfo end. ret=%d",ret);
  2338       
  2344       
  2339     return ret;
  2345     return ret;
  2340     }
  2346     }
  2341 
  2347 
  2342 // ---------------------------------------------------------------------------
  2348 // ---------------------------------------------------------------------------
  2450     TTsyReqHandle reqHandle = iTsyReqHandleStore->
  2456     TTsyReqHandle reqHandle = iTsyReqHandleStore->
  2451         ResetTsyReqHandle( EMultimodeMobileCallSwap );
  2457         ResetTsyReqHandle( EMultimodeMobileCallSwap );
  2452 
  2458 
  2453     if ( EMultimodeCallReqHandleUnknown != reqHandle )
  2459     if ( EMultimodeCallReqHandleUnknown != reqHandle )
  2454         {
  2460         {
  2455 TFLOGSTRING2("TSY: Swap complete, Call ID: %d", iCallId );
  2461 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETESWAP_1, "TSY: Swap complete, Call ID: %d", iCallId );
  2456         ReqCompleted( reqHandle, aResult );
  2462         ReqCompleted( reqHandle, aResult );
  2457         }
  2463         }
  2458         (reinterpret_cast<CMmVoiceLineTsy*>( iMmLine ))->
  2464         (reinterpret_cast<CMmVoiceLineTsy*>( iMmLine ))->
  2459         SetSwapStatus( CMmVoiceLineTsy::EStatusSwapNotRequested );
  2465         SetSwapStatus( CMmVoiceLineTsy::EStatusSwapNotRequested );
  2460     }
  2466     }
  2726 // (other items were commented in a header).
  2732 // (other items were commented in a header).
  2727 // ---------------------------------------------------------------------------
  2733 // ---------------------------------------------------------------------------
  2728 //
  2734 //
  2729 void CMmVoiceCallTsy::Complete3rdPartyCallNbrCheck( TBool aIsEmergencyNbr )
  2735 void CMmVoiceCallTsy::Complete3rdPartyCallNbrCheck( TBool aIsEmergencyNbr )
  2730     {
  2736     {
  2731 TFLOGSTRING("TSY: CMmVoiceCallTsy::Complete3rdPartyCallNbrCheck " );
  2737 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETE3RDPARTYCALLNBRCHECK_1, "TSY: CMmVoiceCallTsy::Complete3rdPartyCallNbrCheck " );
  2732 
  2738 
  2733     if( i3rdPartyEmergencyNumberCheckDone )
  2739     if( i3rdPartyEmergencyNumberCheckDone )
  2734         {
  2740         {
  2735         if( aIsEmergencyNbr )
  2741         if( aIsEmergencyNbr )
  2736             {
  2742             {
  2737 TFLOGSTRING("TSY: CMmVoiceCallTsy::Complete3rdPartyCallNbrCheck - Emergency number" );
  2743 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETE3RDPARTYCALLNBRCHECK_2, "TSY: CMmVoiceCallTsy::Complete3rdPartyCallNbrCheck - Emergency number" );
  2738             CompleteDial( KErrNotSupported );
  2744             CompleteDial( KErrNotSupported );
  2739             i3rdPartyEmergencyNumberCheckDone = EFalse;
  2745             i3rdPartyEmergencyNumberCheckDone = EFalse;
  2740             }
  2746             }
  2741         else
  2747         else
  2742             {
  2748             {
  2743 TFLOGSTRING("TSY: CMmVoiceCallTsy::Complete3rdPartyCallNbrCheck - NOT Emergency nbr - DIAL" );            
  2749 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_COMPLETE3RDPARTYCALLNBRCHECK_3, "TSY: CMmVoiceCallTsy::Complete3rdPartyCallNbrCheck - NOT Emergency nbr - DIAL" );
  2744             i3rdPartyEmergencyNumberCheckDone = ETrue;
  2750             i3rdPartyEmergencyNumberCheckDone = ETrue;
  2745             iIsDialISV = ETrue;
  2751             iIsDialISV = ETrue;
  2746             
  2752             
  2747             TTsyReqHandle reqHandle = iTsyReqHandleStore->
  2753             TTsyReqHandle reqHandle = iTsyReqHandleStore->
  2748                                     GetTsyReqHandle( EMultimodeCallDialISV );
  2754                                     GetTsyReqHandle( EMultimodeCallDialISV );
  2775 TInt CMmVoiceCallTsy::DialNoFdnCheck( 
  2781 TInt CMmVoiceCallTsy::DialNoFdnCheck( 
  2776     const TTsyReqHandle aTsyReqHandle,
  2782     const TTsyReqHandle aTsyReqHandle,
  2777     const TDesC8* aCallParams,
  2783     const TDesC8* aCallParams,
  2778     TDesC* aTelNumber )
  2784     TDesC* aTelNumber )
  2779     {
  2785     {
  2780 TFLOGSTRING3("TSY: CMmVoiceCallTsy::DialNoFdnCheck. Req handle: %d, Call name: %S", aTsyReqHandle, &iCallName );            	
  2786 OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIALNOFDNCHECK_1, "TSY: CMmVoiceCallTsy::DialNoFdnCheck. Req handle: %u, Call name: %S", (TUint)aTsyReqHandle, iCallName );
  2781 	TInt ret( KErrGeneral );
  2787 	TInt ret( KErrGeneral );
  2782     	
  2788     	
  2783 	// Check that there is no dial on going for another call
  2789 	// Check that there is no dial on going for another call
  2784 	CMmCallList* callList = iMmPhone->CallList();
  2790 	CMmCallList* callList = iMmPhone->CallList();
  2785 
  2791 
  2830 	    
  2836 	    
  2831 	    SetDialTypeId( KMultimodeCallTypeIDNoFdnCheck );
  2837 	    SetDialTypeId( KMultimodeCallTypeIDNoFdnCheck );
  2832 	    
  2838 	    
  2833 	  	if ( ERfsStateInfoInactive == iMmPhone->GetRfStateInfo() )  
  2839 	  	if ( ERfsStateInfoInactive == iMmPhone->GetRfStateInfo() )  
  2834 	        {
  2840 	        {
  2835 TFLOGSTRING("TSY: Offline mode ON, DialNoFdnCheck request is not allowed" );
  2841 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIALNOFDNCHECK_2, "TSY: Offline mode ON, DialNoFdnCheck request is not allowed" );
  2836 	        ret = CMmCommonStaticUtility::EpocErrorCode(
  2842 	        ret = CMmCommonStaticUtility::EpocErrorCode(
  2837 	            KErrGeneral, KErrGsmOfflineOpNotAllowed );
  2843 	            KErrGeneral, KErrGsmOfflineOpNotAllowed );
  2838 
  2844 
  2839 	        // Complete the request with appropiate error
  2845 	        // Complete the request with appropiate error
  2840 	        ReqCompleted ( aTsyReqHandle, ret ); 
  2846 	        ReqCompleted ( aTsyReqHandle, ret ); 
  2845 	        {
  2851 	        {
  2846 	        //The request cannot be forwarded since this call object
  2852 	        //The request cannot be forwarded since this call object
  2847 	        //is still in use.
  2853 	        //is still in use.
  2848 	        //Complete request with status value informing the client about 
  2854 	        //Complete request with status value informing the client about 
  2849 	        //the situation.
  2855 	        //the situation.
  2850 TFLOGSTRING("TSY: CMmVoiceCallTsy::DialNoFdnCheck - KErrNotReady");
  2856 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIALNOFDNCHECK_3, "TSY: CMmVoiceCallTsy::DialNoFdnCheck - KErrNotReady");
  2851 	        ReqCompleted( aTsyReqHandle, KErrNotReady );
  2857 	        ReqCompleted( aTsyReqHandle, KErrNotReady );
  2852 	        SetDialFlag(EFalse);
  2858 	        SetDialFlag(EFalse);
  2853 	        }
  2859 	        }
  2854 	    else
  2860 	    else
  2855 	        {            
  2861 	        {            
  2864 	        // Dial
  2870 	        // Dial
  2865 	      	TRAPD(err, ret = iMmCallExtInterface->DialL(
  2871 	      	TRAPD(err, ret = iMmCallExtInterface->DialL(
  2866 	                iCallMode, paramsPckgV1, aTelNumber, 
  2872 	                iCallMode, paramsPckgV1, aTelNumber, 
  2867 	                KMultimodeCallTypeIDNoFdnCheck ));
  2873 	                KMultimodeCallTypeIDNoFdnCheck ));
  2868 	                
  2874 	                
  2869 TFLOGSTRING2("TSY: CMmVoiceCallTsy::DialNoFdnCheck ret = %d", ret);          
  2875 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIALNOFDNCHECK_4, "TSY: CMmVoiceCallTsy::DialNoFdnCheck ret = %d", ret);
  2870 			if(err != KErrNone)
  2876 			if(err != KErrNone)
  2871 				{
  2877 				{
  2872 				ret = err;
  2878 				ret = err;
  2873 				}
  2879 				}
  2874 
  2880 
  2892                     EMultimodeCallDialNoFdnCheck, aTsyReqHandle );
  2898                     EMultimodeCallDialNoFdnCheck, aTsyReqHandle );
  2893 #endif
  2899 #endif
  2894 	            }
  2900 	            }
  2895 			else
  2901 			else
  2896             	{
  2902             	{
  2897 TFLOGSTRING2("TSY: CMmVoiceCallTsy::DialNoFdnCheck Before ReqCompleted ret = %d", ret);               	
  2903 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_DIALNOFDNCHECK_5, "TSY: CMmVoiceCallTsy::DialNoFdnCheck Before ReqCompleted ret = %d", ret);
  2898             	ReqCompleted( aTsyReqHandle, ret );
  2904             	ReqCompleted( aTsyReqHandle, ret );
  2899             	ClearCallStatus();
  2905             	ClearCallStatus();
  2900             	SetDialFlag(EFalse);
  2906             	SetDialFlag(EFalse);
  2901             	}
  2907             	}
  2902 	        }
  2908 	        }
  3002         {    
  3008         {    
  3003         if ( iTelephonyAudioControlSetup )
  3009         if ( iTelephonyAudioControlSetup )
  3004             {
  3010             {
  3005             iTelephonyAudioControl->CallStateChange( aCallName, 
  3011             iTelephonyAudioControl->CallStateChange( aCallName, 
  3006                                                      aMobileCallStatus );
  3012                                                      aMobileCallStatus );
  3007 TFLOGSTRING2("TSY: CMmVoiceCallTsy::UpdateCallRoutingControl. Call routing state changed to EStatusDialling: Call name:%S", &iCallName );   
  3013 OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_UPDATECALLROUTINGCONTROL_1, "TSY: CMmVoiceCallTsy::UpdateCallRoutingControl. Call routing state changed to EStatusDialling: Call name:%S", iCallName );
  3008             }
  3014             }
  3009         else
  3015         else
  3010             {
  3016             {
  3011             iTelephonyAudioControl->SetupTelephonyAudio( 
  3017             iTelephonyAudioControl->SetupTelephonyAudio( 
  3012                                     aCallName, 
  3018                                     aCallName, 
  3013                                     MTelephonyAudioControl::ECallTypeVoice,
  3019                                     MTelephonyAudioControl::ECallTypeVoice,
  3014                                     iEmergencyCall,  
  3020                                     iEmergencyCall,  
  3015                                     iCallDirection );
  3021                                     iCallDirection );
  3016 TFLOGSTRING2("TSY: CMmVoiceCallTsy::CMmVoiceCallTsy::UpdateCallRoutingControl. Call routing setup: Call name:%S", &iCallName );
  3022 OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMVOICECALLTSY_UPDATECALLROUTINGCONTROL_2, "TSY: CMmVoiceCallTsy::CMmVoiceCallTsy::UpdateCallRoutingControl. Call routing setup: Call name:%S", iCallName );
  3017             iTelephonyAudioControlSetup = ETrue; 
  3023             iTelephonyAudioControlSetup = ETrue; 
  3018             }
  3024             }
  3019         }
  3025         }
  3020     }
  3026     }
  3021 
  3027