bluetoothengine/btserviceutil/export/advancedevdiscoverer.h
author hgs
Mon, 12 Jul 2010 19:25:26 +0300
changeset 45 b0aebde9b1fb
parent 29 48ae3789ce00
permissions -rw-r--r--
201027_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     1
/*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     3
* All rights reserved.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     8
*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     9
* Initial Contributors:
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    11
*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    12
* Contributors:
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    13
*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    14
* Description:  Declares Bluetooth device inquiry helper class.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    15
*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    16
*/
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    17
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    18
#ifndef ADVANCEBTDEVDISCOVERER_H
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    19
#define ADVANCEBTDEVDISCOVERER_H
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    20
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    21
#include <btdevice.h>
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    22
#include <bt_sock.h>
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    23
#include <btservices/devdiscoveryobserver.h>
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    24
#include <btservices/btdevrepository.h>
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    25
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    26
class CAdvanceDevDiscovererImpl;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    27
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    28
/**
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    29
 * APIs from this class offer functionalities that are common in mw and app 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    30
 * components of Bluetooth packages. They do not serve as domain APIs.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    31
 * 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    32
 * Using these from external components is risky, due to possible source
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    33
 * and binary breaks in future.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    34
 * 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    35
 */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    36
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    37
/**
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    38
* The interface of discovering in-range Bluetooth devices via Host Resolver.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    39
* This class offers some options to search certain devices by CoD and other 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    40
* filters e.g., bonded and blocked.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    41
* 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    42
* It requires the client to supply a CBtDevRepository instance for filtering
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    43
* devices.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    44
*/
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    45
NONSHARABLE_CLASS( CAdvanceDevDiscoverer ) : public CBase
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    46
    {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    47
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    48
public: // Constructor and destructor
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    49
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    50
    /**
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    51
     * Options for clients to specify criteria on discovered devices.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    52
     */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    53
    enum TDevDiscoveryFilter
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    54
        {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    55
        // do not filter in-range devices
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    56
        ENoFilter = 0,
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    57
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    58
        // Excludes an in-range device if its device name is not available
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    59
        ExcludeIfNoDevName = 0x01,
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    60
        
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    61
        // Excludes an in-range device if it is user-aware bonded with phone.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    62
        ExcludeUserAwareBonded = 0x02,
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    63
        
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    64
        // Excludes an in-range device if it is banned by phone.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    65
        ExcludeBanned = 0x04,
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    66
        };
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    67
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    68
    IMPORT_C static CAdvanceDevDiscoverer* NewL(
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    69
            CBtDevRepository& aDevRep,
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    70
            MDevDiscoveryObserver& aObserver );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    71
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    72
    /**
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    73
    * Destructor.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    74
    */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    75
    IMPORT_C virtual ~CAdvanceDevDiscoverer();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    76
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    77
    /**
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    78
     * sets the discovery result receiver.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    79
     * 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    80
     * @param aObserver the new observer to receive inquiry results
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    81
     */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    82
    IMPORT_C void SetObserver( MDevDiscoveryObserver& aObserver );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    83
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    84
    /**
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    85
    * Discover currently in-range devices that matches the given major 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    86
    * device class type.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    87
     
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    88
    * Found devices will be informed by 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    89
    * MBtDevDiscoveryObserver::HandleNextDiscoveryResult().
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    90
    * 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    91
    * When no more device can be found, 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    92
    * MBtDevDiscoveryObserver::HandleDiscoveryCompleted() will be issued.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    93
    * 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    94
    * @param aFilter the filter that shall be applied when a device 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    95
    *        is discovered. If this is specified, only a device passing 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    96
    *        the filter will be informed to client. 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    97
    *        By default, no filter is applied.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    98
    * 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    99
    * @param aDeviceClass the major device class which a found device 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   100
    *        must match. 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   101
    *        By default, it includes any device types.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   102
    */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   103
    IMPORT_C void DiscoverDeviceL( 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   104
            TDevDiscoveryFilter aFilter = CAdvanceDevDiscoverer::ENoFilter, 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   105
            TBTMajorDeviceClass aDeviceClass = EMajorDeviceMisc );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   106
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   107
    /**
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   108
    * Cancels any outstanding discovery request.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   109
    */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   110
    IMPORT_C void CancelDiscovery();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   111
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   112
private:
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   113
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   114
    /**
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   115
    * C++ default constructor.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   116
    */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   117
    CAdvanceDevDiscoverer();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   118
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   119
    /**
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   120
    * The 2nd phase constructor
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   121
    */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   122
    void ConstructL( CBtDevRepository& aDevRep, MDevDiscoveryObserver& aObserver );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   123
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   124
private:  // Data
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   125
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   126
    CAdvanceDevDiscovererImpl* iImpl;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   127
};
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   128
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   129
#endif
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   130
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   131
// End of File