telephonyserverplugins/ctsydispatchlayer/src/ccallcontroldispatcher.cpp
changeset 19 1f776524b15c
parent 0 3553901f7fa8
child 24 6638e7f4bd8f
child 42 3adadc800673
equal deleted inserted replaced
0:3553901f7fa8 19:1f776524b15c
    30 		CRequestQueueOneShot& aRequestAsyncOneShot)
    30 		CRequestQueueOneShot& aRequestAsyncOneShot)
    31 	: 	iLtsyFactoryV1(aLtsyFactory),
    31 	: 	iLtsyFactoryV1(aLtsyFactory),
    32 		iMessageManagerCallback(aMessageManagerCallback),
    32 		iMessageManagerCallback(aMessageManagerCallback),
    33 		iRequestAsyncOneShot(aRequestAsyncOneShot),
    33 		iRequestAsyncOneShot(aRequestAsyncOneShot),
    34 		iFoundDtmfStop(EFalse), iModeUsedForVoiceCallDial(RMobilePhone::EServiceUnspecified),
    34 		iFoundDtmfStop(EFalse), iModeUsedForVoiceCallDial(RMobilePhone::EServiceUnspecified),
    35 		iFdnCheckPerformed(EFalse),iSwapHeldCallId(KInvalidCallId),
    35 		iFdnCheckPerformed(EFalse),iSwapCallId(KInvalidCallId),
    36 		iSwapConnectedCallId(KInvalidCallId),iTransferHeldCallId(KInvalidCallId),
    36 		iSecondSwapCallId(KInvalidCallId),iTransferHeldCallId(KInvalidCallId),
    37 		iTransferSecondCallId(KInvalidCallId)
    37 		iTransferSecondCallId(KInvalidCallId)
    38 	{
    38 	{
    39 	iDtmfString.Zero();
    39 	iDtmfString.Zero();
    40 	} // CCallControlDispatcher::CCallControlDispatcher
    40 	} // CCallControlDispatcher::CCallControlDispatcher
    41 
    41 
   235 		iLtsyDispatchCallControlSwap =
   235 		iLtsyDispatchCallControlSwap =
   236 				static_cast<MLtsyDispatchCallControlSwap*>(swapInterface);
   236 				static_cast<MLtsyDispatchCallControlSwap*>(swapInterface);
   237         __ASSERT_DEBUG(iLtsyDispatchCallControlSwap, CtsyDispatcherPanic(EInvalidNullPtr));
   237         __ASSERT_DEBUG(iLtsyDispatchCallControlSwap, CtsyDispatcherPanic(EInvalidNullPtr));
   238   		}
   238   		}
   239 
   239 
       
   240 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchCallControlFuncUnitId, MLtsyDispatchCallControlSwap::KLtsyDispatchCallControlSingleSwapApiId))
       
   241 		{
       
   242 		TAny* swapInterface = NULL;
       
   243 		iLtsyFactoryV1.GetDispatchHandler(
       
   244 		       	MLtsyDispatchCallControlSwap::KLtsyDispatchCallControlSingleSwapApiId,
       
   245 		       	swapInterface);
       
   246 		iLtsyDispatchCallControlSingleSwap =
       
   247 				static_cast<MLtsyDispatchCallControlSwap*>(swapInterface);
       
   248         __ASSERT_DEBUG(iLtsyDispatchCallControlSingleSwap, CtsyDispatcherPanic(EInvalidNullPtr));
       
   249   		}
       
   250 		
   240 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchCallControlFuncUnitId, MLtsyDispatchCallControlLoanDataPort::KLtsyDispatchCallControlLoanDataPortApiId))
   251 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchCallControlFuncUnitId, MLtsyDispatchCallControlLoanDataPort::KLtsyDispatchCallControlLoanDataPortApiId))
   241 		{
   252 		{
   242 		TAny* loanDataPortInterface = NULL;
   253 		TAny* loanDataPortInterface = NULL;
   243 		iLtsyFactoryV1.GetDispatchHandler(
   254 		iLtsyFactoryV1.GetDispatchHandler(
   244 		       	MLtsyDispatchCallControlLoanDataPort::KLtsyDispatchCallControlLoanDataPortApiId,
   255 		       	MLtsyDispatchCallControlLoanDataPort::KLtsyDispatchCallControlLoanDataPortApiId,
   837 
   848 
   838 	if (iLtsyDispatchCallControlSwap)
   849 	if (iLtsyDispatchCallControlSwap)
   839 		{
   850 		{
   840 		const CCallDataPackage* dataPackage = static_cast<const CCallDataPackage*>(aDataPackage);
   851 		const CCallDataPackage* dataPackage = static_cast<const CCallDataPackage*>(aDataPackage);
   841 		RMobilePhone::TMobileService mode;
   852 		RMobilePhone::TMobileService mode;
   842 		dataPackage->GetCallIdAndMode(iSwapHeldCallId, mode);
   853 		dataPackage->GetCallIdAndMode(iSwapCallId, mode);
   843 		dataPackage->UnPackData(iSwapConnectedCallId);
   854 		dataPackage->UnPackData(iSecondSwapCallId);
   844 		ret = iLtsyDispatchCallControlSwap->HandleSwapReqL(iSwapHeldCallId, iSwapConnectedCallId);
   855 
       
   856 		if (iSwapCallId == KInvalidCallId)
       
   857 			{
       
   858 			// Swapping a single call.
       
   859 			ret = iLtsyDispatchCallControlSwap->HandleSwapReqL(iSecondSwapCallId);
       
   860 			}
       
   861 		else if (iSecondSwapCallId == KInvalidCallId)
       
   862 			{
       
   863 			// Swapping a single call.
       
   864 			ret = iLtsyDispatchCallControlSwap->HandleSwapReqL(iSwapCallId);
       
   865 			}		
       
   866 		else
       
   867 			{
       
   868 			ret = iLtsyDispatchCallControlSwap->HandleSwapReqL(iSwapCallId, iSecondSwapCallId);
       
   869 			}
   845 		}
   870 		}
   846 
   871 
   847 	return TSYLOGSETEXITERR(ret);
   872 	return TSYLOGSETEXITERR(ret);
   848 	} // CCallControlDispatcher::DispatchSwapL
   873 	} // CCallControlDispatcher::DispatchSwapL
   849 
   874 
  1649 		}
  1674 		}
  1650 
  1675 
  1651 	if (iTransferSecondCallId != KInvalidCallId)
  1676 	if (iTransferSecondCallId != KInvalidCallId)
  1652 		{
  1677 		{
  1653 		dataPackage.SetCallIdAndMode(iTransferSecondCallId, RMobilePhone::EServiceUnspecified);
  1678 		dataPackage.SetCallIdAndMode(iTransferSecondCallId, RMobilePhone::EServiceUnspecified);
  1654 		iSwapConnectedCallId = KInvalidCallId;
  1679 		iSecondSwapCallId = KInvalidCallId;
  1655 		iMessageManagerCallback.Complete(EMobileCallTransfer, &dataPackage, aError);
  1680 		iMessageManagerCallback.Complete(EMobileCallTransfer, &dataPackage, aError);
  1656 		}
  1681 		}
  1657 
  1682 
  1658 	} // CCallControlDispatcher::CallbackTransfer
  1683 	} // CCallControlDispatcher::CallbackTransfer
  1659 
  1684 
  1724 		// no reqHandle for this IPC so calling both here is OK.
  1749 		// no reqHandle for this IPC so calling both here is OK.
  1725 
  1750 
  1726 		// Check in case LTSY has completed a swap when no swap was called
  1751 		// Check in case LTSY has completed a swap when no swap was called
  1727 		// Don't complete back to CTSY in this case
  1752 		// Don't complete back to CTSY in this case
  1728 
  1753 
  1729 		if (iSwapHeldCallId != KInvalidCallId)
  1754 		if (iSwapCallId != KInvalidCallId)
  1730 			{
  1755 			{
  1731 			dataPackage.SetCallIdAndMode(iSwapHeldCallId, RMobilePhone::EServiceUnspecified);
  1756 			dataPackage.SetCallIdAndMode(iSwapCallId, RMobilePhone::EServiceUnspecified);
  1732 			iSwapHeldCallId = KInvalidCallId;
  1757 			iSwapCallId = KInvalidCallId;
  1733 			iMessageManagerCallback.Complete(EMobileCallSwap, &dataPackage, aError);
  1758 			iMessageManagerCallback.Complete(EMobileCallSwap, &dataPackage, aError);
  1734 			}
  1759 			}
  1735 
  1760 
  1736 		if (iSwapConnectedCallId != KInvalidCallId)
  1761 		if (iSecondSwapCallId != KInvalidCallId)
  1737 			{
  1762 			{
  1738 			dataPackage.SetCallIdAndMode(iSwapConnectedCallId, RMobilePhone::EServiceUnspecified);
  1763 			dataPackage.SetCallIdAndMode(iSecondSwapCallId, RMobilePhone::EServiceUnspecified);
  1739 			iSwapConnectedCallId = KInvalidCallId;
  1764 			iSecondSwapCallId = KInvalidCallId;
  1740 			iMessageManagerCallback.Complete(EMobileCallSwap, &dataPackage, aError);
  1765 			iMessageManagerCallback.Complete(EMobileCallSwap, &dataPackage, aError);
  1741 			}
  1766 			}
  1742 
  1767 
  1743 		}
  1768 		}
  1744 
  1769