convergedcallengine/cce/src/cccecallcontainer.cpp
branchRCL_3
changeset 20 987c9837762f
parent 19 7d48bed6ce0c
equal deleted inserted replaced
19:7d48bed6ce0c 20:987c9837762f
    59 // Construct object
    59 // Construct object
    60 // ---------------------------------------------------------------------------
    60 // ---------------------------------------------------------------------------
    61 //
    61 //
    62 void CCCECallContainer::ConstructL()
    62 void CCCECallContainer::ConstructL()
    63     {
    63     {
    64     FeatureManager::InitializeLibL();
    64 	FeatureManager::InitializeLibL();
    65     iCallStateMediator = CCCECallInfoMediator::NewL( *this );
    65     iCallStateMediator = CCCECallInfoMediator::NewL( *this );
    66     
    66     
    67     CreateCallDataArraysL();
    67     CreateCallDataArraysL();
    68  
    68  
    69     iTransferController = CCCETransferController::NewL( *this );
    69     iTransferController = CCCETransferController::NewL( *this );
   168 // Is called after handover, when call type has changed
   168 // Is called after handover, when call type has changed
   169 // -----------------------------------------------------------------------------
   169 // -----------------------------------------------------------------------------
   170 //
   170 //
   171 void CCCECallContainer::AirTimeDurationSwap(
   171 void CCCECallContainer::AirTimeDurationSwap(
   172                            const CCPCall::TCallType aNewCallType)
   172                            const CCPCall::TCallType aNewCallType)
   173     {
   173 	{
   174     CCELOGSTRING("CCCECallContainer::AirTimeDurationSwap(): IN");
   174     CCELOGSTRING("CCCECallContainer::AirTimeDurationSwap(): IN");
   175     
   175     
   176     CCCECall* call = NULL;
   176     CCCECall* call = NULL;
   177     TInt calls(0);
   177     TInt calls(0);
   178     for ( TInt i = 0; i < KCCECallObjects; i++ )
   178     for ( TInt i = 0; i < KCCECallObjects; i++ )
   189         {
   189         {
   190         calls ++;
   190         calls ++;
   191         }
   191         }
   192     
   192     
   193     if( 1 == calls )
   193     if( 1 == calls )
   194         {
   194     	{
   195         // After handover we will have only one active call
   195     	// After handover we will have only one active call
   196         // If we have more or less, timer swapping will not happend
   196     	// If we have more or less, timer swapping will not happend
   197         if (aNewCallType == CCPCall::ECallTypePS )
   197 	    if (aNewCallType == CCPCall::ECallTypePS )
   198             {
   198 	    	{
   199             CCELOGSTRING2("CCCECallContainer::AirTimeDurationSwap(): CS Stops, PS restarts from %d",
   199 	    	CCELOGSTRING2("CCCECallContainer::AirTimeDurationSwap(): CS Stops, PS restarts from %d",
   200                     iCSDuration->NumberOfBeats() );
   200 	    			iCSDuration->NumberOfBeats() );
   201             iCSDuration->Stop();
   201 	    	iCSDuration->Stop();
   202             iPSDuration->RestartAirTimeDuration(iCSDuration->NumberOfBeats());
   202 	    	iPSDuration->RestartAirTimeDuration(iCSDuration->NumberOfBeats());
   203             iCSDuration->Reset();
   203 	    	iCSDuration->Reset();
   204             }
   204 	    	}
   205         else
   205 	    else
   206             {
   206 	    	{
   207             CCELOGSTRING2("CCCECallContainer::AirTimeDurationSwap(): PS Stops, CS restarts from %d",
   207 	    	CCELOGSTRING2("CCCECallContainer::AirTimeDurationSwap(): PS Stops, CS restarts from %d",
   208                     iPSDuration->NumberOfBeats() );
   208 	    			iPSDuration->NumberOfBeats() );
   209             iPSDuration->Stop();
   209 	    	iPSDuration->Stop();
   210             iCSDuration->RestartAirTimeDuration(iPSDuration->NumberOfBeats());
   210 	    	iCSDuration->RestartAirTimeDuration(iPSDuration->NumberOfBeats());
   211             iPSDuration->Reset();
   211 	    	iPSDuration->Reset();
   212             }
   212 	    	}
   213         }
   213     	}
   214     CCELOGSTRING("CCCECallContainer::AirTimeDurationSwap(): OUT");
   214     CCELOGSTRING("CCCECallContainer::AirTimeDurationSwap(): OUT");
   215     }
   215 	}
   216     
   216 	
   217 // ---------------------------------------------------------------------------
   217 // ---------------------------------------------------------------------------
   218 // AirTimeDurationStop()
   218 // AirTimeDurationStop()
   219 // ---------------------------------------------------------------------------
   219 // ---------------------------------------------------------------------------
   220 //
   220 //
   221 void CCCECallContainer::AirTimeDurationStop( CCCECall* /*aCall*/ ) const
   221 void CCCECallContainer::AirTimeDurationStop( CCCECall* /*aCall*/ ) const
   292     for ( TInt i = 0; i < KCCECallObjects; i++ )
   292     for ( TInt i = 0; i < KCCECallObjects; i++ )
   293         {
   293         {
   294         call = GetCall( i );
   294         call = GetCall( i );
   295         if ( call->State() == CCPCall::EStateConnected ||
   295         if ( call->State() == CCPCall::EStateConnected ||
   296              call->State() == CCPCall::EStateHold  )
   296              call->State() == CCPCall::EStateHold  )
   297             {      
   297             { 	   
   298             if ( IsCsPlugin( call, EFalse ) )
   298             if ( IsCsPlugin( call, EFalse ) )
   299                 {
   299                 {
   300                 csCalls++;
   300                 csCalls++;
   301                 CCELOGSTRING2("   AirTimeDurationStart() csCalls=%d ", csCalls);
   301                 CCELOGSTRING2("   AirTimeDurationStart() csCalls=%d ", csCalls);
   302                 }
   302                 }
   368 void CCCECallContainer::ScheduleReleaseCall( MCCPCall& aCalltoRemove, const TUid aUid )
   368 void CCCECallContainer::ScheduleReleaseCall( MCCPCall& aCalltoRemove, const TUid aUid )
   369     {
   369     {
   370     TCallReleaseEntry entry;
   370     TCallReleaseEntry entry;
   371     entry.iCallToRelease = &aCalltoRemove;
   371     entry.iCallToRelease = &aCalltoRemove;
   372     entry.iUid = aUid;
   372     entry.iUid = aUid;
   373     iCallstoRelease.Append(entry); 
   373     iCallstoRelease.Append(entry);
   374     if (!iIdle->IsActive())
   374     if (!iIdle->IsActive())
   375         {
   375         {
   376         iIdle->Start( TCallBack(ReleaseCalls,this) );
   376         iIdle->Start( TCallBack(ReleaseCalls,this) );
   377         }
   377         }
   378     }
   378     }
   697         call = GetCall( i );
   697         call = GetCall( i );
   698         if ( call->IsInUse() )
   698         if ( call->IsInUse() )
   699             {
   699             {
   700             if( call->ImplementationUid() == aImplementationUid )
   700             if( call->ImplementationUid() == aImplementationUid )
   701                 {
   701                 {
   702                 // return value ignored. Ownership of the call object is not 
   702                 aCallArray.Append(call);
   703                 // transferred to array. 
       
   704                 aCallArray.Append(call); 
       
   705                 }
   703                 }
   706             }
   704             }
   707         }
   705         }
   708 
   706 
   709     return aCallArray.Count();
   707     return aCallArray.Count();
   729             callState = call->State();
   727             callState = call->State();
   730             if ( callState == CCPCall::EStateDialling ||
   728             if ( callState == CCPCall::EStateDialling ||
   731                  callState == CCPCall::EStateConnecting ||
   729                  callState == CCPCall::EStateConnecting ||
   732                  callState == CCPCall::EStateConnected )
   730                  callState == CCPCall::EStateConnected )
   733                 {
   731                 {
   734                 // Ownership of the call object is not 
   732                 aCallArray.Append( call );
   735                 // transferred to array.
   733                 err = KErrNone;
   736                 err = aCallArray.Append( call );
       
   737                 
       
   738                 }
   734                 }
   739             }
   735             }
   740         }
   736         }
   741     
   737     
   742     if( iEmergencyCall->IsInProgress() )
   738     if( iEmergencyCall->IsInProgress() )
   744         callState = iEmergencyCall->State();
   740         callState = iEmergencyCall->State();
   745         if ( callState == CCPCall::EStateDialling ||
   741         if ( callState == CCPCall::EStateDialling ||
   746              callState == CCPCall::EStateConnecting ||
   742              callState == CCPCall::EStateConnecting ||
   747              callState == CCPCall::EStateConnected )
   743              callState == CCPCall::EStateConnected )
   748             {
   744             {
   749             // Ownership of the iEmergencyCall object is not transfered.
   745             aCallArray.Append( iEmergencyCall );
   750             err = aCallArray.Append( iEmergencyCall );
   746             err = KErrNone;
   751             }
   747             }
   752         }
   748         }
   753         
   749         
   754     return err;
   750     return err;
   755     }
   751     }
   987             if( iConferenceCall->EnumerateCalls() != 0 )
   983             if( iConferenceCall->EnumerateCalls() != 0 )
   988                 {
   984                 {
   989                 // Do nothing when there is only cscalls
   985                 // Do nothing when there is only cscalls
   990 
   986 
   991                 if ( IsCsPlugin( aCall, ETrue ) )
   987                 if ( IsCsPlugin( aCall, ETrue ) )
   992                     {
   988                 	{
   993                     
   989                 	
   994                     break;
   990                     break;
   995                     }
   991                     }
   996                     
   992                     
   997                 // If call or conferencecall isn`t cscall then do conference swap
   993                 // If call or conferencecall isn`t cscall then do conference swap
   998                 if( iConferenceCall->State() == MCCEConferenceCallObserver::ECCEConferenceHold &&
   994                 if( iConferenceCall->State() == MCCEConferenceCallObserver::ECCEConferenceHold &&
  1290 // -----------------------------------------------------------------------------
  1286 // -----------------------------------------------------------------------------
  1291 // GetLifeTime()
  1287 // GetLifeTime()
  1292 // -----------------------------------------------------------------------------
  1288 // -----------------------------------------------------------------------------
  1293 // 
  1289 // 
  1294 TBool CCCECallContainer::GetLifeTime( TDes8& aLifeTimeInfo )
  1290 TBool CCCECallContainer::GetLifeTime( TDes8& aLifeTimeInfo )
  1295     {
  1291 	{
  1296     CCELOGSTRING("CCCE::GetLifeTime()");
  1292     CCELOGSTRING("CCCE::GetLifeTime()");
  1297     
  1293     
  1298     CConvergedCallProvider* plugin = NULL;
  1294 	CConvergedCallProvider* plugin = NULL;
  1299     
  1295 	
  1300     TRAP_IGNORE( plugin = iPluginManager->GetPluginL(KCSServiceId));
  1296     TRAP_IGNORE( plugin = iPluginManager->GetPluginL(KCSServiceId));
  1301     
  1297     
  1302     if( plugin )
  1298     if( plugin )
  1303         {
  1299     	{
  1304         plugin->GetLifeTime(aLifeTimeInfo);
  1300     	plugin->GetLifeTime(aLifeTimeInfo);
  1305         }
  1301     	}
  1306     else
  1302 	else
  1307         {
  1303 		{
  1308         CCELOGSTRING("CCCE::GetLifeTime() - CS plugin not found!");
  1304     	CCELOGSTRING("CCCE::GetLifeTime() - CS plugin not found!");
  1309         return EFalse;
  1305     	return EFalse;
  1310         }
  1306 		}
  1311 
  1307 
  1312     return ETrue;
  1308    	return ETrue;
  1313     }
  1309     }
  1314 
  1310 
  1315 // -----------------------------------------------------------------------------
  1311 // -----------------------------------------------------------------------------
  1316 // GetCSInfo()
  1312 // GetCSInfo()
  1317 // -----------------------------------------------------------------------------
  1313 // -----------------------------------------------------------------------------
  1318 // 
  1314 // 
  1319 TBool CCCECallContainer::GetCSInfo( CSInfo& aCSInfo )
  1315 TBool CCCECallContainer::GetCSInfo( CSInfo& aCSInfo )
  1320     {
  1316 	{
  1321     CCELOGSTRING("CCCE::GetCSInfo()");
  1317     CCELOGSTRING("CCCE::GetCSInfo()");
  1322 
  1318 
  1323     CConvergedCallProvider* plugin = NULL;
  1319 	CConvergedCallProvider* plugin = NULL;
  1324     
  1320 	
  1325     TRAP_IGNORE( plugin = iPluginManager->GetPluginL(KCSServiceId));
  1321 	TRAP_IGNORE( plugin = iPluginManager->GetPluginL(KCSServiceId));
  1326         
  1322         
  1327     
  1323     
  1328     if( plugin )
  1324     if( plugin )
  1329         {
  1325     	{
  1330         plugin->GetCSInfo(aCSInfo);
  1326     	plugin->GetCSInfo(aCSInfo);
  1331         }
  1327     	}
  1332     else
  1328 	else
  1333         {
  1329 		{
  1334         CCELOGSTRING("CCCE::GetCSInfo() - CS plugin not found!");
  1330     	CCELOGSTRING("CCCE::GetCSInfo() - CS plugin not found!");
  1335         return EFalse;
  1331     	return EFalse;
  1336         }
  1332 		}
  1337 
  1333 
  1338     return ETrue;
  1334    	return ETrue;
  1339     }
  1335 	}
  1340 
  1336 
  1341 // ---------------------------------------------------------------------------
  1337 // ---------------------------------------------------------------------------
  1342 // CCCECallContainer::IsCsPlugin
  1338 // CCCECallContainer::IsCsPlugin
  1343 // ---------------------------------------------------------------------------
  1339 // ---------------------------------------------------------------------------
  1344 //
  1340 //