--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btsap/inc/BTSapPlugin.h Mon Jan 18 20:28:57 2010 +0200
@@ -0,0 +1,176 @@
+/*
+* Copyright (c) 2004-2008 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:
+* BTSap plugin header definition
+*
+*/
+
+
+#ifndef BT_SAP_PLUGIN_H
+#define BT_SAP_PLUGIN_H
+
+// INCLUDES
+#include <btengplugin.h>
+
+enum TBTSapRejectReason
+ {
+ ERejectGeneralError,
+ ERejectReserved
+ };
+
+enum TBTSapDisconnectType
+ {
+ EDisconnectGraceful,
+ EDisconnectImmediate
+ };
+
+// FORWARD DECLARATIONS
+class TBTDevAddr;
+class CBTSapServerState;
+
+/*
+*
+*/
+class MSapAsyncObserver
+ {
+ public:
+ enum TOperation
+ {
+ EConnect,
+ ECancelConnect,
+ EDisconnect
+ };
+
+ virtual void OperationCompletedL(TOperation aOperation, TInt aError) = 0;
+ };
+
+/*
+* A class that proveides a utility service for calling
+* CSapServerState methods asychronously
+*/
+class CBTSapAsyncHelper : public CActive
+ {
+public:
+ static CBTSapAsyncHelper* NewL(CBTSapServerState* aServerState, MSapAsyncObserver* aObserver);
+ virtual ~CBTSapAsyncHelper();
+
+ void AsyncConnect(const TBTDevAddr& aAddr);
+ void AsyncCancelConnect(const TBTDevAddr& aAddr);
+ void AsyncDisconnect(const TBTDevAddr& aAddr, TBTSapDisconnectType aDiscType);
+
+private:
+ void ConstructL(CBTSapServerState* aServerState, MSapAsyncObserver* aObserver);
+ CBTSapAsyncHelper();
+
+ // From CActive
+ virtual void DoCancel();
+ virtual void RunL();
+
+private:
+ MSapAsyncObserver::TOperation iOperation;
+ CBTSapServerState* iServerState;
+ MSapAsyncObserver* iObserver;
+ TBTSapDisconnectType iDiscType;
+ };
+
+
+/**
+* CBTSapPlugin core class.
+* Implements the BT Engine ECom interface
+*/
+class CBTSapPlugin : public CBTEngPlugin, MSapAsyncObserver
+ {
+public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CBTSapPlugin* NewL();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CBTSapPlugin();
+
+public:
+ // From CBTEngPlugin (ECom)
+
+ virtual void GetSupportedProfiles( RProfileArray& aProfiles );
+
+ virtual void SetObserver( MBTEngPluginObserver* aObserver );
+
+ virtual TBool IsProfileSupported( const TBTProfile aProfile ) const;
+
+ virtual TInt Connect( const TBTDevAddr& aAddr );
+
+ virtual void CancelConnect( const TBTDevAddr& aAddr );
+
+ virtual TInt Disconnect( const TBTDevAddr& aAddr, TBTDisconnectType aDiscType );
+
+ virtual void GetConnections( RBTDevAddrArray& aAddrArray, TBTProfile aConnectedProfile );
+
+ virtual TBTEngConnectionStatus IsConnected( const TBTDevAddr& aAddr );
+
+ // From MSapAsyncObserver
+
+ void OperationCompletedL(MSapAsyncObserver::TOperation aOperation, TInt aError);
+
+public:
+
+ TInt AcceptSapConnection();
+
+ TInt RejectSapConnection(TBTSapRejectReason aReason = ERejectGeneralError);
+
+ TInt DisconnectSapConnection(TBTSapDisconnectType aType = EDisconnectGraceful);
+
+ TBool IsSapConnected();
+
+ TInt GetRemoteBTAddress(TBTDevAddr& aBTDevAddr);
+
+ void ConnectComplete();
+
+private:
+
+ /**
+ * Default constructor
+ */
+ CBTSapPlugin();
+
+ /**
+ * Two-Phase constructor
+ */
+ void ConstructL();
+
+ void StartBTSapServiceL();
+
+ void StopBTSapServiceL();
+
+private: // Data
+
+ enum TBTSapServiceState
+ {
+ EServiceOff,
+ EServiceOn,
+ EServiceShuttingDown
+ };
+
+ CBTSapServerState* iBTSapServerState;
+ TBTSapServiceState iServiceState;
+ MBTEngPluginObserver* iObserver;
+ CBTSapAsyncHelper* iAsyncHelper;
+ TBTDevAddr iAddr;
+ };
+
+#endif // BT_SAP_PLUGIN_H
+// End of File