telephonyserverplugins/simtsy/src/CSimCall.cpp
branchRCL_3
changeset 65 630d2f34d719
parent 0 3553901f7fa8
child 66 07a122eea281
equal deleted inserted replaced
61:17af172ffa5f 65:630d2f34d719
     1 // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2001-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".
    19 
    19 
    20 /**
    20 /**
    21  @file
    21  @file
    22 */
    22 */
    23 
    23 
       
    24 
       
    25 #include "OstTraceDefinitions.h"
       
    26 #ifdef OST_TRACE_COMPILER_IN_USE
       
    27 #include "CSimCallTraces.h"
       
    28 #endif
       
    29 
    24 #include "CSimCall.h"
    30 #include "CSimCall.h"
    25 #include "CSimPhone.h"
    31 #include "CSimPhone.h"
    26 #include "Simlog.h"
       
    27 
    32 
    28 void CSimCall::CloseCall(TAny* aObj)
    33 void CSimCall::CloseCall(TAny* aObj)
    29 /**
    34 /**
    30 * Utility func for cleanup stack
    35 * Utility func for cleanup stack
    31 *
    36 *
    79 	{
    84 	{
    80 	// ReqModeL is called from the server's CTelObject::ReqAnalyserL
    85 	// ReqModeL is called from the server's CTelObject::ReqAnalyserL
    81 	// in order to check the type of request it has
    86 	// in order to check the type of request it has
    82 
    87 
    83 	CTelObject::TReqMode reqMode=0;
    88 	CTelObject::TReqMode reqMode=0;
    84 	LOGCALL2("CSimCall::ReqModeL called with IPC number %d",aIpc);
    89 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_REQMODEL_1, "CSimCall::ReqModeL called with IPC number %d",aIpc);
    85 	switch (aIpc)
    90 	switch (aIpc)
    86 		{
    91 		{
    87 	//
    92 	//
    88 	// No Flow Control NOR Multiple Completion
    93 	// No Flow Control NOR Multiple Completion
    89 	//
    94 	//
   143 	case EMobileCallNotifyHscsdInfoChange:
   148 	case EMobileCallNotifyHscsdInfoChange:
   144 	case EMobileCallNotifyMobileDataCallCapsChange:
   149 	case EMobileCallNotifyMobileDataCallCapsChange:
   145 	case EMobileCallNotifyMobileCallStatusChange:
   150 	case EMobileCallNotifyMobileCallStatusChange:
   146 	case EMobileCallNotifyMobileCallCapsChange:
   151 	case EMobileCallNotifyMobileCallCapsChange:
   147 	case EMobileCallNotifyRemotePartyInfoChange:
   152 	case EMobileCallNotifyRemotePartyInfoChange:
   148 		LOGCALL1("CSimCall: Registered with default number of slots");
   153 		OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NUMBEROFSLOTSL_1, "CSimCall: Registered with default number of slots");
   149 		return KDefaultNumberOfSlots;
   154 		return KDefaultNumberOfSlots;
   150 	default:
   155 	default:
   151 		LOGCALL1("CSimCall::NumberOfSlotsL: No match for IPC, defering to base function");
   156 		OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NUMBEROFSLOTSL_2, "CSimCall::NumberOfSlotsL: No match for IPC, defering to base function");
   152 		break;
   157 		break;
   153 		}
   158 		}
   154 	return CCallBase::NumberOfSlotsL(aIpc);
   159 	return CCallBase::NumberOfSlotsL(aIpc);
   155 	}
   160 	}
   156 
   161 
   288 * @param aTsyReqHandle Tsy Request handle for the client request
   293 * @param aTsyReqHandle Tsy Request handle for the client request
   289 * @param aHookStatus pointer to the hook status
   294 * @param aHookStatus pointer to the hook status
   290 * @return KErrNone
   295 * @return KErrNone
   291 */
   296 */
   292 	{
   297 	{
   293 	LOGCALL1(">>CSimCall::NotifyHookChange");
   298 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYHOOKCHANGE_1, ">>CSimCall::NotifyHookChange");
   294 	iNotifyHookChange.iNotifyPending = ETrue;
   299 	iNotifyHookChange.iNotifyPending = ETrue;
   295 	iNotifyHookChange.iNotifyHandle = aTsyReqHandle;
   300 	iNotifyHookChange.iNotifyHandle = aTsyReqHandle;
   296 	iNotifyHookChange.iNotifyData = aHookStatus;
   301 	iNotifyHookChange.iNotifyData = aHookStatus;
   297 	LOGCALL1("<<CSimCall::NotifyHookChange");
   302 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYHOOKCHANGE_2, "<<CSimCall::NotifyHookChange");
   298 	return KErrNone;
   303 	return KErrNone;
   299 	}
   304 	}
   300 
   305 
   301 TInt CSimCall::NotifyHookChangeCancel(const TTsyReqHandle /*aTsyReqHandle*/)
   306 TInt CSimCall::NotifyHookChangeCancel(const TTsyReqHandle /*aTsyReqHandle*/)
   302 /**
   307 /**
   304 *
   309 *
   305 * @param aTsyReqHandle Tsy Request handle for the client cancel request
   310 * @param aTsyReqHandle Tsy Request handle for the client cancel request
   306 * @return KErrNone
   311 * @return KErrNone
   307 */
   312 */
   308 	{
   313 	{
   309 	LOGCALL1(">>CSimCall::NotifyHookChangeCancel");
   314 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYHOOKCHANGECANCEL_1, ">>CSimCall::NotifyHookChangeCancel");
   310 	if(iNotifyHookChange.iNotifyPending)
   315 	if(iNotifyHookChange.iNotifyPending)
   311 		{
   316 		{
   312 		iNotifyHookChange.iNotifyPending=EFalse;
   317 		iNotifyHookChange.iNotifyPending=EFalse;
   313 		ReqCompleted(iNotifyHookChange.iNotifyHandle,KErrCancel);
   318 		ReqCompleted(iNotifyHookChange.iNotifyHandle,KErrCancel);
   314 		}
   319 		}
   315 	LOGCALL1("<<CSimCall::NotifyHookChangeCancel");
   320 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYHOOKCHANGECANCEL_2, "<<CSimCall::NotifyHookChangeCancel");
   316 	return KErrNone;
   321 	return KErrNone;
   317 	}
   322 	}
   318 
   323 
   319 TInt CSimCall::NotifyMobileCallStatusChange(const TTsyReqHandle aTsyReqHandle,RMobileCall::TMobileCallStatus* aStatus)
   324 TInt CSimCall::NotifyMobileCallStatusChange(const TTsyReqHandle aTsyReqHandle,RMobileCall::TMobileCallStatus* aStatus)
   320 /**
   325 /**
   326 * @param aTsyReqHandle Tsy Request handle for the client request
   331 * @param aTsyReqHandle Tsy Request handle for the client request
   327 * @param aStatus pointer to the call status
   332 * @param aStatus pointer to the call status
   328 * @return KErrNone
   333 * @return KErrNone
   329 */
   334 */
   330 	{
   335 	{
   331 	LOGCALL1(">>CSimCall::NotifyMobileCallStatusChange");
   336 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYMOBILECALLSTATUSCHANGE_1, ">>CSimCall::NotifyMobileCallStatusChange");
   332 	__ASSERT_ALWAYS(!iMobileNotifyStatusChange.iNotifyPending,SimPanic(ENotificationAlreadyPending));
   337 	__ASSERT_ALWAYS(!iMobileNotifyStatusChange.iNotifyPending,SimPanic(ENotificationAlreadyPending));
   333 
   338 
   334 	iMobileNotifyStatusChange.iNotifyPending = ETrue;
   339 	iMobileNotifyStatusChange.iNotifyPending = ETrue;
   335 	iMobileNotifyStatusChange.iNotifyHandle = aTsyReqHandle;
   340 	iMobileNotifyStatusChange.iNotifyHandle = aTsyReqHandle;
   336 	iMobileNotifyStatusChange.iNotifyData = aStatus;
   341 	iMobileNotifyStatusChange.iNotifyData = aStatus;
   337 	LOGCALL1("<<CSimCall::NotifyMobileCallStatusChange");
   342 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYMOBILECALLSTATUSCHANGE_2, "<<CSimCall::NotifyMobileCallStatusChange");
   338 	return KErrNone;
   343 	return KErrNone;
   339 	}
   344 	}
   340 
   345 
   341 TInt CSimCall::NotifyMobileCallStatusChangeCancel(const TTsyReqHandle /*aTsyReqHandle*/)
   346 TInt CSimCall::NotifyMobileCallStatusChangeCancel(const TTsyReqHandle /*aTsyReqHandle*/)
   342 /**
   347 /**
   345 * 
   350 * 
   346 * @param aTsyReqHandle Tsy Request handle for the client cancel request
   351 * @param aTsyReqHandle Tsy Request handle for the client cancel request
   347 * @return KErrNone
   352 * @return KErrNone
   348 */
   353 */
   349 	{
   354 	{
   350 	LOGCALL1(">>CSimCall::NotifyMobileCallStatusChangeCancel");
   355 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYMOBILECALLSTATUSCHANGECANCEL_1, ">>CSimCall::NotifyMobileCallStatusChangeCancel");
   351 	if(iMobileNotifyStatusChange.iNotifyPending)
   356 	if(iMobileNotifyStatusChange.iNotifyPending)
   352 		{
   357 		{
   353 		iMobileNotifyStatusChange.iNotifyPending=EFalse;
   358 		iMobileNotifyStatusChange.iNotifyPending=EFalse;
   354 		ReqCompleted(iMobileNotifyStatusChange.iNotifyHandle,KErrCancel);
   359 		ReqCompleted(iMobileNotifyStatusChange.iNotifyHandle,KErrCancel);
   355 		}
   360 		}
   356 	LOGCALL1("<<CSimCall::NotifyMobileCallStatusChangeCancel");
   361 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYMOBILECALLSTATUSCHANGECANCEL_2, "<<CSimCall::NotifyMobileCallStatusChangeCancel");
   357 	return KErrNone;
   362 	return KErrNone;
   358 	}
   363 	}
   359 
   364 
   360 
   365 
   361 TInt CSimCall::NotifyStatusChange(const TTsyReqHandle aTsyReqHandle,RCall::TStatus* aStatus)
   366 TInt CSimCall::NotifyStatusChange(const TTsyReqHandle aTsyReqHandle,RCall::TStatus* aStatus)
   368 * @param aTsyReqHandle Tsy Request handle for the client request
   373 * @param aTsyReqHandle Tsy Request handle for the client request
   369 * @param aStatus pointer to the call status
   374 * @param aStatus pointer to the call status
   370 * @return KErrNone
   375 * @return KErrNone
   371 */
   376 */
   372 	{
   377 	{
   373 	LOGCALL1(">>CSimCall::NotifyStatusChange");
   378 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYSTATUSCHANGE_1, ">>CSimCall::NotifyStatusChange");
   374 	__ASSERT_ALWAYS(!iNotifyStatusChange.iNotifyPending,SimPanic(ENotificationAlreadyPending));
   379 	__ASSERT_ALWAYS(!iNotifyStatusChange.iNotifyPending,SimPanic(ENotificationAlreadyPending));
   375 
   380 
   376 	iNotifyStatusChange.iNotifyPending = ETrue;
   381 	iNotifyStatusChange.iNotifyPending = ETrue;
   377 	iNotifyStatusChange.iNotifyHandle = aTsyReqHandle;
   382 	iNotifyStatusChange.iNotifyHandle = aTsyReqHandle;
   378 	iNotifyStatusChange.iNotifyData = aStatus;
   383 	iNotifyStatusChange.iNotifyData = aStatus;
   379 	LOGCALL1("<<CSimCall::NotifyStatusChange");
   384 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYSTATUSCHANGE_2, "<<CSimCall::NotifyStatusChange");
   380 	return KErrNone;
   385 	return KErrNone;
   381 	}
   386 	}
   382 
   387 
   383 TInt CSimCall::NotifyStatusChangeCancel(const TTsyReqHandle /*aTsyReqHandle*/)
   388 TInt CSimCall::NotifyStatusChangeCancel(const TTsyReqHandle /*aTsyReqHandle*/)
   384 /**
   389 /**
   387 * 
   392 * 
   388 * @param aTsyReqHandle Tsy Request handle for the client cancel request
   393 * @param aTsyReqHandle Tsy Request handle for the client cancel request
   389 * @return KErrNone
   394 * @return KErrNone
   390 */
   395 */
   391 	{
   396 	{
   392 	LOGCALL1(">>CSimCall::NotifyStatusChangeCancel");
   397 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYSTATUSCHANGECANCEL_1, ">>CSimCall::NotifyStatusChangeCancel");
   393 	if(iNotifyStatusChange.iNotifyPending)
   398 	if(iNotifyStatusChange.iNotifyPending)
   394 		{
   399 		{
   395 		iNotifyStatusChange.iNotifyPending=EFalse;
   400 		iNotifyStatusChange.iNotifyPending=EFalse;
   396 		ReqCompleted(iNotifyStatusChange.iNotifyHandle,KErrCancel);
   401 		ReqCompleted(iNotifyStatusChange.iNotifyHandle,KErrCancel);
   397 		}
   402 		}
   398 	LOGCALL1("<<CSimCall::NotifyStatusChangeCancel");
   403 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYSTATUSCHANGECANCEL_2, "<<CSimCall::NotifyStatusChangeCancel");
   399 	return KErrNone;
   404 	return KErrNone;
   400 	}
   405 	}
   401 
   406 
   402 
   407 
   403 
   408 
   473 
   478 
   474 	mobileCallInfo.iValid=0x0;
   479 	mobileCallInfo.iValid=0x0;
   475 	mobileCallInfo.iStatus=iState;
   480 	mobileCallInfo.iStatus=iState;
   476 	mobileCallInfo.iCallName.Copy(iName);
   481 	mobileCallInfo.iCallName.Copy(iName);
   477 	mobileCallInfo.iLineName.Copy(iLine->iLineName);
   482 	mobileCallInfo.iLineName.Copy(iLine->iLineName);
   478 	LOGCALL2("CSimCall::GetMobileCallInfo request completed with %d",iState);
   483 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_GETMOBILECALLINFO_1, "CSimCall::GetMobileCallInfo request completed with %d",iState);
   479 	ReqCompleted(aTsyReqHandle,KErrNone);
   484 	ReqCompleted(aTsyReqHandle,KErrNone);
   480 	return KErrNone;
   485 	return KErrNone;
   481 	}
   486 	}
   482 
   487 
   483 RCall::TStatus CSimCall::GetCoreCallStatus()
   488 RCall::TStatus CSimCall::GetCoreCallStatus()
   517 * @param aTsyReqHandle
   522 * @param aTsyReqHandle
   518 * @param aCallStatus pointer to the call status
   523 * @param aCallStatus pointer to the call status
   519 * @return KErrNone
   524 * @return KErrNone
   520 */
   525 */
   521     {
   526     {
   522 	LOGCALL1(">>CSimCall::GetStatus");
   527 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_GETSTATUS_1, ">>CSimCall::GetStatus");
   523 	*aCallStatus=GetCoreCallStatus();
   528 	*aCallStatus=GetCoreCallStatus();
   524 	ReqCompleted(aTsyReqHandle,KErrNone);
   529 	ReqCompleted(aTsyReqHandle,KErrNone);
   525 	LOGCALL1("<<CSimCall::GetStatus");
   530 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_GETSTATUS_2, "<<CSimCall::GetStatus");
   526 	return KErrNone;
   531 	return KErrNone;
   527     }
   532     }
   528 
   533 
   529 TInt CSimCall::GetMobileCallStatus(const TTsyReqHandle aTsyReqHandle, RMobileCall::TMobileCallStatus* aCallStatus)
   534 TInt CSimCall::GetMobileCallStatus(const TTsyReqHandle aTsyReqHandle, RMobileCall::TMobileCallStatus* aCallStatus)
   530 /**
   535 /**
   533 * @param aTsyReqHandle
   538 * @param aTsyReqHandle
   534 * @param aCallStatus pointer to the call status
   539 * @param aCallStatus pointer to the call status
   535 * @return KErrNone
   540 * @return KErrNone
   536 */
   541 */
   537     {
   542     {
   538 	LOGCALL1(">>CSimCall::GetMobileCallStatus");
   543 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_GETMOBILECALLSTATUS_1, ">>CSimCall::GetMobileCallStatus");
   539 	*aCallStatus=iState;
   544 	*aCallStatus=iState;
   540 	ReqCompleted(aTsyReqHandle,KErrNone);
   545 	ReqCompleted(aTsyReqHandle,KErrNone);
   541 	LOGCALL1("<<CSimCall::GetMobileCallStatus");
   546 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_GETMOBILECALLSTATUS_2, "<<CSimCall::GetMobileCallStatus");
   542 	return KErrNone;
   547 	return KErrNone;
   543     }
   548     }
   544 
   549 
   545 TInt CSimCall::TransferOwnership(const TTsyReqHandle aTsyReqHandle)
   550 TInt CSimCall::TransferOwnership(const TTsyReqHandle aTsyReqHandle)
   546 /**
   551 /**
   575 /**
   580 /**
   576 * Retrieves the last call duration
   581 * Retrieves the last call duration
   577 * Not supported in this version of the Simulator TSY
   582 * Not supported in this version of the Simulator TSY
   578 */
   583 */
   579 	{
   584 	{
   580 	LOGCALL1(">>CSimCall::GetCallDuration");
   585 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_GETCALLDURATION_1, ">>CSimCall::GetCallDuration");
   581 	
   586 	
   582 	iCallDurationHandler->GetDuration(aTime);
   587 	iCallDurationHandler->GetDuration(aTime);
   583 	
   588 	
   584 	ReqCompleted(aTsyReqHandle,KErrNone);
   589 	ReqCompleted(aTsyReqHandle,KErrNone);
   585 	LOGCALL1("<<CSimCall::GetCallDuration");
   590 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_GETCALLDURATION_2, "<<CSimCall::GetCallDuration");
   586 	return KErrNone;
   591 	return KErrNone;
   587 	}
   592 	}
   588 
   593 
   589 TInt CSimCall::RecoverDataPortAndRelinquishOwnership()
   594 TInt CSimCall::RecoverDataPortAndRelinquishOwnership()
   590 /**
   595 /**
   658 * @param aSwap indicates that state change takes place as a consequence of swap operation on the call
   663 * @param aSwap indicates that state change takes place as a consequence of swap operation on the call
   659 * @param aNoPropagation  indicates whether change propagate to the holder line object
   664 * @param aNoPropagation  indicates whether change propagate to the holder line object
   660 * @return Error indication if change of state is successful or not
   665 * @return Error indication if change of state is successful or not
   661 */
   666 */
   662 	{
   667 	{
   663 	LOGCALL3(">>CSimCall::ChangeState 0x%08x [newState=%d] entry", this,aNewState);
   668 	OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_CHANGESTATEL_1, ">>CSimCall::ChangeState 0x%08x [newState=%d] entry", (TUint)this,aNewState);
   664 	
   669 	
   665 	if(!aNoPropagation)
   670 	if(!aNoPropagation)
   666 		{
   671 		{
   667 		TInt ret=iLine->ChangeStateL(aNewState,aSwap,this);
   672 		TInt ret=iLine->ChangeStateL(aNewState,aSwap,this);
   668 		if(ret!=KErrNone)
   673 		if(ret!=KErrNone)
   732 			}
   737 			}
   733 		}
   738 		}
   734 	if((aNewState == RMobileCall::EStatusConnected && !aSwap)|| aNewState == RMobileCall::EStatusDisconnecting)
   739 	if((aNewState == RMobileCall::EStatusConnected && !aSwap)|| aNewState == RMobileCall::EStatusDisconnecting)
   735 		iLine->UpdatePhoneNotifiers(this,aNewState);		
   740 		iLine->UpdatePhoneNotifiers(this,aNewState);		
   736 
   741 
   737 	LOGCALL2("<<CSimCall::ChangeState exit %d",iState);
   742 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_CHANGESTATEL_2, "<<CSimCall::ChangeState exit %d",iState);
   738 	return KErrNone;
   743 	return KErrNone;
   739 	}
   744 	}
   740 
   745 
   741 
   746 
   742 void CSimCall::UpdateNotifiers()
   747 void CSimCall::UpdateNotifiers()
   743 /**
   748 /**
   744 	Update notifiers of other voice call when it gets swapped
   749 	Update notifiers of other voice call when it gets swapped
   745 */
   750 */
   746 	{
   751 	{
   747 	LOGCALL2(">>CSimCall::UpdateNotifiers 0x%08x entry", this);
   752 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_UPDATENOTIFIERS_1, ">>CSimCall::UpdateNotifiers 0x%08x entry", this);
   748 	
   753 	
   749 // Check for call duration change
   754 // Check for call duration change
   750 	if (!iCallDurationHandler)
   755 	if (!iCallDurationHandler)
   751 		{
   756 		{
   752 		TRAP_IGNORE(iCallDurationHandler=CSimCallDuration::NewL(this));
   757 		TRAP_IGNORE(iCallDurationHandler=CSimCallDuration::NewL(this));
   803 			mobileCallCaps.iCallEventCaps=0;
   808 			mobileCallCaps.iCallEventCaps=0;
   804 			ReqCompleted(iNotifyMobileCapsChange.iNotifyHandle,KErrNone);
   809 			ReqCompleted(iNotifyMobileCapsChange.iNotifyHandle,KErrNone);
   805 			}
   810 			}
   806 		}
   811 		}
   807 
   812 
   808 	LOGCALL2("<<CSimCall::UpdateNotifiers exit %d",iState);
   813 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_UPDATENOTIFIERS_2, "<<CSimCall::UpdateNotifiers exit %d",iState);
   809 	}
   814 	}
   810 
   815 
   811 TInt CSimCall::ActionEvent(TCallEvent /*aEvent*/, TInt /*aStatus*/)
   816 TInt CSimCall::ActionEvent(TCallEvent /*aEvent*/, TInt /*aStatus*/)
   812 /**
   817 /**
   813 * This is an empty shell function. Each line should implement its own
   818 * This is an empty shell function. Each line should implement its own
  1004 * @param aTsyReqHandle Tsy Request handle for the client request
  1009 * @param aTsyReqHandle Tsy Request handle for the client request
  1005 * @param aStatus pointer to the call status
  1010 * @param aStatus pointer to the call status
  1006 * @return KErrNone
  1011 * @return KErrNone
  1007 */
  1012 */
  1008 	{
  1013 	{
  1009 	LOGCALL1(">>CSimCall::NotifyRemotePartyInfoChange");
  1014 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYREMOTEPARTYINFOCHANGE_1, ">>CSimCall::NotifyRemotePartyInfoChange");
  1010 	__ASSERT_ALWAYS(iNotifyRemotePartyInfoTimer, SimPanic(EOjectNotConstructed));
  1015 	__ASSERT_ALWAYS(iNotifyRemotePartyInfoTimer, SimPanic(EOjectNotConstructed));
  1011 	__ASSERT_ALWAYS(!iNotifyRemotePartyInfoTimer->iNotifyRemotePartyInfo.iNotifyPending,SimPanic(ENotificationAlreadyPending));
  1016 	__ASSERT_ALWAYS(!iNotifyRemotePartyInfoTimer->iNotifyRemotePartyInfo.iNotifyPending,SimPanic(ENotificationAlreadyPending));
  1012 	
  1017 	
  1013 	RMobileCall::TMobileCallRemotePartyInfoV1Pckg* remotepartyPckg = (RMobileCall::TMobileCallRemotePartyInfoV1Pckg*) aRemoteParty;
  1018 	RMobileCall::TMobileCallRemotePartyInfoV1Pckg* remotepartyPckg = (RMobileCall::TMobileCallRemotePartyInfoV1Pckg*) aRemoteParty;
  1014 	RMobileCall::TMobileCallRemotePartyInfoV1& remoteparty = (*remotepartyPckg)();
  1019 	RMobileCall::TMobileCallRemotePartyInfoV1& remoteparty = (*remotepartyPckg)();
  1025 	iNotifyRemotePartyInfoTimer->Start();	
  1030 	iNotifyRemotePartyInfoTimer->Start();	
  1026 	
  1031 	
  1027 	iNotifyRemotePartyInfoTimer->iNotifyRemotePartyInfo.iNotifyPending = ETrue;
  1032 	iNotifyRemotePartyInfoTimer->iNotifyRemotePartyInfo.iNotifyPending = ETrue;
  1028 	iNotifyRemotePartyInfoTimer->iNotifyRemotePartyInfo.iNotifyHandle = aTsyReqHandle;
  1033 	iNotifyRemotePartyInfoTimer->iNotifyRemotePartyInfo.iNotifyHandle = aTsyReqHandle;
  1029 	iNotifyRemotePartyInfoTimer->iNotifyRemotePartyInfo.iNotifyData = &remoteparty;
  1034 	iNotifyRemotePartyInfoTimer->iNotifyRemotePartyInfo.iNotifyData = &remoteparty;
  1030 	LOGCALL1("<<CSimCall::NotifyRemotePartyInfoChange");
  1035 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYREMOTEPARTYINFOCHANGE_2, "<<CSimCall::NotifyRemotePartyInfoChange");
  1031 	return KErrNone;
  1036 	return KErrNone;
  1032 	}
  1037 	}
  1033 	
  1038 	
  1034 TInt CSimCall::NotifyRemotePartyInfoChangeCancel()
  1039 TInt CSimCall::NotifyRemotePartyInfoChangeCancel()
  1035 /**
  1040 /**
  1037 * This is acheived simply by resetting the flag that indicates a notification is pending.
  1042 * This is acheived simply by resetting the flag that indicates a notification is pending.
  1038 * 
  1043 * 
  1039 * @return KErrNone
  1044 * @return KErrNone
  1040 */
  1045 */
  1041 	{
  1046 	{
  1042 	LOGCALL1(">>CSimCall::NotifyRemotePartyInfoChangeCancel");
  1047 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYREMOTEPARTYINFOCHANGECANCEL_1, ">>CSimCall::NotifyRemotePartyInfoChangeCancel");
  1043 	if(iNotifyRemotePartyInfoTimer && iNotifyRemotePartyInfoTimer->iNotifyRemotePartyInfo.iNotifyPending)
  1048 	if(iNotifyRemotePartyInfoTimer && iNotifyRemotePartyInfoTimer->iNotifyRemotePartyInfo.iNotifyPending)
  1044 		{
  1049 		{
  1045 		iNotifyRemotePartyInfoTimer->iNotifyRemotePartyInfo.iNotifyPending=EFalse;
  1050 		iNotifyRemotePartyInfoTimer->iNotifyRemotePartyInfo.iNotifyPending=EFalse;
  1046 		ReqCompleted(iNotifyRemotePartyInfoTimer->iNotifyRemotePartyInfo.iNotifyHandle,KErrCancel);
  1051 		ReqCompleted(iNotifyRemotePartyInfoTimer->iNotifyRemotePartyInfo.iNotifyHandle,KErrCancel);
  1047 		}
  1052 		}
  1048 	LOGCALL1("<<CSimCall::NotifyRemotePartyInfoChangeCancel");
  1053 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALL_NOTIFYREMOTEPARTYINFOCHANGECANCEL_2, "<<CSimCall::NotifyRemotePartyInfoChangeCancel");
  1049 	return KErrNone;
  1054 	return KErrNone;
  1050 	}
  1055 	}