bluetooth/btstack/linkmgr/interface/PhysicalLinksState.h
changeset 0 29b1cd4cb562
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetooth/btstack/linkmgr/interface/PhysicalLinksState.h	Fri Jan 15 08:13:17 2010 +0200
@@ -0,0 +1,236 @@
+// Copyright (c) 2005-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:
+//
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+#ifndef PHYSICALLINKSSTATE_H
+#define PHYSICALLINKSSTATE_H
+
+#include <e32cmn.h>
+#include <bttypes.h>
+#include <bluetooth/hci/hcitypes.h>
+
+class TBTBasebandLinkState;
+class TBTFeatures;
+class TLinkPolicy;
+class TBTDevAddr;
+class TBTDeviceClass;
+
+typedef RArray<THCIConnHandle> RHCIConnHandleArray;
+
+class MPhysicalLinksState
+/** An implementation of this interface would present a snapshot of
+	the current Physical, Asynchronous and Synchronous links
+	associated with a Bluetooth device.
+
+	It also provides information appertaining to a remote device at
+	the other end of a physical link.
+
+	It should be noted that the returned data are a snapshot of the
+	current links associated with a Bluetooth device.  They may become
+	stale very quickly.
+
+	Mixin class to be used as an interface to the stack.
+*/
+	{
+public:
+	/**Returns a list of 'connected' connection handles for all links
+	   of the specified type.  Pending connection handles are not
+	   returned	 by this method.
+
+	   The returned data are a snapshot and will grow stale. They
+	   should therefore be used immediately (in the same call stack)
+	   or not at all. It would be wise to check whether the returned
+	   links are still connected.
+
+	   @see TInt BasebandLinkState(TBTBasebandLinkState&
+	   aBasebandLinkState, const TBTDevAddr& aBDAddr);
+
+	   @param aConnectionHandles A client supplied dynamic array that,
+	   on successful completion of this operation, will be populated
+	   with the requested connection handles.
+
+	   @param aLinkType Indicates the type of link handles to be
+	   returned.
+
+	   @return Status code.
+	*/
+	virtual TInt MplsGetConnectionHandles(RHCIConnHandleArray& aConnectionHandles,
+										  TLinkType aLinkType) const = 0;
+
+	/**Returns the number of 'pending' connection handles for all
+	   links of the specified type.
+
+	   The returned data are a snapshot and will grow stale. They
+	   should therefore be used immediately (in the same call stack)
+	   or not at all.
+
+	   @param aConnectionHandles A client supplied TInt that, on
+	   successful completion of this operation, will be contain the
+	   number of pending connection handles.
+
+	   @param aLinkType Indicates the type of link handles to be
+	   returned.
+
+	   @return Status code.
+	*/
+	virtual TInt MplsGetNumPendingHandles(TInt& aConnectionHandles,
+										  TLinkType aLinkType) const = 0;
+
+	/**Returns a list of 'connected' connection handles for all links
+	   of the specified type and Bluetooth device address.	Pending
+	   connection handles are not returned by this method.
+
+	   The returned data are a snapshot and will grow stale. They
+	   should therefore be used immediately (in the same call stack)
+	   or not at all. It would be wise to check whether the returned
+	   links are still connected.
+
+	   @param aConnectionHandles A client supplied dynamic array that,
+	   on successful completion of this operation, will be populated
+	   with the requested connection handles.
+
+	   @param aLinkType Indicates the type of link handles to be
+	   returned.
+
+	   @param aBDAddr The client supplied Bluetooth device address of
+	   the remote device for which the list of links is required.
+
+	   @return Status code.
+	*/
+	virtual TInt MplsGetConnectionHandles(RHCIConnHandleArray& aConnectionHandles,
+										  TLinkType aLinkType,
+										  const TBTDevAddr& aBDAddr) const = 0;
+
+	/**Returns the number of 'pending' connection handles for all
+	   links of the specified type and Bluetooth device
+	   address.
+
+	   The returned data are a snapshot and will grow stale. They
+	   should therefore be used immediately (in the same call stack)
+	   or not at all.
+
+	   @param aConnectionHandles A client supplied TInt that, on
+	   successful completion of this operation, will contain the
+	   number of pending connection handles..
+
+	   @param aLinkType Indicates the type of link handles to be
+	   returned.
+
+	   @param aBDAddr The client supplied Bluetooth device address of
+	   the remote device for which the number of pending links is
+	   required.
+
+	   @return Status code.
+	*/
+	virtual TInt MplsGetNumPendingHandles(TInt& aConnectionHandles,
+										  TLinkType aLinkType,
+										  const TBTDevAddr& aBDAddr) const = 0;
+
+	/**Returns the Bluetooth device address associated with the
+	   supplied connection handle.
+
+	   @param aBDAddr A client supplied variable that, on successful
+	   completion of this operation, will be populated with the
+	   required Bluetooth device address.
+
+	   @param aConnectionHandle A client supplied connection handle
+	   for which the device address is required.
+
+	   @return Status code.
+	*/
+	virtual TInt MplsGetRemoteAddress(TBTDevAddr& aBDAddr,
+									  THCIConnHandle aConnectionHandle) const = 0;
+
+
+	/**Returns the remote device's class for the device specified by
+	   the Bluetooth device address.
+
+	   @param aDeviceClass A client supplied variable that, on
+	   successful completion of this operation, will be populated with
+	   the required Bluetooth device class.
+
+	   @param aBDAddr A client supplied Bluetooth device address for
+	   which the device class is required.
+
+	   @return Status code.
+	*/
+	virtual TInt MplsGetRemoteDeviceClass(TBTDeviceClass& aDeviceClass,
+										  const TBTDevAddr& aBDAddr) const = 0;
+
+
+	/**Returns the Bluetooth capabilities of the remote device
+	   specified by the Bluetooth device address.
+
+	   @param aRemoteSupportedFeatures A client supplied variable
+	   that, on successful completion of this operation, will be
+	   populated with the required Bluetooth remote supported
+	   features.
+
+	   @param aBDAddr A client supplied Bluetooth device address for
+	   which the device class is required.
+
+	   @return Status code.
+	*/
+	virtual TInt MplsGetRemoteSupportedFeatures(TBTFeatures& aRemoteSupportedFeatures,
+											const TBTDevAddr& aBDAddr) const = 0;
+
+
+	/**Returns the link policy settings for the physical link with the
+	   remote device specified by the Bluetooth device address
+	   parameter
+
+	   @param aLinkPolicySettings A client supplied variable that, on
+	   successful completion of this operation, will be populated with
+	   the required Bluetooth link policy settings
+
+	   @param aBDAddr A client supplied Bluetooth device address for
+	   which the device class is required.
+
+	   @return Status code.
+	*/
+	virtual TInt MplsGetLinkPolicySettings(TLinkPolicy& aLinkPolicySettings,
+									   const TBTDevAddr& aBDAddr) const = 0;
+
+
+	/**Returns the link state for the device specified by the
+	   Bluetooth device address.  The state indicates whether the link
+	   is up, down or pending. If the link is up, the following
+	   information may be determined: the role (master or slave),
+	   power mode (link mode, e.g Sniff Mode), max slots (currently 1,
+	   3 or 5), whether the link is encrypted, and whether the link is
+	   authenticated.
+
+	   @see TBTBasebandLinkState
+
+	   @param aBasebandLinkState A client supplied variable that, on
+	   successful completion of this operation, will be populated with
+	   the required Bluetooth link state.
+
+	   @param aBDAddr A client supplied Bluetooth device address for
+	   which the device class is required.
+
+	   @return Status code.
+	*/
+	virtual TInt MplsGetBasebandLinkState(TBTBasebandLinkState& aBasebandLinkState,
+									  const TBTDevAddr& aBDAddr) const = 0;
+	};
+
+
+#endif //PHYSICALLINKSSTATE_H