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