diff -r 000000000000 -r f63038272f30 bluetoothengine/btsap/inc/BTSapPlugin.h --- /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 + +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