bluetoothappprofiles/avrcp/remconbeareravrcp/inc/avrcprouter.h
changeset 0 f63038272f30
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/inc/avrcprouter.h	Mon Jan 18 20:28:57 2010 +0200
@@ -0,0 +1,123 @@
+// Copyright (c) 2004-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:
+//
+
+#ifndef AVRCPROUTER_H
+#define AVRCPROUTER_H
+
+/**
+@file
+@internalComponent
+@released
+*/
+
+#include <avctpservices.h>
+#include <e32base.h>
+#include "avrcp.h"
+#include "avrcpbearerinterface.h"
+
+
+class CAvrcpCommand;
+class CBrowseCommand;
+
+NONSHARABLE_CLASS(CRcpRouter) : public CBase, public MAvctpEventNotify
+	{		
+private:
+	enum TAvrcpRouterState
+		{
+		EAvrcpRouterSending,
+		EAvrcpRouterCanSend
+		};
+
+public:
+	~CRcpRouter();
+		
+	// Data functions called from command handlers
+	void AddToSendQueue(CAvrcpCommand& aCommand);
+	void RemoveFromSendQueue(CAvrcpCommand& aCommand);
+	
+	// Control functions called from bearer
+	TInt ConnectRequest(const TBTDevAddr& aAddr);	
+	TInt DisconnectRequest(const TBTDevAddr& aAddr);
+	
+	// MAvctpEventNotify functions
+	virtual void MaenAttachIndicate(const TBTDevAddr& aBTDevice, TInt aMtu, TBool& aAccept);
+				 
+	virtual void MaenAttachConfirm(const TBTDevAddr& aBTDevice, TInt aMtu, TInt aConnectResult);
+	
+	virtual void MaenDetachIndicate(const TBTDevAddr& aBTDevice); 
+	
+	virtual void MaenDetachConfirm(const TBTDevAddr& aBTDevice, TInt aDisconnectResult); 
+	
+	virtual void MaenMessageReceivedIndicate(const TBTDevAddr& aBTDevice,
+					SymbianAvctp::TTransactionLabel aTransactionLabel,
+					SymbianAvctp::TMessageType aType,
+					TBool aIpidBitSet,
+					const TDesC8& aMessageInformation);
+					
+	virtual void MaenMessageSendComplete(const TBTDevAddr& aBTDevice, 
+					SymbianAvctp::TTransactionLabel aTransactionLabel,   
+					TInt aSendResult); 
+
+	virtual void MaenCloseComplete();
+	
+	virtual void MaenErrorNotify(const TBTDevAddr& aBTDevice, TInt aError);			
+	
+	virtual void MaenExtensionInterfaceL(TUid aInterface, void*& aObject); 	
+		
+protected:
+	explicit CRcpRouter(MAvrcpBearer& aBearer);
+	
+private:
+	// Utility functions
+	void Send();
+	
+protected:
+	MAvctpChannel*				iChannel;
+	MAvrcpBearer&				iBearer;
+	
+	TDblQue<CAvrcpCommand>		iSendQueue;
+	TAvrcpRouterState			iState;
+//	TAvctpChannel				iChannel;
+
+	};
+
+NONSHARABLE_CLASS(CControlRouter) : public CRcpRouter
+	{
+public:
+	static CControlRouter* NewL(RAvctp& aAvctp, MAvrcpBearer& aBearer);
+	~CControlRouter();
+	
+private:
+	explicit CControlRouter(RAvctp& aAvctp, MAvrcpBearer& aBearer);
+	void ConstructL();
+	
+private:
+	RAvctp&	iAvctp;
+	};
+
+NONSHARABLE_CLASS(CBulkRouter) : public CRcpRouter
+	{
+public:
+	static CBulkRouter* NewL(RAvctp& aAvctp, MAvrcpBearer& aBearer);
+	~CBulkRouter();
+	
+private:
+	explicit CBulkRouter(RAvctp& aAvctp, MAvrcpBearer& aBearer);
+	void ConstructL();
+	
+private:
+	RAvctp&	iAvctp;
+	};
+#endif // AVRCPROUTER_H