--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/bteng/inc/btengsrvpluginmgr.h Mon Jan 18 20:28:57 2010 +0200
@@ -0,0 +1,335 @@
+/*
+* Copyright (c) 2006 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: Helper class for BTEng server to manage and interface with
+* the profile plug-ins the profile plug-ins.
+*
+*/
+
+
+
+#ifndef BTENGSRVPLUGINMGR_H
+#define BTENGSRVPLUGINMGR_H
+
+#include "btengclientserver.h"
+#include "btengplugin.h"
+
+class CBTEngServer;
+class TEComResolverParams;
+typedef RPointerArray<CImplementationInformation> RImplInfoPtrArray;
+typedef RPointerArray<CBTEngPlugin> RPluginPtrArray;
+
+/** ?description */
+//const ?type ?constant_var = ?constant;
+
+
+/**
+ * ?one_line_short_description
+ *
+ * ?more_complete_description
+ *
+ * @lib ?library
+ * @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CBTEngSrvPluginMgr ) : public CBase,
+ public MBTEngPluginObserver
+ {
+
+public:
+
+ /**
+ * Two-phase constructor
+ */
+ static CBTEngSrvPluginMgr* NewL( CBTEngServer* aServer );
+
+ /**
+ * Destructor
+ */
+ virtual ~CBTEngSrvPluginMgr();
+
+ /**
+ * ?description
+ *
+ * @since S60 v3.2
+ * @param ?arg1 ?description
+ */
+ void ProcessCommandL( const RMessage2& aMessage );
+
+ /**
+ * ?description
+ *
+ * @since S60 v3.2
+ */
+ void DisconnectAllPlugins();
+
+ /**
+ * ?description
+ *
+ * @since S60 v3.2
+ * @param aParams Selection parameters for loading a specific plugin.
+ * If it is empty (zero-length descriptor),
+ * all plug-ins are loaded.
+ */
+ void LoadProfilePluginsL( const TEComResolverParams aParams );
+
+ /**
+ * ?description
+ *
+ * @since S60 v3.2
+ * @return The number of ECom plug-ins still to load.
+ */
+ TInt LoadPluginL();
+
+ /**
+ * ?description
+ *
+ * @since S60 v3.2
+ */
+ void UnloadProfilePlugins();
+
+ /**
+ * ?description
+ *
+ * @since S60 v3.2
+ * @param ?arg1 ?description
+ */
+ void LoadBTSapPluginL();
+
+ /**
+ * ?description
+ *
+ * @since S60 v3.2
+ * @param ?arg1 ?description
+ */
+ void UnloadBTSapPlugin();
+
+ /**
+ * Disconnects the profile specified by aProfile
+ * Currently used only when emergency call is created for disconnecting SAP
+ *
+ * @since S60 v3.2
+ * @param ?arg1 ?description
+ */
+ void DisconnectProfile( TBTProfile aProfile );
+
+ /**
+ * Checks if any audio connection is established
+ *
+ * @since S60 v5.0
+ * @return ETrue if any audio connection is established
+ */
+ TBool CheckAudioConnectionsL();
+
+ /**
+ * Returns the service (limited to services managed in bteng scope)
+ * level connection status of the specified device.
+ *
+ * @param aAddr the address of the device
+ * @return one of TBTEngConnectionStatus enums
+ */
+ TBTEngConnectionStatus IsDeviceConnected( const TBTDevAddr& aAddr );
+
+// from base class MBTEngPluginObserver
+
+ /**
+ * From MBTEngPluginObserver.
+ * ?description
+ *
+ * @since S60 v3.2
+ * @param ?arg1 ?description
+ */
+ virtual void ConnectComplete( const TBTDevAddr& aAddr,
+ TBTProfile aProfile, TInt aErr,
+ RBTDevAddrArray* aConflicts = NULL );
+
+ /**
+ * From MBTEngPluginObserver.
+ * ?description
+ *
+ * @since S60 v3.2
+ * @param ?arg1 ?description
+ */
+ virtual void DisconnectComplete( const TBTDevAddr& aAddr,
+ TBTProfile aProfile, TInt aErr );
+
+private:
+
+ /**
+ * C++ default constructor
+ */
+ CBTEngSrvPluginMgr( CBTEngServer* aServer );
+
+ /**
+ * Symbian 2nd-phase constructor
+ */
+ void ConstructL();
+
+ /**
+ * ?description
+ *
+ * @since S60 v3.2
+ * @param ?arg1 ?description
+ * @return ?description
+ */
+ TInt Connect( const TBTDevAddr& aAddr, const TBTDeviceClass& aDeviceClass );
+
+ /**
+ * ?description
+ *
+ * @since S60 v3.2
+ * @param ?arg1 ?description
+ * @return ?description
+ */
+ TInt CancelConnect( const TBTDevAddr& aAddr );
+
+ /**
+ * ?description
+ *
+ * @since S60 v3.2
+ * @param ?arg1 ?description
+ * @return ?description
+ */
+ TInt Disconnect( const TBTDevAddr& aAddr, TBTDisconnectType aDiscType );
+
+
+ /**
+ * ?description
+ *
+ * @since S60 v5.1
+ * @param aDeviceClass Device class of the remote device is used if
+ * no EIR data of this device exists.
+ * @param aAddr The address of remote device is used to get EIR data.
+ * Firstly use the service UUIDs in EIR data to determine if
+ * the remote device is connectable or not.
+ * @return The index of plugin in the plugin array, which supports the
+ * profiles via device class,
+ * .
+ */
+ TInt GetConnectablePluginIndex( const TBTDeviceClass& aDeviceClass, const TBTDevAddr& aAddr = TBTDevAddr() );
+
+ /**
+ * ?description
+ *
+ * @since S60 v3.2
+ * @param ?arg1 ?description
+ * @return ?description
+ */
+ TInt GetConnectedAddresses( RBTDevAddrArray& aAddrArray, TBTProfile aProfile );
+
+ /**
+ * Checks from feature manager and central repository if the requested
+ * feature is supported and enabled.
+ *
+ * @since S60 v3.2
+ * @param aProfile The profile to check if it is supported and enabled.
+ */
+ TBool CheckFeatureEnabledL( TInt aProfile );
+
+ /**
+ * Maps a Clasee of Device to a profile identifier (UUID short form).
+ *
+ * @since S60 v3.2
+ * @param aProfile The profile to map to a feature.
+ */
+ static TBTProfile MapDeviceClassToProfile( const TBTDeviceClass& aDeviceClass );
+
+ /**
+ * Maps a profile identifier (UUID short form) to a feature
+ * to check from the feature manager.
+ *
+ * @since S60 v3.2
+ * @param aProfile The profile to map to a feature.
+ */
+ static TInt MapProfileToFeature( TInt aProfile );
+
+ /**
+ * Connectable if the UUID in Eir data is supported by plugins.
+ *
+ * @since S60 v5.1
+ * @return The first index of plugin supporting specified UUID.
+ */
+ TInt GetConnectablePluginIndexByEir();
+
+ /**
+ * Get Eir data of device in cache.
+ *
+ * @since S60 v5.1
+ * @param aAddr The address of remote device
+ * @return Symbian error code
+ */
+ TInt DoGetEirData( const TBTDevAddr& aAddr );
+
+ /**
+ * Utility function to check if profile supported by plugins.
+ *
+ * @param aProfile The profile to check
+ * @return The index of the first plugin in plugin array
+ * supporting this profile, KErrNotFound if not supported.
+ */
+ TInt GetFirstPluginOfProfileSupported( TBTProfile aProfile );
+
+ /**
+ Returns ETrue if the specified plugin is to be loaded in the current
+ 'Enterprise Disabling of Bluetooth' mode, EFalse otherwise.
+ @param The implementation UID of the plugin we want to know whether should
+ be elided for Enterprise Disabling of Bluetooth reasons.
+ @return See description.
+ */
+ TBool FilterByEnterpriseDisablementModeL(TUid aUid) const;
+
+private: // data
+
+ /**
+ * Array of pointers to ECom plug-in information objects.
+ */
+ RImplInfoPtrArray iPluginInfoArray;
+
+ /**
+ * Array of pointers to the BTEng ECom plug-ins loaded by BTEng.
+ */
+ RPluginPtrArray iPluginArray;
+
+ /**
+ * The server instance.
+ * Not own.
+ */
+ CBTEngServer* iServer;
+
+ /**
+ * Hose Resolver to get cached EIR.
+ * Own.
+ */
+ RHostResolver iHostResolver;
+
+ /**
+ * used for getting cached EIR.
+ */
+ TInquirySockAddr iInquirySockAddr;
+
+ /**
+ * Entry to store inquiry result.
+ */
+ TNameEntry iNameEntry;
+
+ /**
+ * Container of UUIDs, gotten from Eir data.
+ * Own.
+ */
+ RExtendedInquiryResponseUUIDContainer iUuidContainter;
+ };
+
+
+//#include "?include_file.inl"
+
+
+#endif // BTENGSRVPLUGINMGR_H