diff -r 43824b19ee35 -r 837dcc42fd6a bluetoothengine/btnotif/btnotifsrv/inc/btnotifconnection.h --- a/bluetoothengine/btnotif/btnotifsrv/inc/btnotifconnection.h Fri May 14 16:01:46 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,490 +0,0 @@ -/* -* ============================================================================ -* Name : btnotifconnection.h -* Part of : bluetoothengine / btnotif -* Description : Class for observing events of a single connection, and for -* managing any user notifications related to the connection. -* -* 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. -* -* Contributors: -* Nokia Corporation -* ============================================================================ -* Template version: 4.2 -*/ - -#ifndef BTNOTIFCONNECTION_H -#define BTNOTIFCONNECTION_H - -#include -#include -#include -#include - -#include "bluetoothnotification.h" - -#include "bluetoothtrace.h" - -class CBTNotifConnectionTracker; -class CBTNotifPairingHelper; - -/** - * Utility function for getting the name of a device to display. - * - * @since Symbian^4 - * @param aName On return, will hold the device name to display. - * @param aDevice Data dtructure holding the device record. - */ -void GetDeviceNameL( TBTDeviceName& aName, const CBTDevice& aDevice ); - - -/** - * CBTNotifConnection handles the connection information and operations - * related to remote devices. - * - * @since Symbian^4 - */ -NONSHARABLE_CLASS( CBTNotifConnection ) : public CBase, - public MBTNotificationResult, - public MBtSimpleActiveObserver, - public MBTEngDevManObserver - { - -public: - - /** Enumeration for the current active operation. */ - enum TOperation - { - EIdle, - EAuthorizing, - EPairing, - EBonding, - EAdditionalNotes, // Marks the queries and notes which follow - // notifier requests, but are done after completing - // the actual notifier message - EBlocking, - EInternalOperations, // Marks internal operations such as registry update. - EReadingRegistry, - EUpdatingRegistry - }; - - /** Array of BT profiles. */ - typedef RArray RBTProfileArray; - - /** - * Two-phased constructor. - * @param aAddr Address of the remote device for this connection. - * @param aTracker Pointer to our parent - */ - static CBTNotifConnection* NewLC( const TBTDevAddr& aAddr, - CBTNotifConnectionTracker* aTracker ); - - /** - * Destructor. - */ - virtual ~CBTNotifConnection(); - - /** - * Get the address of the remote device for this connection. - * - * @since Symbian^4 - * @return The BD_ADDR. - */ - inline const TBTDevAddr& Address() const - { return iAddr; } - - /** - * Get the device record of the remote device for this connection. - * - * @since Symbian^4 - * @return The CBTDevice device record. - */ - inline CBTDevice* BTDevice() const - { return iDevice; } - - /** - * Get the current operation for this connection. - * - * @since Symbian^4 - * @param aProfile The profile identifying the service. - */ - inline CBTNotifConnection::TOperation CurrentOperation() const - { return iCurrentOp; } - - /** - * Checks if we have any outstanding request, and handle the next - * in line. Also checks the link state, and informs the tracker - * if we have finished processing and the link is down. - * - * @since Symbian^4 - */ - void CheckNextOperationL(); - - /** - * Completes the first outstanding client request and removes - * it from the queue. - * - * @since Symbian^4 - * @param aReason The reason code to complete the message with. - * @param aReply Data to write back to the client. - */ - void CompleteClientRequest( TInt aReason, const TDesC8& aReply ); - - /** - * Distinguish the type request of this connection and queue it - * or handle it. - * - * @since Symbian^4 - * @param aParams The parameters for this request from the client. - * @param aMessage The message from the client. - */ - void HandleNotifierRequestL( const TDesC8& aParams, const RMessage2& aMessage ); - - /** - * Update an outstanding request for this connection. - * - * @since Symbian^4 - * @param aParams The parameters of the original request from the client. - * @param aMessage The update message from the client. - */ - void HandleNotifierUpdateL( const TDesC8& aParams, const RMessage2& aMessage ); - - /** - * Cancel an outstanding request for this connection. - * - * @since Symbian^4 - * @param aMessage The message from the client. (Temp! find better way!) - */ - void CancelNotifierRequestL( const RMessage2& aMessage ); - - /** - * Start a bonding operation with the remote device. - * - * @since Symbian^4 - * @param aMessage The message from the client. - */ - void StartBondingL( const RMessage2& aMessage ); - - /** - * Cancel an ongoing bonding operation with the remote device. - * - * @since Symbian^4 - */ - void CancelBondingL(); - - /** - * The pairing handler has completed a pairing operation. If this was part - * of a bonding procedure then this will complete the client request. - * - * @since Symbian^4 - */ - void PairingCompleted(); - - /** - * Process a new pairing result, and determine if we need to show - * anything to the user. - * - * @since Symbian^4 - * @param aError Result of the pairing operation. - */ - void PairingResult( TInt aError ); - - /** - * A service-level connection has been made with the device - * observed by this instance. The appropriate notification - * will be shown to the user. - * - * @since Symbian^4 - * @param aProfile The profile identifying the service. - */ - void ServiceConnectedL( TBTProfile aProfile ); - - /** - * A service-level connection has disconnected from the device - * observed by this instance. The appropriate notification - * will be shown to the user. - * - * @since Symbian^4 - * @param aProfile The profile identifying the service. - */ - void ServiceDisconnectedL( TBTProfile aProfile ); - - /** - * Ask the user if he/she wants to block future connection requests. - * - * @since Symbian^4 - */ - void LaunchBlockingQueryL(); - - /** - * Modify the record for the remote device in BTRegistry, with the - * changes already made in the local record. - * - * @since Symbian^4 - */ - void UpdateRegistryEntryL(); - - /** - * Modify the record for the remote device in BTRegistry, if - * aTrusted == true, then update trusted status after reading device - * info from registry - * - * @since Symbian^4 - */ - void UpdateRegistryEntryL(TBool aTrusted); - -// from base class MBTNotificationResult - - /** - * From MBTNotificationResult. - * Handle an intermediate result from a user query. - * This ffunction is called if the user query passes information - * back before it has finished i.e. is dismissed. The final acceptance/ - * denial of a query is passed back in MBRNotificationClosed. - * - * @since Symbian^4 - * @param aData the returned data. The actual format - * is dependent on the actual notifier. - */ - virtual void MBRDataReceived( CHbSymbianVariantMap & aData ); - - /** - * From MBTNotificationResult. - * The notification is finished. The resulting data (e.g. user input or - * acceptance/denial of the query) is passed back here. - * - * @since Symbian^4 - * @param aErr KErrNone or one of the system-wide error codes. - * @param aData the returned data. The actual format - * is dependent on the actual notifier. - */ - virtual void MBRNotificationClosed( TInt aError, const TDesC8& aData ); - -// 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 ); - -// from base class MBTEngDevmanObserver - - /** - * From MBTEngDevManObserver. - * Indicates to the caller that adding, deleting or modifying a device - * has completed. - * When this function is called, new commands can be issued to the - * CBTEngDevMan API immediately. - * - * @since S60 v3.2 - * @param aErr Status information, if there is an error. - */ - virtual void HandleDevManComplete( TInt aErr ); - - /** - * From MBTEngDevManObserver. - * Indicates to the caller that getting a device from registry - * has completed. - * - * @param aErr Status information, if there is an error. - * @param aDeviceArray Array of devices that match the given criteria - * (the array provided by the caller). - */ - virtual void HandleGetDevicesComplete( - TInt err, CBTDeviceArray* deviceArray ); - -private: - - /** - * C++ default constructor. - */ - CBTNotifConnection( const TBTDevAddr& aAddr, - CBTNotifConnectionTracker* aTracker ); - - /** - * Symbian 2nd-phase constructor. - */ - void ConstructL(); - - /** - * Get a notification and configure it according to the current operation. - * - * @since Symbian^4 - * @param aType The notification type. - * @param aResourceId Identifier for the resource to display. - */ - void PrepareNotificationL( TBluetoothDialogParams::TBTDialogType aType, - TBTDialogResourceId aResourceId ); - - /** - * Handle the result from a notification that is finished. - * - * @since Symbian^4 - * @param aErr KErrNone or one of the system-wide error codes. - * @param aData The returned data. The actual format - * is dependent on the actual notifier. - */ - void NotificationClosedL( TInt aError, const TDesC8& aData ); - - /** - * Handle a request for authorization of this connection. - * - * @since Symbian^4 - * @param aParams The parameters for this request from the client. - */ - void HandleAuthorizationReqL( const TDesC8& aParams ); - - /** - * Process the user input and complete the outstanding authorization request. - * - * @since Symbian^4 - * @param aError The result off the notification. - * @param aData The data returned from the notification dialog. - */ - void CompleteAuthorizationReqL( TInt aError, const TDesC8& aData ); - - /** - * Process the user input for blocking a device. - * - * @since Symbian^4 - * @param aError The result off the notification. - * @param aData The data returned from the notification dialog. - */ - void CompleteBlockingReqL( TInt aError, const TDesC8& aData ); - - /** - * Fetch device from registry - * - * @since Symbian^4 - * @param addr BT address of device to fetch from registry - */ - void GetDeviceFromRegistry( const TBTDevAddr &addr ); - -private: // data - - /** - * The current operation we are carrying out. - */ - TOperation iCurrentOp; - - /** - * Address of the remote device, identifying this connection. - */ - TBTDevAddr iAddr; - - /** - * Package to receive updates of the physical link state. - */ - TBTBasebandEvent iBasebandEvent; - - /** - * Queue of handles (identifier) of client messages we have been requested to work on. - */ - RArray iMsgHandleQ; - - /** - * Array of accepted profile connections (as known here). - */ - RBTProfileArray iAcceptedConnections; - - /** - * Array of rejected profile connections (as known here). - */ - RBTProfileArray iDeniedConnections; - - /** - * Handle to observe and control the baseband connection. - */ - RBTPhysicalLinkAdapter iPhyLink; - - /** - * Subsession with BT registry. - */ - RBTRegistry iRegistry; - - /** - * Details of the remote device. - * Own. - */ - CBTDevice* iDevice; - - /** - * Details of the remote device as retrieved from BT registry. - * Own. - */ - CBTRegistryResponse* iRegistryResponse; - - /** - * helper for modifying registry. - * Own. - */ - CBTEngDevMan* iDevMan; - - /** - * Active object helper for observing physical link changes. - * Own. - */ - CBtSimpleActive* iPhyActive; - - /** - * Active object helper for observing BT registry changes. - * Own. - */ - CBtSimpleActive* iRegActive; - - /** - * Helper class for processing pairing-related operations. - * Own. - */ - CBTNotifPairingHelper* iPairingHelper; - - /** - * Pointer to an outstanding user interaction. - * Not own. - */ - CBluetoothNotification* iNotification; - - /** - * Pointer to our parent. - * Not own. - */ - CBTNotifConnectionTracker* iTracker; - - CBTDeviceArray* iRegDevArray; // used for retrieving devices from registry - - BTUNITTESTHOOK - - }; - -#endif // BTNOTIFCONNECTION_H