ImagePrint/ImagePrintEngine/DeviceProtocols/btprotocol/inc/crsbtdevice.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:30:38 +0100
branchRCL_3
changeset 21 d59c248c9d36
parent 0 d11fb78c4374
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201031 Kit: 201035

/*
* 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:  Contains the CRsBtDevice class definition.
*
*/


#ifndef CRSBTDEVICE_H
#define CRSBTDEVICE_H

#include <e32base.h>
#include <bt_sock.h>
#include <btdevice.h>

#include "tprinter.h"
#include "btprotocolconsts.h"
#include "tprintcapability.h"

/**
  * @brief Stores information on Bluetooth device.
  *
  * Contains information related to a Bluetooth device, such as a printer. This includes Bluetooth
  * information like device ID and device class, BPP and OPP information like port (channel), number of prints made,
  * and time stamps of discovery and last use.
  */
NONSHARABLE_CLASS( CRsBtDevice ): public CBase
	{
		public:
			TBool UpdateDeviceL(CRsBtDevice &aDevice);
			TBool UpdateDeviceAndBPPL(CRsBtDevice& aDevice);
			TBool UpdateAllL(CRsBtDevice &aDevice);
			TBool UpdateUsedL(CRsBtDevice &aDevice);

			void SetDisappeared(TBool aDisappeared);
			TBool IsDisappeared() const;

			void SetSupportedProtocols(TUint aSupportedProtocols);
			TUint SupportedProtocols() const;

			void SetBPPPort(TUint aPort);
			TUint BPPPort() const;

			void SetSTSPort(TUint aPort);
			TUint STSPort() const;

			void SetOPPPort(TUint aPort);
			TUint OPPPort() const;

			void SetTimeLastUsed(TTime aTime);
			TTime TimeLastUsed() const;

			void SetTimeDiscovered(TTime aTime);
			TTime TimeDiscovered() const;

			const TBTDevAddr& BDAddr() const;
			TBTDeviceClass DeviceClass() const;

			TBool Equals( const CRsBtDevice &aDevice ) const;
			CRsBtDevice* CopyL();
			CRsBtDevice* CopyL(CRsBtDevice& aSource);

			static CRsBtDevice* NewLC(const CRsBtDevice &a);
			static CRsBtDevice* NewLC(const TNameRecord &aName);
			static CRsBtDevice* NewLC();
			static CRsBtDevice* NewL(const CRsBtDevice &a);
			static CRsBtDevice* NewL(const TNameRecord &aName);
			static CRsBtDevice* NewL();

			virtual ~CRsBtDevice();

			void ExternalizeL(RWriteStream& aStream) const;
			void InternalizeL(RReadStream& aStream);

			const TDesC& FriendlyName() const;

			void SetPrinterModelL(const TDesC& aModelName);
			const TDesC& GetPrinterModel() const;

			void SetJustFound(TBool aJustFound);
			TBool IsJustFound() const;

			TInt DeviceId() const;
			void SetDeviceId(TInt aNewId);
			
			void SetVendor( TPrinter::TPrinterVendor aVendor );
			TPrinter::TPrinterVendor Vendor() const;

			void AddCapability(TPrintCapability& aCapability);
			void GetCapabilityIDs(RArray<TInt>& aCapabilityIDs );
			TInt GetCapability(const TInt aCapabilityID, TPrintCapability& aCapability);
			TInt SetDefaultCapability(TInt aCapabilityID, TInt aValue);
			TInt CapabilityCount() const;

			TPrinter ToTPrinter();
			TBool IsUsed() const;
			void SetUsed(TBool aUsed);
			
			TInt UsedProtocol() const;
			TInt ComposeUsedProtocol(TInt aRequestedProtocols);
			void SetUsedProtocol(TInt aProtocol);

		private:
			CRsBtDevice();
			// copy constructor
			CRsBtDevice(const CRsBtDevice &a);
			
			void ConstructL(const TNameRecord &aName);
			void ConstructL(const CRsBtDevice &a);
			void ConstructL();
			void Init();
			void ExternalizeCapabilitiesL(RWriteStream& aStream) const;
			void InternalizeCapabilitiesL(RReadStream& aStream);

		private:
			TTime iTimeLastUsed;
			TTime iTimeDiscovered;
			TUint iBPPPort;
			TUint iSTSPort;
			TUint iOPPPort;
			TUint iSupportedProtocols;
			TPrinter::TPrinterVendor iVendor;
			CBTDevice* iDevice;
			HBufC *iPrinterModel;
			TBool iJustFound; 
			TInt iInternalDeviceId;

			TBool iUsed;			
			TBool iDisappeared;			

			TInt		iUsedProtocol;
			RArray<TPrintCapability> iCapabilities;


	};

#endif // CRSBTDEVICE_H

//  End of File