--- 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 <bt_sock.h>
-#include <btservices/btsimpleactive.h>
-#include <btengdevman.h>
-#include <btengconstants.h>
-
-#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<TBTProfile> 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<TInt> 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