--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetooth/btstack/l2cap/l2capMuxController.h Fri Jan 15 08:13:17 2010 +0200
@@ -0,0 +1,86 @@
+// Copyright (c) 1999-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:
+// Holds a list of all Muxers and listening SAP signal handlers.
+//
+//
+
+#ifndef L2CAPMUXCONTROLLER_H
+#define L2CAPMUXCONTROLLER_H
+
+#include <e32base.h>
+#include <e32std.h>
+
+class CL2CAPMux;
+class CL2CapSAPSignalHandler;
+class CServProviderBase;
+class TBTDevAddr;
+class CL2CAPProtocol;
+
+NONSHARABLE_CLASS(CL2CAPMuxController) : public CBase
+ {
+public:
+ CL2CAPMuxController(CL2CAPProtocol& aProtocol);
+ ~CL2CAPMuxController();
+
+ TInt BearerConnectComplete(const TBTDevAddr& aAddr, CServProviderBase* aSAP);
+ TInt AttachPassiveSignalHandler(CL2CapSAPSignalHandler& aSAPSignalHandler,const TBTDevAddr& aAddr);
+ void AttachListeningSignalHandler(CL2CapSAPSignalHandler& aSAPSignalHandler);
+ void AttachBoundSignalHandler(CL2CapSAPSignalHandler& aSAPSignalHandler);
+ TInt AttachActiveSignalHandler(CL2CapSAPSignalHandler& aSAPSignalHandler,const TBTDevAddr& aAddr);
+ CL2CapSAPSignalHandler* FindListeningSignalHandler(TL2CAPPort aPort);
+ CL2CapSAPSignalHandler* FindIdleSignalHandler(TL2CAPPort aPort);
+ inline CL2CAPProtocol& Protocol() const;
+
+ void UpdateMuxerPriorities();
+ TInt FindFreeUserPSM(TL2CAPPort& aPSM);
+
+ inline TBool CanProtocolClose() const;
+
+private:
+ CL2CAPMux* FindMuxer(const TBTDevAddr& aAddr);
+ CL2CAPMux* CreateMuxerL(const TBTDevAddr& aAddr);
+
+protected:
+
+private:
+ enum
+ {
+ EBaseMuxerPriority = CActive::EPriorityStandard,
+ };
+
+ // Dbl link list of Muxers
+ TDblQue<CL2CAPMux> iMuxers;
+
+ // Dbl link list of sap signal handlers that are only bound as yet
+ TDblQue<CL2CapSAPSignalHandler> iBoundSapSignalHandlers;
+
+ // Dbl link list of listening sap signal handlers
+ TDblQue<CL2CapSAPSignalHandler> iListeningSapSignalHandlers;
+
+ CL2CAPProtocol& iProtocol;
+
+ };
+
+inline CL2CAPProtocol& CL2CAPMuxController::Protocol() const
+ {
+ return iProtocol;
+ }
+
+inline TBool CL2CAPMuxController::CanProtocolClose() const
+ {
+ // Only close if all of the containers are empty.
+ return (iMuxers.IsEmpty() && iBoundSapSignalHandlers.IsEmpty() && iListeningSapSignalHandlers.IsEmpty());
+ }
+
+#endif