bluetoothengine/btserviceutil/src/advancedevdiscovererimpl.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:25:10 +0300
branchRCL_3
changeset 55 613943a21004
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 2010 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:
*
* Description:  class for searching BT devices
*
*/
#include "advancedevdiscovererimpl.h"
#include "basicdevdiscoverer.h"


// ----------------------------------------------------------
// CAdvanceDevDiscovererImpl::CAdvanceDevDiscovererImpl
// ----------------------------------------------------------
//
CAdvanceDevDiscovererImpl::CAdvanceDevDiscovererImpl(
        CBtDevRepository& aDevRep,
        MDevDiscoveryObserver& aObserver )
    :iDevRep( aDevRep ), iObserver( aObserver )
    {
    }

// ----------------------------------------------------------
// CAdvanceDevDiscovererImpl::ConstructL
// ----------------------------------------------------------
//
void CAdvanceDevDiscovererImpl::ConstructL()
    {
    iBasicDiscoverer = CBasicDevDiscoverer::NewL( *this );   
    }

// ----------------------------------------------------------
// CAdvanceDevDiscovererImpl::NewL
// ----------------------------------------------------------
//
CAdvanceDevDiscovererImpl* CAdvanceDevDiscovererImpl::NewL(
        CBtDevRepository& aDevRep,
        MDevDiscoveryObserver& aObserver )
    {
    CAdvanceDevDiscovererImpl* self = 
            new (ELeave) CAdvanceDevDiscovererImpl( aDevRep, aObserver );
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self );
    return self;
    }

// ----------------------------------------------------------
// CAdvanceDevDiscovererImpl::
// ----------------------------------------------------------
//
CAdvanceDevDiscovererImpl::~CAdvanceDevDiscovererImpl()
    {
    delete iBasicDiscoverer;
    }

// ----------------------------------------------------------
// CAdvanceDevDiscovererImpl::SetObserver
// ----------------------------------------------------------
//
void CAdvanceDevDiscovererImpl::SetObserver( MDevDiscoveryObserver& aObserver )
    {
    iObserver = aObserver;
    }

// ----------------------------------------------------------
// CAdvanceDevDiscovererImpl::
// ----------------------------------------------------------
//
void CAdvanceDevDiscovererImpl::Cancel()
    {
    iBasicDiscoverer->Cancel();
    }

// ----------------------------------------------------------
// CAdvanceDevDiscovererImpl::
// ----------------------------------------------------------
//
void CAdvanceDevDiscovererImpl::DiscoverDeviceL(
        CAdvanceDevDiscoverer::TDevDiscoveryFilter aFilter, 
        TBTMajorDeviceClass aDeviceClass )
    {
    iBasicDiscoverer->DiscoverDeviceL( aDeviceClass );
    iFilter = aFilter;
    }

// ----------------------------------------------------------
// CAdvanceDevDiscovererImpl::DiscoverDeviceL
// ----------------------------------------------------------
//
void CAdvanceDevDiscovererImpl::DiscoverDeviceL( 
    const RBTDevAddrArray& aPriorityList )
    {
    // to be implemented when BTUI requires this feature.
    ( void ) aPriorityList;
    }

// ----------------------------------------------------------
// CAdvanceDevDiscovererImpl::HandleNextDiscoveryResult
// ----------------------------------------------------------
//
void CAdvanceDevDiscovererImpl::HandleNextDiscoveryResultL( 
        const TInquirySockAddr& aAddr, const TDesC& aName )
    {
    TBool filtered = EFalse;
    if ( iFilter )
        {
        // For filtering, we need to examine the properties of
        // this device from repository.        
        const CBtDevExtension* devExt = iDevRep.Device( aAddr.BTAddr() );
        // No filter is needed if this device is not in registry.
        if ( devExt )
            {
            if ( iFilter & CAdvanceDevDiscoverer::ExcludeUserAwareBonded)
                {
                // client does not want to discover devices that have been
                // bonded already.
                if ( devExt->IsUserAwareBonded() )
                    {
                    filtered = ETrue;
                    }
                }
            }
        }
    if ( !filtered )
        {
        iObserver.HandleNextDiscoveryResultL( aAddr, aName );
        }
    }

// ----------------------------------------------------------
// CAdvanceDevDiscovererImpl::HandleDiscoveryCompleted
// ----------------------------------------------------------
//
void CAdvanceDevDiscovererImpl::HandleDiscoveryCompleted( TInt aErr )
    {
    iObserver.HandleDiscoveryCompleted( aErr );
    }

// ----------------------------------------------------------
// CAdvanceDevDiscovererImpl::RequestCompletedL
// Inform caller for received device and issue next EIR/Name request
// if the request was successful.
// ----------------------------------------------------------
//
void CAdvanceDevDiscovererImpl::RequestCompletedL( CBtSimpleActive* aActive, TInt aStatus )
    {
    (void) aActive;
    (void) aStatus;
    }

// ----------------------------------------------------------
// CAdvanceDevDiscovererImpl::CancelRequest
// ----------------------------------------------------------
//
void CAdvanceDevDiscovererImpl::CancelRequest( TInt aId )
    {
    (void) aId;
    }

// ----------------------------------------------------------
// CAdvanceDevDiscovererImpl::HandleError
// ----------------------------------------------------------
//
void CAdvanceDevDiscovererImpl::HandleError( CBtSimpleActive* aActive, TInt aError )
    {
    (void) aActive;
    (void) aError;
    }

// End of File