diff -r 095bea5f582e -r 0ac9a5310753 mmserv/tms/tmsserver/src/tmsdtmfprovider.cpp --- a/mmserv/tms/tmsserver/src/tmsdtmfprovider.cpp Tue Aug 31 15:43:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,307 +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: Telephony Multimedia Service - * - */ - -#include -#include -#include "tmsdtmfprovider.h" -#include "tmsdtmfobserver.h" -#include "tmsutility.h" -#include "tmseteldtmfmonitor.h" -#include "tmseteldtmfstopmonitor.h" - -using namespace TMS; - -TMSDTMFProvider* TMSDTMFProvider::NewL() - { - TRACE_PRN_FN_ENT; - TMSDTMFProvider* self = new (ELeave) TMSDTMFProvider(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - TRACE_PRN_FN_EXT; - return self; - } - -// ----------------------------------------------------------------------------- -// Destructor of the object. -// ----------------------------------------------------------------------------- -// -TMSDTMFProvider::~TMSDTMFProvider() - { - TRACE_PRN_FN_ENT; - Cancel(); - iObservers.Close(); - delete iMonitor; - delete iStopMonitor; - - iMmCustom.Close(); - iPhone.Close(); - iServer.UnloadPhoneModule(iTsyname); - iServer.Close(); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// Constructs the requester. -// ----------------------------------------------------------------------------- -// -TMSDTMFProvider::TMSDTMFProvider() : - CActive(EPriorityStandard) - { - TRACE_PRN_FN_ENT; - CActiveScheduler::Add(this); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// Constructs the requester in the second phase. -// ----------------------------------------------------------------------------- -// -void TMSDTMFProvider::ConstructL() - { - TRACE_PRN_FN_ENT; - - User::LeaveIfError(iServer.Connect()); - - TRACE_PRN_N(_L("**TMS ETel iServer.Connect")); - - User::LeaveIfError(iServer.GetTsyName(0, iTsyname)); - - //Load in the phone device driver - User::LeaveIfError(iServer.LoadPhoneModule(iTsyname)); - - TRACE_PRN_N(_L("**TMS ETel iServer.LoadPhoneModule")); - - //Find the number of phones available from the tel server - gint numberPhones; - User::LeaveIfError(iServer.EnumeratePhones(numberPhones)); - - TRACE_PRN_N(_L("**TMS ETel iServer.EnumeratePhones")); - - //Check there are available phones - if (numberPhones < 1) - { - User::Leave(KErrNotFound); - } - - //Get info about the first available phone - RTelServer::TPhoneInfo info; - User::LeaveIfError(iServer.GetPhoneInfo(0, info)); - - TRACE_PRN_N(_L("**TMS ETel iServer.GetPhoneInfo")); - - CleanupClosePushL(iPhone); - User::LeaveIfError(iPhone.Open(iServer, info.iName)); - - TRACE_PRN_N(_L("**TMS ETel iPhone.Open")); - - RMobilePhone::TLineInfo lineInfo; - User::LeaveIfError(iPhone.GetLineInfo(0, lineInfo)); - - TRACE_PRN_N(_L("**TMS ETel iPhone.GetLineInfo")); - - gint errorCode = iMmCustom.Open(iPhone); - - if (!iPhone.SubSessionHandle() || !iMmCustom.SubSessionHandle()) - { - User::Leave(KErrArgument); - } - iMonitor = TMSEtelDtmfMonitor::NewL(*this, iMmCustom); - iMonitor->StartMonitoring(); - iStopMonitor = TMSEtelDtmfStopMonitor::NewL(*this, iPhone); - // iStopMonitor->StartMonitoring(); - - CleanupStack::Pop(1);//phone - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// Notifies observers about a DTMF event -// ----------------------------------------------------------------------------- -// -void TMSDTMFProvider::NotifyDTMFEvent( - const TMSDTMFObserver::TCCPDtmfEvent aEvent, const gint aError, - const TChar aTone) - { - TRACE_PRN_FN_ENT; - for (gint i = 0; i < iObservers.Count(); i++) - { - TMSDTMFObserver* obs = iObservers[i]; - if (obs) - { - iObservers[i]->HandleDTMFEvent(aEvent, aError, aTone); - } - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// Cancel DTMF string sending -// ----------------------------------------------------------------------------- -// -gint TMSDTMFProvider::CancelDtmfStringSending() - { - TRACE_PRN_FN_ENT; - gint ret(KErrAlreadyExists); - if (IsActive()) - { - Cancel(); - ret = KErrNone; - } - TRACE_PRN_FN_EXT; - return ret; - } - -// ----------------------------------------------------------------------------- -// Starts DTMF string sending -// ----------------------------------------------------------------------------- -// -gint TMSDTMFProvider::StartDtmfTone(const TChar aTone) - { - TRACE_PRN_FN_ENT; - gint ret(KErrAlreadyExists); - if (!IsActive()) - { - ret = iPhone.StartDTMFTone(aTone); - } - TRACE_PRN_IF_ERR(ret); - TRACE_PRN_FN_EXT; - return ret; - } - -// ----------------------------------------------------------------------------- -// Stop DTMF tone -// ----------------------------------------------------------------------------- -// -gint TMSDTMFProvider::StopDtmfTone() - { - TRACE_PRN_FN_ENT; - gint ret(KErrAlreadyExists); - if (!IsActive()) - { - ret = iPhone.StopDTMFTone(); - } - TRACE_PRN_IF_ERR(ret); - TRACE_PRN_FN_EXT; - return ret; - } - -// ----------------------------------------------------------------------------- -// Send DTMF string -// ----------------------------------------------------------------------------- -// -gint TMSDTMFProvider::SendDtmfToneString(const TDesC& aString) - { - TRACE_PRN_FN_ENT; - gint ret = KErrInUse; - if (!IsActive()) - { - iStatus = KRequestPending; - iPhone.SendDTMFTones(iStatus, aString); - SetActive(); - ret = KErrNone; - } - TRACE_PRN_IF_ERR(ret); - TRACE_PRN_FN_EXT; - return ret; - } - -// ----------------------------------------------------------------------------- -// Continue DTMF string sending -// ----------------------------------------------------------------------------- -// -gint TMSDTMFProvider::ContinueDtmfStringSending(const gboolean aContinue) - { - TRACE_PRN_FN_ENT; - gint status = iPhone.ContinueDTMFStringSending(aContinue); - TRACE_PRN_FN_EXT; - return status; - } - -// ----------------------------------------------------------------------------- -// Adds observer. -// ----------------------------------------------------------------------------- -// -void TMSDTMFProvider::AddObserver(const TMSDTMFObserver& aObserver) - { - TRACE_PRN_FN_ENT; - if (iObservers.Find(&aObserver) == KErrNotFound) - { - iObservers.Append(&aObserver); - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// Removes given observer. -// ----------------------------------------------------------------------------- -// -gint TMSDTMFProvider::RemoveObserver(const TMSDTMFObserver& aObserver) - { - TRACE_PRN_FN_ENT; - gint ret = KErrNotFound; - gint found = iObservers.Find(&aObserver); - if (found != KErrNotFound) - { - iObservers.Remove(found); - ret = KErrNone; - } - TRACE_PRN_FN_EXT; - return ret; - } - -// ----------------------------------------------------------------------------- -// From CActive. -// Handles request completion. -// ----------------------------------------------------------------------------- -// -void TMSDTMFProvider::RunL() - { - TRACE_PRN_FN_ENT; - if (iStatus == KErrNone) - { - TMSDTMFObserver::TCCPDtmfEvent event = - TMSDTMFObserver::ECCPDtmfStringSendingCompleted; - NotifyDTMFEvent(event, KErrNone, NULL); - } - else - { - gint error = iStatus.Int(); - if (error != KErrCancel) - { - TMSDTMFObserver::TCCPDtmfEvent event = - TMSDTMFObserver::ECCPDtmfStringSendingCompleted; - NotifyDTMFEvent(event, error, NULL); - TRACE_PRN_IF_ERR(error); - } - // Cancel is not notified - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// From CActive -// Canceling functionality. -// ----------------------------------------------------------------------------- -// -void TMSDTMFProvider::DoCancel() - { - TRACE_PRN_FN_ENT; - iPhone.CancelAsyncRequest(EMobilePhoneSendDTMFTones); - TRACE_PRN_FN_EXT; - } -