ImagePrint/ImagePrintEngine/DeviceProtocols/btprotocol/src/cbtchannelbase.cpp
branchRCL_3
changeset 27 159fc2f68139
parent 21 26673e532f65
child 28 d59c248c9d36
--- a/ImagePrint/ImagePrintEngine/DeviceProtocols/btprotocol/src/cbtchannelbase.cpp	Tue May 25 12:42:41 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,543 +0,0 @@
-/*
-* Copyright (c) 2004-2007 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:  Defines the CBtChannelBase class.
-*
-*/
-
-
-#include <obex.h>
-
-#include "crsbtdevice.h"
-#include "cbtchannelbase.h"
-#include "cbtsoapcodec.h"
-#include "clog.h"
-#include "tbtmapper.h"
-#include "cbtdiscover.h"
-#include "printmessagecodes.h"
-#include "rsutils.h"
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::CBtChannelBase
-//
-//--------------------------------------------------------------------------------------------
-CBtChannelBase::CBtChannelBase(MBtPCObserver& aObs):
-	CActive(CActive::EPriorityStandard),
-	iObs( aObs ),
-	iState( EStateNone ),
-	iJobId( KErrNotFound ),
-	iChannel( NULL ),
-	iSoapCodec( NULL ),
-	iObexBufObject( NULL ),
-	iObexNullObject( NULL ),
-	iObexBody( NULL ),
-	iDevice( NULL ),
-	iWait( NULL ),
-	iResponseError(KErrNone),
-	iStop(EFalse)
-{
-	LOG("[CBtChannelBase::CBtChannelBase]\t");
-	CActiveScheduler::Add(this);
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::~CBtChannelBase
-//
-//--------------------------------------------------------------------------------------------
-CBtChannelBase::~CBtChannelBase()
-{
-	LOG("[CBtChannelBase::~CBtChannelBase]\t");
-
-	if(iWait)
-	{
-		StopWaiting();
-		delete iWait;
-	}
-
-	ClearConnection();
-
-	if(iSoapCodec)
-		delete iSoapCodec;
-
-	if(iObexNullObject)
-		delete iObexNullObject;
-
-	if(iObexBufObject)
-		delete iObexBufObject;
-
-	if(iObexBody)
-		delete iObexBody;
-
-	if(iChannel)
-	{
-		delete iChannel;
-		iChannel = NULL;
-	}
-	if (iPasswordQuery)
-	{
-		delete iPasswordQuery;
-		iPasswordQuery = NULL;
-	}
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::ConstructL
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::ConstructL()
-{
-	LOG("[CBtChannelBase::ConstructL]\t begin");
-
-	iWait = new (ELeave) CActiveSchedulerWait;
-
-	LOG("[CBtChannelBase::ConstructL]\t iSoapCodec");
-	iSoapCodec = CBtSoapCodec::NewL();
-
-	// Create obex objects here: do not NEVER delete them but in destructor
-	iObexBody = CBufFlat::NewL(8);
-	iObexBufObject = CObexBufObject::NewL(iObexBody);
-	iObexNullObject = CObexNullObject::NewL();
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::SetDevice
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::SetJobId( TInt aId )
-{
-	iJobId = aId;
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::Device
-//
-//--------------------------------------------------------------------------------------------
-TInt CBtChannelBase::JobId() const
-{
-	return iJobId;
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::SetDevice
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::SetDevice( CRsBtDevice& aDevice )
-{
-	iDevice = &aDevice;
-	LOG1("[CBtChannelBase::SetDevice]\t iDevice %d", iDevice);
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::Device
-//
-//--------------------------------------------------------------------------------------------
-const CRsBtDevice& CBtChannelBase::Device() const
-{
-	return *iDevice;
-}
-
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::StartL
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::StartL( CRsBtDevice& aDevice )
-{
-	LOG1("[CBtChannelBase::StartL]\t state %d", iState);
-
-	User::LeaveIfNull(&aDevice);
-	
-	Stop();
-
-	iStop = EFalse;
-
-	TBool btOn = RsUtils::IsBluetoothOn();
-	LOG1("[CBtChannelBase::StartL]\t btOn: %d", btOn);
-	if( !btOn )
-		User::Leave( EObexConnectError );
-
-	SetDevice( aDevice );
-	iState = EStateNone;
-	ConnectL();
-	WaitL();
-
-	LOG("[CBtChannelBase::StartL]\t out");
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::Stop
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::Stop()
-{
-	LOG("[CBtChannelBase::Stop]\t");
-
-	iStop = ETrue;
-
-	if( IsActive() )
-	{
-		Cancel();
-	}
-	else
-		StopWaiting();
-	
-	ClearConnection();
-	LOG("[CBtChannelBase::Stop]\t out");
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::DoCancel
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::DoCancel()
-{
-	LOG("[CBtChannelBase::DoCancel]\t");
-
-	StopWaiting();
-	
-	LOG1("[CBtChannelBase::DoCancel]\t iChannel %d", iChannel);
-	if(iChannel)
-	{
-		LOG1("[CBtChannelBase::DoCancel]\t iStatus.Int(): 0x%X", iStatus.Int());
-		if(KRequestPending == iStatus.Int())
-		{
-			DeleteChannel();
-		}
-	}
-	
-	LOG1("[CBtChannelBase::DoCancel]\t out iStatus 0x%X", iStatus.Int());
-}
-
-//------------------------------
-// InCalls
-//------------------------------
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::IsConnected
-//
-//--------------------------------------------------------------------------------------------
-TBool CBtChannelBase::IsConnected()
-{
-	TBool connected = EFalse;
-
-	if(iChannel && iChannel->IsConnected())
-	{
-		connected = ETrue;
-	}
-
-	LOG2("[CBtChannelBase::IsConnected]\t iChannel: %d, connected: %d", iChannel, connected);
-
-	return connected;
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::Disconnect
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::Disconnect()
-{
-	TBool conn = IsConnected();
-	LOG1("[CBtChannelBase::Disconnect]\t IsConnected(): %d", conn);
-	
-	if( conn )
-	{
-		if(IsActive())
-		{
-			LOG("[CBtChannelBase::Disconnect]\t iChannel abort");
-			iChannel->Abort();
-		}
-		else
-		{
-			LOG("[CBtChannelBase::Disconnect]\t iChannel disconnect");
-			iState = EStateDisconnecting;
-			iChannel->Disconnect(iStatus);
-			Activate();
-		}
-		iStop = ETrue;
-	}
-	else
-	{
-		DeleteChannel();
-		iState = EStateNone;
-	}
-
-	LOG1("[CBtChannelBase::Disconnect]\t out. iState: %d", iState);
-	return;
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::FinishPrinting
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::FinishPrinting()
-{
-	LOG("[CBtChannelBase::FinishPrintingL]\t begin");
-
-	// Already finishing
-	if(EStateFinish == iState)
-	{
-		LOG("[CBtChannelBase::FinishPrintingL]\t already finishing");
-		return;
-	}
-
-	iState = EStateDisconnecting;
-
-	LOG1("[CBtChannelBase::FinishPrintingL]\t IsActive() %d", IsActive());
-	if(IsActive())
-	{
-		//return: the iState causes disconnection printing when RunL called.
-		return;
-	}
-
-	IsConnected();
-		Disconnect();
-
-	LOG("[CBtChannelBase::FinishPrintingL]\t end");
-    return;
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::SendSoapRequestL
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::SendSoapRequestL(const TInt aRequest, const TInt aJobId)
-{
-	SendSoapRequestL(aRequest, iStatus, aJobId);
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::SendSoapRequestL
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::SendSoapRequestL(const TInt aRequest,
-								  TRequestStatus& aStatus,
-								  const TInt aJobId)
-{
-	LOG1("[CBtChannelBase::SendSoapRequestL]\t begin for %d", aRequest);
-	User::LeaveIfNull(iChannel);
-	User::LeaveIfNull(iObexBufObject); // panics if iObexBody == NULL
-
-	/* Create soap from file */
-	if(!iSoapCodec)
-	{
-		iSoapCodec = CBtSoapCodec::NewL();
-	}
-    TPtrC8 soap = iSoapCodec->CreateSoapL(aRequest, aJobId);
-
-	LOG2("[CBtChannelBase::SendSoapRequestL]\t Soap created for %d. len: %d",aRequest, soap.Length());
-
-	iObexBufObject->Reset();
-
-	iObexBody->InsertL(0, soap);
-	LOG1("[CBtChannelBase::SendSoapRequestL]\t data size %d", iObexBody->Size());
-
-	iObexBufObject->SetTypeL(KBtMimeTypeSoap());
-
-	LOG("[CBtChannelBase::SendSoapRequestL]\t Issuing get.");
-	iChannel->Get(*iObexBufObject, aStatus);
-
-	Activate();
-	LOG("[CBtChannelBase::SendSoapRequestL]\t end");
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::GetSoapResponseL
-//
-//--------------------------------------------------------------------------------------------
-TInt CBtChannelBase::GetSoapResponseL()
-{
-	LOG("[CBtChannelBase::GetSoapResponseL]\t");
-
-	if( 0 >= iObexBody->Size() )
-		User::Leave(KErrInvalidData);
-
-	LOG("[CBtChannelBase::GetSoapResponseL]\t Data in obex body.");
-	LOG1("[CBtChannelBase::GetSoapResponseL]\t iDevice: %d", iDevice);
-	TInt action = EBtUnknownAction;
-
-	//give obexbody to parser
-	if(!iSoapCodec)
-	{
-		iSoapCodec = CBtSoapCodec::NewL();
-	}
-
-   	//read
-	iSoapCodec->ReadSoapL(action, *iObexBody);
-	LOG1("[CBtChannelBase::GetSoapResponseL]\t soap read. Action %d", action);
-
-	// Reset object: data is stored in iSoapCodec.
-	// NOTE: reset resets also iObexBody
-	iObexBufObject->Reset();
-
-	LOG("[CBtChannelBase::GetSoapResponseL]\t done");
-	return action;
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::Activate
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::Activate()
-{
-	// If already active do not activate again
-	LOG2("[CBtChannelBase::Activate]\t for %d, IsActive %d",iState, IsActive());
-	if( IsActive() )
-		return;
-
-	SetActive();
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::CompleteRequest
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::CompleteRequest(TControlState aStateCompleted, TInt aError)
-{
-	LOG2("[CBtChannelBase::CompleteRequest]\t aStateCompleted %d, aError %d",aStateCompleted, aError);
-	iState = aStateCompleted;
-
-	LOG2("[CBtChannelBase::CompleteRequest]\t IsActive() %d, iStatus %d", IsActive(), iStatus.Int());
-	if(IsActive() && KRequestPending == iStatus.Int())
-	{
-		TRequestStatus* statusPtr = &iStatus;
-		User::RequestComplete(statusPtr, aError);
-	}
-	if(EStateNone != aStateCompleted)
-	{
-		Activate();
-	}
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::StartWaiting
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::WaitL()
-{
-	if( !(iWait->IsStarted()) && KRequestPending == iStatus.Int())
-	{
-		LOG("[CBtChannelBase::WaitL]\t");
-		iWait->Start();
-
-		LOG2("[CBtChannelBase::WaitL]\t Continue, iStatus: %d at iState: %d", iStatus.Int(), iState);
-		LOG1("[CBtChannelBase::WaitL]\t iStop: %d",iStop);
-		if(KErrNone != iStatus.Int() && KRequestPending != iStatus.Int() && !iStop)
-			User::Leave(iStatus.Int());
-		LOG("[CBtChannelBase::WaitL]\t out");
-	}
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::StopWaiting
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::StopWaiting()
-{
-	if( (iWait->IsStarted()) )
-	{
-		LOG("[CBtChannelBase::StopWaiting]\t");
-		iWait->AsyncStop();
-	}
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::ClearConnection
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::ClearConnection()
-{
-	LOG1("[CBtChannelBase::ClearConnection]\t iState %d", iState);
-
-	Cancel();
-
-	iObexBufObject->Reset();
-	iObexNullObject->Reset();
-	iDevice = NULL;
-
-    if(iChannel)
-    {
-		LOG("[CBtChannelBase::ClearConnection]\t iChannel clear");
-		//Sends the abort operation to receiver and completes request with KErrAbort
-		Disconnect();	
-    }
-	LOG("[CBtChannelBase::ClearConnection]\t out");
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::DeleteChannel
-//
-//--------------------------------------------------------------------------------------------
-void CBtChannelBase::DeleteChannel()
-{
-	LOG1("[CBtChannelBase::DeleteChannel]\t iChannel %d delete", iChannel);
-    if(iChannel)
-    {
-		delete iChannel;
-		iChannel = NULL;
-    }
-	iStop = EFalse;
-
-	LOG1("[CBtChannelBase::DeleteChannel]\t iChannel %d out", iChannel);
-}
-
-//--------------------------------------------------------------------------------------------
-//
-// CBtChannelBase::GetUserPasswordL
-//
-//--------------------------------------------------------------------------------------------
-
-void CBtChannelBase::GetUserPasswordL( const TDesC &aRealm )
-{
-    LOG("[CBtChannelBase::GetUserPasswordL begin]\t");
-
-    iPasswordQuery = CBtPasswordQuery::NewL( *this );
-    
-    iPasswordQuery->StartActiveObjectL();
-  
-    LOG("[CBtChannelBase::GetUserPasswordL end]\t");
-}
-
-void CBtChannelBase::PasswordQueryCompleteL ( TObexPasskeyBuf aResultPckg )
-	{     
-	    iPckg = aResultPckg(); 
-	    
-	    TBuf<256> data;
-	    data.Copy(iPckg);
-	    
-	    // Send user password
-	    iChannel->UserPasswordL(data);
-	}
-
-//  End of File