ImagePrint/ImagePrintEngine/DeviceProtocols/pictbridge2/src/cpbprintingdevice.cpp
branchGCC_SURGE
changeset 25 59ea2209bb67
parent 23 08cc4cc059d4
parent 15 a92d00fca574
--- a/ImagePrint/ImagePrintEngine/DeviceProtocols/pictbridge2/src/cpbprintingdevice.cpp	Fri Jun 11 16:24:10 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1377 +0,0 @@
-/*
-* Copyright (c) 2002-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:  Contains the CPBPrintingDevice class definition.
-*
-*/
-
-
-#include <e32std.h>
-#include <pictbridge.h>
-#include <s32file.h>
-#include <f32file.h>
-
-#include "cpbprintingdevice.h"
-#include "printcapabilitycodes.h"
-#include "printmessagecodes.h"
-#include "imageprint.h"
-#include "cpbconnect.h"
-#include "clog.h"
-
-//  CONSTANTS
-namespace
-	{
-	const TInt KPBVersionMajor = 0;
-	const TInt KPBVersionMinor = 0;
-	const TInt KPBVersionBuild = 1;
-	}
-
-const TInt KConfigLength = 16;
-const TInt KMaxRetry = 10;
-_LIT( KConfigInfoFile, "config.DPS");
-
-
-MProtPrintingDevice* CPBPrintingDevice::NewL()
-	{
-	return new (ELeave) CPBPrintingDevice();
-	}
-
-
-CPBPrintingDevice::CPBPrintingDevice() :
-CActive( CActive::EPriorityStandard ), iState(EPBUninitialized), iDisconnectPrinter(EFalse)
-	{
-	CActiveScheduler::Add(this);
-	}
-
-void CPBPrintingDevice::ConstructL(const TDesC& /*aDLLPath*/)
-	{
-	LOG("CPBPrintingDevice::ConstructL begin");	
-	
-	iDpsEngine = CDpsEngine::GetEngineL();		
-	iConnect = CPBConnect::NewL( *iDpsEngine, *this );
-	
-    iCongFileName = HBufC::NewL( iDpsEngine->DpsFolder().Length() + KConfigLength );
-    TInt k = iDpsEngine->DpsFolder().Length() + KConfigLength;
-    iCongFileName->Des().Copy( iDpsEngine->DpsFolder() );
-    iCongFileName->Des().Append( KConfigInfoFile );
- 	
-	iCancelRetry = 0;
-
-    // for Cert software to indicate that printing state and idle state 
-    iPrintingStateComplete = 0;
-	
-	iUserSelectedPaperSize = EDpsPaperSizeDefault;
-	iNewJobOK = ETrue;
-	
-	LOG("CPBPrintingDevice::ConstructL end");
-	}
-
-
-CPBPrintingDevice::~CPBPrintingDevice()
-	{
-	LOG("CPBPrintingDevice::~CPBPrintingDevice begin");
-	Cancel();
-	delete iConnect;
-	delete iCongFileName;
-	if ( iDpsEngine )
-		{
-		iDpsEngine->Delete();
-		}
-	REComSession::DestroyedImplementation( iDtor_ID_Key );
-	LOG("CPBPrintingDevice::~CPBPrintingDevice end");
-	}
-
-
-TVersion CPBPrintingDevice::Version()
-	{
-	return TVersion(KPBVersionMajor, KPBVersionMinor, KPBVersionBuild);
-	}
-
-TUint CPBPrintingDevice::SupportedProtocols()
-	{
-	return KImagePrint_PrinterProtocol_PictBridge;
-	}
-
-void CPBPrintingDevice::StartDiscoveryL(MProtDiscoveryObserver& aObserver, TUint aProtocol)
-	{		
-	LOG1("CPBPrintingDevice::StartDiscoveryL aProtocol: %d", aProtocol);
-	iDiscoveryObserver = &aObserver;
-		
-	if ( IsActive() )
-		{
-		LOG1("CPBPrintingDevice::StartDiscoveryL invalid state %d, cannot start discovery", iState);
-		iDiscoveryObserver->DiscoveryStatusL( EDiscoveryFinished, KErrInvalidSequence, 0 );
-		return;
-		}
-				
-	if ( !( aProtocol & KImagePrint_PrinterProtocol_PictBridge ) )
-		{
-		LOG("CPBPrintingDevice::StartDiscoveryL NO protocol match, ending discovery...");
-		iDiscoveryObserver->DiscoveryStatusL( EDiscoveryFinished, KErrNotSupported, 0 );
-		return;
-		}
-
-	if ( !iPrinterConnected )
-		{
-		LOG("CPBPrintingDevice::StartDiscoveryL no printer connected, ending discovery");
-		iDiscoveryObserver->DiscoveryStatusL( EDiscoveryFinished, KErrNone, 0 );
-		return;
-		}
-
-
-	// clear capability map
-	iCapToDps.Close();
-
-    iConfigS.iReqParam.Reset();
-    iDpsEngine->GetDpsConfigL( iConfigS.iReqParam );
-    iDpsEngine->DoDpsRequestL( &iConfigS, iStatus );
-	iState = EPBDiscovery;
-    SetActive();
-	LOG("CPBPrintingDevice::StartDiscoveryL setting state to Discovery");
-		
-	LOG("CPBPrintingDevice::StartDiscoveryL end");
-	}
-
-
-TInt CPBPrintingDevice::RemoveCachedDeviceL( TInt aDeviceID )
-	{
-  	LOG1("CPBPrintingDevice::RemoveCachedDeviceL, aDeviceID: %d", aDeviceID);
-  	return KErrInvalidData;
-	}
-
-void CPBPrintingDevice::CancelDiscovery( TBool aDoCallBack )
-	{
-  	LOG2("CPBPrintingDevice::CancelDiscovery aDoCallBack %d, iState %d", aDoCallBack, iState );  	
-  	if ( iState == EPBDiscovery )
-	  	{
-	  	Cancel();
-		if ( aDoCallBack && iDiscoveryObserver )
-			{
-			//We're not interested if the call back leaves
-			TRAP_IGNORE( iDiscoveryObserver->DiscoveryStatusL( EDiscoveryCancelling, KErrNone, 0 ) );
-			//We're not interested if the call back leaves
-			TRAP_IGNORE( iDiscoveryObserver->DiscoveryStatusL( EDiscoveryFinished, KErrNone, 0 ) );
-			}
-		iState = EPBUninitialized;
-	  	}  	
-	LOG("CPBPrintingDevice::CancelDiscovery end");
-	}
-
-
-TInt CPBPrintingDevice::CreatePrintJobL(TInt aDeviceID, RPointerArray<TDesC>& aImages, MProtPrintEventObserver& aObserver)
-	{
-  	LOG2("CPBPrintingDevice::CreatePrintJobL begin, deviceid %d imagecount %d", aDeviceID, aImages.Count());
-	iPrintEventObserver = &aObserver;		
-
-	if ( aDeviceID != 0 )
-		{
-		LOG("CPBPrintingDevice::CreatePrintJobL invalid device");
-		return KErrArgument;
-		}
-		
-	if ( iState != EPBReady && iState != EPBJobReady )
-		{
-		LOG1("CPBPrintingDevice::CreatePrintJobL invalid state %d", iState);
-		if(iDisconnectPrinter) // If printer is disconnected then return KErrDisconnected.
-			return KErrDisconnected;
-		else 
-			return KErrInvalidSequence;
-		}
-		
-    iStart.iReqParam.Reset();                                                                               
-		
-	// these must be appended in same order as PBJobSettingIndex
-	
-    TDpsArgsInt arg;    
-    arg.iElement = EDpsArgPaperSize;
-    arg.iContent = EDpsPaperSizeDefault;
-    iStart.iReqParam.iJobConfig.Append(arg);
-
-    arg.iElement = EDpsArgQuality;
-    arg.iContent = EDpsPrintQualityDefault;
-    iStart.iReqParam.iJobConfig.Append(arg);
-				
-    arg.iElement = EDpsArgLayout;
-    arg.iContent = EDpsLayoutDefault;
-    iStart.iReqParam.iJobConfig.Append(arg);
-                        	
-	for ( TInt i = 0; i < aImages.Count(); ++i )
-		{
-	    TDpsPrintInfo info;
-	    info.Reset();
-	    const TDesC& image = *aImages[i];
-	    LOG1("CPBPrintingDevice::CreatePrintJobL image %S", &image);
-	    info.iFile.Copy( image );
-	    iStart.iReqParam.iPrintInfo.Append( info );
-		}
-
-	LOG("CPBPrintingDevice::CreatePrintJobL setting state to JobReady");
-	iState = EPBJobReady;
-	
-	LOG("CPBPrintingDevice::CreatePrintJobL end");
-	return KErrNone;
-	}
-
-void CPBPrintingDevice::SubmitPrintJobL()
-	{
-	LOG("CPBPrintingDevice::SubmitPrintJobL begin");
-
-	// Checking that job is ready and printer has send aStatus.iRepParam.iNewJobOk
-	// Check PrinterNotify function
-	if ( iState == EPBJobReady && iNewJobOK )
-		{
-		iDpsEngine->DoDpsRequestL( &iStart, iStatus );
-		iState = EPBSubmittingJob;
-		SetActive();
-		LOG("CPBPrintingDevice::SubmitPrintJobL setting state to SubmittingJob");
-		}
-	else
-		{
-		LOG1("CPBPrintingDevice::SubmitPrintJobL invalid state %d", iState);
-		if( iDisconnectPrinter )
-		    {
-		    User::Leave( KErrDisconnected );
-		    }
-		else
-		    {
-		  	// Job or printer not ready, inform user
-		  	if( iPrintEventObserver )
-		  	    {
-    		  	LOG("CPBPrintingDevice::SubmitPrintJobL sending EPbStatusErrorReasonHardwarePrinterBusy message to UI");
-    		  	iPrintEventObserver->PrinterStatusEvent( EPbStatusErrorReasonHardwarePrinterBusy );
-		  	    }
-		    else
-		        {
-       			LOG1("CPBPrintingDevice::SubmitPrintJobL invalid state %d", iState);
-       			User::Leave( KErrInvalidSequence );
-		        }
-		    }
-		
-		}
-	
-	LOG("CPBPrintingDevice::SubmitPrintJobL end");
-	}
-
-TInt CPBPrintingDevice::CancelPrintJob()
-	{
-	LOG("CPBPrintingDevice::CancelPrintJob begin");
-
-    if( iCancelRetry > KMaxRetry )
-        {
-        return KErrInUse;
-        }
-	
-	if ( iState == EPBSubmittingJob || iState == EPBPrinting || iState == EPBCancelling )
-		{
-        Cancel();
-        iAbort.iReqParam.iAbortStyle = EDpsAbortStyleImmediately;
-        TRAPD( err, iDpsEngine->DoDpsRequestL( &iAbort, iStatus ) );
-        if ( err != KErrNone )
-	        {
-	        LOG1("CPBPrintingDevice::CancelPrintJob FATAL, DoDpsRequestL failed %d, setting state to Uninitialized", err);
-	       	iState = EPBUninitialized;
-	       	return KErrGeneral;
-	        }        
-        iState = EPBCancelling;
-        SetActive();
-        LOG("CPBPrintingDevice::CancelPrintJob setting state to Cancelling");
-		}	
-	else if ( iState == EPBJobReady )
-		{
-		LOG("CPBPrintingDevice::CancelPrintJob state is JobReady so doing nothing");
-		return KErrNone;
-		}
-	else 
-		{
-		LOG1("CPBPrintingDevice::CancelPrintJob invalid state %d", iState);
-		return KErrInvalidSequence;
-		}
-		
-	LOG("CPBPrintingDevice::CancelPrintJob end");
-	return KErrNone;
-	}
-
-TInt CPBPrintingDevice::ContinuePrintJobL()
-	{
-	LOG1("CPBPrintingDevice::ContinuePrintJobL returns with: %d", KErrNotSupported);
-	return KErrNotSupported;
-	}
-
-TInt CPBPrintingDevice::GetNumPrintPages()
-	{
-	LOG("CPBPrintingDevice::GetNumPrintPages begin");
-	
-	if ( iState != EPBJobReady && iState != EPBSubmittingJob && iState != EPBPrinting )
-		{
-		LOG1("CPBPrintingDevice::GetNumPrintPages invalid state %d, returning 0", iState);
-		return 0;
-		}
-
-	TInt imagesPerPage = 1;
-	TDpsArgsInt& config = iStart.iReqParam.iJobConfig[EPBSettingLayout];
-	switch ( config.iContent )
-		{        
-        case EDpsLayout2Up:
-			imagesPerPage = 2;
-        	break;        
-        case EDpsLayout4Up:
-			imagesPerPage = 4;
-        	break;        
-        case EDpsLayout6Up:
-			imagesPerPage = 6;
-        	break;        
-        case EDpsLayout9Up:
-			imagesPerPage = 9;
-        	break;        	        			        		        						
-		default:
-			break;
-		}
-
-	TInt numPrintPages = (iStart.iReqParam.iPrintInfo.Count() + imagesPerPage - 1) / imagesPerPage;
-	LOG1("CPBPrintingDevice::GetNumPrintPages end, result %d", numPrintPages);
-	return numPrintPages;
-	}
-
-TInt CPBPrintingDevice::GetPrintJobStatus()
-	{
-	LOG1("CPBPrintingDevice::GetPrintJobStatus returns with: %d", KErrNotSupported);
-	return KErrNotSupported;
-	}
-
-TInt CPBPrintingDevice::GetPrinterStatus(TInt /*aDeviceID*/)
-	{
-	LOG1("CPBPrintingDevice::GetPrinterStatus returns with: %d", KErrNotSupported);
-	return KErrNotSupported;
-	}
-
-TInt CPBPrintingDevice::GetDeviceCapabilityIDsL(TInt aDeviceID, RArray<TInt>& aCapabilityIDs)
-	{
-	LOG1("CPBPrintingDevice::GetDeviceCapabilityIDsL begins with aDeviceID: %d", aDeviceID);
-
-	if ( aDeviceID != 0 )
-		{
-		LOG("CPBPrintingDevice::GetDeviceCapabilityL invalid device");
-		return KErrArgument;
-		}		
-					
-	if ( iState != EPBReady && iState != EPBJobReady )
-		{
-		LOG1("CPBPrintingDevice::GetDeviceCapabilityL invalid state %d", iState);
-		return KErrInvalidSequence;
-		}	
-	
-	aCapabilityIDs.Append( EPrintCapabLayout );
-	aCapabilityIDs.Append( EPrintCapabQuality );
-	aCapabilityIDs.Append( EPrintCapabPaperSize );
-		
-	LOG("CPBPrintingDevice::GetDeviceCapabilityIDsL end");
-	return KErrNone;
-	}
-
-TInt CPBPrintingDevice::GetDeviceCapabilityL(TInt aDeviceID, TInt aCapabilityID, TPrintCapability& aCapability)
-	{		
-	LOG2("CPBPrintingDevice::GetDeviceCapabilityL begins with aDeviceID %d, aCapabilityID %d", aDeviceID, aCapabilityID);
-
-	if ( aDeviceID != 0 )
-		{
-		LOG("CPBPrintingDevice::GetDeviceCapabilityL invalid device");
-		return KErrArgument;
-		}		
-					
-	if ( iState != EPBReady && iState != EPBJobReady )
-		{
-		LOG1("CPBPrintingDevice::GetDeviceCapabilityL invalid state %d", iState);
-		return KErrInvalidSequence;
-		}	
-
-	if ( aCapabilityID == EPrintCapabPaperSize )
-		{
-		// paper sizes
-		iCap.iRepParam.Reset();
-		iCap.iReqParam.iCap = EDpsArgPaperSizes;
-		iDpsEngine->DoDpsRequestL(&iCap, iStatus);
-		SetActive();
-		iWait.Start();
-		HandlePapersizesResponseL( aCapability );
-		
-		if ( !aCapability.iEnumCount )
-			{
-			LOG("CPBPrintingDevice::GetDeviceCapabilityL paper sizes not supported, set to default");
-	    	aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabPaperSizeAuto;
-	    	iCapToDps.InsertL( EPrintCapabPaperSizeAuto, EDpsPaperSizeDefault );
-			}				    		
-	    }
-	else if ( aCapabilityID == EPrintCapabQuality )
-		{
-		// qualities
-		LOG("CPBPrintingDevice::GetDeviceCapabilityL qualities");
-		iCap.iRepParam.Reset();
-		iCap.iReqParam.iCap = EDpsArgQualities;
-		iDpsEngine->DoDpsRequestL( &iCap, iStatus );
-		SetActive();
-		iWait.Start();
-		HandleQualitiesResponseL( aCapability );
-		}
-	else if ( aCapabilityID == EPrintCapabLayout )
-		{			
-		// layouts		
-		LOG("CPBPrintingDevice::GetDeviceCapabilityL layouts");
-		iCap.iRepParam.Reset();
-		iCap.iReqParam.iCap = EDpsArgLayouts;
-		iCap.iReqParam.iAttribute = iUserSelectedPaperSize;
-		LOG("CPBPrintingDevice::GetDeviceCapabilityL layouts dodpsrequest");		
-		iDpsEngine->DoDpsRequestL(&iCap, iStatus);
-		SetActive();
-		LOG("CPBPrintingDevice::GetDeviceCapabilityL layouts wait");
-		iWait.Start();
-		HandleLayoutsResponseL( aCapability );
-		}
-	else
-		{
-		LOG("CPBPrintingDevice::GetDeviceCapabilityL invalid capabilityID");
-		return KErrArgument;
-		}	    
-		
-	LOG1("CPBPrintingDevice::GetDeviceCapabilityL iCapToDps count %d", iCapToDps.Count());
-
-	LOG("CPBPrintingDevice::GetDeviceCapabilityL end");
-	return KErrNone;
-	}
-
-TInt CPBPrintingDevice::GetJobSetting(TInt aCapabilityID, TInt& aValue)
-	{
-	LOG1("CPBPrintingDevice::GetJobSetting begin, aCapabilityID %d", aCapabilityID);
-
-	TInt err = KErrNone;		
-	if ( iState != EPBJobReady )
-		{
-		LOG1("CPBPrintingDevice::GetJobSetting invalid state %d", iState);
-		err = KErrInvalidSequence;
-		}	
-	else if ( aCapabilityID == EPrintCapabPaperSize )
-		{
-		err = GetPapersizeJobSetting( aValue );
-	    }
-	else if ( aCapabilityID == EPrintCapabQuality )
-		{
-		err = GetQualityJobSetting( aValue );
-		}
-	else if ( aCapabilityID == EPrintCapabLayout )
-		{
-		err = GetLayoutJobSetting( aValue );
-		}
-	else
-		{
-		LOG("CPBPrintingDevice::GetJobSetting invalid capabilityID");
-		err = KErrArgument;
-		}	    
-		
-	LOG2("CPBPrintingDevice::GetJobSetting end, return code %d value %d", err, aValue);
-	return err;
-	}
-
-TInt CPBPrintingDevice::SetJobSettingL(TInt aCapabilityID, TInt aValue, TInt& aAffectedCapability)
-	{
-	LOG2("CPBPrintingDevice::SetJobSettingL begin, aCapabilityID %d aValue %d", aCapabilityID, aValue);
-
-	aAffectedCapability = aCapabilityID;
-	
-	RArray<TDpsArgsInt>& config = iStart.iReqParam.iJobConfig;
-	TInt err = KErrNone;
-	if ( iState != EPBJobReady )
-		{
-		LOG1("CPBPrintingDevice::SetJobSettingL invalid state %d", iState);
-		err = KErrInvalidSequence;
-		}
-	else if ( aCapabilityID == EPrintCapabPaperSize )
-		{
-		TInt* dpsValue = iCapToDps.Find( aValue );
-		if ( dpsValue )
-		    {
-			config[EPBSettingPaperSize].iContent = *dpsValue;
-		
-			// for CertSW: needs layouts for particular paper sizes
-			iUserSelectedPaperSize = config[EPBSettingPaperSize].iContent;
-		    }
-		else
-			{
-			LOG("CPBPrintingDevice::SetJobSettingL invalid value");
-			err = KErrInvalidData;
-			}
-	    }
-	else if ( aCapabilityID == EPrintCapabQuality )
-		{
-		TInt* dpsValue = iCapToDps.Find( aValue );
-		if ( dpsValue )
-			{
-			config[EPBSettingQuality].iContent = *dpsValue;
-			}
-		else
-			{
-			LOG("CPBPrintingDevice::SetJobSettingL invalid value");
-			err = KErrInvalidData;
-			}
-		}
-	else if ( aCapabilityID == EPrintCapabLayout )
-		{
-		TInt* dpsValue = iCapToDps.Find( aValue );
-		if ( dpsValue )
-			{
-			config[EPBSettingLayout].iContent = *dpsValue;
-			}
-		else
-			{
-			LOG("CPBPrintingDevice::SetJobSettingL invalid value");
-			err = KErrInvalidData;
-			}
-		}
-	else
-		{
-		LOG("CPBPrintingDevice::SetJobSettingL invalid capabilityID");
-		err = KErrArgument;
-		}	    
-		
-	LOG1("CPBPrintingDevice::SetJobSettingL end, return code %d", err);
-	return err;	
-	}
-
-
-TInt CPBPrintingDevice::GetNumPreviewPages()
-	{
-	LOG1("CPBPrintingDevice::GetNumPreviewPages ends with: %d", 1);
-	return 1;
-	}
-
-TInt CPBPrintingDevice::GetJobTemplateIconL( TInt /*aTemplateID*/, TInt& /*aFsBitmapHandle*/ )
-	{
-	return KErrNone;
-	}
-
-
-TInt CPBPrintingDevice::CreatePreviewImage(TInt /*aPageNumber*/)
-	{
-	return KErrNotSupported;
-	}
-
-void CPBPrintingDevice::RegisterIdleObserver( MProtIdleObserver *aObserver )
-	{
-	iIdleObserver = aObserver;
-	}
-
-void CPBPrintingDevice::DoCancel()
-	{
-	iDpsEngine->CancelDpsRequest();
-	if ( iWait.IsStarted() )
-		{
-		LOG("CPBPritingDevice::DoCancel() calling iWait.AsyncStop()");
-		iWait.AsyncStop();
-		}	
-	}
-
-void CPBPrintingDevice::RunL()
-	{
-	LOG2("CPBPrintingDevice::RunL begin, status %d state %d", iStatus.Int(), iState);
-		
-   	if ( iWait.IsStarted() )
-    	{
-    	LOG("CPBPrintingDevice::RunL calling iWait.AsyncStop() and returning");
-    	iWait.AsyncStop();
-    	return;
-    	}
-    
-    if ( iStatus.Int() == KErrNone ) // everything ok
-        {
-    	switch( iState )
-    		{
-    		case EPBDiscovery:
-    			{    	   			
-    			iPrinter.iPrinterID = 0;
-                iPrinter.iProtocol = KImagePrint_PrinterProtocol_PictBridge;
-    	        iPrinter.iProperties = 0;
-
-    			if( iConfigS.iResult.iMajorCode == EDpsResultOk ) 
-    			    {
-    			    iPrinter.iVendor = TPrinter::EVendorNone;
-    			
-    			    HBufC* buf = HBufC::NewLC( iConfigS.iRepParam.iProductName.Length() );
-    			    TPtr p = buf->Des();
-    			    p.Copy( iConfigS.iRepParam.iProductName );
-    			    if ( p.Length() > 84 )
-    				    {
-    				    TPtrC p2 = p.Left( 84 );
-    				    iPrinter.iDisplayName = p2;
-    				    }
-    			    else
-    				    {
-    				    iPrinter.iDisplayName = p;
-    				    }
-    			    
-    			    CleanupStack::PopAndDestroy( buf );
-    			    LOG1("CPBPrinterDevice::RunL config displayname %S", &iPrinter.iDisplayName);
-    			    
-    			    // Config info have to be saved in file, because it can retrieved only once
-    			    // when cable is plugged in the device
-    			    SaveConfigInfoL();
-    			    }
-    			
-                if( iConfigS.iResult.iMajorCode == EDpsResultNotExecuted )
-                    {
-                    // Read info from file
-                    ReadConfigInfoL();
-    			    }
-
-    		    iDiscoveryObserver->FoundDeviceL( iPrinter );
-    		    iDiscoveryObserver->DiscoveryStatusL( EDiscoveryFinished, KErrNone, 0 );
-    		    iState = EPBReady;
-
-    			// Close Dps request to avoid -14 error
-    			iDpsEngine->CancelDpsRequest();
-    		    iDpsEngine->CancelDpsEventNotify();
-
-    			LOG("CPBPrintingDevice::RunL setting state to Ready");
-    			break;
-    			}    		
-    		case EPBSubmittingJob:
-    			LOG2("CPBPrintingDevice::RunL submittingjob result major 0x%x minor 0x%x", iStart.iResult.iMajorCode, iStart.iResult.iMinorCode);
-    			if ( iStart.iResult.iMajorCode == EDpsResultOk )
-    				{
-    				LOG("CPBPrintingDevice::RunL setting state to Printing");
-    				iState = EPBPrinting;
-    				
-    				// for Cert software remove dialog from UI 
-    				iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ENoMessage );
-    				}
-    			else
-    				{
-    				LOG("CPBPrintingDevice::RunL error occurred, setting state to JobReady");
-    				iState = EPBJobReady;
-    				if ( iPrintEventObserver )
-    					{
-    					TPrintMessageCodes err = EPbStatusErrorReasonNoReason;
-    					if ( iStart.iResult.iMajorCode == EDpsResultNotSupported &&
-    						 iStart.iResult.iMinorCode == EDpsResultMissingParam )
-    						{
-    						// image file is probably missing
-    						err = EPbFileNotFound;
-    						}						
-    					iPrintEventObserver->PrinterStatusEvent( err );
-    					iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ECancelling );
-    					}
-    				}
-    			break;    			
-    		case EPBCancelling:			
-    			LOG2("CPBPrintingDevice::RunL cancelling result major 0x%x minor 0x%x", iAbort.iResult.iMajorCode, iAbort.iResult.iMinorCode);
-    			
-    			if( iAbort.iResult.iMajorCode == EDpsResultNotExecuted )
-    			    {
-    			    iCancelRetry++;
-    			    CancelPrintJob();
-    			    }
-    			
-    			if( iAbort.iResult.iMajorCode == EDpsResultOk )
-    			    {
-    			    if ( iPrintEventObserver )
-    				    {
-    				    iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ECancelling );
-    				    }
-
-    			        LOG("CPBPrintingDevice::RunL setting state to JobReady");
-    			        iState = EPBJobReady;
-    			        iCancelRetry = 0;
-    			        }
-    			break;    		
-    		default:
-    			LOG1("CPBPrintingDevice::RunL unrecognized state %d", iState);
-    			break;
-		}	
-    } 
-	else // iStatus != KErrNone -> Handle error here 
-	    {
-	    switch( iStatus.Int()  )
-    		{
-    		case KErrTimedOut:
-    			LOG( "CPBPrintingDevice::RunL KErrTimedOut" );
-				if ( iPrintEventObserver )
-			        {
-				    LOG("CPBPrintingDevice::Timeout, finish printing...");
-				    iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ECancelling );
-				    }
-    			break;
-    		default:
-    		    // Handle error here.
-    		    LOG2( "CPBPrintingDevice::RunL error, status %d state %d", iStatus.Int(), iState );
-    		    break;
-    		}
-	    }
-	
-	LOG("CPBPrintingDevice::RunL end");
-	}
-
-TInt CPBPrintingDevice::RunError( TInt aError )
-	{
-	LOG1("CPBPrintingDevice::RunError code %d", aError);
-	if ( iWait.IsStarted() )
-		{		
-		LOG("CPBPrintingDevice::RunError calling iWait.AsyncStop()");
-		iWait.AsyncStop();
-		}
-	return KErrNone;
-	}
-
-		
-void CPBPrintingDevice::SetNumsOfCopiesL( const RArray<TInt>& aNumsOfCopies, TInt& aErr )
-	{
-	LOG("CPBPrintingDevice::SetNumsOfCopiesL begin");
-		
-	if ( iState != EPBJobReady )
-		{
-		LOG1("CPBPrintingDevice::SetNumsOfCopiesL invalid state %d", iState);
-		aErr = KErrInvalidSequence;
-		}		
-	else if ( aNumsOfCopies.Count() != iStart.iReqParam.iPrintInfo.Count() )
-		{
-		LOG2("CPBPrintingDevice::SetNumsOfCopiesL counts don't match, %d %d", aNumsOfCopies.Count(), iStart.iReqParam.iPrintInfo.Count());
-		aErr = KErrInvalidData;
-		}
-	else
-		{	
-		for ( TInt i = 0; i < aNumsOfCopies.Count(); ++i )
-			{
-			iStart.iReqParam.iPrintInfo[i].iCopies = aNumsOfCopies[i];
-			}			
-		aErr = KErrNone;
-		}
-	
-	LOG("CPBPrintingDevice::SetNumsOfCopiesL end");
-	}
-
-
-void CPBPrintingDevice::ConnectionNotifyL( TInt aStatus )
-	{
-	LOG2("CPBPrintingDevice::ConnectionNotifyL begin, status %d iState %d", aStatus, iState);
-    switch ( aStatus )
-        {        
-        case CDpsEngine::ENotConnected:
-        	LOG("CPBPrintingDevice::ConnectionNotify not connected");
-        	break;
-        case CDpsEngine::EPrinterConnected:
-        	LOG("CPBPrintingDevice::ConnectionNotifyL printer connected");
-        	iPrinterConnected = ETrue;
-        	iDisconnectPrinter = EFalse;
-	        if ( iIdleObserver )
-		        {
-		        LOG("CPBPrintingDevice::ConnectionNotifyL informing idle observer about connect");
-		        TEvent event = { KImagePrint_PrinterProtocol_PictBridge, ENotSpecified, EConnect };
-		        iIdleObserver->StatusEvent( event, KErrConnected, ENoMessage );
-	    	    }
-        	break;        
-        case CDpsEngine::EPrinterDisconnected:
-					iPrinterConnected = EFalse;
-					iDisconnectPrinter = ETrue;
-        	if ( iState != EPBUninitialized )
-	        	{
-	        	Cancel();
-	        	if ( iState == EPBDiscovery )
-		        	{
-		        			//We're not interested if the call back leaves
-							TRAP_IGNORE( iDiscoveryObserver->DiscoveryStatusL( EDiscoveryFinished, KErrNone, 0 ) );
-		        	}		        	
-					LOG("CPBPrintingDevice::ConnectionNotifyL printer disconnected, setting state to Uninitialized");
-	        	iState = EPBUninitialized;
-	        	}
-	        if ( iIdleObserver )
-		        {
-		        LOG("CPBPrintingDevice::ConnectionNotifyL informing idle observer about disconnect");
-		        TEvent event = { KImagePrint_PrinterProtocol_PictBridge, ENotSpecified, EDisconnect };
-		        iIdleObserver->StatusEvent( event, KErrDisconnected, ENoMessage );
-	    	    }
-	        break;	        
-        case CDpsEngine::EOtherConnected:
-        	LOG("CPBPrintingDevice::ConnectionNotify other connected");
-        	break;        
-        case CDpsEngine::EWrongPrintModeConnected: 
-            LOG("CPBPrintingDevice::ConnectionNotify Other personality");
-            iPrinterConnected = ETrue;
-            iDisconnectPrinter = EFalse;
-	        if ( iIdleObserver )
-		        {
-		        LOG("CPBPrintingDevice::ConnectionNotifyL informing idle observer about connect");
-		        TEvent event = { KImagePrint_PrinterProtocol_PictBridge, ENotSpecified, EConnect };
-		        iIdleObserver->StatusEvent( event, KErrConnected, ENoMessage );
-	    	    }
-        	break;                        
-        default:
-        	LOG1("CPBPrintingDevice::ConnectionNotifyL unrecognized status %d", aStatus);
-	        break;
-        }
-	LOG("CPBPrintingDevice::ConnectionNotifyL end");
-	}
-
-void CPBPrintingDevice::JobNotify( const TDpsGetJobStatus& aStatus )
-	{		
-	LOG1("CPBPrintingDevice::JobNotify begin, state %d", iState);
-    LOG2("CPBPrintingDevice::JobNotify progress %d, prtPID %d", aStatus.iRepParam.iProgress, aStatus.iRepParam.iPrtPID);
-    LOG1("CPBPrintingDevice::JobNotify copyID %d", aStatus.iRepParam.iCopyID);
-    LOG2("CPBPrintingDevice::JobNotify filepath %S, images printed %d", &aStatus.iRepParam.iFilePath, aStatus.iRepParam.iImagesPrinted);        
-    
-    if ( iPrintEventObserver )
-	    {
-	    iPrintEventObserver->PrintJobProgressEvent( EActive, aStatus.iRepParam.iProgress, ENoMessage );
-	    }
-    
-	LOG("CPBPrintingDevice::JobNotify end");
-	}
-
-void CPBPrintingDevice::PrinterNotify( const TDpsGetPrinterStatus& aStatus )
-	{		
-	LOG1("CPBPrintingDevice::PrinterNotify begin, state %d", iState );
-    LOG2("CPBPrintingDevice::PrinterNotify service status 0x%x, job status 0x%x", aStatus.iRepParam.iPrintStatus, aStatus.iRepParam.iJobStatus);
-    LOG2("CPBPrintingDevice::PrinterNotify error status 0x%x, job end reason 0x%x", aStatus.iRepParam.iErrorStatus, aStatus.iRepParam.iJobEndReason.iMajor);
-    LOG1("CPBPrintingDevice::PrinterNotify aStatus.iRepParam.iNewJobOk 0x%x,", aStatus.iRepParam.iNewJobOk);
-    
-    // New job checking that job is ok and device status is ok.
-    iNewJobOK = aStatus.iRepParam.iNewJobOk;
-    
-    TPBProtocolState oldState = iState;
-    if ( iState == EPBPrinting )
-		{
-		// for SWCert software to indicate that printing state has executed
-		iPrintingStateComplete = 1;
-		
-		if ( aStatus.iRepParam.iJobStatus == EDpsJobStatusEndedOk )
-			{
-			LOG("CPBPrintingDevice::PrinterNotify job finished successfully, setting state to JobReady");
-			if ( iPrintEventObserver )
-				{
-				LOG("CPBPrintingDevice::PrinterNotify job finished iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ENoMessage );");
-				iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ENoMessage );
-				}
-			iState = EPBJobReady;
-			}
-		else if ( aStatus.iRepParam.iJobStatus != EDpsJobStatusNotEnded )
-			{
-			LOG("CPBPrintingDevice::PrinterNotify job aborted, setting state to JobReady");
-			if ( iPrintEventObserver )
-				{
-				iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ECancelling );
-				}
-			iState = EPBJobReady;
-			}
-		}
-
-    if ( iState == EPBJobReady )
-        { 
-        // for Cert software: CertSW doesn't give any indication about aStatus.iRepParam.iJobStatus 
-        // it only indicate printer state. We have to send message to UI to remove generig progress bar.
-        if ( aStatus.iRepParam.iPrintStatus == EDpsPrintServiceStatusIdle && iPrintingStateComplete )
-            {
-			// for Cert software to indicate that idle state has executed
-			iPrintingStateComplete = 0;
-			
-			if ( iPrintEventObserver )
-				{
-			    LOG("CPBPrintingDevice::PrinterNotify job finished iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ENoMessage );");
-			    
-			    // for Cert software remove dialog from UI 
-			    iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ENoMessage );
-				}
-            }
-        }
-
-    if ( !iPrintEventObserver )
-	    {
-	    LOG("CPBPrintingDevice::PrinterNotify no event observer, returning");
-	    return;
-	    }
-    
-	TPrintMessageCodes err = DpsJobError( aStatus.iRepParam.iJobEndReason );
-    if ( err == ENoMessage && aStatus.iRepParam.iErrorStatus == EDpsErrorStatusFatal )
-		{
-		// Show fatal error
-		err = EPbStatusErrorReasonHardwareFatal;
-		}	        
-    
-    if ( err == ENoMessage && aStatus.iRepParam.iErrorStatus == EDpsErrorStatusWarning )
-		{
-		// Show warning
-		err = EPbStatusErrorReasonWarning;
-		}	        
-
-    if ( err != ENoMessage )
-	    {
-	    if ( oldState == EPBPrinting )
-		    {
-		    LOG1("CPBPrintingDevice::PrinterNotify calling PrintJobErrorEvent with code %d", err);
-		    iPrintEventObserver->PrintJobErrorEvent( err );
-			}
-		else
-			{
-			LOG1("CPBPrintingDevice::PrinterNotify calling PrinterStatusEvent with code %d", err);
-			iPrintEventObserver->PrinterStatusEvent( err );
-			}
-	    }
-    				
-	LOG("CPBPrintingDevice::PrinterNotify end");
-	}
-
-void CPBPrintingDevice::HandlePapersizesResponseL( TPrintCapability& aCapability )
-	{
-    LOG2("CPBPrintingDevice::HandlePapersizesResponseL result major 0x%x minor 0x%x", iCap.iResult.iMajorCode, iCap.iResult.iMinorCode);
-	LOG2("CPBPrintingDevice::HandlePapersizesResponseL cap 0x%x count %d", iCap.iRepParam.iCap, iCap.iRepParam.iContent.Count());	
-	
-	aCapability.iCapabilityID = EPrintCapabPaperSize;
-	aCapability.iType = TPrintCapability::Int;
-	aCapability.iDefaultValue = EPrintCapabPaperSizeAuto;
-	aCapability.iEnumCount = 0;
-	
-	if ( iCap.iResult.iMajorCode == EDpsResultOk )
-		{		
-	    for ( TInt i = 0; i < iCap.iRepParam.iContent.Count() && aCapability.iEnumCount < KMaxEnumAmount; ++i )
-	        {
-	        LOG1("CPBPrintingDevice::HandlePapersizesResponseL content 0x%x", iCap.iRepParam.iContent[i]);
-	        switch ( iCap.iRepParam.iContent[i] )
-		        {
-		        case EDpsPaperSizeDefault:
-		        	aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabPaperSizeAuto;
-		        	iCapToDps.InsertL( EPrintCapabPaperSizeAuto, EDpsPaperSizeDefault );
-		        	break;		        	
-	        	case EDpsPaperSizeLetter:
-	        		aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabPaperSizeLetter;
-	        		iCapToDps.InsertL( EPrintCapabPaperSizeLetter, EDpsPaperSizeLetter );
-	        		break;	        		
-	        	case EDpsPaperSizeA4:
-	        		aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabPaperSizeA4;
-	        		iCapToDps.InsertL( EPrintCapabPaperSizeA4, EDpsPaperSizeA4 );
-	        		break;	        		
-	        	case EDpsPaperSizeA6:
-	        		aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabPaperSizeA6;
-	        		iCapToDps.InsertL( EPrintCapabPaperSizeA6, EDpsPaperSizeA6 );
-	        		break;	        		
-	        	case EDpsPaperSize4x6:
-	        		aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabPaperSize4x6;
-	        		iCapToDps.InsertL( EPrintCapabPaperSize4x6, EDpsPaperSize4x6 );
-	        		break;
-	        	case EDpsPaperSize2L:
-	        		aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabPaperSize5x7;
-	        		iCapToDps.InsertL( EPrintCapabPaperSize5x7, EDpsPaperSize2L );
-	        		break;	        			        		
-	        	default:
-	        		break;
-	    	    }
-	        }
-	    }
-	}
-
-	
-void CPBPrintingDevice::HandleQualitiesResponseL( TPrintCapability& aCapability )
-	{
-    LOG2("CPBPrintingDevice::HandleQualitiesResponseL result major 0x%x minor 0x%x", iCap.iResult.iMajorCode, iCap.iResult.iMinorCode);
-	LOG2("CPBPrintingDevice::HandleQualitiesResponseL cap 0x%x count %d", iCap.iRepParam.iCap, iCap.iRepParam.iContent.Count());	
-	
-	aCapability.iCapabilityID = EPrintCapabQuality;
-	aCapability.iType = TPrintCapability::Int;
-	aCapability.iDefaultValue = EPrintCapabQualityDefault;
-	aCapability.iEnumCount = 0;
-
-	if ( iCap.iResult.iMajorCode == EDpsResultOk )
-		{		
-	    for ( TInt i = 0; i < iCap.iRepParam.iContent.Count() && aCapability.iEnumCount < KMaxEnumAmount; ++i )
-	        {
-	        LOG1("CPBPrintingDevice::HandleQualitiesResponseL content 0x%x", iCap.iRepParam.iContent[i]);
-	        switch ( iCap.iRepParam.iContent[i] )
-		        {
-		        case EDpsPrintQualityDefault:
-		        	aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabQualityDefault;
-		        	iCapToDps.InsertL( EPrintCapabQualityDefault, EDpsPrintQualityDefault );
-		        	break;
-		        case EDpsPrintQualityNormal:
-		        	aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabQualityNormal;
-		        	iCapToDps.InsertL( EPrintCapabQualityNormal, EDpsPrintQualityNormal );
-		        	break;
-		        case EDpsPrintQualityDraft:
-		        	aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabQualityDraft;
-		        	iCapToDps.InsertL( EPrintCapabQualityDraft, EDpsPrintQualityDraft );
-		        	break;
-		        case EDpsPrintQualityFine:
-		        	aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabQualityFine;
-		        	iCapToDps.InsertL( EPrintCapabQualityFine, EDpsPrintQualityFine );
-		        	break;		        	
-		        default:
-		        	break;
-		        }
-		    }
-		}
-	if ( !aCapability.iEnumCount )
-		{
-		LOG("CPBPrintingDevice::HandleQualitiesResponseL not supported, set to default");
-    	aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabQualityDefault;
-    	iCapToDps.InsertL( EPrintCapabQualityDefault, EDpsPrintQualityDefault );
-		}
-	}
-
-void CPBPrintingDevice::HandleLayoutsResponseL( TPrintCapability& aCapability )
-	{		
-    LOG2("CPBPrintingDevice::HandleLayoutsResponseL result major 0x%x minor 0x%x", iCap.iResult.iMajorCode, iCap.iResult.iMinorCode);
-	LOG2("CPBPrintingDevice::HandleLayoutsResponseL cap 0x%x count %d", iCap.iRepParam.iCap, iCap.iRepParam.iContent.Count());
-	
-	aCapability.iCapabilityID = EPrintCapabLayout;
-	aCapability.iType = TPrintCapability::Int;
-	aCapability.iDefaultValue = EPrintCapabLayout1Up;
-	aCapability.iEnumCount = 0;
-
-	if ( iCap.iResult.iMajorCode == EDpsResultOk )
-		{		
-	    for ( TInt i = 0; i < iCap.iRepParam.iContent.Count() && aCapability.iEnumCount < KMaxEnumAmount; ++i )
-	        {
-	        LOG1("CPBPrintingDevice::HandleLayoutsResponseL content 0x%x", iCap.iRepParam.iContent[i]);
-	        switch ( iCap.iRepParam.iContent[i] )
-		        {
-		        case EDpsLayout1Up:
-		        	aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabLayout1Up;
-		        	iCapToDps.InsertL( EPrintCapabLayout1Up, EDpsLayout1Up );
-		        	break;		        
-		        case EDpsLayout2Up:
-		        	aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabLayout2Up;
-		        	iCapToDps.InsertL( EPrintCapabLayout2Up, EDpsLayout2Up );
-		        	break;		        
-		        case EDpsLayout4Up:
-		        	aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabLayout4Up;
-		        	iCapToDps.InsertL( EPrintCapabLayout4Up, EDpsLayout4Up );
-		        	break;		        
-		        case EDpsLayout6Up:
-		        	aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabLayout6Up;
-		        	iCapToDps.InsertL( EPrintCapabLayout6Up, EDpsLayout6Up );
-		        	break;		        
-		        case EDpsLayout9Up:
-		        	aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabLayout9Up;
-		        	iCapToDps.InsertL( EPrintCapabLayout9Up, EDpsLayout9Up );
-		        	break;		        	
-		        // do not support this EDpsLayoutBorderless, set default value
-		        case EDpsLayoutBorderless:
-		        	aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabLayout1UpBorderless;
-		        	iCapToDps.InsertL( EPrintCapabLayout1UpBorderless, EDpsLayoutDefault );
-		        	break;		        		        	
-		        default:
-		        	break;
-		        }			
-		    }
-		}
-	if ( !aCapability.iEnumCount )
-		{
-		LOG("CPBPrintingDevice::HandleLayoutsResponseL not supported, set to default");
-    	aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabLayout1Up;
-    	iCapToDps.InsertL( EPrintCapabLayout1Up, EDpsLayoutDefault );
-		}
-	}
-
-TInt CPBPrintingDevice::GetPapersizeJobSetting( TInt& aValue )
-	{
-	LOG("CPBPrintingDevice::GetPapersizeJobSetting begin");
-
-	TDpsArgsInt& paper = iStart.iReqParam.iJobConfig[EPBSettingPaperSize];
-	switch ( paper.iContent )
-		{
-		case EDpsPaperSizeDefault:
-			aValue = EPrintCapabPaperSizeAuto;
-			return KErrNone;		
-    	case EDpsPaperSizeLetter:
-			aValue = EPrintCapabPaperSizeLetter;
-			return KErrNone;    		
-    	case EDpsPaperSizeA4:
-			aValue = EPrintCapabPaperSizeA4;
-			return KErrNone;    		
-    	case EDpsPaperSizeA6:
-			aValue = EPrintCapabPaperSizeA6;
-			return KErrNone;    		
-    	case EDpsPaperSize4x6:
-			aValue = EPrintCapabPaperSize4x6;
-			return KErrNone;			
-    	case EDpsPaperSize2L:
-    		aValue = EPrintCapabPaperSize5x7;
-    		return KErrNone;
-		default:
-			LOG1("CPBPrintingDevice::GetPapersizeJobSetting unknown %x", paper.iContent);
-			break;
-		}				
-
-	LOG("CPBPrintingDevice::GetPapersizeJobSetting end");
-	return KErrInvalidData;
-	}
-
-TInt CPBPrintingDevice::GetQualityJobSetting( TInt& aValue )
-	{
-	LOG("CPBPrintingDevice::GetQualityJobSetting begin");
-
-	TDpsArgsInt& config = iStart.iReqParam.iJobConfig[EPBSettingQuality];
-	switch ( config.iContent )
-		{
-        case EDpsPrintQualityDefault:
-			aValue = EPrintCapabQualityDefault;
-			return KErrNone;
-        case EDpsPrintQualityNormal:
-			aValue = EPrintCapabQualityNormal;
-			return KErrNone;
-        case EDpsPrintQualityDraft:
-			aValue = EPrintCapabQualityDraft;
-			return KErrNone;
-        case EDpsPrintQualityFine:
-			aValue = EPrintCapabQualityFine;
-			return KErrNone;			
-		default:
-			LOG1("CPBPrintingDevice::GetQualityJobSetting unknown %x", config.iContent);
-			break;
-		}				
-
-	LOG("CPBPrintingDevice::GetQualityJobSetting end");
-	return KErrInvalidData;
-	}
-
-TInt CPBPrintingDevice::GetLayoutJobSetting( TInt& aValue )
-	{
-	LOG("CPBPrintingDevice::GetLayoutJobSetting begin");
-
-	TDpsArgsInt& config = iStart.iReqParam.iJobConfig[EPBSettingLayout];
-	switch ( config.iContent )
-		{
-		case EDpsLayoutDefault:
-            // Not supported default value is EPrintCapabLayout1UpBorderless
-            // because other protocols use it too
-            // EPrintCapabLayout1UpBorderless is mapped with EDpsLayoutDefault
-            aValue = EPrintCapabLayout1UpBorderless; 
-        case EDpsLayout1Up:
-			aValue = EPrintCapabLayout1Up;
-        	return KErrNone;        
-        case EDpsLayout2Up:
-			aValue = EPrintCapabLayout2Up;
-        	return KErrNone;        
-        case EDpsLayout4Up:
-			aValue = EPrintCapabLayout4Up;
-        	return KErrNone;        
-        case EDpsLayout6Up:
-			aValue = EPrintCapabLayout6Up;
-        	return KErrNone;        
-        case EDpsLayout9Up:
-			aValue = EPrintCapabLayout9Up;
-        	return KErrNone;        	
-        case EDpsLayoutBorderless:
-			aValue = EPrintCapabLayout1UpBorderless;
-        	return KErrNone;        			        		        						
-		default:
-			LOG1("CPBPrintingDevice::GetLayoutJobSetting unknown %x", config.iContent);
-			break;
-		}
-
-	LOG("CPBPrintingDevice::GetLayoutJobSetting end");
-	return KErrInvalidData;
-	}
-
-TPrintMessageCodes CPBPrintingDevice::DpsJobError( const TDpsJobEndReason& aReason )
-	{
-	TPrintMessageCodes err = ENoMessage;
-    switch ( aReason.iMajor )
-        {
-        case EDpsJobErrorPaper:
-            LOG1("CPBPrintingDevice::DpsJobError paper error 0x%x", aReason.iPaperMinor);
-            HandlePaperError( aReason, err );
-	        break;        
-        case EDpsJobErrorInk:
-            LOG1("CPBPrintingDevice::DpsJobError ink error 0x%x", aReason.iInkMinor);
-            HandleInkError( aReason, err );
-    	    break;        
-        case EDpsJobErrorHardware:
-            LOG1("CPBPrintingDevice::DpsJobError hardware error 0x%x", aReason.iHardMinor);
-            HandleHwError( aReason, err );
-	        break;        
-        case EDpsJobErrorFile:
-            LOG1("CPBPrintingDevice::DpsJobError file error 0x%x", aReason.iFileMinor);
-            HandleFileError( aReason, err );   
-    	    break;        
-        default:
-        	break;
-        }
-    return err;
-	}
-void CPBPrintingDevice::HandlePaperError ( const TDpsJobEndReason& aReason, TPrintMessageCodes& aErr )
-	{
-	  switch ( aReason.iPaperMinor )
-        {
-	    case EDpsPaperEmpty:
-	    	aErr = EPbStatusErrorReasonPaperEmpty;
-	    	break;	    	
-	    case EDpsPaperLoad:
-	    	aErr = EPbStatusErrorReasonPaperLoad;
-	    	break;	    	
-	    case EDpsPaperEject:
-	    	aErr = EPbStatusErrorReasonPaperEject;
-	    	break;	    	
-	    case EDpsPaperMedia:
-	    	aErr = EPbStatusErrorReasonPaperMedia;
-	    	break;	    	
-	    case EDpsPaperJam:
-	    	aErr = EPbStatusErrorReasonPaperJam;
-	    	break;	    
-	    case EDpsPaperNearlyEmpty:
-	    	aErr = EPbStatusErrorReasonPaperNearlyEmpty;
-	    	break;	    
-	    case EDpsPaperTypeSizeNoMatch:
-	    	aErr = EPbStatusErrorReasonPaperCombination;
-	    	break;        	
-        default:
-        	aErr = EPbStatusErrorReasonPaper;
-        	break;
-        }
-	}
-
-void CPBPrintingDevice::HandleInkError ( const TDpsJobEndReason& aReason, TPrintMessageCodes& aErr )
-	{
-	 switch ( aReason.iInkMinor )
-        {
-        case EDpsInkEmpty:
-        	aErr = EPbStatusErrorReasonInkEmpty;
-        	break;        	
-	    case EDpsInkLow:
-	    	aErr = EPbStatusErrorReasonInkLow;
-	    	break;	    	
-		case EDpsInkWaste:
-			aErr = EPbStatusErrorReasonInkWaste;
-			break;
-        default:
-        	aErr = EPbStatusErrorReasonInk;
-        	break;        	
-        }
-	}
-
-void CPBPrintingDevice::HandleHwError ( const TDpsJobEndReason& aReason, TPrintMessageCodes& aErr )
-	{
-	 switch ( aReason.iHardMinor )
-        {
-        case EDpsHardFatal:
-        	aErr = EPbStatusErrorReasonHardwareFatal;
-        	break;        	
-	    case EDpsHardServiceCall:
-	    	aErr = EPbStatusErrorReasonHardwareServiceCall;
-	    	break;	    	
-	    case EDpsHardNotAvailable:
-	    	aErr = EPbStatusErrorReasonHardwarePrinterUnavailable;
-	    	break;	    	
-	    case EDpsHardBusy:
-	    	aErr = EPbStatusErrorReasonHardwarePrinterBusy;
-	    	break;	    	
-	    case EDpsHardLever:
-	    	aErr = EPbStatusErrorReasonHardwareLever;
-	    	break;	    	
-	    case EDpsHardCoverOpen:
-	    	aErr = EPbStatusErrorReasonHardwareCoverOpen;
-	    	break;	    	
-	    case EDpsHardNoMarkingHead:
-	    	aErr = EPbStatusErrorReasonHardwareNoMarkingAgent;
-	    	break;	    	
-	    case EDpsHardInkCoverOpen:
-	    	aErr = EPbStatusErrorReasonHardwareCoverOpen;
-	    	break;	    	
-	    case EDpsHardNoInkCartridge:
-	    	aErr = EPbStatusErrorReasonHardwareNoInkCartridge;
-	    	break;
-        default:
-        	aErr = EPbStatusErrorReasonHardware;
-        	break;
-        }                        
-	}
-
-void CPBPrintingDevice::HandleFileError ( const TDpsJobEndReason& aReason, TPrintMessageCodes& aErr )
-	{
-	 switch ( aReason.iFileMinor )
-        {
-        case EDpsFilePrintInfo:
-        	aErr = EPbStatusErrorReasonFilePrintInfo;
-        	break;        	
-        case EDpsFileDecode:
-        	aErr = EPbStatusErrorReasonFileFileDecode;
-        	break;        	
-        default:
-        	aErr = EPbStatusErrorReasonFile;
-        	break;
-        }
-	}
-
-TBool CPBPrintingDevice::HasCapability( TPrintCapability& aCapability, TPrintCapabilityOptions aOption )
-	{
-	for ( TInt i = 0; i < aCapability.iEnumCount; ++i )
-		{
-		if ( aCapability.iEnumCodes[i] == aOption )
-    		{
-    		return ETrue;
-    		}
-		}
-	return EFalse;
-	}
-
-void CPBPrintingDevice::SaveConfigInfoL()
-	{
-	LOG("CPBPrintingDevice::SaveConfigInfoL begin");
-	
-	RFs rFs;
-    RFile file;
-
-   	User::LeaveIfError( rFs.Connect() );
-    CleanupClosePushL( rFs );
-    
-    User::LeaveIfError( file.Replace( rFs, iCongFileName->Des() ,EFileWrite ) ); // create the file for writing
-
-	RFileWriteStream stream( file );
-    CleanupClosePushL( stream );
-    
-    ExternalizeL( stream );
-
-	CleanupStack::PopAndDestroy( &stream );
-	CleanupStack::PopAndDestroy( &rFs );
-	
-	LOG("CPBPrintingDevice::SaveConfigInfoL end");
-	}
-
-void CPBPrintingDevice::ExternalizeL( RWriteStream& aStream ) const
-	{
-	LOG("CPBPrintingDevice::ExternalizeL begin");
-	
-	aStream << iPrinter.iDisplayName;
-	aStream.WriteUint32L( iPrinter.iVendor ); 
-	aStream.CommitL();
-	
-	LOG("CPBPrintingDevice::ExternalizeL end");
-	}
-
-void CPBPrintingDevice::ReadConfigInfoL()
-    {
-    LOG("CPBPrintingDevice::ReadConfigInfoL begin");
-    
-    RFs rFs;
-    RFile file;
-
-	User::LeaveIfError( rFs.Connect() );
-    CleanupClosePushL( rFs );
-    
-    User::LeaveIfError( file.Open( rFs, iCongFileName->Des() ,EFileRead ) ); 
-    
-	RFileReadStream readStream( file );
-    CleanupClosePushL( readStream );
-
-    readStream >> iPrinter.iDisplayName;
-    iPrinter.iVendor = readStream.ReadUint32L(); 
-	
- 	CleanupStack::PopAndDestroy( &readStream );
-	CleanupStack::PopAndDestroy( &rFs );
-   
-    LOG("CPBPrintingDevice::ReadConfigInfoL end");
-    }
-
-//  End of File