bluetoothengine/btnotif/btnotifsrv/inc/btnotifconnection.h
changeset 33 837dcc42fd6a
parent 19 43824b19ee35
child 37 91746b151f97
--- 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