diff -r 43824b19ee35 -r 837dcc42fd6a bluetoothengine/btnotif/btnotifsrv/inc/btnotifconnectiontracker.h --- a/bluetoothengine/btnotif/btnotifsrv/inc/btnotifconnectiontracker.h Fri May 14 16:01:46 2010 +0300 +++ b/bluetoothengine/btnotif/btnotifsrv/inc/btnotifconnectiontracker.h Thu May 27 13:01:44 2010 +0300 @@ -1,23 +1,18 @@ /* -* ============================================================================ -* Name : btnotifconnectiontracker.h -* Part of : bluetoothengine / btnotif -* Description : Bluetooth connection tracker and manager. +* Copyright (c) 2010 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". * -* Copyright © 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. * -* Initial Contributors: -* Nokia Corporation - initial contribution. +* Contributors: * -* Contributors: -* Nokia Corporation -* ============================================================================ -* Template version: 4.2 +* Description: Bluetooth connection tracker and manager. +* */ #ifndef BTNOTIFCONNECTIONTRACKER_H @@ -27,13 +22,11 @@ #include #include #include -#include -#include #include "btnotifserver.h" -class CBTNotifConnection; class CBTNotificationManager; class CbtnotifConnectionTrackerTest; +class CBTNotifPairingManager; @@ -42,10 +35,7 @@ * * @since Symbian^4 */ -NONSHARABLE_CLASS( CBTNotifConnectionTracker ) : public CBase, - public MBluetoothPhysicalLinksNotifier, - public MBTEngConnObserver, - public MBtSimpleActiveObserver +NONSHARABLE_CLASS( CBTNotifConnectionTracker ) : public CBase { public: @@ -99,43 +89,26 @@ */ inline RSocketServ& SocketServerSession() { return iSockServ; } - + /** - * Get the handle to the Bluetooth pairing server. - * This handle can be used for creating subsessions. - * - * @since Symbian^4 - * @return Session with the socket server or NULL. - */ - inline RBluetoothPairingServer* PairingServerSession() - { return iPairingServ; } - - /** - * Processes a message from a notifier client related to connections. + * Processes a message for notifiers related to pairings. + * ( These are usually issued by BT stack. However, any application + * is not restricted to do so (e.g., for testing purpose). * * @since Symbian^4 * @param aMessage The message containing the details of the client request. */ - void DispatchNotifierMessageL( const RMessage2& aMessage ); - + void HandlePairingNotifierRequestL( const RMessage2& aMessage ); + /** * Handle a request related to pairing. * * @since Symbian^4 - * @param aUid The UID of the notification request. + * @param aMessage The message containing the details of the client request. */ void HandleBondingRequestL( const RMessage2& aMessage ); /** - * Handle a change in the number of physical connections. - * This also handles the case where a connection monitor has finished - * its processing, and is now ready for removal. - * - * @since Symbian^4 - */ - void HandleLinkCountChangeL(); - - /** * Check repeated connection attempts, and record rejected/accepted queries. * * @since Symbian^4 @@ -146,104 +119,6 @@ */ TBool UpdateBlockingHistoryL( const CBTDevice* aDevice, TBool aAccepted ); -// from base class MBluetoothPhysicalLinksNotifier - /** Notification of a requested connection coming up. - * If no error is reported, then that connection is ready for use. - * - * @since Symbian^4 - * @param aErr the returned error - */ - virtual void HandleCreateConnectionCompleteL( TInt aErr ); - - /** Notification of a requested disconnection having taken place. - * If no error is reported, then that connection has been closed. - * - * @since Symbian^4 - * @param aErr the returned error - */ - virtual void HandleDisconnectCompleteL( TInt aErr ); - - /** Notification that all existing connections have been torn down. - * If no error is reported, then there are no Bluetooth connections existing. - * - * @since Symbian^4 - * @param aErr the returned error - */ - virtual void HandleDisconnectAllCompleteL( TInt aErr ); - -// from base class MBTEngConnObserver - - /** - * From MBTEngConnObserver. - * Indicates to the caller that a service-level connection has completed. - * This function is called for both incoming and outgoing connections. - * This function is also called when an outgoing connection request fails, - * e.g. with error code KErrCouldNotConnect. - * When this function is called, new commands can be issued to the - * CBTEngConnMan API immediately. - * - * @since S60 v3.2 - * @param aAddr The address of the remote device. - * @param aErr Status information of the connection. KErrNone if the - * connection succeeded, otherwise the error code with - * which the outgoing connection failed. KErrAlreadyExists - * is returned if there already is an existing connection - * for the selected profile(s), or otherwise e.g. - * KErrCouldNotConnect or KErrDisconnected for indicating - * connection problems. - * @param aConflicts If there already is a connection for the selected - * profile(s) of an outgoing connection request (the - * selection is performed by BTEng), then this array - * contains the bluetooth device addresses of the - * remote devices for those connections. - */ - virtual void ConnectComplete( TBTDevAddr& aAddr, TInt aErr, - RBTDevAddrArray* aConflicts = NULL ); - - /** - * From MBTEngConnObserver. - * Indicates to the caller that a service-level connection has disconnected. - * When this function is called, new commands can be issued to the - * CBTEngConnMan API immediately. - * - * @since S60 v3.2 - * @param aAddr The address of the remote device. - * @param aErr The error code with which the disconnection occured. - * KErrNone for a normal disconnection, - * or e.g. KErrDisconnected if the connection was lost. - */ - virtual void DisconnectComplete( TBTDevAddr& aAddr, TInt aErr ); - -// from base class MBtSimpleActiveObserver - - /** - * From MBtSimpleActiveObserver. - * Callback to notify that an outstanding request has completed. - * - * @since Symbian^4 - * @param aActive The active object helper that completed this request. - * @param aStatus The status of the completed request. - */ - virtual void RequestCompletedL( CBtSimpleActive* aActive, TInt aStatus ); - - /** - * From MBtSimpleActiveObserver. - * Callback for handling cancelation of an outstanding request. - * - * @since Symbian^4 - * @param aId The ID that identifies the outstanding request. - */ - virtual void CancelRequest( TInt aRequestId ); - - /** - * Callback to notify that an error has occurred in RunL. - * - * @param aActive Pointer to the active object that completed. - * @param sError The error occured in RunL - */ - virtual void HandleError( CBtSimpleActive* aActive, - TInt aError ); - private: CBTNotifConnectionTracker( CBTNotifServer* aServer ); @@ -251,43 +126,6 @@ void ConstructL(); /** - * Parse a client message and find the correct connection handler - * for dispatching a request. - * The parsed client message may be a request that is being served, - * in case a cancel request has come in. The opcode identifies the - * client message that is currently being dispatched. - * - * @since Symbian^4 - * @param aOpcode The opcode of the original request. - * @param aMessage The client message to parse. - * @param aBuffer On return this contains the parameters read from the message. - * @return The connection that is identified by the address in the - * message, or NULL if none found. - */ - CBTNotifConnection* FindConnectionFromMessageL( TInt aOpcode, - const RMessage2& aMessage, TDes8& aBuffer ); - - /** - * Parse the Bluetooth address from a request for some notification. - * - * @since Symbian^4 - * @param aUid The UID of the notification request. - * @param aParamsBuf Descriptor containing the parameter read from the - * client message. - * @return Bluetooth address parsed from the descriptor. - */ - TBTDevAddr ParseAddressL( TInt aUid, const TDesC8& aParamsBuf ) const; - - /** - * Find the handler of a specific connection. - * - * @since Symbian^4 - * @param aAddr The remote device address identifying the connection. - * @return Connnection handler or NULL; - */ - CBTNotifConnection* FindConnectionHandler( const TBTDevAddr& aAddr ) const; - - /** * Record and check the time between connection attempts. * * @since Symbian^4 @@ -300,30 +138,6 @@ private: // data /** - * PubSub key for tracking the number of connections. - */ - RProperty iLinkCount; - -// ToDo: remove this when registry notifications API is available!! - /** - * PubSub key for tracking registry changes. - */ - RProperty iRegistryChange; - - /** - * Helper active object for observing the link count. - * Own. - */ - CBtSimpleActive* iRegistryActive; -// End ToDo - - /** - * Array of pointers to observers of individual connections. - */ - RPointerArray iConnArray; -// RHashMap iConnArray; - - /** * Time of the last denied connection attempt. */ TInt64 iLastReject; @@ -344,50 +158,16 @@ RSocketServ iSockServ; /** - * Address placeholder for receiving secure simple pairing results. - */ - TBTDevAddr iSspResultAddr; - - /** - * Session with pairing server for receiving secure simple pairing results. - */ - RBluetoothPairingResult iSspResultSession; - - /** - * Single session with the pairing server, to be used for subsessions. - * Own. - */ - RBluetoothPairingServer* iPairingServ; - - /** - * Object for managing the piconet. - * Own. - */ - CBTEngConnMan* iConnMan; - - /** - * Object for managing the piconet. - * Own. - */ - CBluetoothPhysicalLinks* iPhyLinks; - - /** - * Helper active object for observing the link count. - * Own. - */ - CBtSimpleActive* iLinkCountActive; - - /** - * Helper active object for receiving secure simple pairing results. - * Own. - */ - CBtSimpleActive* iSspResultActive; - - /** * Reference to our parent the server class. * Not own. */ CBTNotifServer* iServer; + + /** + * Object for managing the application pairing. + * Own. + */ + CBTNotifPairingManager* iPairingManager; BTUNITTESTHOOK