diff -r 630d2f34d719 -r 07a122eea281 cbsref/telephonyrefplugins/atltsy/handler/src/cltsycallcontrolhandler.cpp --- a/cbsref/telephonyrefplugins/atltsy/handler/src/cltsycallcontrolhandler.cpp Tue Aug 31 16:23:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1155 +0,0 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// CLtsyCallControlHandler - -//system include -#include -#include -#include -//#include - -#include -#include -#include - -//user include -#include "cltsycallcontrolhandler.h" -#include "globalphonemanager.h" -#include "ltsycommondefine.h" -#include "mslogger.h" -#include "ltsymacros.h" -#include "tsyconfg.h" -#include "atwaitforcallhandler.h" -#include "atdialvoice.h" -#include "athangup.h" -#include "atanswer.h" -#include "atchld.h" -#include "unsolicitedcommandcallcontrolhandler.h" -#include "atdtmfvts.h" -#include "ltsycallinformationmanager.h" -#include "athangupcommandrecords.h" - - -//const define -_LIT16(KLtsyEmergencyCallNumber911, "911"); -_LIT16(KLtsyEmergencyCallNumber112, "112"); - -CLtsyCallControlHandler::CLtsyCallControlHandler( - CCtsyDispatcherCallback& aCtsyDispatcherCallback, CGlobalPhonemanager* aGloblePhone) - : iCtsyDispatcherCallback(aCtsyDispatcherCallback), iGloblePhone(aGloblePhone) - { - - } - - -CLtsyCallControlHandler::~CLtsyCallControlHandler() - { - delete iEmergencyCall; - iEmergencyCall = NULL; - - delete iUnsolicitedHandler; - iUnsolicitedHandler = NULL; - - delete iWaitForCall; - iWaitForCall = NULL; - } - - -CLtsyCallControlHandler* CLtsyCallControlHandler::NewLC( - CCtsyDispatcherCallback& aCtsyDispatcherCallback, - CGlobalPhonemanager* aGloblePhone) - { - TSYLOGENTRYEXIT; - CLtsyCallControlHandler* self = new (ELeave) CLtsyCallControlHandler(aCtsyDispatcherCallback,aGloblePhone); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - - -CLtsyCallControlHandler* CLtsyCallControlHandler::NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback, CGlobalPhonemanager* aGloblePhone) - { - TSYLOGENTRYEXIT; - CLtsyCallControlHandler* self= - CLtsyCallControlHandler::NewLC(aCtsyDispatcherCallback, aGloblePhone); - CleanupStack::Pop(self); - return self; - } - - -void CLtsyCallControlHandler::ConstructL() -/** - * Second phase constructor. - */ - { - //Emergency Call - iEmergencyCall = CATDialVoice::NewL((*iGloblePhone),iCtsyDispatcherCallback); - iEmergencyCall->SetEmergnecyCallFlag(ETrue); - - //Process unsolicited command - iUnsolicitedHandler = CUnsolicitedCommandCallControlHandler::NewL((*iGloblePhone), - iCtsyDispatcherCallback); - - //Monitor incoming call - iWaitForCall = CATWaitForCallHandler::NewL((*iGloblePhone), iCtsyDispatcherCallback); - iWaitForCall->StartToWaitForCall(); - - } // CLtsyCallControlHandler::ConstructL - -TBool CLtsyCallControlHandler::IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId) -/** - * Returns whether a Dispatch Interface API is supported or not. - * - * @param aDispatchApiId Id of Dispatch interface being queried - * @return indication whether interface is supported or not - */ - { - TBool bFlag(EFalse); - switch(aDispatchApiId) - { - // Insert ApiIds when support is provided in LTSY - case MLtsyDispatchCallControlAnswer::KLtsyDispatchCallControlAnswerApiId : - bFlag = ETrue; - break; - case MLtsyDispatchCallControlHold::KLtsyDispatchCallControlHoldApiId: - bFlag = ETrue; - break; - case MLtsyDispatchCallControlHangUp::KLtsyDispatchCallControlHangUpApiId : - bFlag = ETrue; - break; - case MLtsyDispatchCallControlResume::KLtsyDispatchCallControlResumeApiId : - bFlag = ETrue; - break; - case MLtsyDispatchCallControlDialVoice::KLtsyDispatchCallControlDialVoiceApiId : - bFlag = ETrue; - break; - case MLtsyDispatchCallControlSwap::KLtsyDispatchCallControlSwapApiId : - bFlag = ETrue; - break; - case MLtsyDispatchCallControlTerminateErrorCall::KLtsyDispatchCallControlTerminateErrorCallApiId : - bFlag = ETrue; - break; - case MLtsyDispatchCallControlTerminateAllCalls::KLtsyDispatchCallControlTerminateAllCallsApiId : - bFlag = ETrue; - break; - case MLtsyDispatchCallControlSendDtmfTones::KLtsyDispatchCallControlSendDtmfTonesApiId : - bFlag = ETrue; - break; - case MLtsyDispatchCallControlStartDtmfTone::KLtsyDispatchCallControlStartDtmfToneApiId : - bFlag = ETrue; - break; - case MLtsyDispatchCallControlStopDtmfTone::KLtsyDispatchCallControlStopDtmfToneApiId : - bFlag = ETrue; - break; - case MLtsyDispatchCallControlSendDtmfTonesCancel::KLtsyDispatchCallControlSendDtmfTonesCancelApiId : - bFlag = ETrue; - break; - case MLtsyDispatchCallControlQueryIsEmergencyNumber::KLtsyDispatchCallControlQueryIsEmergencyNumberApiId : - bFlag = ETrue; - break; - case MLtsyDispatchCallControlDialEmergency::KLtsyDispatchCallControlDialEmergencyApiId : - bFlag = ETrue; - break; - default: - bFlag = EFalse; - break; - } - return bFlag; - } - -void CLtsyCallControlHandler::IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask) -/** - * Returns the set of callback indicators that are supported. - * - * @param aIdGroup ID of group that is being queried e.g. aIdGroup=EIndIdGroup1 - * @param aIndIdBitMask [out] argument that should return a bitmask indicating which indicator callbacks are supported. - */ - { - - //Create bitmask with bitset for each indicator ID that is supported. E.g. - - if(aIdGroup == EIndIdGroup1) - aIndIdBitMask = KLtsyDispatchCallControlNotifyCallStatusChangeIndId | - KLtsyDispatchCallControlReceiveUuiIndId | - KLtsyDispatchCallControlNotifyDataCallCapsChangeIndId| - KLtsyDispatchCallControlNotifyIncomingCallIndId| - KLtsyDispatchCallControlNotifyHscsdInfoChangeIndId| - KLtsyDispatchCallControlNotifyCallEventIndId| - KLtsyDispatchCallControlGetCallInfoIndId| - KLtsyDispatchCallControlNotifyIccCallForwardingStatusChangeIndId; - else - aIndIdBitMask = 0; //no indicators from other groups supported - - } - -TInt CLtsyCallControlHandler::HandleAnswerReqL(TInt aCallId, TBool aIsIsvCall) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlAnswerComp() - * - * @param aCallId The Call ID of the call to answer. - * - * @param aIsIsvCall ETrue if the request to answer the call comes from a - * 3rd party application, EFalse otherwise. This parameter exists in case the - * LTSY wishes to perform special handling of ISV calls. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - LOGTEXT( _L8("[Ltsy CallControl] Starting CLtsyCallControlHandler::HandleAnswerReqL()")); - - TInt nEmergencyCallId = iGloblePhone->GetCallInfoManager().FindEmergencyCallId(); - if (nEmergencyCallId != KErrNotFound) - { - const TLtsyCallInformation& tCallInfo(iGloblePhone->GetCallInfoManager().GetCallInformationByCallId(nEmergencyCallId)); - if (TLtsyCallInformation::EHeldCall != tCallInfo.GetCallState()) - { - //Reset Ring state - iGloblePhone->GetCallInfoManager().SetIncomingCallFlag(EFalse); - return KErrNotSupported; - } - } - - TInt nRet = iGloblePhone->CheckGlobalPhoneStatus(); - if (nRet == KErrNone) - { - //Reset Ring state - iGloblePhone->GetCallInfoManager().SetIncomingCallFlag(EFalse); - - //Setting Port active - iGloblePhone->iEventSignalActive = ETrue; - //Create answer call - CATAnswer* cAnswerCall = CATAnswer::NewL((*iGloblePhone), iCtsyDispatcherCallback); - iGloblePhone->SetActiveRequest(cAnswerCall); - cAnswerCall->SetAnswerCallId(aCallId); - cAnswerCall->SetIsIsvCall(aIsIsvCall); - //Start answer - cAnswerCall->StartRequest(); - } - - return nRet; - } // CLtsyCallControlHandler::HandleAnswerReqL - -TInt CLtsyCallControlHandler::HandleHoldReqL(TInt aCallId) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlHoldComp() - * - * @param aCallId The Call ID of the call to hold. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallControlHandler::HandleHoldReqL")); - LOGTEXT2(_L8("[Ltsy CallControl] aCallId = %d"), aCallId); - - TInt nRet = iGloblePhone->CheckGlobalPhoneStatus(); - if (nRet == KErrNone) - { - //Setting Port active - iGloblePhone->iEventSignalActive = ETrue; - - //Create hold call - CATChld* cHoldCall = CATChld::NewL((*iGloblePhone), iCtsyDispatcherCallback); - iGloblePhone->SetActiveRequest(cHoldCall); - //Check call id is a hold call or not - if (cHoldCall->IsHoldCall(aCallId)) - { - LOGTEXT2(_L8("[Ltsy CallControl] aCallId = %d is a hold call so return KErrNone"), aCallId); - iGloblePhone->iEventSignalActive = EFalse; - return KErrNotSupported; - } - - cHoldCall->SetCallId(aCallId); - cHoldCall->SetIpcType(CATChld::ELtsyReqCallHold); - cHoldCall->SetChldType(CATChld::EHeldAllActiveCallAndAcceptHeldWaiting); - cHoldCall->StartRequest(); - } - - return nRet; - } // CLtsyCallControlHandler::HandleHoldReqL - - -TInt CLtsyCallControlHandler::HandleDialEmergencyReqL(const TDes& aEmergencyNumber) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlDialEmergencyComp() - * - * @param aEmergencyNumber The emergency phone number to dial. The descriptor - * should be of type RMobileENStore::TEmergencyNumber. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallControlHandler::HandleDialEmergencyReqL()")); - - //Checking is have emergency call - if (iGloblePhone->GetCallInfoManager().FindEmergencyCallId() != KErrNotFound) - { - return KErrNotSupported; - } - - TBuf8 tTelNum; - tTelNum.Copy(aEmergencyNumber.Left(tTelNum.MaxLength())); - - TInt nRet = iGloblePhone->CheckGlobalPhoneStatus(); - if (nRet == KErrNone) - { - //Setting Port active - iGloblePhone->iEventSignalActive = ETrue; - - //Init call - iEmergencyCall->InitVariable(); - - //Set telnum - iEmergencyCall->SetTelephoneNumber(tTelNum); - iEmergencyCall->StartRequest(); - } - else // KErrInUse - { - if (iGloblePhone->GetCallInfoManager().FindDialingOrAlertingCallId() != KErrNotFound) - { - //Delete last call - iGloblePhone->DeleteLastActiveRequest(); - - //Setting Port active - iGloblePhone->iEventSignalActive = ETrue; - - //Init call - iEmergencyCall->InitVariable(); - //Set telnum - iEmergencyCall->SetTelephoneNumber(tTelNum); - iEmergencyCall->StartRequest(); - nRet = KErrNone; - } - } - - return nRet; - } // CLtsyCallControlHandler::HandleDialEmergencyReqL - -TInt CLtsyCallControlHandler::HandleStopDtmfToneReqL(TInt aCallId) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlStopDtmfToneComp() - * - * @param aCallId Call ID of the connected call the stop request will be sent - * through. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallControlHandler::HandleStopDtmfToneReqL()")); - LOGTEXT2( _L8("[Ltsy CallControl] CallId = %d"), aCallId); - - TInt nRet = iGloblePhone->CheckGlobalPhoneStatus(); - if (nRet == KErrNone) - { - //Setting Port active - iGloblePhone->iEventSignalActive = ETrue; - - //Create DTMF - CATDtmfVts* cDtmfVts = CATDtmfVts::NewL((*iGloblePhone), iCtsyDispatcherCallback); - iGloblePhone->SetActiveRequest(cDtmfVts); - - //Set CallId - nRet = cDtmfVts->SetCallId(aCallId); - if (nRet != KErrNone) - { - return nRet; - } - - //Set work type - cDtmfVts->SetDtmfWorkType(CATDtmfVts::EDtmfStopOneTone); - - //Start request - cDtmfVts->StartRequest(); - } - - return nRet; - } // CLtsyCallControlHandler::HandleStopDtmfToneReqL - - -TInt CLtsyCallControlHandler::HandleSetActiveAlsLineReqL(RMobilePhone::TMobilePhoneALSLine /*aAlsLine*/) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlSetActiveAlsLineComp() - * - * @param aAlsLine The new active ALS line. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - TSYLOGENTRYEXIT; - - TInt ret = KErrNotSupported; - - // TODO: Add implementation here....... - - - return TSYLOGSETEXITERR(ret); - } // CLtsyCallControlHandler::HandleSetActiveAlsLineReqL - - -TInt CLtsyCallControlHandler::HandleSendDtmfTonesCancelReqL(TInt aCallId) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlSendDtmfTonesCancelComp() - * - * @param aCallId The Call ID through which the cancel request should be sent. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - - LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallControlHandler::HandleSendDtmfTonesCancelReqL()")); - LOGTEXT2( _L8("[Ltsy CallControl] CallId = %d"), aCallId); - - TInt nRet = iGloblePhone->CheckGlobalPhoneStatus(); - if (nRet == KErrNone) - { - //Setting Port active - iGloblePhone->iEventSignalActive = ETrue; - - //Create DTMF - CATDtmfVts* cDtmfVts = CATDtmfVts::NewL((*iGloblePhone), iCtsyDispatcherCallback); - iGloblePhone->SetActiveRequest(cDtmfVts); - - //Set CallId - nRet = cDtmfVts->SetCallId(aCallId); - if (nRet != KErrNone) - { - return nRet; - } - - //Set work type - cDtmfVts->SetDtmfWorkType(CATDtmfVts::EDtmfCancelMoreTones); - - //Start request - cDtmfVts->StartRequest(); - } - - return nRet; - } // CLtsyCallControlHandler::HandleSendDtmfTonesCancelReqL - - -TInt CLtsyCallControlHandler::HandleHangUpReqL(TInt aCallId, TInt aHangupCause) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlHangUpComp() - * - * @param aCallId The Call ID of the call to hang up. - * - * @param aHangupCause The reason for the hang up request. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - LOGTEXT( _L8("[Ltsy CallControl] Starting CLtsyCallControlHandler::HandleHangUpReqL")); - LOGTEXT3(_L8("[Ltsy CallControl] aCallId = %d aHangupCause = %d"), aCallId, aHangupCause); - - TInt nRet = iGloblePhone->CheckGlobalPhoneStatus(); - if (nRet == KErrNone) - { - //Setting Port active - iGloblePhone->iEventSignalActive = ETrue; - - //Reset Ring state - iGloblePhone->GetCallInfoManager().SetIncomingCallFlag(EFalse); - - //Set hang up active - iGloblePhone->GetCallInfoManager().GetHangupCommandRecords().SetHangupActiveFlag(ETrue); - - //Create Hang up - CATChld* cHangupCall = CATChld::NewL((*iGloblePhone), iCtsyDispatcherCallback); - iGloblePhone->SetActiveRequest(cHangupCall); - cHangupCall->SetCallId(aCallId); - cHangupCall->SetHangupCase(aHangupCause); - cHangupCall->SetIpcType(CATChld::ELtsyReqCallHangup); - cHangupCall->SetChldType(CATChld::ERleaseSpecificCall); - cHangupCall->StartRequest(); - } - else if (nRet == KErrInUse) - { - LOGTEXT( _L8("[Ltsy CallControl] Starting Hang up in process so add hangup information")); - - const TLtsyCallInformation& tCallInfo(iGloblePhone->GetCallInfoManager().GetCallInformationByCallId(aCallId)); - - if (iGloblePhone->GetCallInfoManager().GetHangupCommandRecords().GetHangupActiveFlag()) - { - //Hang up is processing so add its information to array - nRet = iGloblePhone->GetCallInfoManager().GetHangupCommandRecords().AddHangupCommandInfo(aCallId, aHangupCause); - } - else if (TLtsyCallInformation::EDialingCall == tCallInfo.GetCallState() || - TLtsyCallInformation::EAlertingCall == tCallInfo.GetCallState()) - { - - //Delete last call - iGloblePhone->DeleteLastActiveRequest(); - - //Setting Port active - iGloblePhone->iEventSignalActive = ETrue; - - //Set hang up active - iGloblePhone->GetCallInfoManager().GetHangupCommandRecords().SetHangupActiveFlag(ETrue); - - //Create Hang up - CATChld* cHangupCall = CATChld::NewL((*iGloblePhone), iCtsyDispatcherCallback); - iGloblePhone->SetActiveRequest(cHangupCall); - cHangupCall->SetCallId(aCallId); - cHangupCall->SetHangupCase(aHangupCause); - cHangupCall->SetIpcType(CATChld::ELtsyReqCallHangup); - cHangupCall->SetChldType(CATChld::ERleaseSpecificCall); - cHangupCall->StartRequest(); - nRet = KErrNone; - } - } - - return nRet; - } // CLtsyCallControlHandler::HandleHangUpReqL - - -TInt CLtsyCallControlHandler::HandleResumeReqL(TInt aCallId) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlResumeComp() - * - * @param aCallId The Call ID of the call to resume. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallControlHandler::HandleResumeReqL")); - LOGTEXT2(_L8("[Ltsy CallControl] aCallId = %d"), aCallId); - - TInt nRet = iGloblePhone->CheckGlobalPhoneStatus(); - if (nRet == KErrNone) - { - //Setting Port active - iGloblePhone->iEventSignalActive = ETrue; - - //Create DTMF - CATChld* cResumeCall = CATChld::NewL((*iGloblePhone), iCtsyDispatcherCallback); - iGloblePhone->SetActiveRequest(cResumeCall); - if (cResumeCall->IsActiveCall(aCallId)) - { - LOGTEXT2(_L8("[Ltsy CallControl] aCallId = %d is a active call so return KErrNone"), aCallId); - iGloblePhone->iEventSignalActive = EFalse; - return KErrNotSupported; - } - cResumeCall->SetCallId(aCallId); - cResumeCall->SetIpcType(CATChld::ELtsyReqCallResume); - cResumeCall->SetChldType(CATChld::EHeldAllActiveCallAndAcceptHeldWaiting); - cResumeCall->StartRequest(); - } - - return nRet; - } // CLtsyCallControlHandler::HandleResumeReqL - -TInt CLtsyCallControlHandler::HandleSetDynamicHscsdParamsReqL( - TInt /*aCallId*/, const RMobileCall::TMobileHscsdCallParamsV1& /*aHscsdParams*/) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlSetDynamicHscsdParamsComp() - * - * @param aCallId The call ID of the data call. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - TSYLOGENTRYEXIT; - - TInt ret = KErrNotSupported; - - // TODO: Add implementation here....... - - - return TSYLOGSETEXITERR(ret); - } // CLtsyCallControlHandler::HandleSetDynamicHscsdParamsReqL - - -TInt CLtsyCallControlHandler::HandleDialVoiceReqL(RMobilePhone::TMobilePhoneALSLine /*aLine*/, - const RMobilePhone::TMobileAddress& aDialledParty, const RMobileCall::TMobileCallParamsV1& /*aCallParamsV1*/, - TBool /*aIsIsvCall*/, RMobileCall::TCallParamOrigin /*aCallOrigin*/, TBool /*aPerformFdnCheck*/) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlDialVoiceComp() - * - * @param aCallLine The line to use to dial the call. - * - * @param aDialledParty Details about the dialled party including the phone - * number to dial. - * - * @param aCallParamsV1 The call parameters of the call to dial. - * - * @param aIsIsvCall Indicates whether the call originated from a third party - * application. - * - * @param aCallOrigin The origin of the dial request. e.g. Whether the dial - * came from an Etel client or the SIM or another source. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - LOGTEXT( _L8("[Ltsy CallControl] Starting CLtsyCallControlHandler::HandleDialVoiceReqL()")); - - TInt nEmergencyCallId = iGloblePhone->GetCallInfoManager().FindEmergencyCallId(); - if (nEmergencyCallId != KErrNotFound) - { - const TLtsyCallInformation& tCallInfo(iGloblePhone->GetCallInfoManager().GetCallInformationByCallId(nEmergencyCallId)); - if (TLtsyCallInformation::EHeldCall != tCallInfo.GetCallState()) - { - return KErrNotSupported; - } - } - - //Set telephone number - TBuf8 dialModifier; - TInt nRet = iGloblePhone->iConfiguration->ConfigModemStringL( - TPtrC(KCDTypeNameDialToneWaitModifier), - dialModifier); - if (nRet != KErrNone) - { - return nRet; - } - - TBuf8 tTelNum; - tTelNum.Copy(aDialledParty.iTelNumber.Left(tTelNum.MaxLength())); - - nRet = tTelNum.FindF(dialModifier); - if (nRet != KErrNotFound) - { - tTelNum.Delete(nRet, 1); - } - - nRet = iGloblePhone->CheckGlobalPhoneStatus(); - if (nRet == KErrNone) - { - //Setting Port active - iGloblePhone->iEventSignalActive = ETrue; - - //Create dial voice - CATDialVoice* cDialVoice = CATDialVoice::NewL((*iGloblePhone), iCtsyDispatcherCallback); - iGloblePhone->SetActiveRequest(cDialVoice); - cDialVoice->SetTelephoneNumber(tTelNum); - cDialVoice->StartRequest(); - } - - return nRet; - } // CLtsyCallControlHandler::HandleDialReqL - -TInt CLtsyCallControlHandler::HandleTransferReqL(TInt /*aHeldCallId*/, TInt /*aSecondCallId*/) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlTransferComp() - * - * @param aHeldCallId Call ID of the held call to transfer. - * - * @param aSecondCallId Call ID of the other to transfer the held call to. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - TSYLOGENTRYEXIT; - - TInt ret = KErrNotSupported; - - // TODO: Add implementation here....... - - - return TSYLOGSETEXITERR(ret); - } // CLtsyCallControlHandler::HandleTransferReqL - - -TInt CLtsyCallControlHandler::HandleSendDtmfTonesReqL(TInt aCallId, const TDesC &aTones) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlSendDtmfTonesComp() - * - * @param aCallId The Call ID of the call through which the DTMF string will be - * sent. - * - * @param aTones Tones to send through the active call. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - LOGTEXT( _L8("[Ltsy CallControl] Starting CLtsyCallControlHandler::HandleSendDtmfTonesReqL()")); - LOGTEXT3( _L8("[Ltsy CallControl] CallId = %d\tTones = %S"), aCallId, &aTones); - - TInt nRet = iGloblePhone->CheckGlobalPhoneStatus(); - if (nRet == KErrNone) - { - //Setting Port active - iGloblePhone->iEventSignalActive = ETrue; - - //Create DTMF - CATDtmfVts* cDtmfVts = CATDtmfVts::NewL((*iGloblePhone), iCtsyDispatcherCallback); - iGloblePhone->SetActiveRequest(cDtmfVts); - //Set CallId - TInt nRet = cDtmfVts->SetCallId(aCallId); - if (nRet != KErrNone) - { - return nRet; - } - - //Set Tones - nRet = cDtmfVts->SetDtmfString(aTones); - if (nRet != KErrNone) - { - return nRet; - } - - //set work type - cDtmfVts->SetDtmfWorkType(CATDtmfVts::EDtmfSendMoreTones); - cDtmfVts->StartRequest(); - } - - return nRet; - } // CLtsyCallControlHandler::HandleSendDtmfTonesReqL - - -TInt CLtsyCallControlHandler::HandleGetIdentityServiceStatusReqL(RMobilePhone::TMobilePhoneIdService /*aService*/) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlGetIdentityServiceStatusComp() - * - * @param aService The service whose status needs to be retrieved. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - TSYLOGENTRYEXIT; - - TInt ret = KErrNotSupported; - - // TODO: Add implementation here....... - - - return TSYLOGSETEXITERR(ret); - } // CLtsyCallControlHandler::HandleGetIdentityServiceStatusReqL - - -TInt CLtsyCallControlHandler::HandleSwapReqL(TInt aHeldCallId, TInt aConnectedCallId) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlSwapComp() - * - * @param aHeldCallId The Call ID of the held call to swap. - * - * @param aConnectedCallId The Call ID of the connected call to swap. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallControlHandler::HandleSwapReqL")); - LOGTEXT3(_L8("[Ltsy CallControl] aHeldCallId = %d\taConnectedCallId = %d"), aHeldCallId, aConnectedCallId); - - TInt nRet = iGloblePhone->CheckGlobalPhoneStatus(); - if (nRet == KErrNone) - { - //Setting Port active - iGloblePhone->iEventSignalActive = ETrue; - - //Create DTMF - CATChld* cSwapCall = CATChld::NewL((*iGloblePhone), iCtsyDispatcherCallback); - iGloblePhone->SetActiveRequest(cSwapCall); - cSwapCall->SetCallId(aHeldCallId); - cSwapCall->SetConnectedCallId(aConnectedCallId); - cSwapCall->SetIpcType(CATChld::ELtsyReqCallSwap); - cSwapCall->SetChldType(CATChld::EHeldAllActiveCallAndAcceptHeldWaiting); - cSwapCall->StartRequest(); - } - - return nRet; - } // CLtsyCallControlHandler::HandleSwapReqL - -TInt CLtsyCallControlHandler::HandleLoanDataPortSyncL(TInt /*aCallId*/, RCall::TCommPort& /*aCommPort*/) -/** - * This request is part of - * MLtsyDispatchCallControlLoanDataPort::HandleLoanDataPortSyncL() - * - * @param aCallId Call ID of the data call requiring the data port. - * - * @param aCommPort Output parameter. The communications port information - * retrieved by a client using the RCall::LoanDataPort() API. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - TSYLOGENTRYEXIT; - - TInt ret = KErrNotSupported; - - // TODO: Add implementation here....... - - - return TSYLOGSETEXITERR(ret); - } // CLtsyCallControlHandler::HandleLoanDataPortSyncL - - -TInt CLtsyCallControlHandler::HandleRecoverDataPortSyncL(TInt /*aCallId*/, RCall::TCommPort& /*aCommPort*/) -/** - * This request is part of - * MLtsyDispatchCallControlRecoverDataPort::HandleRecoverDataPortSyncL() - * - * @param aCallId Call ID of the data call requiring the data port. - * - * @param aCommPort The data port to recover. This contains the details previously - * returned by a call to RCall::LoanDataPort() - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - TSYLOGENTRYEXIT; - - TInt ret = KErrNotSupported; - - // TODO: Add implementation here....... - - - return TSYLOGSETEXITERR(ret); - } // CLtsyCallControlHandler::HandleRecoverDataPortSyncL - - -TInt CLtsyCallControlHandler::HandleStartDtmfToneReqL(TInt aCallId, const TChar& aTone) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlStartDtmfTone() - * - * @param aCallId Call ID of the connected call through which the DTMF tone - * will be sent. - * - * @param aTone The tone character to send through the call. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallControlHandler::HandleStartDtmfToneReqL()")); - LOGTEXT2( _L8("[Ltsy CallControl] CallId = %d"), aCallId); - - TInt nRet = iGloblePhone->CheckGlobalPhoneStatus(); - if (nRet == KErrNone) - { - //Setting Port active - iGloblePhone->iEventSignalActive = ETrue; - - //Create DTMF - CATDtmfVts* cDtmfVts = CATDtmfVts::NewL((*iGloblePhone), iCtsyDispatcherCallback); - iGloblePhone->SetActiveRequest(cDtmfVts); - //Set CallId - TInt nRet = cDtmfVts->SetCallId(aCallId); - if (nRet != KErrNone) - { - return nRet; - } - - //Set Tones - TBuf<16> bufTone; - bufTone.Append(aTone); - nRet = cDtmfVts->SetDtmfString(bufTone); - if (nRet != KErrNone) - { - return nRet; - } - - //set work type - cDtmfVts->SetDtmfWorkType(CATDtmfVts::EDtmfSendOneTone); - cDtmfVts->StartRequest(); - } - - return nRet; - } // CLtsyCallControlHandler::HandleStartDtmfToneSyncL - -TInt CLtsyCallControlHandler::HandleGetActiveAlsLineReqL() -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlGetActiveAlsLineComp() - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - TSYLOGENTRYEXIT; - - TInt ret = KErrNotSupported; - - // TO DO: Add implementation here....... - - - return TSYLOGSETEXITERR(ret); - } // CLtsyCallControlHandler::HandleGetActiveAlsLineReqL - -TInt CLtsyCallControlHandler::HandleDialDataReqL(const RMobilePhone::TMobileAddress& /*aDialledParty*/, const RMobileCall::TMobileDataCallParamsV1& /*aCallParamsV1*/, TBool /*aPerformFdnCheck*/) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlGetActiveAlsLineComp() - * - * @param aLine The line to use to dial the call. - * - * @param aDialledParty Details about the dialled party including the phone - * number to dial. - * - * @param aCallParamsV1 The call parameters of the call to dial. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - TSYLOGENTRYEXIT; - - TInt ret = KErrNotSupported; - - // TO DO: Add implementation here....... - - - return TSYLOGSETEXITERR(ret); - } // CLtsyCallControlHandler::HandleDialDataReqL - -TInt CLtsyCallControlHandler::HandleQueryIsEmergencyNumberSyncL(const TDesC& aNumber, TBool& aIsEmergencyNumber) -/** - * This request is part of - * MLtsyDispatchCallControlQueryIsEmergencyNumber::HandleQueryIsEmergencyNumberSyncL() - * - * @param aNumber Input parameter. The phone number being queried to see - * if it is an emergency number or not. - * - * @param aIsEmergencyNumber Output parameter used to indicate whether the - * aNumber parameter is an emergency number. ETrue if it is, EFalse otherwise. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallControlHandler::HandleQueryIsEmergencyNumberSyncL()")); - - TInt nEmergencyCallId = iGloblePhone->GetCallInfoManager().FindEmergencyCallId(); - if (nEmergencyCallId != KErrNotFound) - { - const TLtsyCallInformation& tCallInfo(iGloblePhone->GetCallInfoManager().GetCallInformationByCallId(nEmergencyCallId)); - if (TLtsyCallInformation::EHeldCall != tCallInfo.GetCallState()) - { - return KErrNotSupported; - } - } - - //Check Emergency call number - if (aNumber.CompareF(KLtsyEmergencyCallNumber911) == 0 || - aNumber.CompareF(KLtsyEmergencyCallNumber112) == 0 ) - { - aIsEmergencyNumber = ETrue; - } - else - { - aIsEmergencyNumber = EFalse; - } - - return KErrNone; - } // CLtsyCallControlHandler::HandleQueryIsEmergencyNumberSyncL - - -TInt CLtsyCallControlHandler::HandleGetAlsPpSupportL() -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlGetAlsPpSupportComp() - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - TSYLOGENTRYEXIT; - - TInt ret = KErrNotSupported; - - // TODO: Add implementation here....... - - - return TSYLOGSETEXITERR(ret); - } // CLtsyCallControlHandler::HandleGetAlsPp - -TInt CLtsyCallControlHandler::HandleGetAlsBlockedStatusL() -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlGetAlsBlockedStatusComp() - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - TSYLOGENTRYEXIT; - - TInt ret = KErrNotSupported; - - // TODO: Add implementation here....... - - - return TSYLOGSETEXITERR(ret); - } // CLtsyCallControlHandler::HandleGetAlsBlockedStatus - -TInt CLtsyCallControlHandler::HandleSetAlsBlockedL(RMmCustomAPI::TSetAlsBlock /*aBlocked*/) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlSetAlsBlockedComp() - * - * - * @param aBlocked RMmCustomAPI::EDeactivateBlock when the ALS blocked needs to be deactivate, - * RMmCustomAPI::EActivateBlock when the ALS blocked needs to be activate. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - TSYLOGENTRYEXIT; - - TInt ret = KErrNotSupported; - - // TODO: Add implementation here....... - - - return TSYLOGSETEXITERR(ret); - } // CLtsyCallControlHandler::HandleSetAlsBlockedL - -TInt CLtsyCallControlHandler::HandleGetLifeTimeL() -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlGetLifeTimeComp() - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - TSYLOGENTRYEXIT; - - TInt ret = KErrNotSupported; - - // TODO: Add implementation here....... - - - return TSYLOGSETEXITERR(ret); - } // CLtsyCallControlHandler::HandleGetLifeTime - -TInt CLtsyCallControlHandler::HandleTerminateErrorCallL(TInt /*aCallId*/) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlTerminateErrorCallComp() - * - * - * @param aCallId The Call ID of the call to terminate. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - TSYLOGENTRYEXIT; - - TInt ret = KErrNotSupported; - - // TODO: Add implementation here....... - - - return TSYLOGSETEXITERR(ret); - } // CLtsyCallControlHandler::HandleTerminateErrorCallL - -TInt CLtsyCallControlHandler::HandleTerminateAllCallsL() -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::::CallbackCallControlTerminateAllCallsComp() - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallControlHandler::HandleTerminateAllCallsL()")); - - TInt nRet = iGloblePhone->CheckGlobalPhoneStatus(); - if (nRet == KErrNone) - { - //Setting Port active - iGloblePhone->iEventSignalActive = ETrue; - - //Reset Ring state - iGloblePhone->GetCallInfoManager().SetIncomingCallFlag(EFalse); - - CATHangUp* cTerminateAllCalls = CATHangUp::NewL((*iGloblePhone), iCtsyDispatcherCallback); - iGloblePhone->SetActiveRequest(cTerminateAllCalls); - cTerminateAllCalls->SetHangupOperator(CATHangUp::ECustomAPI); - cTerminateAllCalls->StartRequest(); - } - - return nRet; - } // CLtsyCallControlHandler::HandleTerminateAllCallsL - -TInt CLtsyCallControlHandler::HandleGetCallForwardingIndicatorL() -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlGetCallForwardingIndicatorComp() - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - TSYLOGENTRYEXIT; - - TInt ret = KErrNotSupported; - - // TODO: Add implementation here....... - - - return TSYLOGSETEXITERR(ret); - } // CLtsyCallControlHandler::HandleGetCallForwardingIndicator - -TInt CLtsyCallControlHandler::HandleUpdateLifeTimerReqL(TUint32 /*aDuration*/) -/** - * This request is completed by invoking - * CCtsyDispatcherCallback::CallbackCallControlUpdateLifeTimerComp - * - * @param aDuration Time spent on call since the last invocation of this method. - * - * @return KErrNone on success, KErrNotSupported if this request is not supported, - * or another error code to indicate the failure otherwise. - */ - { - TSYLOGENTRYEXIT; - - TInt ret = KErrNotSupported; - - // TO DO: Add implementation here....... - - - return TSYLOGSETEXITERR(ret); - } // CLtsyCallControlHandler:::HandleUpdateLifeTimerReqL - - -MLtsyUnsolicitedCommandObserver* CLtsyCallControlHandler::GetUnsolicitedCallControlHandler() const - { - return static_cast(iUnsolicitedHandler); - } - -//End of file