diff -r 17af172ffa5f -r 630d2f34d719 telephonyserverplugins/multimodetsy/hayes/FAX.CPP --- a/telephonyserverplugins/multimodetsy/hayes/FAX.CPP Thu Aug 19 11:03:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,187 +0,0 @@ -// Copyright (c) 1997-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: -// - -#include "NOTIFY.H" -#include "ETELFAX.H" -#include "FAX.H" -#include "mSLOGGER.H" - -// -// CFaxHayes - Fax functionality -// - -void CFaxHayes::CloseFax(TAny* aObj) -// -// Utility func for cleanup stack -// - { - ((CObject*)aObj)->Close(); - } - -CFaxHayes* CFaxHayes::NewL(CCallMobileFax* aCallFaxHayes,CPhoneGlobals* aPhoneGlobals) -// -// Completes successfully if fax call has already been dialled creating a CETelFaxBase -// instance, and is not called if that is not true. -// - { - CFaxHayes* fax=new(ELeave) CFaxHayes(aCallFaxHayes,aPhoneGlobals); - TCleanupItem newFaxHayesClose(CloseFax,fax); - CleanupStack::PushL(newFaxHayesClose); - fax->ConstructL(); - CleanupStack::Pop(); - return fax; - } - -RHandleBase* CFaxHayes::GlobalKernelObjectHandle() - { - return iOwner->GlobalKernelObjectHandle(); - } - -CFaxHayes::CFaxHayes(CCallMobileFax* aCallFaxHayes,CPhoneGlobals* aPhoneGlobals) - : iPhoneGlobals(aPhoneGlobals), iOwner(aCallFaxHayes) - {} - -void CFaxHayes::ConstructL() -// -// Used to be that CFaxHayes could not be constructed before a call had been initiated -// ie the fax server was started and the call had a pointer to CETelFaxBase. -// Now, to solve the problem of the fax progress being only available after phase C, -// RFax can be opened before a call has begun to connect. So in the event of this happening, -// each function of CFaxHayes must check that the fax server has been started. -// -// - { - LOGTEXT(_L8("CFaxHayes::ConstructL()")); - iDataDirection = EUnknown; - } - -CFaxHayes::~CFaxHayes() - { - iOwner->RemoveFax(this); - iPhoneGlobals->iNotificationStore->RemoveClientFromLastEvents(this); - } - -CTelObject::TReqMode CFaxHayes::ReqModeL(const TInt aIpc) - { - TReqMode reqMode = CFaxBase::ReqModeL(aIpc); - if ((reqMode & KReqModeFlowControlObeyed) && iPhoneGlobals->iPhoneStatus.iDataPortLoaned) - { - LOGTEXT2(_L8("ReqModeL Leaving with KErrInUse as data port is loaned (aIpc=%d)"),aIpc); - User::Leave(KErrInUse); - } - return reqMode; - } - -TInt CFaxHayes::RegisterNotification(const TInt /*aIpc*/) - { - return KErrNone; - } -TInt CFaxHayes::DeregisterNotification(const TInt /*aIpc*/) - { - return KErrNone; - } - -void CFaxHayes::Init() - {} - -TInt CFaxHayes::CheckAndSetRegistrationParams(const TInt /*aIpc*/,const TDes8* /*aDes1*/,const TDes8* /*aDes2*/) - { - return KErrNone; - } - -TInt CFaxHayes::Read(const TTsyReqHandle aTsyReqHandle, TDes8* aDes) -// -// Read fax data into descriptor, asynchronously. Use NotificationStore to notify client -// when completed -// - { - if (iOwner->iFaxSession==NULL) - { - ReqCompleted(aTsyReqHandle,KErrNotReady); - return KErrNone; - } - LOGTEXT(_L8("Fax:\tCalling RxFaxData")); - iDataDirection = EReceiveData; - CFaxSession* session = iOwner->iFaxSession; - - iPhoneGlobals->iNotificationStore->RegisterNotification(EReadOrWriteFax,aTsyReqHandle,this); - session->RxFaxData(*aDes); - return KErrNone; - } - -TInt CFaxHayes::Write(const TTsyReqHandle aTsyReqHandle, TDesC8* aDes) -// -// Send fax data in descriptor to fax module, asynchronously -// - { - if (iOwner->iFaxSession==NULL) - { - ReqCompleted(aTsyReqHandle,KErrNotReady); - return KErrNone; - } - LOGTEXT(_L8("Fax:\tCalling TxFaxData")); - iDataDirection = ESendData; - CFaxSession* session = iOwner->iFaxSession; - iPhoneGlobals->iNotificationStore->RegisterNotification(EReadOrWriteFax,aTsyReqHandle,this); - session->TxFaxData(*aDes); - return KErrNone; - } - -TInt CFaxHayes::WaitForEndOfPage(const TTsyReqHandle aTsyReqHandle) -// -// Send request for notification of end of page to fax module -// - { - if (iOwner->iFaxSession==NULL) - { - ReqCompleted(aTsyReqHandle,KErrNotReady); - return KErrNone; - } - LOGTEXT(_L8("Fax:\tCalling Wait for end of page")); - CFaxSession* session = iOwner->iFaxSession; - if (iDataDirection==EUnknown) - { - ReqCompleted(aTsyReqHandle,KErrUnknown); // client hasn't read or written data yet - return KErrNone; - } - iPhoneGlobals->iNotificationStore->RegisterNotification(EEndOfFaxPage,aTsyReqHandle,this); - LOGTEXT(_L8("Fax:\tEnd Of Page Notification lodged")); - if (iDataDirection==EReceiveData) - session->RxPostPage(); - else - session->TxPostPage(); - return KErrNone; - } - -TInt CFaxHayes::TerminateFaxSession(const TTsyReqHandle aTsyReqHandle) -// -// Cancel the entire fax session. Server completes fax notification requests that it knows -// as notifications. TSY treats ReadOrWrite and EndOfPage as notifications although they -// have no Cancel function, so it must remove them from its notification list here -// explicitly -// - { - if (iOwner->iFaxSession==NULL) - { - ReqCompleted(aTsyReqHandle,KErrNotReady); - return KErrNone; - } - LOGTEXT(_L8("Fax:\tCancelling fax session")); - CFaxSession* session= iOwner->iFaxSession; - session->Cancel(); - iPhoneGlobals->iNotificationStore->CheckNotification(session,EFaxSessionTerminated,KErrCancel); - ReqCompleted(aTsyReqHandle,KErrNone); - return KErrNone; - }