bluetoothengine/btnotif/btnotifsrv/inc/btnotifbasepairinghandler.h
author hgs
Mon, 12 Jul 2010 18:51:05 +0300
changeset 42 b72428996822
parent 31 a0ea99b6fa53
child 57 5ebadcda06cb
permissions -rw-r--r--
201025
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     1
/*
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     3
* All rights reserved.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     8
*
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    11
*
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    12
* Contributors:
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    13
*
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    14
* Description: 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    15
*
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    16
*/
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    17
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    18
#ifndef BTNOTIFBASEPAIRINGHANDLER_H
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    19
#define BTNOTIFBASEPAIRINGHANDLER_H
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    20
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    21
#include <e32base.h>
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    22
#include <bttypes.h>
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    23
#include <btnotif.h>
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    24
#include <btengconstants.h>
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    25
#include <btservices/btsimpleactive.h>
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    26
42
hgs
parents: 31
diff changeset
    27
class CBTNotifSecurityManager;
31
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    28
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    29
/**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    30
 *  Class CBTNotifBasePairingHandler
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    31
 *
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    32
 *  The base class for pairing handling. 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    33
 *  When the pairing has completed (successfully or unsuccessfully), the user
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    34
 *  is informed of the result
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    35
 *
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    36
 *  @since Symbian^4
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    37
 */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    38
NONSHARABLE_CLASS( CBTNotifBasePairingHandler ) : 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    39
    public CBase, public MBtSimpleActiveObserver
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    40
    {
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    41
public:
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    42
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    43
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    44
     * Destructor
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    45
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    46
    virtual ~CBTNotifBasePairingHandler();
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    47
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    48
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    49
     * Handle a pairing result from the pairing server.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    50
     *
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    51
     * @param aAddr the address of the remote device which the result is for.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    52
     * @param aResult The status code of the pairing or authentication result.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    53
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    54
    void HandlePairServerResult( const TBTDevAddr& aAddr, TInt aResult );
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    55
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    56
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    57
     * Handles event of new paired device event in registry.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    58
     * @param aDev the remote device which the pair is with.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    59
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    60
    void HandleRegistryNewPairedEvent( const TBTNamelessDevice& aDev );
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    61
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    62
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    63
     * Start observing the result of the pairing originated by
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    64
     * the remote device.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    65
     * Must be specialized by subclass.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    66
     * @param the address of the remote device to be paired
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    67
     * @return KErrNone if this request is accepted; otherwise an error code
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    68
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    69
    virtual TInt ObserveIncomingPair( const TBTDevAddr& aAddr ) = 0;
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    70
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    71
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    72
     * Start an outgoing pairing with the remote device.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    73
     * Must be specialized by subclass.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    74
     * @param the address of the remote device to be paired
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    75
     * @return KErrNone if this request is accepted; otherwise an error code
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    76
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    77
    virtual void HandleOutgoingPairL( const TBTDevAddr& aAddr, TUint aCod ) = 0;
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    78
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    79
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    80
     * Cancel the outstanding pairing operation.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    81
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    82
    virtual void CancelOutgoingPair();
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    83
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    84
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    85
     * Cancels pairing handling with the specified device
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    86
     * @param aAddr the address of the device the pairing is with
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    87
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    88
    virtual void StopPairHandling( const TBTDevAddr& aAddr ) = 0;
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    89
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    90
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    91
     * Gets the pin code to be used for pairing a device.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    92
     * @param aPin contains the pin code if it is not empty
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    93
     * @param aAddr the device to which pairing is performed.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    94
     * @param the required minimum length of a pin code.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    95
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    96
    virtual void GetPinCode( TBTPinCode& aPin, const TBTDevAddr& aAddr, TInt aMinPinLength );
42
hgs
parents: 31
diff changeset
    97
 
hgs
parents: 31
diff changeset
    98
    /**
hgs
parents: 31
diff changeset
    99
     * Show a dialog for pairing success or failure
hgs
parents: 31
diff changeset
   100
     * @param aResult The result of the pairing
hgs
parents: 31
diff changeset
   101
     */
hgs
parents: 31
diff changeset
   102
    void ShowPairingResultNoteL(TInt aResult);
31
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   103
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   104
protected:
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   105
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   106
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   107
     * Handle a pairing result with the remote device which this is for.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   108
     * Must be specialized by subclass.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   109
     *
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   110
     * @param aResult The status code of the pairing or authentication result.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   111
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   112
    virtual void DoHandlePairServerResult( TInt aResult ) = 0;
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   113
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   114
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   115
     * Handles a registry new paired event with the remote 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   116
     * device with which this handler is dealing.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   117
     * Must be specialized by subclass.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   118
     * @aType the type of authentication with the device.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   119
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   120
    virtual void DoHandleRegistryNewPairedEvent( const TBTNamelessDevice& aDev ) = 0;
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   121
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   122
protected:
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   123
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   124
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   125
     * C++ default constructor
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   126
     */
42
hgs
parents: 31
diff changeset
   127
    CBTNotifBasePairingHandler(CBTNotifSecurityManager& aParent, const TBTDevAddr& aAddr);
31
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   128
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   129
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   130
     * Symbian 2nd-phase constructor
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   131
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   132
    void BaseConstructL();
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   133
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   134
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   135
     * Invalidate the pair result flag of this 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   136
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   137
    void UnSetPairResult();
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   138
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   139
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   140
     * Sets the pair result and validate pair result flag
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   141
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   142
    void SetPairResult( TInt aResult );
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   143
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   144
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   145
     * Tells if the pair result has been set.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   146
     * @ETrue if the result has been set.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   147
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   148
    TBool IsPairResultSet();
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   149
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   150
protected:
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   151
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   152
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   153
     * Address of the remote device we are trying to pair.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   154
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   155
    TBTDevAddr iAddr;
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   156
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   157
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   158
     * Contains the final result of pairing with the remote device
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   159
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   160
    TInt iPairResult;
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   161
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   162
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   163
     * Pair result flag, ETrue if iPairResult is been set.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   164
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   165
    TBool iPairResultSet;
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   166
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   167
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   168
     * Reference to the owner of this object.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   169
     */
42
hgs
parents: 31
diff changeset
   170
    CBTNotifSecurityManager& iParent;
31
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   171
    
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   172
    /**
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   173
     * Active object helper for asynchronous operations.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   174
     * Own.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   175
     */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   176
    CBtSimpleActive* iActive;
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   177
    };
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   178
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   179
#endif /*BTNOTIFBASEPAIRINGHANDLER_H*/
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   180
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   181
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   182