phoneengine/callhandling/src/cpecallhandling.cpp
changeset 76 cfea66083b62
parent 74 d1c62c765e48
equal deleted inserted replaced
74:d1c62c765e48 76:cfea66083b62
    94     MCCEDtmfInterface& aDtmfInterface
    94     MCCEDtmfInterface& aDtmfInterface
    95     ) : iModel( aModel ),
    95     ) : iModel( aModel ),
    96         iConvergedCallEngine( aConvergedCallEngine ),
    96         iConvergedCallEngine( aConvergedCallEngine ),
    97         iDtmfInterface( aDtmfInterface ),
    97         iDtmfInterface( aDtmfInterface ),
    98         iReplaceActive( EFalse ),
    98         iReplaceActive( EFalse ),
    99         iDialRequest( EFalse )
    99         iDialRequestCallId( KErrNotFound )
   100     {
   100     {
   101     TEFLOGSTRING( KTAOBJECT, "CALL CPECallHandling::CPECallHandling()");
   101     TEFLOGSTRING( KTAOBJECT, "CALL CPECallHandling::CPECallHandling()");
   102     }
   102     }
   103 
   103 
   104 // Destructor
   104 // Destructor
   238                 TEFLOGSTRING2( KTAINT, 
   238                 TEFLOGSTRING2( KTAINT, 
   239                     "CALL CPECallHandling::SendErrorMessage, call state %d", callData->GetCallState() );
   239                     "CALL CPECallHandling::SendErrorMessage, call state %d", callData->GetCallState() );
   240                 if( callData->GetCallState() == EPEStateIdle )
   240                 if( callData->GetCallState() == EPEStateIdle )
   241                     {
   241                     {
   242                     ReleaseCallObject( aCallId  );
   242                     ReleaseCallObject( aCallId  );
   243                     iDialRequest = EFalse;
   243                     iDialRequestCallId = KErrNotFound;
   244                     }
   244                     }
   245                 }
   245                 }
   246             }
   246             }
   247 
   247 
   248         if( ( KPEConferenceCallID == aCallId ) && ( ECCPConferenceErrorAddCall == aErrorCode ) &&
   248         if( ( KPEConferenceCallID == aCallId ) && ( ECCPConferenceErrorAddCall == aErrorCode ) &&
   287     
   287     
   288     switch ( aMessage )
   288     switch ( aMessage )
   289         {
   289         {
   290         case MEngineMonitor::EPEMessageDialing:
   290         case MEngineMonitor::EPEMessageDialing:
   291             {
   291             {
   292             iDialRequest = EFalse;
   292             iDialRequestCallId = KErrNotFound;
   293             CPESingleCall* callData = iCallArrayOwner->GetCallObject( aCallId );
   293             CPESingleCall* callData = iCallArrayOwner->GetCallObject( aCallId );
   294             if( callData )
   294             if( callData )
   295                 {
   295                 {
   296                 MCCECall& call = callData->Call();
   296                 MCCECall& call = callData->Call();
   297                 iModel.DataStore()->SetCallIndex(call.CallIndex(), aCallId );                
   297                 iModel.DataStore()->SetCallIndex(call.CallIndex(), aCallId );                
   310                 }
   310                 }
   311             break;
   311             break;
   312             }
   312             }
   313         case MEngineMonitor::EPEMessageIdle:
   313         case MEngineMonitor::EPEMessageIdle:
   314             {
   314             {
       
   315             // If Idle is received to pending dial request, clear request
       
   316             if ( aCallId == iDialRequestCallId )
       
   317                 {
       
   318                 iDialRequestCallId = KErrNotFound;
       
   319                 }
   315             HandleAutoResume();
   320             HandleAutoResume();
   316             break;
   321             break;
   317             }
   322             }
   318         case MEngineMonitor::EPEMessageAddedConferenceMember:
   323         case MEngineMonitor::EPEMessageAddedConferenceMember:
   319             {
   324             {
   640     CPESingleCall* callData( NULL );
   645     CPESingleCall* callData( NULL );
   641     TInt errorCode( KErrNone );
   646     TInt errorCode( KErrNone );
   642 
   647 
   643     // If there is allready video call, one dial in connecting, dialing or disconnecting state,
   648     // If there is allready video call, one dial in connecting, dialing or disconnecting state,
   644     // we just ignore new dial request and send KErrInUse back to UI
   649     // we just ignore new dial request and send KErrInUse back to UI
   645     if( iDialRequest )
   650     if( iDialRequestCallId != KErrNotFound )
   646         {
   651         {
   647         // Dial request already send, waiting for dialing state.
   652         // Dial request already send, waiting for dialing state.
   648         errorCode = KErrGeneral;
   653         errorCode = KErrGeneral;
   649         TEFLOGSTRING( KTAERROR, 
   654         TEFLOGSTRING( KTAERROR, 
   650             "CALL CPECALLHANDLING::DIALCALL ! DIAL FAILED: DIAL REQUEST ALREADY ACTIVE" );
   655             "CALL CPECALLHANDLING::DIALCALL ! DIAL FAILED: DIAL REQUEST ALREADY ACTIVE" );
   668                 // disable number matching for SAT calls
   673                 // disable number matching for SAT calls
   669                 callData->DisableFDNCheck();
   674                 callData->DisableFDNCheck();
   670                 }
   675                 }
   671             
   676             
   672             TEFLOGSTRING( KTAINT, "CALL CPECallHandling::DialCall > Dial" );
   677             TEFLOGSTRING( KTAINT, "CALL CPECallHandling::DialCall > Dial" );
   673             iDialRequest = ETrue;
   678             iDialRequestCallId = aCallId;
   674             errorCode = callData->Dial( aNumber );
   679             errorCode = callData->Dial( aNumber );
   675             
   680             
   676             if ( errorCode != KErrNone )
   681             if ( errorCode != KErrNone )
   677                 {
   682                 {
   678                 iDialRequest = EFalse;
   683                 iDialRequestCallId = KErrNotFound;
   679                 // Dial failed: clean up
   684                 // Dial failed: clean up
   680                 ReleaseCallObject( callData->GetCallId() );
   685                 ReleaseCallObject( callData->GetCallId() );
   681                 TEFLOGSTRING2( KTAERROR, 
   686                 TEFLOGSTRING2( KTAERROR, 
   682                     "CALL CPECALLHANDLING::DIALCALL ! DIAL FAILED: MAY NOT PROCEED! %d", errorCode );
   687                     "CALL CPECALLHANDLING::DIALCALL ! DIAL FAILED: MAY NOT PROCEED! %d", errorCode );
   683                 }
   688                 }