--- /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